mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-07-19 22:16:59 +08:00

QCN6122 wifi in fw-memory-mode 1 has a slightly larger caldb size than currently defined in the ath11k driver. When coldboot calibration was disabled, the fw mem mode was changed from 2 (256MB mem profile) to 1 (512MB mem profile), which is the correct setting for devices in scope. However, in fw mem mode, the caldb size is 0x500000 instead of the max 0x480000 defined in the driver, causing QCN6122 wifi failing to boot: ath11k b00a040.wifi1: qmi mem size is low to load caldata ath11k b00a040.wifi1: failed to assign qmi target memory: -22 As such, change the max caldb memory size accordingly. This macro is used by the driver only as a max size limit to validate the requested caldb size returned by QMI. Different ath11k wifi chips have different caldb sizes (for ex. the size for IPQ5018 is 0x200000). Fixes: d4adc99 ("wifi: ath11k: disable coldboot calibration for ipq5018") Signed-off-by: George Moussalem <george.moussalem@outlook.com> Signed-off-by: Robert Marko <robimarko@gmail.com>
121 lines
4.1 KiB
Diff
121 lines
4.1 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
|
|
@@ -787,6 +787,67 @@ static struct ath11k_hw_params ath11k_hw
|
|
.smp2p_wow_exit = false,
|
|
.support_fw_mac_sequence = 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_rxmda_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
|
|
@@ -145,6 +145,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,10 +22,11 @@
|
|
#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
|
|
-#define ATH11K_QMI_CALDB_SIZE 0x480000
|
|
+#define ATH11K_QMI_CALDB_SIZE 0x500000
|
|
#define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20
|
|
#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 5
|
|
|