From bba33b350947ee612c307d46932c7a4230dccd7e Mon Sep 17 00:00:00 2001 From: Yue Ma Date: Fri, 2 Oct 2020 10:12:23 -0700 Subject: [PATCH] cnss2: Check if firmware asserts before power off for CBC Do a final check for firmware assert before powering off device in calibration mode. Collect RAM dump if firmware has asserted for debug purpose. Also skip dump collection if device is already powered off. Change-Id: I99a438d6b7d7048b300244511c72d6fbfc610094 Signed-off-by: Yue Ma --- drivers/net/wireless/cnss2/pci.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index 04804da77e80..87efce22ff80 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -2065,7 +2065,8 @@ static int cnss_qca6290_shutdown(struct cnss_pci_data *pci_priv) if ((test_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state) || test_bit(CNSS_DRIVER_UNLOADING, &plat_priv->driver_state) || test_bit(CNSS_DRIVER_IDLE_RESTART, &plat_priv->driver_state) || - test_bit(CNSS_DRIVER_IDLE_SHUTDOWN, &plat_priv->driver_state)) && + test_bit(CNSS_DRIVER_IDLE_SHUTDOWN, &plat_priv->driver_state) || + test_bit(CNSS_IN_COLD_BOOT_CAL, &plat_priv->driver_state)) && test_bit(CNSS_DEV_ERR_NOTIFY, &plat_priv->driver_state)) { del_timer(&pci_priv->dev_rddm_timer); cnss_pci_collect_dump(pci_priv); @@ -4195,6 +4196,11 @@ void cnss_pci_collect_dump_info(struct cnss_pci_data *pci_priv, bool in_panic) return; } + if (!cnss_is_device_powered_on(plat_priv)) { + cnss_pr_dbg("Device is already powered off, skip\n"); + return; + } + if (!in_panic) { mutex_lock(&pci_priv->bus_lock); ret = cnss_pci_check_link_status(pci_priv);