diff options
author | Girish BN <quic_gbn@quicinc.com> | 2022-01-27 17:14:31 +0530 |
---|---|---|
committer | Cheney Ni <cheneyni@google.com> | 2022-04-20 02:40:50 +0000 |
commit | 1c99138025bf526d37fbbccd1fc33fa2266597da (patch) | |
tree | fe5a6acad95a139eb424831cc872a4cd15a1e7ee /btpower.c | |
parent | 217ce5e0d7c2658509dd43b42a6def4882f5c917 (diff) | |
download | qcom-1c99138025bf526d37fbbccd1fc33fa2266597da.tar.gz |
OOBS enhancement changes for Bluetooth Driver
- Handling GPIO and UART clock throw State machine.
CRs-fixed: 3123484
Change-Id: I9b10b15f2150c51823e5eb670954d5b6a97a606e
Signed-off-by: Girish BN <quic_gbn@quicinc.com>
Signed-off-by: Cheney Ni <cheneyni@google.com>
Diffstat (limited to 'btpower.c')
-rw-r--r-- | btpower.c | 35 |
1 files changed, 29 insertions, 6 deletions
@@ -1301,6 +1301,9 @@ static long btpower_ioctl(struct file *file, unsigned int cmd, unsigned long arg { struct btpower_platform_data *drvdata = file->private_data; int ret = 0, pwr_cntrl = 0; +#ifdef CONFIG_MSM_BT_OOBS + enum btpower_obs_param clk_cntrl; +#endif int chipset_version = 0; int itr, num_vregs; const struct bt_power_vreg_data *vreg_info = NULL; @@ -1324,12 +1327,32 @@ static long btpower_ioctl(struct file *file, unsigned int cmd, unsigned long arg __func__, drvdata->bt_gpio_dev_wake); return -EIO; } - pwr_cntrl = (int)arg; - btpower_uart_transport_locked(drvdata, (pwr_cntrl == 1 ? true : false)); - gpio_set_value(drvdata->bt_gpio_dev_wake, pwr_cntrl); - pr_debug("%s: BT_CMD_OBS_VOTE_CLOCK cntrl(%d) %s\n", __func__, - pwr_cntrl, gpio_get_value(drvdata->bt_gpio_dev_wake) ? - "Assert" : "Deassert"); + clk_cntrl = (enum btpower_obs_param)arg; + switch (clk_cntrl) { + case BTPOWER_OBS_CLK_OFF: + btpower_uart_transport_locked(drvdata, false); + ret = 0; + break; + case BTPOWER_OBS_CLK_ON: + btpower_uart_transport_locked(drvdata, true); + ret = 0; + break; + case BTPOWER_OBS_DEV_OFF: + gpio_set_value(drvdata->bt_gpio_dev_wake, 0); + ret = 0; + break; + case BTPOWER_OBS_DEV_ON: + gpio_set_value(drvdata->bt_gpio_dev_wake, 1); + ret = 0; + break; + default: + pr_debug("%s: BT_CMD_OBS_VOTE_CLOCK clk_cntrl(%d)\n", + __func__, clk_cntrl); + return -EINVAL; + } + pr_debug("%s: BT_CMD_OBS_VOTE_CLOCK clk_cntrl(%d) %s\n", __func__, + clk_cntrl, gpio_get_value(drvdata->bt_gpio_dev_wake) ? + "Assert" : "Deassert"); break; #endif case BT_CMD_SLIM_TEST: |