diff --git a/dp/inc/cdp_txrx_cmn_reg.h b/dp/inc/cdp_txrx_cmn_reg.h index 7607c2baa4..ec3ab81b42 100644 --- a/dp/inc/cdp_txrx_cmn_reg.h +++ b/dp/inc/cdp_txrx_cmn_reg.h @@ -33,6 +33,17 @@ #define BERYLLIUM_DP 0xaffe /* Use device IDs for attach in future */ +/* enum cdp_arch_type - enum for DP arch type + * CDP_ARCH_TYPE_LI - for lithium + * CDP_ARCH_TYPE_BE - for beryllium + * CDP_ARCH_TYPE_NONE - not supported + */ +enum cdp_arch_type { + CDP_ARCH_TYPE_NONE = -1, + CDP_ARCH_TYPE_LI, + CDP_ARCH_TYPE_BE, +}; + #if defined(DP_TXRX_SOC_ATTACH) static inline ol_txrx_soc_handle ol_txrx_soc_attach(void *scn_handle, struct ol_if_ops *dp_ol_if_ops) @@ -124,12 +135,13 @@ static inline int cdp_get_arch_type_from_devid(uint16_t devid) case RUMIM2M_DEVICE_ID_NODE3: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE4: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE5: /*lithium emulation */ - return LITHIUM_DP; + return CDP_ARCH_TYPE_LI; case BERYLLIUM_DP: case WCN7850_DEVICE_ID: - return BERYLLIUM_DP; + case QCN9224_DEVICE_ID: + return CDP_ARCH_TYPE_BE; default: - return -1; + return CDP_ARCH_TYPE_NONE; } } @@ -161,6 +173,7 @@ ol_txrx_soc_handle cdp_soc_attach(u_int16_t devid, case RUMIM2M_DEVICE_ID_NODE4: /*lithium emulation */ case RUMIM2M_DEVICE_ID_NODE5: /*lithium emulation */ case WCN7850_DEVICE_ID: + case QCN9224_DEVICE_ID: return dp_soc_attach_wifi3(psoc, hif_handle, htc_handle, qdf_dev, dp_ol_if_ops, devid); break; diff --git a/dp/wifi3.0/dp_arch_ops.c b/dp/wifi3.0/dp_arch_ops.c index 6a81fca15a..c229fe1b17 100644 --- a/dp/wifi3.0/dp_arch_ops.c +++ b/dp/wifi3.0/dp_arch_ops.c @@ -42,12 +42,12 @@ qdf_size_t dp_get_soc_context_size(uint16_t device_id) { switch (cdp_get_arch_type_from_devid(device_id)) { #ifdef CONFIG_LITHIUM - case LITHIUM_DP: + case CDP_ARCH_TYPE_LI: return dp_get_soc_context_size_li(); #endif #ifdef CONFIG_BERYLLIUM - case BERYLLIUM_DP: + case CDP_ARCH_TYPE_BE: return dp_get_soc_context_size_be(); break; #endif @@ -64,13 +64,13 @@ void dp_configure_arch_ops(struct dp_soc *soc) switch (cdp_get_arch_type_from_devid(soc->device_id)) { #ifdef CONFIG_LITHIUM - case LITHIUM_DP: + case CDP_ARCH_TYPE_LI: dp_initialize_arch_ops_li(&soc->arch_ops); break; #endif #ifdef CONFIG_BERYLLIUM - case BERYLLIUM_DP: + case CDP_ARCH_TYPE_BE: dp_initialize_arch_ops_be(&soc->arch_ops); break; #endif diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 1746ba8152..394cff2e60 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -13129,9 +13129,9 @@ static uint32_t dp_get_link_desc_id_start(uint16_t arch_id) { switch (arch_id) { - case LITHIUM_DP: + case CDP_ARCH_TYPE_LI: return LINK_DESC_ID_START_21_BITS_COOKIE; - case BERYLLIUM_DP: + case CDP_ARCH_TYPE_BE: return LINK_DESC_ID_START_20_BITS_COOKIE; default: dp_err("unkonwn arch_id 0x%x", arch_id); @@ -14899,6 +14899,19 @@ static void dp_soc_cfg_init(struct dp_soc *soc) soc->disable_mac1_intr = 1; soc->disable_mac2_intr = 1; soc->wbm_release_desc_rx_sg_support = 1; + break; + case TARGET_TYPE_QCN9224: + wlan_cfg_set_mon_delayed_replenish_entries(soc->wlan_cfg_ctx, + MON_BUF_MIN_ENTRIES); + wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx, + REO_DST_RING_SIZE_QCA8074); + soc->ast_override_support = 1; + soc->da_war_enabled = false; + wlan_cfg_set_raw_mode_war(soc->wlan_cfg_ctx, false); + soc->hw_nac_monitor_support = 1; + soc->per_tid_basize_max_tid = 8; + soc->wbm_release_desc_rx_sg_support = 1; + break; default: qdf_print("%s: Unknown tgt type %d\n", __func__, target_type); @@ -14957,6 +14970,12 @@ static void dp_soc_cfg_attach(struct dp_soc *soc) REO_DST_RING_SIZE_QCN9000); wlan_cfg_set_rxdma1_enable(soc->wlan_cfg_ctx); break; + case TARGET_TYPE_QCN9224: + wlan_cfg_set_tso_desc_attach_defer(soc->wlan_cfg_ctx, 1); + wlan_cfg_set_reo_dst_ring_size(soc->wlan_cfg_ctx, + REO_DST_RING_SIZE_QCA8074); + wlan_cfg_set_rxdma1_enable(soc->wlan_cfg_ctx); + break; default: qdf_print("%s: Unknown tgt type %d\n", __func__, target_type); qdf_assert_always(0);