From de744b5ecadb7f2a78b20feb1c8e6d0434055e6b Mon Sep 17 00:00:00 2001 From: Jayachandran Sreekumaran Date: Wed, 13 Nov 2019 14:19:04 +0530 Subject: [PATCH] cnss2: Fix for WL_EN toggling failure Regulator_enable API is getting called twice for wl_en. But for wlan driver unload, regulator_disable gets called only once. Hence SoC reset is not happening during the wlan driver unload. Removed the second regulator_enable call in wlan driver load path. Change-Id: Ic84a04a5ea01ddf81f27fcaa1579611655ccdd05 Signed-off-by: Jayachandran Sreekumaran --- drivers/net/wireless/cnss2/bus.c | 2 +- drivers/net/wireless/cnss2/usb.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/cnss2/bus.c b/drivers/net/wireless/cnss2/bus.c index e33eb647d9bb..5d77d8db4d53 100644 --- a/drivers/net/wireless/cnss2/bus.c +++ b/drivers/net/wireless/cnss2/bus.c @@ -304,7 +304,7 @@ int cnss_bus_dev_shutdown(struct cnss_plat_data *plat_priv) case CNSS_BUS_PCI: return cnss_pci_dev_shutdown(plat_priv->bus_priv); case CNSS_BUS_USB: - return 0; + return cnss_usb_dev_shutdown(plat_priv->bus_priv); case CNSS_BUS_SDIO: return cnss_sdio_dev_shutdown(plat_priv->bus_priv); default: diff --git a/drivers/net/wireless/cnss2/usb.c b/drivers/net/wireless/cnss2/usb.c index c647e0f8e9ba..c42ef2210a41 100644 --- a/drivers/net/wireless/cnss2/usb.c +++ b/drivers/net/wireless/cnss2/usb.c @@ -54,7 +54,8 @@ int cnss_usb_dev_powerup(struct cnss_plat_data *plat_priv) case QCN7605_STANDALONE_DEVICE_ID: case QCN7605_VER20_STANDALONE_DEVICE_ID: case QCN7605_VER20_COMPOSITE_DEVICE_ID: - ret = cnss_qcn7605_usb_powerup(plat_priv); + if (test_bit(CNSS_DEV_REMOVED, &plat_priv->driver_state)) + ret = cnss_qcn7605_usb_powerup(plat_priv); break; default: cnss_pr_err("Unknown device_id found: %lu\n", @@ -160,7 +161,6 @@ int cnss_usb_unregister_driver_hdlr(struct cnss_usb_data *usb_priv) set_bit(CNSS_DRIVER_UNLOADING, &plat_priv->driver_state); cnss_usb_dev_shutdown(usb_priv); usb_priv->driver_ops = NULL; - usb_priv->plat_priv = NULL; return 0; }