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;
static struct proc_dir_entry *bluetooth_dir, *sleep_dir;
-static int bluesleep_read_proc_lpm(struct file *file, char __user *buffer,
- size_t count, loff_t *data)
+static ssize_t bluesleep_read_proc_lpm(struct file *file, char __user *buffer,
+ size_t count, loff_t *data)
{
return sprintf(buffer, "unsupported to read\n");
}
-static int bluesleep_write_proc_lpm(struct file *file, const char __user *buffer,
- size_t count, loff_t *data)
+static ssize_t bluesleep_write_proc_lpm(struct file *file,
+ const char __user *buffer,
+ size_t count, loff_t *data)
{
return count;
}
-static int bluesleep_read_proc_btwrite(struct file *file, char __user *buffer,
- size_t count, loff_t *data)
+static ssize_t bluesleep_read_proc_btwrite(struct file *file,
+ char __user *buffer,
+ size_t count, loff_t *data)
{
return sprintf(buffer, "unsupported to read\n");
}
-static int bluesleep_write_proc_btwrite(struct file *file, const char __user *buffer,
- size_t count, loff_t *data)
+static ssize_t bluesleep_write_proc_btwrite(struct file *file,
+ const char __user *buffer,
+ size_t count, loff_t *data)
{
char b;
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;
fail_rfkill:
rfkill_destroy(rfkill->rfkill_dev);
fail_alloc:
- g_rfkill = NULL;
remove_proc_entry("btwrite", sleep_dir);
remove_proc_entry("lpm", sleep_dir);
fail_gpio:
+ g_rfkill = NULL;
return ret;
}
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;