|
@@ -4405,6 +4405,7 @@ static inline QDF_STATUS hif_alloc_rri_on_ddr(struct hif_softc *scn)
|
|
|
*
|
|
|
* Return: None
|
|
|
*/
|
|
|
+#ifdef QCA_WIFI_WCN6450
|
|
|
static inline void hif_config_rri_on_ddr(struct hif_softc *scn)
|
|
|
{
|
|
|
unsigned int i;
|
|
@@ -4424,6 +4425,41 @@ static inline void hif_config_rri_on_ddr(struct hif_softc *scn)
|
|
|
for (i = 0; i < CE_COUNT; i++)
|
|
|
CE_IDX_UPD_EN_SET(scn, CE_BASE_ADDRESS(i));
|
|
|
}
|
|
|
+#else
|
|
|
+static inline void hif_config_rri_on_ddr(struct hif_softc *scn)
|
|
|
+{
|
|
|
+ unsigned int i;
|
|
|
+ uint32_t high_paddr, low_paddr;
|
|
|
+ struct HIF_CE_state *hif_state = HIF_GET_CE_STATE(scn);
|
|
|
+ struct CE_pipe_config *ce_config;
|
|
|
+
|
|
|
+ if (hif_alloc_rri_on_ddr(scn) != QDF_STATUS_SUCCESS)
|
|
|
+ return;
|
|
|
+
|
|
|
+ low_paddr = RRI_ON_DDR_PADDR_LOW(scn->paddr_rri_on_ddr);
|
|
|
+ high_paddr = RRI_ON_DDR_PADDR_HIGH(scn->paddr_rri_on_ddr);
|
|
|
+
|
|
|
+ hif_debug("using srri and drri from DDR");
|
|
|
+
|
|
|
+ WRITE_CE_DDR_ADDRESS_FOR_RRI_LOW(scn, low_paddr);
|
|
|
+ WRITE_CE_DDR_ADDRESS_FOR_RRI_HIGH(scn, high_paddr);
|
|
|
+
|
|
|
+ for (i = 0; i < CE_COUNT; i++) {
|
|
|
+ ce_config = &hif_state->target_ce_config[i];
|
|
|
+ /*
|
|
|
+ * For DST channel program both IDX_UPD_EN and
|
|
|
+ * DMAX length(behalf of F.W) at once to avoid
|
|
|
+ * race with F.W register update.
|
|
|
+ */
|
|
|
+ if (ce_config->pipedir == PIPEDIR_IN && ce_config->nbytes_max)
|
|
|
+ CE_IDX_UPD_EN_DMAX_LEN_SET(scn, CE_BASE_ADDRESS(i),
|
|
|
+ ce_config->nbytes_max);
|
|
|
+ else
|
|
|
+ CE_IDX_UPD_EN_SET(scn, CE_BASE_ADDRESS(i));
|
|
|
+ }
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
#else
|
|
|
/**
|
|
|
* hif_config_rri_on_ddr(): Configure the RRI on DDR mechanism
|