Procházet zdrojové kódy

qcacmn: Force wake PCIe for hsp register write

make sure both PCIe and device are force woken for the register
writes for hsp, or write may fail.
Earlier WAR is not required as we have root caused it.

Change-Id: I350b810a6cef8eec46428e57f5b779f888552c1b
CRs-Fixed: 2677342
Jianmin Zhu před 5 roky
rodič
revize
6f95b4aadb
2 změnil soubory, kde provedl 7 přidání a 31 odebrání
  1. 0 25
      hal/wifi3.0/hal_generic_api.h
  2. 7 6
      hal/wifi3.0/hal_srng.c

+ 0 - 25
hal/wifi3.0/hal_generic_api.h

@@ -1787,29 +1787,6 @@ void hal_get_hw_hptp_generic(struct hal_soc *hal_soc,
 	}
 }
 
-#if defined(WBM_IDLE_LSB_WRITE_CONFIRM_WAR)
-/**
- * hal_wbm_idle_lsb_write_confirm() - Check and update WBM_IDLE_LINK ring LSB
- * @srng: srng handle
- *
- * Return: None
- */
-static void hal_wbm_idle_lsb_write_confirm(struct hal_srng *srng)
-{
-	if (srng->ring_id == HAL_SRNG_WBM_IDLE_LINK) {
-		while (SRNG_SRC_REG_READ(srng, BASE_LSB) !=
-		       ((unsigned int)srng->ring_base_paddr & 0xffffffff))
-				SRNG_SRC_REG_WRITE(srng, BASE_LSB,
-						   srng->ring_base_paddr &
-						   0xffffffff);
-	}
-}
-#else
-static void hal_wbm_idle_lsb_write_confirm(struct hal_srng *srng)
-{
-}
-#endif
-
 /**
  * hal_srng_src_hw_init - Private function to initialize SRNG
  * source ring HW
@@ -1837,8 +1814,6 @@ void hal_srng_src_hw_init_generic(struct hal_soc *hal,
 	}
 
 	SRNG_SRC_REG_WRITE(srng, BASE_LSB, srng->ring_base_paddr & 0xffffffff);
-	hal_wbm_idle_lsb_write_confirm(srng);
-
 	reg_val = SRNG_SM(SRNG_SRC_FLD(BASE_MSB, RING_BASE_ADDR_MSB),
 		((uint64_t)(srng->ring_base_paddr) >> 32)) |
 		SRNG_SM(SRNG_SRC_FLD(BASE_MSB, RING_SIZE),

+ 7 - 6
hal/wifi3.0/hal_srng.c

@@ -273,6 +273,12 @@ error:
 
 static void hal_target_based_configure(struct hal_soc *hal)
 {
+	/**
+	 * Indicate Initialization of srngs to avoid force wake
+	 * as umac power collapse is not enabled yet
+	 */
+	hal->init_phase = true;
+
 	switch (hal->target_type) {
 #ifdef QCA_WIFI_QCA6290
 	case TARGET_TYPE_QCA6290:
@@ -290,6 +296,7 @@ static void hal_target_based_configure(struct hal_soc *hal)
 	case TARGET_TYPE_QCA6490:
 		hal->use_register_windowing = true;
 		hal_qca6490_attach(hal);
+		hal->init_phase = false;
 	break;
 #endif
 #ifdef QCA_WIFI_QCA6750
@@ -772,12 +779,6 @@ void *hal_attach(struct hif_opaque_softc *hif_handle, qdf_device_t qdf_dev)
 
 	hal_reg_write_fail_history_init(hal);
 
-	/**
-	 * Indicate Initialization of srngs to avoid force wake
-	 * as umac power collapse is not enabled yet
-	 */
-	hal->init_phase = true;
-
 	qdf_minidump_log(hal, sizeof(*hal), "hal_soc");
 
 	qdf_atomic_init(&hal->active_work_cnt);