summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheney Ni <cheneyni@google.com>2022-03-02 01:17:58 +0800
committerCheney Ni <cheneyni@google.com>2022-03-02 01:23:57 +0800
commit50a13cc73c3ed7a52988bee97e39fcfb0dc689ce (patch)
treeb24cf7268198f9284e2cb522faea97eb9932c80b
parentda7e6b32a2f10cd5f65244678495f7a40d5e86d6 (diff)
downloadqcom-50a13cc73c3ed7a52988bee97e39fcfb0dc689ce.tar.gz
btpower: apply Bucks pinctrl default state
Initialze the state of GPIO pin which controls BT Buck. Bug: 220142775 Bug: 214321488 Bug: 216250741 Test: Pass Bluetooth ON / OFF tests Signed-off-by: Cheney Ni <cheneyni@google.com> Change-Id: I97077b52b821303c3e93245f6e1b7f9fe43d8433
-rw-r--r--btpower.c12
-rw-r--r--linux/btpower.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/btpower.c b/btpower.c
index bab68ad..e91ce18 100644
--- a/btpower.c
+++ b/btpower.c
@@ -944,6 +944,13 @@ static int btpower_gpios_source_initialize(struct btpower_platform_data *drvdata
pr_warn("%s: failed to set default pinctrl state rc=%d\n",
__func__, rc);
}
+ if (!IS_ERR_OR_NULL(drvdata->pinctrl_supply_state)) {
+ rc = pinctrl_select_state(drvdata->pinctrls,
+ drvdata->pinctrl_supply_state);
+ if (unlikely(rc))
+ pr_warn("%s: failed to set supply pinctrl state rc=%d\n",
+ __func__, rc);
+ }
rc = btpower_gpio_acquire_output(drvdata->bt_gpio_sys_rst,
"bt_sys_rst_n", 0);
@@ -1014,10 +1021,15 @@ static int bt_power_populate_dt_pinfo(struct platform_device *pdev,
} else {
drvdata->pinctrl_default_state =
pinctrl_lookup_state(drvdata->pinctrls, "default");
+ drvdata->pinctrl_supply_state =
+ pinctrl_lookup_state(drvdata->pinctrls, "supply");
}
if (IS_ERR(drvdata->pinctrl_default_state))
pr_warn("%s: default pinctrl state not provided in device tree\n",
__func__);
+ if (IS_ERR(drvdata->pinctrl_supply_state))
+ pr_warn("%s: supply pinctrl state not provided in device tree\n",
+ __func__);
drvdata->bt_gpio_sys_rst =
of_get_named_gpio(pdev->dev.of_node, "qcom,bt-reset-gpio", 0);
diff --git a/linux/btpower.h b/linux/btpower.h
index 48efd2f..d1c3330 100644
--- a/linux/btpower.h
+++ b/linux/btpower.h
@@ -70,6 +70,7 @@ struct btpower_platform_data {
/* GPIOs */
struct pinctrl *pinctrls;
struct pinctrl_state *pinctrl_default_state;
+ struct pinctrl_state *pinctrl_supply_state;
int bt_gpio_sys_rst; /* Bluetooth reset gpio */
int wl_gpio_sys_rst; /* Wlan reset gpio */
int bt_gpio_sw_ctrl; /* Bluetooth sw_ctrl gpio */