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 <yuem@codeaurora.org>
This commit is contained in:
Yue Ma 2020-10-02 10:12:23 -07:00
commit bba33b3509

View file

@ -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);