diff mbox series

[PATCHv2,2/8] wifi: ath11k: update hw params for IPQ5018

Message ID 20221122132152.17771-3-quic_kathirve@quicinc.com (mailing list archive)
State Accepted
Commit 8dfe875aa24aec68baf6702018633c84c2c1feca
Delegated to: Kalle Valo
Headers show
Series wifi: ath11k: Add support for IPQ5018 | expand

Commit Message

Karthikeyan Kathirvel Nov. 22, 2022, 1:21 p.m. UTC
From: Sriram R <quic_srirrama@quicinc.com>

Add new compatible string for IPQ5018 and add
required hw params for IPQ5018. The hw descriptors size and
datapath ops are similar to QCN9074, hence reuse the same.

Tested-on : IPQ5018 hw1.0 AHB WLAN.HK.2.6.0.1-00861-QCAHKSWPL_SILICONZ-1

Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
Co-developed-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/core.c | 70 ++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath11k/core.h |  8 +++
 2 files changed, 78 insertions(+)

Comments

Kalle Valo Dec. 2, 2022, 7:26 p.m. UTC | #1
Karthikeyan Kathirvel <quic_kathirve@quicinc.com> writes:

> From: Sriram R <quic_srirrama@quicinc.com>
>
> Add new compatible string for IPQ5018 and add
> required hw params for IPQ5018. The hw descriptors size and
> datapath ops are similar to QCN9074, hence reuse the same.
>
> Tested-on : IPQ5018 hw1.0 AHB WLAN.HK.2.6.0.1-00861-QCAHKSWPL_SILICONZ-1
>
> Signed-off-by: Sriram R <quic_srirrama@quicinc.com>
> Co-developed-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
> Signed-off-by: Karthikeyan Kathirvel <quic_kathirve@quicinc.com>
> ---
>  drivers/net/wireless/ath/ath11k/core.c | 70 ++++++++++++++++++++++++++
>  drivers/net/wireless/ath/ath11k/core.h |  8 +++
>  2 files changed, 78 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
> index edf78df9b12f..d2af175a3d93 100644
> --- a/drivers/net/wireless/ath/ath11k/core.c
> +++ b/drivers/net/wireless/ath/ath11k/core.c
> @@ -604,6 +604,76 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
>  		.smp2p_wow_exit = true,
>  		.support_fw_mac_sequence = true,
>  	},
> +	{
> +		.hw_rev = ATH11K_HW_IPQ5018_HW10,
> +		.name = "ipq5018 hw1.0",
> +		.fw = {
> +			.dir = "IPQ5018/hw1.0",
> +			.board_size = 256 * 1024,
> +			.cal_offset = 128 * 1024,
> +		},
> +		.max_radios = MAX_RADIOS_5018,
> +		.bdf_addr = 0x4BA00000,
> +		/* hal_desc_sz and hw ops are similar to qcn9074 */
> +		.hal_desc_sz = sizeof(struct hal_rx_desc_qcn9074),
> +		.qmi_service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074,
> +		.ring_mask = &ath11k_hw_ring_mask_ipq8074,
> +		.credit_flow = false,
> +		.max_tx_ring = 1,
> +		.spectral = {
> +			.fft_sz = 2,
> +			.fft_pad_sz = 0,
> +			.summary_pad_sz = 16,
> +			.fft_hdr_len = 24,
> +			.max_fft_bins = 1024,
> +		},
> +		.internal_sleep_clock = false,
> +		.host_ce_config = ath11k_host_ce_config_qcn9074,
> +		.ce_count = CE_CNT_5018,
> +		.rxdma1_enable = true,
> +		.num_rxmda_per_pdev = RXDMA_PER_PDEV_5018,
> +		.rx_mac_buf_ring = false,
> +		.vdev_start_delay = false,
> +		.htt_peer_map_v2 = true,
> +		.interface_modes = BIT(NL80211_IFTYPE_STATION) |
> +			BIT(NL80211_IFTYPE_AP) |
> +			BIT(NL80211_IFTYPE_MESH_POINT),
> +		.supports_monitor = false,
> +		.supports_sta_ps = false,
> +		.supports_shadow_regs = false,
> +		.fw_mem_mode = 0,
> +		.num_vdevs = 16 + 1,
> +		.num_peers = 512,
> +		.supports_regdb = false,
> +		.idle_ps = false,
> +		.supports_suspend = false,
> +		.hal_params = &ath11k_hw_hal_params_ipq8074,
> +		.single_pdev_only = false,
> +		.cold_boot_calib = true,
> +		.fix_l1ss = true,
> +		.supports_dynamic_smps_6ghz = false,
> +		.alloc_cacheable_memory = true,
> +		.supports_rssi_stats = false,
> +		.fw_wmi_diag_event = false,
> +		.current_cc_support = false,
> +		.dbr_debug_support = true,
> +		.global_reset = false,
> +		.bios_sar_capa = NULL,
> +		.m3_fw_support = false,
> +		.fixed_bdf_addr = true,
> +		.fixed_mem_region = true,
> +		.static_window_map = false,
> +		.hybrid_bus_type = false,
> +		.fixed_fw_mem = false,
> +		.support_off_channel_tx = false,
> +		.supports_multi_bssid = false,
> +
> +		.sram_dump = {},
> +
> +		.tcl_ring_retry = true,
> +		.tx_ring_size = DP_TCL_DATA_RING_SIZE,
> +		.smp2p_wow_exit = false,
> +	},

support_fw_mac_sequence was missing so in the pending branch I added
that:

--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -673,6 +673,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
                .tcl_ring_retry = true,
                .tx_ring_size = DP_TCL_DATA_RING_SIZE,
                .smp2p_wow_exit = false,
+               .support_fw_mac_sequence = false,
        },
 };
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index edf78df9b12f..d2af175a3d93 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -604,6 +604,76 @@  static const struct ath11k_hw_params ath11k_hw_params[] = {
 		.smp2p_wow_exit = true,
 		.support_fw_mac_sequence = true,
 	},
+	{
+		.hw_rev = ATH11K_HW_IPQ5018_HW10,
+		.name = "ipq5018 hw1.0",
+		.fw = {
+			.dir = "IPQ5018/hw1.0",
+			.board_size = 256 * 1024,
+			.cal_offset = 128 * 1024,
+		},
+		.max_radios = MAX_RADIOS_5018,
+		.bdf_addr = 0x4BA00000,
+		/* hal_desc_sz and hw ops are similar to qcn9074 */
+		.hal_desc_sz = sizeof(struct hal_rx_desc_qcn9074),
+		.qmi_service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074,
+		.ring_mask = &ath11k_hw_ring_mask_ipq8074,
+		.credit_flow = false,
+		.max_tx_ring = 1,
+		.spectral = {
+			.fft_sz = 2,
+			.fft_pad_sz = 0,
+			.summary_pad_sz = 16,
+			.fft_hdr_len = 24,
+			.max_fft_bins = 1024,
+		},
+		.internal_sleep_clock = false,
+		.host_ce_config = ath11k_host_ce_config_qcn9074,
+		.ce_count = CE_CNT_5018,
+		.rxdma1_enable = true,
+		.num_rxmda_per_pdev = RXDMA_PER_PDEV_5018,
+		.rx_mac_buf_ring = false,
+		.vdev_start_delay = false,
+		.htt_peer_map_v2 = true,
+		.interface_modes = BIT(NL80211_IFTYPE_STATION) |
+			BIT(NL80211_IFTYPE_AP) |
+			BIT(NL80211_IFTYPE_MESH_POINT),
+		.supports_monitor = false,
+		.supports_sta_ps = false,
+		.supports_shadow_regs = false,
+		.fw_mem_mode = 0,
+		.num_vdevs = 16 + 1,
+		.num_peers = 512,
+		.supports_regdb = false,
+		.idle_ps = false,
+		.supports_suspend = false,
+		.hal_params = &ath11k_hw_hal_params_ipq8074,
+		.single_pdev_only = false,
+		.cold_boot_calib = true,
+		.fix_l1ss = true,
+		.supports_dynamic_smps_6ghz = false,
+		.alloc_cacheable_memory = true,
+		.supports_rssi_stats = false,
+		.fw_wmi_diag_event = false,
+		.current_cc_support = false,
+		.dbr_debug_support = true,
+		.global_reset = false,
+		.bios_sar_capa = NULL,
+		.m3_fw_support = false,
+		.fixed_bdf_addr = true,
+		.fixed_mem_region = true,
+		.static_window_map = false,
+		.hybrid_bus_type = false,
+		.fixed_fw_mem = false,
+		.support_off_channel_tx = false,
+		.supports_multi_bssid = false,
+
+		.sram_dump = {},
+
+		.tcl_ring_retry = true,
+		.tx_ring_size = DP_TCL_DATA_RING_SIZE,
+		.smp2p_wow_exit = false,
+	},
 };
 
 static inline struct ath11k_pdev *ath11k_core_get_single_pdev(struct ath11k_base *ab)
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index 22460b0abf03..337a47c411dd 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -142,6 +142,7 @@  enum ath11k_hw_rev {
 	ATH11K_HW_WCN6855_HW20,
 	ATH11K_HW_WCN6855_HW21,
 	ATH11K_HW_WCN6750_HW10,
+	ATH11K_HW_IPQ5018_HW10,
 };
 
 enum ath11k_firmware_mode {
@@ -230,6 +231,13 @@  struct ath11k_he {
 
 #define MAX_RADIOS 3
 
+/* ipq5018 hw param macros */
+#define MAX_RADIOS_5018	1
+#define CE_CNT_5018	6
+#define TARGET_CE_CNT_5018	9
+#define SVC_CE_MAP_LEN_5018	17
+#define RXDMA_PER_PDEV_5018	1
+
 enum {
 	WMI_HOST_TP_SCALE_MAX   = 0,
 	WMI_HOST_TP_SCALE_50    = 1,