forked from Openwrt-EcoNet/openwrt
Coldboot calibration does not work causes the firmware to crash during wifi startup. So let's disable coldboot calibration until a solution is found. Signed-off-by: George Moussalem <george.moussalem@outlook.com> Link: https://github.com/openwrt/openwrt/pull/19083 Signed-off-by: Robert Marko <robimarko@gmail.com>
116 lines
3.9 KiB
Diff
116 lines
3.9 KiB
Diff
From: George Moussalem <george.moussalem@outlook.com>
|
|
Date: Wed, 27 Oct 2024 16:34:11 +0400
|
|
Subject: [PATCH] wifi: ath11k: add hw params for QCN6122
|
|
|
|
Add QCN6122 platform support.
|
|
|
|
QCN6122 is a PCIe based solution that is attached to and enumerated
|
|
by the WPSS (Wireless Processor SubSystem) Q6 processor.
|
|
|
|
Though it is a PCIe device, since it is not attached to APSS processor
|
|
(Application Processor SubSystem), APSS will be unaware of such a decice
|
|
and hence it is registered to the APSS processor as a platform device(AHB).
|
|
Because of this hybrid nature, it is called as a hybrid bus device.
|
|
|
|
As such, QCN6122 is a hybrid bus type device and follows the same codepath
|
|
as for WCN6750.
|
|
|
|
This is a heavily simplified version of below downstream patch:
|
|
Download from https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/blob/NHSS.QSDK.12.4.5.r2/mac80211/patches/232-ath11k-qcn6122-support.patch
|
|
|
|
Co-developed-by: George Moussalem <george.moussalem@outlook.com>
|
|
Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
|
|
Signed-off-by: George Moussalem <george.moussalem@outlook.com>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/core.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
|
@@ -809,6 +809,67 @@ static struct ath11k_hw_params ath11k_hw
|
|
.support_fw_mac_sequence = true,
|
|
.support_dual_stations = true,
|
|
},
|
|
+ {
|
|
+ .hw_rev = ATH11K_HW_QCN6122_HW10,
|
|
+ .name = "qcn6122 hw1.0",
|
|
+ .fw = {
|
|
+ .dir = "QCN6122/hw1.0",
|
|
+ .board_size = 256 * 1024,
|
|
+ .cal_offset = 128 * 1024,
|
|
+ },
|
|
+ .hal_params = &ath11k_hw_hal_params_ipq8074,
|
|
+ .max_radios = MAX_RADIOS_5018,
|
|
+ .bdf_addr = 0x4D200000,
|
|
+ .hw_ops = &ipq5018_ops,
|
|
+ .hal_desc_sz = sizeof(struct hal_rx_desc_qcn9074),
|
|
+ .qmi_service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN6122,
|
|
+ .interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
|
+ BIT(NL80211_IFTYPE_AP) |
|
|
+ BIT(NL80211_IFTYPE_MESH_POINT),
|
|
+ .spectral = {
|
|
+ .fft_sz = 2,
|
|
+ .fft_pad_sz = 0,
|
|
+ .summary_pad_sz = 16,
|
|
+ .fft_hdr_len = 24,
|
|
+ .max_fft_bins = 1024,
|
|
+ },
|
|
+ .credit_flow = false,
|
|
+ .max_tx_ring = 1,
|
|
+ .supports_monitor = true,
|
|
+ .supports_shadow_regs = false,
|
|
+ .idle_ps = false,
|
|
+ .supports_suspend = false,
|
|
+ .host_ce_config = ath11k_host_ce_config_qcn9074,
|
|
+ .ce_count = CE_CNT_5018,
|
|
+ .target_ce_config = ath11k_target_ce_config_wlan_ipq5018,
|
|
+ .target_ce_count = TARGET_CE_CNT_5018,
|
|
+ .svc_to_ce_map = ath11k_target_service_to_ce_map_wlan_ipq5018,
|
|
+ .svc_to_ce_map_len = SVC_CE_MAP_LEN_5018,
|
|
+ .single_pdev_only = false,
|
|
+ .rxdma1_enable = true,
|
|
+ .num_rxdma_per_pdev = RXDMA_PER_PDEV_5018,
|
|
+ .rx_mac_buf_ring = false,
|
|
+ .vdev_start_delay = false,
|
|
+ .htt_peer_map_v2 = true,
|
|
+ .coldboot_cal_mm = false,
|
|
+ .coldboot_cal_ftm = false,
|
|
+ .cbcal_restart_fw = true,
|
|
+ .fix_l1ss = true,
|
|
+ .alloc_cacheable_memory = true,
|
|
+ .m3_fw_support = false,
|
|
+ .fixed_bdf_addr = true,
|
|
+ .fixed_mem_region = true,
|
|
+ .static_window_map = true,
|
|
+ .hybrid_bus_type = true,
|
|
+ .fw_mem_mode = 1,
|
|
+ .supports_sta_ps = false,
|
|
+ .dbr_debug_support = true,
|
|
+ .bios_sar_capa = NULL,
|
|
+ .fixed_fw_mem = false,
|
|
+ .support_off_channel_tx = false,
|
|
+ .tcl_ring_retry = true,
|
|
+ .tx_ring_size = DP_TCL_DATA_RING_SIZE,
|
|
+ },
|
|
};
|
|
|
|
static inline struct ath11k_pdev *ath11k_core_get_single_pdev(struct ath11k_base *ab)
|
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
|
@@ -148,6 +148,7 @@ enum ath11k_hw_rev {
|
|
ATH11K_HW_WCN6750_HW10,
|
|
ATH11K_HW_IPQ5018_HW10,
|
|
ATH11K_HW_QCA2066_HW21,
|
|
+ ATH11K_HW_QCN6122_HW10,
|
|
};
|
|
|
|
enum ath11k_firmware_mode {
|
|
--- a/drivers/net/wireless/ath/ath11k/qmi.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/qmi.h
|
|
@@ -22,6 +22,7 @@
|
|
#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074 0x02
|
|
#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN9074 0x07
|
|
#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_WCN6750 0x03
|
|
+#define ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCN6122 0x40
|
|
#define ATH11K_QMI_WLANFW_MAX_TIMESTAMP_LEN_V01 32
|
|
#define ATH11K_QMI_RESP_LEN_MAX 8192
|
|
#define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52
|