struct rfkill_rk_data *rfkill = data;
struct rfkill_rk_gpio *poweron = &rfkill->pdata->poweron_gpio;
struct rfkill_rk_gpio *reset = &rfkill->pdata->reset_gpio;
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
struct rfkill_rk_gpio* rts = &rfkill->pdata->rts_gpio;
struct pinctrl *pinctrl = rfkill->pdata->pinctrl;
-#endif
int power = 0, vref_ctrl_enable = 0;
bool toggle = false;
}
if (false == blocked) {
- if (1 == vref_ctrl_enable && 0 == power)
- rockchip_wifi_ref_voltage(1);
rfkill_rk_sleep_bt(BT_WAKEUP); // ensure bt is wakeup
msleep(20);
gpio_direction_output(reset->io, reset->enable);
}
-#if defined(CONFIG_AP6210) || defined(CONFIG_AP6335)
+
if (pinctrl != NULL && gpio_is_valid(rts->io))
{
pinctrl_select_state(pinctrl, rts->gpio_state);
gpio_direction_output(rts->io, !rts->enable);
pinctrl_select_state(pinctrl, rts->default_state);
}
-#endif
+
bt_power_state = 1;
LOG("bt turn on power\n");
} else {
msleep(20);
}
- if (1 == vref_ctrl_enable && 0 == power)
- rockchip_wifi_ref_voltage(0);
}
return 0;
LOG("%s: get property: BT,wake_host_irq = %d.\n", __func__, gpio);
} else data->wake_host_irq.gpio.io = -1;
- return 0;
+ data->ext_clk = devm_clk_get(dev, "ext_clock");
+ if (IS_ERR(data->ext_clk)) {
+ LOG("%s: clk_get failed!!!.\n", __func__);
+ } else {
+ clk_prepare_enable(data->ext_clk);
+ }
+ return 0;
}
#endif //CONFIG_OF
pdata->type = RFKILL_TYPE_BLUETOOTH;
rfkill = devm_kzalloc(&pdev->dev, sizeof(*rfkill), GFP_KERNEL);
- if (!rfkill) {
- kfree(pdata);
+ if (!rfkill)
return -ENOMEM;
- }
rfkill->pdata = pdata;
rfkill->pdev = pdev;
if (gpio_is_valid(rfkill->pdata->poweron_gpio.io))
gpio_free(rfkill->pdata->poweron_gpio.io);
-
- kfree(rfkill);
+ clk_disable_unprepare(rfkill->pdata->ext_clk);
g_rfkill = NULL;
return 0;