2022-11-22 13:27:41

by Karthikeyan Kathirvel

[permalink] [raw]
Subject: [PATCHv2 2/8] wifi: ath11k: update hw params for IPQ5018

From: Sriram R <[email protected]>

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 <[email protected]>
Co-developed-by: Karthikeyan Kathirvel <[email protected]>
Signed-off-by: Karthikeyan Kathirvel <[email protected]>
---
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,
+ },
};

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,
--
2.17.1


2022-12-02 19:42:49

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCHv2 2/8] wifi: ath11k: update hw params for IPQ5018

Karthikeyan Kathirvel <[email protected]> writes:

> From: Sriram R <[email protected]>
>
> 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 <[email protected]>
> Co-developed-by: Karthikeyan Kathirvel <[email protected]>
> Signed-off-by: Karthikeyan Kathirvel <[email protected]>
> ---
> 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,
},
};


--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches