net: rfkill: rockchip: add vbat_gpio to control the wifi power supply
Change-Id: I4746fd5c46c5e1a7df2bb18f80f5a8efee20605f Signed-off-by: Alex Zhao <zzc@rock-chips.com>
This commit is contained in:
parent
053de347cd
commit
5fda03d4a9
2 changed files with 20 additions and 2 deletions
1
include/linux/rfkill-wlan.h
Executable file → Normal file
1
include/linux/rfkill-wlan.h
Executable file → Normal file
|
|
@ -30,6 +30,7 @@ struct rksdmmc_gpio_wifi_moudle {
|
|||
bool wifi_power_remain;
|
||||
struct rksdmmc_pmu mregulator;
|
||||
struct rksdmmc_pmu ioregulator;
|
||||
struct rksdmmc_gpio vbat_n;
|
||||
struct rksdmmc_gpio power_n; //PMU_EN
|
||||
struct rksdmmc_gpio reset_n; //SYSRET_B, DAIRST
|
||||
struct rksdmmc_gpio vddio;
|
||||
|
|
|
|||
|
|
@ -635,6 +635,14 @@ static int wlan_platdata_parse_dt(struct device *dev,
|
|||
data->power_n.enable = (flags == GPIO_ACTIVE_HIGH)? 1:0;
|
||||
LOG("%s: get property: WIFI,poweren_gpio = %d, flags = %d.\n", __func__, gpio, flags);
|
||||
} else data->power_n.io = -1;
|
||||
gpio = of_get_named_gpio_flags(node, "WIFI,vbat_gpio", 0, &flags);
|
||||
if (gpio_is_valid(gpio)) {
|
||||
data->vbat_n.io = gpio;
|
||||
data->vbat_n.enable = (flags == GPIO_ACTIVE_HIGH) ? 1:0;
|
||||
LOG("%s: get property: WIFI,vbat_gpio = %d, flags = %d.\n", __func__, gpio, flags);
|
||||
} else {
|
||||
data->vbat_n.io = -1;
|
||||
}
|
||||
gpio = of_get_named_gpio_flags(node, "WIFI,reset_gpio", 0, &flags);
|
||||
if (gpio_is_valid(gpio)){
|
||||
data->reset_n.io = gpio;
|
||||
|
|
@ -752,15 +760,24 @@ static int rfkill_wlan_probe(struct platform_device *pdev)
|
|||
LOG("%s: init gpio\n", __func__);
|
||||
|
||||
if (!pdata->mregulator.power_ctrl_by_pmu) {
|
||||
ret = rfkill_rk_setup_gpio(&pdata->vbat_n, wlan_name, "wlan_vbat");
|
||||
if (ret)
|
||||
goto fail_alloc;
|
||||
|
||||
ret = rfkill_rk_setup_gpio(&pdata->power_n, wlan_name, "wlan_poweren");
|
||||
if (ret) goto fail_alloc;
|
||||
if (ret)
|
||||
goto fail_alloc;
|
||||
|
||||
ret = rfkill_rk_setup_gpio(&pdata->reset_n, wlan_name, "wlan_reset");
|
||||
if (ret) goto fail_alloc;
|
||||
if (ret)
|
||||
goto fail_alloc;
|
||||
}
|
||||
|
||||
wake_lock_init(&(rfkill->wlan_irq_wl), WAKE_LOCK_SUSPEND, "rfkill_wlan_wake");
|
||||
|
||||
if (gpio_is_valid(pdata->vbat_n.io)) {
|
||||
gpio_direction_output(pdata->vbat_n.io, pdata->vbat_n.enable);
|
||||
}
|
||||
// Turn off wifi power as default
|
||||
if (gpio_is_valid(pdata->power_n.io))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue