From 712e346e96498ad3c58e9a56f558f50caba4521c Mon Sep 17 00:00:00 2001 From: Mohammed Siddiq Date: Fri, 5 Mar 2021 10:49:54 +0530 Subject: [PATCH] cnss2: Check for BT Enable GPIO in QCA6390 QCA6390 requires synchronization between BT and WLAN enable gpio to avoid power up issue. Add support for QCA6390 in gpio sync code. Change-Id: Id2183ff324c9c3059ea81e9137fa49c803feb183 Signed-off-by: Mohammed Siddiq --- drivers/net/wireless/cnss2/power.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/cnss2/power.c b/drivers/net/wireless/cnss2/power.c index 7e28ad215e73..00b42685d3fa 100644 --- a/drivers/net/wireless/cnss2/power.c +++ b/drivers/net/wireless/cnss2/power.c @@ -836,7 +836,7 @@ out: * cnss_select_pinctrl_enable - select WLAN_GPIO for Active pinctrl status * @plat_priv: Platform private data structure pointer * - * For QCA6490, PMU requires minimum 100ms delay between BT_EN_GPIO off and + * For QCA6390/QCA6490, PMU requires minimum 100ms delay between BT_EN_GPIO off and * WLAN_EN_GPIO on. This is done to avoid power up issues. * * Return: Status of pinctrl select operation. 0 - Success. @@ -846,9 +846,17 @@ static int cnss_select_pinctrl_enable(struct cnss_plat_data *plat_priv) int ret = 0, bt_en_gpio = plat_priv->pinctrl_info.bt_en_gpio; u8 wlan_en_state = 0; - if (bt_en_gpio < 0 || plat_priv->device_id != QCA6490_DEVICE_ID) + if (bt_en_gpio < 0) goto set_wlan_en; + switch (plat_priv->device_id) { + case QCA6390_DEVICE_ID: + case QCA6490_DEVICE_ID: + break; + default: + goto set_wlan_en; + } + if (gpio_get_value(bt_en_gpio)) { cnss_pr_dbg("BT_EN_GPIO State: On\n"); ret = cnss_select_pinctrl_state(plat_priv, true); @@ -864,7 +872,7 @@ static int cnss_select_pinctrl_enable(struct cnss_plat_data *plat_priv) cnss_select_pinctrl_state(plat_priv, false); wlan_en_state = 0; } - /* 100 ms delay for BT_EN and WLAN_EN QCA6490 PMU sequencing */ + /* 100 ms delay for BT_EN and WLAN_EN QCA6490/QCA6390 PMU sequencing */ msleep(100); } set_wlan_en: