]> git.ipfire.org Git - thirdparty/openwrt.git/blob
81aee57546ee4453d3934d277b3a865a713426ac
[thirdparty/openwrt.git] /
1 From 824dde8652815aa67b4e2bf2d8a9455a8ef82b8f Mon Sep 17 00:00:00 2001
2 From: Ziyang Huang <hzyitc@outlook.com>
3 Date: Thu, 29 Jun 2023 06:12:45 +0000
4 Subject: [PATCH] wifi: ath11k: Support setting bdf-addr and caldb-addr via DT
5
6 Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
7 ---
8 drivers/net/wireless/ath/ath11k/qmi.c | 15 +++++++++++----
9 1 file changed, 11 insertions(+), 4 deletions(-)
10
11 --- a/drivers/net/wireless/ath/ath11k/qmi.c
12 +++ b/drivers/net/wireless/ath/ath11k/qmi.c
13 @@ -2028,6 +2028,7 @@ static int ath11k_qmi_assign_target_mem_
14 struct device_node *hremote_node = NULL;
15 struct resource res;
16 u32 host_ddr_sz;
17 + u32 addr;
18 int i, idx, ret;
19
20 for (i = 0, idx = 0; i < ab->qmi.mem_seg_count; i++) {
21 @@ -2067,7 +2068,9 @@ static int ath11k_qmi_assign_target_mem_
22 idx++;
23 break;
24 case BDF_MEM_REGION_TYPE:
25 - ab->qmi.target_mem[idx].paddr = ab->hw_params.bdf_addr;
26 + if(of_property_read_u32(dev->of_node, "qcom,bdf-addr", &addr))
27 + addr = ab->hw_params.bdf_addr;
28 + ab->qmi.target_mem[idx].paddr = addr;
29 ab->qmi.target_mem[idx].vaddr = NULL;
30 ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size;
31 ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type;
32 @@ -2089,8 +2092,9 @@ static int ath11k_qmi_assign_target_mem_
33 if (!ab->qmi.target_mem[idx].iaddr)
34 return -EIO;
35 } else {
36 - ab->qmi.target_mem[idx].paddr =
37 - ATH11K_QMI_CALDB_ADDRESS;
38 + if(of_property_read_u32(dev->of_node, "qcom,caldb-addr", &addr))
39 + addr = ATH11K_QMI_CALDB_ADDRESS;
40 + ab->qmi.target_mem[idx].paddr = addr;
41 }
42 } else {
43 ab->qmi.target_mem[idx].paddr = 0;
44 @@ -2295,6 +2299,7 @@ static int ath11k_qmi_load_file_target_m
45 struct qmi_wlanfw_bdf_download_resp_msg_v01 resp;
46 struct qmi_txn txn;
47 const u8 *temp = data;
48 + u32 addr;
49 void __iomem *bdf_addr = NULL;
50 int ret = 0;
51 u32 remaining = len;
52 @@ -2306,7 +2311,9 @@ static int ath11k_qmi_load_file_target_m
53 memset(&resp, 0, sizeof(resp));
54
55 if (ab->hw_params.fixed_bdf_addr) {
56 - bdf_addr = ioremap(ab->hw_params.bdf_addr, ab->hw_params.fw.board_size);
57 + if(of_property_read_u32(ab->dev->of_node, "qcom,bdf-addr", &addr))
58 + addr = ab->hw_params.bdf_addr;
59 + bdf_addr = ioremap(addr, ab->hw_params.fw.board_size);
60 if (!bdf_addr) {
61 ath11k_warn(ab, "qmi ioremap error for bdf_addr\n");
62 ret = -EIO;