Loading drivers/net/wireless/cnss2/debug.c +3 −0 Original line number Diff line number Diff line Loading @@ -606,6 +606,9 @@ static int cnss_show_quirks_state(struct seq_file *s, case ENABLE_DAEMON_SUPPORT: seq_puts(s, "DAEMON_SUPPORT"); continue; case IGNORE_PCI_LINK_FAILURE: seq_puts(s, "IGNORE_PCI_LINK_FAILURE"); continue; } seq_printf(s, "UNKNOWN-%d", i); Loading drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ enum cnss_debug_quirks { ENABLE_PCI_LINK_DOWN_PANIC, FBC_BYPASS, ENABLE_DAEMON_SUPPORT, IGNORE_PCI_LINK_FAILURE, }; enum cnss_bdf_type { Loading drivers/net/wireless/cnss2/pci.c +20 −1 Original line number Diff line number Diff line Loading @@ -138,6 +138,9 @@ static DEFINE_SPINLOCK(pci_reg_window_lock); #define QCA6390_WLAON_QFPROM_PWR_CTRL_REG 0x1F8031C #define POWER_ON_RETRY_MAX_TIMES 3 #define POWER_ON_RETRY_DELAY_MS 200 static struct cnss_pci_reg ce_src[] = { { "SRC_RING_BASE_LSB", QCA6390_CE_SRC_RING_BASE_LSB_OFFSET }, { "SRC_RING_BASE_MSB", QCA6390_CE_SRC_RING_BASE_MSB_OFFSET }, Loading Loading @@ -436,8 +439,10 @@ int cnss_resume_pci_link(struct cnss_pci_data *pci_priv) } ret = cnss_set_pci_link(pci_priv, PCI_LINK_UP); if (ret) if (ret) { ret = -EAGAIN; goto out; } pci_priv->pci_link_state = PCI_LINK_UP; Loading Loading @@ -932,6 +937,7 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) int ret = 0; struct cnss_plat_data *plat_priv = pci_priv->plat_priv; unsigned int timeout; int retry = 0; if (plat_priv->ramdump_info_v2.dump_data_valid || test_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state)) { Loading @@ -939,6 +945,7 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) cnss_pci_clear_dump_info(pci_priv); } retry: ret = cnss_power_on_device(plat_priv); if (ret) { cnss_pr_err("Failed to power on device, err = %d\n", ret); Loading @@ -948,6 +955,18 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) ret = cnss_resume_pci_link(pci_priv); if (ret) { cnss_pr_err("Failed to resume PCI link, err = %d\n", ret); if (test_bit(IGNORE_PCI_LINK_FAILURE, &plat_priv->ctrl_params.quirks)) { cnss_pr_dbg("Ignore PCI link resume failure\n"); ret = 0; goto out; } if (ret == -EAGAIN && retry++ < POWER_ON_RETRY_MAX_TIMES) { cnss_power_off_device(plat_priv); cnss_pr_dbg("Retry to resume PCI link #%d\n", retry); msleep(POWER_ON_RETRY_DELAY_MS * retry); goto retry; } goto power_off; } Loading Loading
drivers/net/wireless/cnss2/debug.c +3 −0 Original line number Diff line number Diff line Loading @@ -606,6 +606,9 @@ static int cnss_show_quirks_state(struct seq_file *s, case ENABLE_DAEMON_SUPPORT: seq_puts(s, "DAEMON_SUPPORT"); continue; case IGNORE_PCI_LINK_FAILURE: seq_puts(s, "IGNORE_PCI_LINK_FAILURE"); continue; } seq_printf(s, "UNKNOWN-%d", i); Loading
drivers/net/wireless/cnss2/main.h +1 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ enum cnss_debug_quirks { ENABLE_PCI_LINK_DOWN_PANIC, FBC_BYPASS, ENABLE_DAEMON_SUPPORT, IGNORE_PCI_LINK_FAILURE, }; enum cnss_bdf_type { Loading
drivers/net/wireless/cnss2/pci.c +20 −1 Original line number Diff line number Diff line Loading @@ -138,6 +138,9 @@ static DEFINE_SPINLOCK(pci_reg_window_lock); #define QCA6390_WLAON_QFPROM_PWR_CTRL_REG 0x1F8031C #define POWER_ON_RETRY_MAX_TIMES 3 #define POWER_ON_RETRY_DELAY_MS 200 static struct cnss_pci_reg ce_src[] = { { "SRC_RING_BASE_LSB", QCA6390_CE_SRC_RING_BASE_LSB_OFFSET }, { "SRC_RING_BASE_MSB", QCA6390_CE_SRC_RING_BASE_MSB_OFFSET }, Loading Loading @@ -436,8 +439,10 @@ int cnss_resume_pci_link(struct cnss_pci_data *pci_priv) } ret = cnss_set_pci_link(pci_priv, PCI_LINK_UP); if (ret) if (ret) { ret = -EAGAIN; goto out; } pci_priv->pci_link_state = PCI_LINK_UP; Loading Loading @@ -932,6 +937,7 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) int ret = 0; struct cnss_plat_data *plat_priv = pci_priv->plat_priv; unsigned int timeout; int retry = 0; if (plat_priv->ramdump_info_v2.dump_data_valid || test_bit(CNSS_DRIVER_RECOVERY, &plat_priv->driver_state)) { Loading @@ -939,6 +945,7 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) cnss_pci_clear_dump_info(pci_priv); } retry: ret = cnss_power_on_device(plat_priv); if (ret) { cnss_pr_err("Failed to power on device, err = %d\n", ret); Loading @@ -948,6 +955,18 @@ static int cnss_qca6290_powerup(struct cnss_pci_data *pci_priv) ret = cnss_resume_pci_link(pci_priv); if (ret) { cnss_pr_err("Failed to resume PCI link, err = %d\n", ret); if (test_bit(IGNORE_PCI_LINK_FAILURE, &plat_priv->ctrl_params.quirks)) { cnss_pr_dbg("Ignore PCI link resume failure\n"); ret = 0; goto out; } if (ret == -EAGAIN && retry++ < POWER_ON_RETRY_MAX_TIMES) { cnss_power_off_device(plat_priv); cnss_pr_dbg("Retry to resume PCI link #%d\n", retry); msleep(POWER_ON_RETRY_DELAY_MS * retry); goto retry; } goto power_off; } Loading