qcacmn: Fix for AR9887/AR9888 chips bringup
With the converged code swfit has issues in bringup.
Below changes are done to make it work.
1 Target type checks for AR9887/AR9888 corrected.
2 Added new reg write to wake the chip after enabling
interrupts
Change-Id: Ib17d03cb4f0699d8d2270340b2c8a4002f0b31d0
CRs-Fixed: 1035003
diff --git a/hif/src/ce/ce_diag.c b/hif/src/ce/ce_diag.c
index c1ee743..2fe339c 100644
--- a/hif/src/ce/ce_diag.c
+++ b/hif/src/ce/ce_diag.c
@@ -185,7 +185,7 @@
if ((target_type == TARGET_TYPE_IPQ4019) ||
(target_type == TARGET_TYPE_AR900B) ||
(target_type == TARGET_TYPE_QCA9984) ||
- (target_type == TARGET_TYPE_IPQ4019) ||
+ (target_type == TARGET_TYPE_AR9888) ||
(target_type == TARGET_TYPE_QCA9888))
boundary_addr = FW_SRAM_ADDRESS;
else
diff --git a/hif/src/pcie/if_pci.c b/hif/src/pcie/if_pci.c
index 0307894..97b6956 100644
--- a/hif/src/pcie/if_pci.c
+++ b/hif/src/pcie/if_pci.c
@@ -1856,7 +1856,7 @@
if ((target_type == TARGET_TYPE_AR900B)
|| (target_type == TARGET_TYPE_QCA9984)
|| (target_type == TARGET_TYPE_QCA9888)
- || (target_type == TARGET_TYPE_QCA9888)) {
+ || (target_type == TARGET_TYPE_AR9888)) {
hif_set_hia_extnd(scn);
}
@@ -2327,6 +2327,7 @@
{
int ret = 0;
struct hif_softc *scn = HIF_GET_SOFTC(sc);
+ uint32_t target_type = scn->target_info.target_type;
HIF_TRACE("%s: E", __func__);
@@ -2350,6 +2351,15 @@
PCIE_INTR_ENABLE_ADDRESS));
hif_write32_mb(sc->mem + PCIE_LOCAL_BASE_ADDRESS +
PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_RESET);
+
+ if ((target_type == TARGET_TYPE_IPQ4019) ||
+ (target_type == TARGET_TYPE_AR900B) ||
+ (target_type == TARGET_TYPE_QCA9984) ||
+ (target_type == TARGET_TYPE_AR9888) ||
+ (target_type == TARGET_TYPE_QCA9888)) {
+ hif_write32_mb(scn->mem + PCIE_LOCAL_BASE_ADDRESS +
+ PCIE_SOC_WAKE_ADDRESS, PCIE_SOC_WAKE_V_MASK);
+ }
end:
QDF_TRACE(QDF_MODULE_ID_HIF, QDF_TRACE_LEVEL_ERROR,
"%s: X, ret = %d", __func__, ret);