diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/cnss/cnss.c | 37 | ||||
-rw-r--r-- | drivers/net/wireless/wcnss/wcnss_wlan.c | 5 |
2 files changed, 30 insertions, 12 deletions
diff --git a/drivers/net/wireless/cnss/cnss.c b/drivers/net/wireless/cnss/cnss.c index 715abf2c66dc..6c72d644fc38 100644 --- a/drivers/net/wireless/cnss/cnss.c +++ b/drivers/net/wireless/cnss/cnss.c @@ -546,7 +546,8 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver) return; } - msm_bus_scale_client_update_request(penv->bus_client, 0); + if (penv->bus_client) + msm_bus_scale_client_update_request(penv->bus_client, 0); if (!pdev) { pr_err("%d: invalid pdev\n", __LINE__); @@ -969,22 +970,25 @@ static int cnss_probe(struct platform_device *pdev) if (ret) goto err_pci_reg; + penv->bus_scale_table = 0; penv->bus_scale_table = msm_bus_cl_get_pdata(pdev); - if (!penv->bus_scale_table) - goto err_bus_scale; - penv->bus_client = msm_bus_scale_register_client - (penv->bus_scale_table); - if (!penv->bus_client) - goto err_bus_reg; + if (penv->bus_scale_table) { + penv->bus_client = + msm_bus_scale_register_client(penv->bus_scale_table); + + if (!penv->bus_client) { + pr_err("Failed to register with bus_scale client\n"); + goto err_bus_reg; + } + } pr_info("cnss: Platform driver probed successfully.\n"); return ret; err_bus_reg: - msm_bus_cl_clear_pdata(penv->bus_scale_table); - -err_bus_scale: + if (penv->bus_scale_table) + msm_bus_cl_clear_pdata(penv->bus_scale_table); pci_unregister_driver(&cnss_wlan_pci_driver); err_pci_reg: @@ -1010,6 +1014,12 @@ static int cnss_remove(struct platform_device *pdev) struct cnss_wlan_vreg_info *vreg_info = &penv->vreg_info; struct cnss_wlan_gpio_info *gpio_info = &penv->gpio_info; + if (penv->bus_client) + msm_bus_scale_unregister_client(penv->bus_client); + + if (penv->bus_scale_table) + msm_bus_cl_clear_pdata(penv->bus_scale_table); + cnss_wlan_gpio_set(gpio_info, WLAN_EN_LOW); if (cnss_wlan_vreg_set(vreg_info, VREG_OFF)) pr_err("Failed to turn OFF wlan vreg\n"); @@ -1065,16 +1075,19 @@ int cnss_request_bus_bandwidth(int bandwidth) { int ret = 0; - if (!penv || !penv->bus_client) + if (!penv) return -ENODEV; + if (!penv->bus_client) + return -ENOSYS; + switch (bandwidth) { case CNSS_BUS_WIDTH_NONE: case CNSS_BUS_WIDTH_LOW: case CNSS_BUS_WIDTH_MEDIUM: case CNSS_BUS_WIDTH_HIGH: ret = msm_bus_scale_client_update_request(penv->bus_client, - bandwidth); + bandwidth); if (ret) pr_err("%s: could not set bus bandwidth %d, ret = %d\n", __func__, bandwidth, ret); diff --git a/drivers/net/wireless/wcnss/wcnss_wlan.c b/drivers/net/wireless/wcnss/wcnss_wlan.c index 34d8e5979e1c..62f656373b43 100644 --- a/drivers/net/wireless/wcnss/wcnss_wlan.c +++ b/drivers/net/wireless/wcnss/wcnss_wlan.c @@ -143,6 +143,7 @@ static DEFINE_SPINLOCK(reg_spinlock); #define PRONTO_PLL_STATUS_OFFSET 0x1c #define PRONTO_PLL_MODE_OFFSET 0x1c0 +#define MCU_APB2PHY_STATUS_OFFSET 0xec #define MCU_CBR_CCAHB_ERR_OFFSET 0x380 #define MCU_CBR_CAHB_ERR_OFFSET 0x384 #define MCU_CBR_CCAHB_TIMEOUT_OFFSET 0x388 @@ -725,6 +726,10 @@ void wcnss_pronto_log_debug_regs(void) reg = readl_relaxed(penv->wlan_tx_phy_aborts); pr_err("WLAN_TX_PHY_ABORTS %08x\n", reg); + reg_addr = penv->pronto_mcu_base + MCU_APB2PHY_STATUS_OFFSET; + reg = readl_relaxed(reg_addr); + pr_err("MCU_APB2PHY_STATUS %08x\n", reg); + reg_addr = penv->pronto_mcu_base + MCU_CBR_CCAHB_ERR_OFFSET; reg = readl_relaxed(reg_addr); pr_err("MCU_CBR_CCAHB_ERR %08x\n", reg); |