From: hwg Date: Thu, 20 Sep 2012 03:31:07 +0000 (+0800) Subject: wifi: modify usb wifi control by pmu X-Git-Tag: firefly_0821_release~8595 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=af21e2eea8d80a6b5a18bb8d6d6ea31b2d8a5e1b;p=firefly-linux-kernel-4.4.55.git wifi: modify usb wifi control by pmu --- diff --git a/arch/arm/mach-rk2928/board-rk2928-a720-tps65910.c b/arch/arm/mach-rk2928/board-rk2928-a720-tps65910.c index 2ba0ed047506..9c0e20891a20 100755 --- a/arch/arm/mach-rk2928/board-rk2928-a720-tps65910.c +++ b/arch/arm/mach-rk2928/board-rk2928-a720-tps65910.c @@ -224,7 +224,7 @@ int tps65910_pre_init(struct tps65910 *tps65910){ return 0; } -void rk2928_usb_wifi_on(void) +void rk2928_tps_usb_wifi_on(void) { struct regulator *ldo; ldo = regulator_get(NULL, "vmmc"); //vccio_wl @@ -233,8 +233,8 @@ void rk2928_usb_wifi_on(void) regulator_put(ldo); udelay(100); } -EXPORT_SYMBOL(rk2928_usb_wifi_on); -void rk2928_usb_wifi_off(void) +EXPORT_SYMBOL(rk2928_tps_usb_wifi_on); +void rk2928_tps_usb_wifi_off(void) { struct regulator *ldo; ldo = regulator_get(NULL, "vmmc"); //vccio_wl @@ -243,7 +243,7 @@ void rk2928_usb_wifi_off(void) regulator_put(ldo); udelay(100); } -EXPORT_SYMBOL(rk2928_usb_wifi_off); +EXPORT_SYMBOL(rk2928_tps_usb_wifi_off); int tps65910_post_init(struct tps65910 *tps65910) diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c b/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c index 1b2ae491c15d..2e63ad9245cc 100755 --- a/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c +++ b/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c @@ -50,10 +50,11 @@ int act8931_set_init(struct act8931 *act8931) regulator_put(ldo); udelay(100); - ldo = regulator_get(NULL, "act_ldo4"); //vcc_lcd + ldo = regulator_get(NULL, "act_ldo4"); //vcc_wl regulator_set_voltage(ldo, 3300000, 3300000); regulator_enable(ldo); printk("%s set ldo4 vcc_lcd=%dmV end\n", __func__, regulator_get_voltage(ldo)); + regulator_disable(ldo); regulator_put(ldo); udelay(100); @@ -84,6 +85,27 @@ int act8931_set_init(struct act8931 *act8931) return 0; } +void rk2928_act_usb_wifi_on(void) +{ + struct regulator *ldo; + ldo = regulator_get(NULL, "act_ldo4"); //vccio_wl + regulator_enable(ldo); + printk("%s: vccio_wl enable\n", __func__); + regulator_put(ldo); + udelay(100); +} +EXPORT_SYMBOL(rk2928_act_usb_wifi_on); +void rk2928_act_usb_wifi_off(void) +{ + struct regulator *ldo; + ldo = regulator_get(NULL, "act_ldo4"); //vccio_wl + printk("%s: vccio_wl disable\n", __func__); + regulator_disable(ldo); + regulator_put(ldo); + udelay(100); +} +EXPORT_SYMBOL(rk2928_act_usb_wifi_off); + static struct regulator_consumer_supply act8931_buck1_supply[] = { { .supply = "act_dcdc1", diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk-sdmmc.c b/arch/arm/mach-rk2928/board-rk2928-sdk-sdmmc.c index f6ab8ed2532d..6637965aceb5 100755 --- a/arch/arm/mach-rk2928/board-rk2928-sdk-sdmmc.c +++ b/arch/arm/mach-rk2928/board-rk2928-sdk-sdmmc.c @@ -364,17 +364,49 @@ static int __init rk29sdk_wifi_bt_gpio_control_init(void) } #if defined(CONFIG_RTL8192CU) || defined(CONFIG_RTL8188EU) -int rk29sdk_wifi_power(int on) -{ - /*pr_info("%s: %d\n", __func__, on); - if (on){ - pr_info("wifi turn on power\n"); - }else{ - pr_info("wifi shut off power\n"); - }*/ +void rk2928_act_usb_wifi_on(void); +void rk2928_act_usb_wifi_off(void); +void rk2928_tps_usb_wifi_on(void); +void rk2928_tps_usb_wifi_off(void); + +static int usbwifi_power_status = 1; +static void rk2928_usb_wifi_power(int on) { +#if defined(CONFIG_MFD_TPS65910) + if(g_pmic_type == PMIC_TYPE_TPS65910) { + if(on) + rk2928_tps_usb_wifi_on(); + else + rk2928_tps_usb_wifi_off(); + } +#endif +#if defined(CONFIG_REGULATOR_ACT8931) + if(g_pmic_type == PMIC_TYPE_ACT8931) { + if(on) + rk2928_act_usb_wifi_on(); + else + rk2928_act_usb_wifi_off(); + } +#endif +} + int rk29sdk_wifi_power(int on) + { + pr_info("%s: %d\n", __func__, on); + if (on){ + /*if(usbwifi_power_status == 1) { + rk2928_usb_wifi_power(0); + mdelay(50); + }*/ + rk2928_usb_wifi_power(1); + usbwifi_power_status = 1; + pr_info("wifi turn on power\n"); + }else{ + rk2928_usb_wifi_power(0); + usbwifi_power_status = 0; + pr_info("wifi shut off power\n"); + } return 0; -} + } #else int rk29sdk_wifi_power(int on) { diff --git a/arch/arm/mach-rk2928/include/mach/board.h b/arch/arm/mach-rk2928/include/mach/board.h index 42b207253831..f6d6e99b2bdd 100644 --- a/arch/arm/mach-rk2928/include/mach/board.h +++ b/arch/arm/mach-rk2928/include/mach/board.h @@ -29,10 +29,6 @@ void board_gpio_suspend(void); void board_gpio_resume(void); void __sramfunc board_pmu_suspend(void); void __sramfunc board_pmu_resume(void); -#ifdef CONFIG_MACH_RK2928_A720 -void rk2928_usb_wifi_on(void); -void rk2928_usb_wifi_off(void); -#endif extern struct sys_timer rk2928_timer;