summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Hsu <hsuvictor@google.com>2022-03-01 12:44:14 +0800
committerVictor Hsu <hsuvictor@google.com>2022-03-01 12:44:14 +0800
commit7426ff58b389698b477c9b5e146a6bbe8b8571ce (patch)
treeb6458025fd35ac611f41ea30becfb14376927a5f
parentef22de835ccf8c7c394dbd601c0ca1d7a4ab1681 (diff)
downloadcnss2-7426ff58b389698b477c9b5e146a6bbe8b8571ce.tar.gz
wlan: Configure states of BUCK pinctrl
Configure the buck gpio pin to prevent from unexpected hardware errors during suspend/resume. Bug: 216250741 Test: Manunally check buck gpio pin not dropped. Signed-off-by: Victor Hsu <hsuvictor@google.com> Change-Id: I9b7aa702fee0ad2eaf88f727ca9b3e032b557278
-rw-r--r--cnss2/power.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/cnss2/power.c b/cnss2/power.c
index 64c32e2..a057e18 100644
--- a/cnss2/power.c
+++ b/cnss2/power.c
@@ -941,13 +941,18 @@ int cnss_get_input_gpio_value(struct cnss_plat_data *plat_priv, int gpio_num)
}
#ifdef CONFIG_WCN_GOOGLE
+#define WLAN_BUCK "wlan_buck"
static int wlan_buck_gpio=0;
int wlan_buck_enable(struct cnss_plat_data *plat_priv)
{
int ret = 0;
struct device *dev;
int wlan_buck_gpio_val;
+ struct cnss_pinctrl_info *pinctrl_info;
+ struct pinctrl_state *wlan_buck_en;
+
dev = &plat_priv->plat_dev->dev;
+ pinctrl_info = &plat_priv->pinctrl_info;
cnss_pr_info("%s Enter\n",__func__);
if (!wlan_buck_gpio) {
@@ -959,6 +964,20 @@ int wlan_buck_enable(struct cnss_plat_data *plat_priv)
return -ENODEV;
}
cnss_pr_info("BUCK GPIO: %d\n", wlan_buck_gpio);
+ //configure wlan_buck GPIO
+ wlan_buck_en = pinctrl_lookup_state(pinctrl_info->pinctrl,
+ WLAN_BUCK);
+ if (IS_ERR_OR_NULL(wlan_buck_en)) {
+ ret = PTR_ERR(wlan_buck_en);
+ cnss_pr_info("Failed to get wlan_buck state, err = %d\n",
+ ret);
+ } else {
+ ret = pinctrl_select_state(pinctrl_info->pinctrl,
+ wlan_buck_en);
+ if (ret)
+ cnss_pr_info("Failed to select wlan_buck state, err = %d\n",
+ ret);
+ }
} else {
cnss_pr_err("No BUCK GPIO\n");
}