1da8fa4e3SBjoern A. Zeeb // SPDX-License-Identifier: ISC
2da8fa4e3SBjoern A. Zeeb /*
3da8fa4e3SBjoern A. Zeeb * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
4da8fa4e3SBjoern A. Zeeb * Copyright (c) 2018, The Linux Foundation. All rights reserved.
5da8fa4e3SBjoern A. Zeeb */
6da8fa4e3SBjoern A. Zeeb
7da8fa4e3SBjoern A. Zeeb #include "coredump.h"
8da8fa4e3SBjoern A. Zeeb
9da8fa4e3SBjoern A. Zeeb #include <linux/devcoredump.h>
10da8fa4e3SBjoern A. Zeeb #include <linux/kernel.h>
11da8fa4e3SBjoern A. Zeeb #include <linux/types.h>
12da8fa4e3SBjoern A. Zeeb #include <linux/utsname.h>
13da8fa4e3SBjoern A. Zeeb
14da8fa4e3SBjoern A. Zeeb #include "debug.h"
15da8fa4e3SBjoern A. Zeeb #include "hw.h"
16da8fa4e3SBjoern A. Zeeb
17da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_section qca6174_hw21_register_sections[] = {
18da8fa4e3SBjoern A. Zeeb {0x800, 0x810},
19da8fa4e3SBjoern A. Zeeb {0x820, 0x82C},
20da8fa4e3SBjoern A. Zeeb {0x830, 0x8F4},
21da8fa4e3SBjoern A. Zeeb {0x90C, 0x91C},
22da8fa4e3SBjoern A. Zeeb {0xA14, 0xA18},
23da8fa4e3SBjoern A. Zeeb {0xA84, 0xA94},
24da8fa4e3SBjoern A. Zeeb {0xAA8, 0xAD4},
25da8fa4e3SBjoern A. Zeeb {0xADC, 0xB40},
26da8fa4e3SBjoern A. Zeeb {0x1000, 0x10A4},
27da8fa4e3SBjoern A. Zeeb {0x10BC, 0x111C},
28da8fa4e3SBjoern A. Zeeb {0x1134, 0x1138},
29da8fa4e3SBjoern A. Zeeb {0x1144, 0x114C},
30da8fa4e3SBjoern A. Zeeb {0x1150, 0x115C},
31da8fa4e3SBjoern A. Zeeb {0x1160, 0x1178},
32da8fa4e3SBjoern A. Zeeb {0x1240, 0x1260},
33da8fa4e3SBjoern A. Zeeb {0x2000, 0x207C},
34da8fa4e3SBjoern A. Zeeb {0x3000, 0x3014},
35da8fa4e3SBjoern A. Zeeb {0x4000, 0x4014},
36da8fa4e3SBjoern A. Zeeb {0x5000, 0x5124},
37da8fa4e3SBjoern A. Zeeb {0x6000, 0x6040},
38da8fa4e3SBjoern A. Zeeb {0x6080, 0x60CC},
39da8fa4e3SBjoern A. Zeeb {0x6100, 0x611C},
40da8fa4e3SBjoern A. Zeeb {0x6140, 0x61D8},
41da8fa4e3SBjoern A. Zeeb {0x6200, 0x6238},
42da8fa4e3SBjoern A. Zeeb {0x6240, 0x628C},
43da8fa4e3SBjoern A. Zeeb {0x62C0, 0x62EC},
44da8fa4e3SBjoern A. Zeeb {0x6380, 0x63E8},
45da8fa4e3SBjoern A. Zeeb {0x6400, 0x6440},
46da8fa4e3SBjoern A. Zeeb {0x6480, 0x64CC},
47da8fa4e3SBjoern A. Zeeb {0x6500, 0x651C},
48da8fa4e3SBjoern A. Zeeb {0x6540, 0x6580},
49da8fa4e3SBjoern A. Zeeb {0x6600, 0x6638},
50da8fa4e3SBjoern A. Zeeb {0x6640, 0x668C},
51da8fa4e3SBjoern A. Zeeb {0x66C0, 0x66EC},
52da8fa4e3SBjoern A. Zeeb {0x6780, 0x67E8},
53da8fa4e3SBjoern A. Zeeb {0x7080, 0x708C},
54da8fa4e3SBjoern A. Zeeb {0x70C0, 0x70C8},
55da8fa4e3SBjoern A. Zeeb {0x7400, 0x741C},
56da8fa4e3SBjoern A. Zeeb {0x7440, 0x7454},
57da8fa4e3SBjoern A. Zeeb {0x7800, 0x7818},
58da8fa4e3SBjoern A. Zeeb {0x8000, 0x8004},
59da8fa4e3SBjoern A. Zeeb {0x8010, 0x8064},
60da8fa4e3SBjoern A. Zeeb {0x8080, 0x8084},
61da8fa4e3SBjoern A. Zeeb {0x80A0, 0x80A4},
62da8fa4e3SBjoern A. Zeeb {0x80C0, 0x80C4},
63da8fa4e3SBjoern A. Zeeb {0x80E0, 0x80F4},
64da8fa4e3SBjoern A. Zeeb {0x8100, 0x8104},
65da8fa4e3SBjoern A. Zeeb {0x8110, 0x812C},
66da8fa4e3SBjoern A. Zeeb {0x9000, 0x9004},
67da8fa4e3SBjoern A. Zeeb {0x9800, 0x982C},
68da8fa4e3SBjoern A. Zeeb {0x9830, 0x9838},
69da8fa4e3SBjoern A. Zeeb {0x9840, 0x986C},
70da8fa4e3SBjoern A. Zeeb {0x9870, 0x9898},
71da8fa4e3SBjoern A. Zeeb {0x9A00, 0x9C00},
72da8fa4e3SBjoern A. Zeeb {0xD580, 0xD59C},
73da8fa4e3SBjoern A. Zeeb {0xF000, 0xF0E0},
74da8fa4e3SBjoern A. Zeeb {0xF140, 0xF190},
75da8fa4e3SBjoern A. Zeeb {0xF250, 0xF25C},
76da8fa4e3SBjoern A. Zeeb {0xF260, 0xF268},
77da8fa4e3SBjoern A. Zeeb {0xF26C, 0xF2A8},
78da8fa4e3SBjoern A. Zeeb {0x10008, 0x1000C},
79da8fa4e3SBjoern A. Zeeb {0x10014, 0x10018},
80da8fa4e3SBjoern A. Zeeb {0x1001C, 0x10020},
81da8fa4e3SBjoern A. Zeeb {0x10024, 0x10028},
82da8fa4e3SBjoern A. Zeeb {0x10030, 0x10034},
83da8fa4e3SBjoern A. Zeeb {0x10040, 0x10054},
84da8fa4e3SBjoern A. Zeeb {0x10058, 0x1007C},
85da8fa4e3SBjoern A. Zeeb {0x10080, 0x100C4},
86da8fa4e3SBjoern A. Zeeb {0x100C8, 0x10114},
87da8fa4e3SBjoern A. Zeeb {0x1012C, 0x10130},
88da8fa4e3SBjoern A. Zeeb {0x10138, 0x10144},
89da8fa4e3SBjoern A. Zeeb {0x10200, 0x10220},
90da8fa4e3SBjoern A. Zeeb {0x10230, 0x10250},
91da8fa4e3SBjoern A. Zeeb {0x10260, 0x10280},
92da8fa4e3SBjoern A. Zeeb {0x10290, 0x102B0},
93da8fa4e3SBjoern A. Zeeb {0x102C0, 0x102DC},
94da8fa4e3SBjoern A. Zeeb {0x102E0, 0x102F4},
95da8fa4e3SBjoern A. Zeeb {0x102FC, 0x1037C},
96da8fa4e3SBjoern A. Zeeb {0x10380, 0x10390},
97da8fa4e3SBjoern A. Zeeb {0x10800, 0x10828},
98da8fa4e3SBjoern A. Zeeb {0x10840, 0x10844},
99da8fa4e3SBjoern A. Zeeb {0x10880, 0x10884},
100da8fa4e3SBjoern A. Zeeb {0x108C0, 0x108E8},
101da8fa4e3SBjoern A. Zeeb {0x10900, 0x10928},
102da8fa4e3SBjoern A. Zeeb {0x10940, 0x10944},
103da8fa4e3SBjoern A. Zeeb {0x10980, 0x10984},
104da8fa4e3SBjoern A. Zeeb {0x109C0, 0x109E8},
105da8fa4e3SBjoern A. Zeeb {0x10A00, 0x10A28},
106da8fa4e3SBjoern A. Zeeb {0x10A40, 0x10A50},
107da8fa4e3SBjoern A. Zeeb {0x11000, 0x11028},
108da8fa4e3SBjoern A. Zeeb {0x11030, 0x11034},
109da8fa4e3SBjoern A. Zeeb {0x11038, 0x11068},
110da8fa4e3SBjoern A. Zeeb {0x11070, 0x11074},
111da8fa4e3SBjoern A. Zeeb {0x11078, 0x110A8},
112da8fa4e3SBjoern A. Zeeb {0x110B0, 0x110B4},
113da8fa4e3SBjoern A. Zeeb {0x110B8, 0x110E8},
114da8fa4e3SBjoern A. Zeeb {0x110F0, 0x110F4},
115da8fa4e3SBjoern A. Zeeb {0x110F8, 0x11128},
116da8fa4e3SBjoern A. Zeeb {0x11138, 0x11144},
117da8fa4e3SBjoern A. Zeeb {0x11178, 0x11180},
118da8fa4e3SBjoern A. Zeeb {0x111B8, 0x111C0},
119da8fa4e3SBjoern A. Zeeb {0x111F8, 0x11200},
120da8fa4e3SBjoern A. Zeeb {0x11238, 0x1123C},
121da8fa4e3SBjoern A. Zeeb {0x11270, 0x11274},
122da8fa4e3SBjoern A. Zeeb {0x11278, 0x1127C},
123da8fa4e3SBjoern A. Zeeb {0x112B0, 0x112B4},
124da8fa4e3SBjoern A. Zeeb {0x112B8, 0x112BC},
125da8fa4e3SBjoern A. Zeeb {0x112F0, 0x112F4},
126da8fa4e3SBjoern A. Zeeb {0x112F8, 0x112FC},
127da8fa4e3SBjoern A. Zeeb {0x11338, 0x1133C},
128da8fa4e3SBjoern A. Zeeb {0x11378, 0x1137C},
129da8fa4e3SBjoern A. Zeeb {0x113B8, 0x113BC},
130da8fa4e3SBjoern A. Zeeb {0x113F8, 0x113FC},
131da8fa4e3SBjoern A. Zeeb {0x11438, 0x11440},
132da8fa4e3SBjoern A. Zeeb {0x11478, 0x11480},
133da8fa4e3SBjoern A. Zeeb {0x114B8, 0x114BC},
134da8fa4e3SBjoern A. Zeeb {0x114F8, 0x114FC},
135da8fa4e3SBjoern A. Zeeb {0x11538, 0x1153C},
136da8fa4e3SBjoern A. Zeeb {0x11578, 0x1157C},
137da8fa4e3SBjoern A. Zeeb {0x115B8, 0x115BC},
138da8fa4e3SBjoern A. Zeeb {0x115F8, 0x115FC},
139da8fa4e3SBjoern A. Zeeb {0x11638, 0x1163C},
140da8fa4e3SBjoern A. Zeeb {0x11678, 0x1167C},
141da8fa4e3SBjoern A. Zeeb {0x116B8, 0x116BC},
142da8fa4e3SBjoern A. Zeeb {0x116F8, 0x116FC},
143da8fa4e3SBjoern A. Zeeb {0x11738, 0x1173C},
144da8fa4e3SBjoern A. Zeeb {0x11778, 0x1177C},
145da8fa4e3SBjoern A. Zeeb {0x117B8, 0x117BC},
146da8fa4e3SBjoern A. Zeeb {0x117F8, 0x117FC},
147da8fa4e3SBjoern A. Zeeb {0x17000, 0x1701C},
148da8fa4e3SBjoern A. Zeeb {0x17020, 0x170AC},
149da8fa4e3SBjoern A. Zeeb {0x18000, 0x18050},
150da8fa4e3SBjoern A. Zeeb {0x18054, 0x18074},
151da8fa4e3SBjoern A. Zeeb {0x18080, 0x180D4},
152da8fa4e3SBjoern A. Zeeb {0x180DC, 0x18104},
153da8fa4e3SBjoern A. Zeeb {0x18108, 0x1813C},
154da8fa4e3SBjoern A. Zeeb {0x18144, 0x18148},
155da8fa4e3SBjoern A. Zeeb {0x18168, 0x18174},
156da8fa4e3SBjoern A. Zeeb {0x18178, 0x18180},
157da8fa4e3SBjoern A. Zeeb {0x181C8, 0x181E0},
158da8fa4e3SBjoern A. Zeeb {0x181E4, 0x181E8},
159da8fa4e3SBjoern A. Zeeb {0x181EC, 0x1820C},
160da8fa4e3SBjoern A. Zeeb {0x1825C, 0x18280},
161da8fa4e3SBjoern A. Zeeb {0x18284, 0x18290},
162da8fa4e3SBjoern A. Zeeb {0x18294, 0x182A0},
163da8fa4e3SBjoern A. Zeeb {0x18300, 0x18304},
164da8fa4e3SBjoern A. Zeeb {0x18314, 0x18320},
165da8fa4e3SBjoern A. Zeeb {0x18328, 0x18350},
166da8fa4e3SBjoern A. Zeeb {0x1835C, 0x1836C},
167da8fa4e3SBjoern A. Zeeb {0x18370, 0x18390},
168da8fa4e3SBjoern A. Zeeb {0x18398, 0x183AC},
169da8fa4e3SBjoern A. Zeeb {0x183BC, 0x183D8},
170da8fa4e3SBjoern A. Zeeb {0x183DC, 0x183F4},
171da8fa4e3SBjoern A. Zeeb {0x18400, 0x186F4},
172da8fa4e3SBjoern A. Zeeb {0x186F8, 0x1871C},
173da8fa4e3SBjoern A. Zeeb {0x18720, 0x18790},
174da8fa4e3SBjoern A. Zeeb {0x19800, 0x19830},
175da8fa4e3SBjoern A. Zeeb {0x19834, 0x19840},
176da8fa4e3SBjoern A. Zeeb {0x19880, 0x1989C},
177da8fa4e3SBjoern A. Zeeb {0x198A4, 0x198B0},
178da8fa4e3SBjoern A. Zeeb {0x198BC, 0x19900},
179da8fa4e3SBjoern A. Zeeb {0x19C00, 0x19C88},
180da8fa4e3SBjoern A. Zeeb {0x19D00, 0x19D20},
181da8fa4e3SBjoern A. Zeeb {0x19E00, 0x19E7C},
182da8fa4e3SBjoern A. Zeeb {0x19E80, 0x19E94},
183da8fa4e3SBjoern A. Zeeb {0x19E98, 0x19EAC},
184da8fa4e3SBjoern A. Zeeb {0x19EB0, 0x19EBC},
185da8fa4e3SBjoern A. Zeeb {0x19F70, 0x19F74},
186da8fa4e3SBjoern A. Zeeb {0x19F80, 0x19F8C},
187da8fa4e3SBjoern A. Zeeb {0x19FA0, 0x19FB4},
188da8fa4e3SBjoern A. Zeeb {0x19FC0, 0x19FD8},
189da8fa4e3SBjoern A. Zeeb {0x1A000, 0x1A200},
190da8fa4e3SBjoern A. Zeeb {0x1A204, 0x1A210},
191da8fa4e3SBjoern A. Zeeb {0x1A228, 0x1A22C},
192da8fa4e3SBjoern A. Zeeb {0x1A230, 0x1A248},
193da8fa4e3SBjoern A. Zeeb {0x1A250, 0x1A270},
194da8fa4e3SBjoern A. Zeeb {0x1A280, 0x1A290},
195da8fa4e3SBjoern A. Zeeb {0x1A2A0, 0x1A2A4},
196da8fa4e3SBjoern A. Zeeb {0x1A2C0, 0x1A2EC},
197da8fa4e3SBjoern A. Zeeb {0x1A300, 0x1A3BC},
198da8fa4e3SBjoern A. Zeeb {0x1A3F0, 0x1A3F4},
199da8fa4e3SBjoern A. Zeeb {0x1A3F8, 0x1A434},
200da8fa4e3SBjoern A. Zeeb {0x1A438, 0x1A444},
201da8fa4e3SBjoern A. Zeeb {0x1A448, 0x1A468},
202da8fa4e3SBjoern A. Zeeb {0x1A580, 0x1A58C},
203da8fa4e3SBjoern A. Zeeb {0x1A644, 0x1A654},
204da8fa4e3SBjoern A. Zeeb {0x1A670, 0x1A698},
205da8fa4e3SBjoern A. Zeeb {0x1A6AC, 0x1A6B0},
206da8fa4e3SBjoern A. Zeeb {0x1A6D0, 0x1A6D4},
207da8fa4e3SBjoern A. Zeeb {0x1A6EC, 0x1A70C},
208da8fa4e3SBjoern A. Zeeb {0x1A710, 0x1A738},
209da8fa4e3SBjoern A. Zeeb {0x1A7C0, 0x1A7D0},
210da8fa4e3SBjoern A. Zeeb {0x1A7D4, 0x1A7D8},
211da8fa4e3SBjoern A. Zeeb {0x1A7DC, 0x1A7E4},
212da8fa4e3SBjoern A. Zeeb {0x1A7F0, 0x1A7F8},
213da8fa4e3SBjoern A. Zeeb {0x1A888, 0x1A89C},
214da8fa4e3SBjoern A. Zeeb {0x1A8A8, 0x1A8AC},
215da8fa4e3SBjoern A. Zeeb {0x1A8C0, 0x1A8DC},
216da8fa4e3SBjoern A. Zeeb {0x1A8F0, 0x1A8FC},
217da8fa4e3SBjoern A. Zeeb {0x1AE04, 0x1AE08},
218da8fa4e3SBjoern A. Zeeb {0x1AE18, 0x1AE24},
219da8fa4e3SBjoern A. Zeeb {0x1AF80, 0x1AF8C},
220da8fa4e3SBjoern A. Zeeb {0x1AFA0, 0x1AFB4},
221da8fa4e3SBjoern A. Zeeb {0x1B000, 0x1B200},
222da8fa4e3SBjoern A. Zeeb {0x1B284, 0x1B288},
223da8fa4e3SBjoern A. Zeeb {0x1B2D0, 0x1B2D8},
224da8fa4e3SBjoern A. Zeeb {0x1B2DC, 0x1B2EC},
225da8fa4e3SBjoern A. Zeeb {0x1B300, 0x1B340},
226da8fa4e3SBjoern A. Zeeb {0x1B374, 0x1B378},
227da8fa4e3SBjoern A. Zeeb {0x1B380, 0x1B384},
228da8fa4e3SBjoern A. Zeeb {0x1B388, 0x1B38C},
229da8fa4e3SBjoern A. Zeeb {0x1B404, 0x1B408},
230da8fa4e3SBjoern A. Zeeb {0x1B420, 0x1B428},
231da8fa4e3SBjoern A. Zeeb {0x1B440, 0x1B444},
232da8fa4e3SBjoern A. Zeeb {0x1B448, 0x1B44C},
233da8fa4e3SBjoern A. Zeeb {0x1B450, 0x1B458},
234da8fa4e3SBjoern A. Zeeb {0x1B45C, 0x1B468},
235da8fa4e3SBjoern A. Zeeb {0x1B584, 0x1B58C},
236da8fa4e3SBjoern A. Zeeb {0x1B68C, 0x1B690},
237da8fa4e3SBjoern A. Zeeb {0x1B6AC, 0x1B6B0},
238da8fa4e3SBjoern A. Zeeb {0x1B7F0, 0x1B7F8},
239da8fa4e3SBjoern A. Zeeb {0x1C800, 0x1CC00},
240da8fa4e3SBjoern A. Zeeb {0x1CE00, 0x1CE04},
241da8fa4e3SBjoern A. Zeeb {0x1CF80, 0x1CF84},
242da8fa4e3SBjoern A. Zeeb {0x1D200, 0x1D800},
243da8fa4e3SBjoern A. Zeeb {0x1E000, 0x20014},
244da8fa4e3SBjoern A. Zeeb {0x20100, 0x20124},
245da8fa4e3SBjoern A. Zeeb {0x21400, 0x217A8},
246da8fa4e3SBjoern A. Zeeb {0x21800, 0x21BA8},
247da8fa4e3SBjoern A. Zeeb {0x21C00, 0x21FA8},
248da8fa4e3SBjoern A. Zeeb {0x22000, 0x223A8},
249da8fa4e3SBjoern A. Zeeb {0x22400, 0x227A8},
250da8fa4e3SBjoern A. Zeeb {0x22800, 0x22BA8},
251da8fa4e3SBjoern A. Zeeb {0x22C00, 0x22FA8},
252da8fa4e3SBjoern A. Zeeb {0x23000, 0x233A8},
253da8fa4e3SBjoern A. Zeeb {0x24000, 0x24034},
254da8fa4e3SBjoern A. Zeeb {0x26000, 0x26064},
255da8fa4e3SBjoern A. Zeeb {0x27000, 0x27024},
256da8fa4e3SBjoern A. Zeeb {0x34000, 0x3400C},
257da8fa4e3SBjoern A. Zeeb {0x34400, 0x3445C},
258da8fa4e3SBjoern A. Zeeb {0x34800, 0x3485C},
259da8fa4e3SBjoern A. Zeeb {0x34C00, 0x34C5C},
260da8fa4e3SBjoern A. Zeeb {0x35000, 0x3505C},
261da8fa4e3SBjoern A. Zeeb {0x35400, 0x3545C},
262da8fa4e3SBjoern A. Zeeb {0x35800, 0x3585C},
263da8fa4e3SBjoern A. Zeeb {0x35C00, 0x35C5C},
264da8fa4e3SBjoern A. Zeeb {0x36000, 0x3605C},
265da8fa4e3SBjoern A. Zeeb {0x38000, 0x38064},
266da8fa4e3SBjoern A. Zeeb {0x38070, 0x380E0},
267da8fa4e3SBjoern A. Zeeb {0x3A000, 0x3A064},
268da8fa4e3SBjoern A. Zeeb {0x40000, 0x400A4},
269da8fa4e3SBjoern A. Zeeb {0x80000, 0x8000C},
270da8fa4e3SBjoern A. Zeeb {0x80010, 0x80020},
271da8fa4e3SBjoern A. Zeeb };
272da8fa4e3SBjoern A. Zeeb
273da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_section qca6174_hw30_sdio_register_sections[] = {
274da8fa4e3SBjoern A. Zeeb {0x800, 0x810},
275da8fa4e3SBjoern A. Zeeb {0x820, 0x82C},
276da8fa4e3SBjoern A. Zeeb {0x830, 0x8F4},
277da8fa4e3SBjoern A. Zeeb {0x90C, 0x91C},
278da8fa4e3SBjoern A. Zeeb {0xA14, 0xA18},
279da8fa4e3SBjoern A. Zeeb {0xA84, 0xA94},
280da8fa4e3SBjoern A. Zeeb {0xAA8, 0xAD4},
281da8fa4e3SBjoern A. Zeeb {0xADC, 0xB40},
282da8fa4e3SBjoern A. Zeeb {0x1000, 0x10A4},
283da8fa4e3SBjoern A. Zeeb {0x10BC, 0x111C},
284da8fa4e3SBjoern A. Zeeb {0x1134, 0x1138},
285da8fa4e3SBjoern A. Zeeb {0x1144, 0x114C},
286da8fa4e3SBjoern A. Zeeb {0x1150, 0x115C},
287da8fa4e3SBjoern A. Zeeb {0x1160, 0x1178},
288da8fa4e3SBjoern A. Zeeb {0x1240, 0x1260},
289da8fa4e3SBjoern A. Zeeb {0x2000, 0x207C},
290da8fa4e3SBjoern A. Zeeb {0x3000, 0x3014},
291da8fa4e3SBjoern A. Zeeb {0x4000, 0x4014},
292da8fa4e3SBjoern A. Zeeb {0x5000, 0x5124},
293da8fa4e3SBjoern A. Zeeb {0x6000, 0x6040},
294da8fa4e3SBjoern A. Zeeb {0x6080, 0x60CC},
295da8fa4e3SBjoern A. Zeeb {0x6100, 0x611C},
296da8fa4e3SBjoern A. Zeeb {0x6140, 0x61D8},
297da8fa4e3SBjoern A. Zeeb {0x6200, 0x6238},
298da8fa4e3SBjoern A. Zeeb {0x6240, 0x628C},
299da8fa4e3SBjoern A. Zeeb {0x62C0, 0x62EC},
300da8fa4e3SBjoern A. Zeeb {0x6380, 0x63E8},
301da8fa4e3SBjoern A. Zeeb {0x6400, 0x6440},
302da8fa4e3SBjoern A. Zeeb {0x6480, 0x64CC},
303da8fa4e3SBjoern A. Zeeb {0x6500, 0x651C},
304da8fa4e3SBjoern A. Zeeb {0x6540, 0x6580},
305da8fa4e3SBjoern A. Zeeb {0x6600, 0x6638},
306da8fa4e3SBjoern A. Zeeb {0x6640, 0x668C},
307da8fa4e3SBjoern A. Zeeb {0x66C0, 0x66EC},
308da8fa4e3SBjoern A. Zeeb {0x6780, 0x67E8},
309da8fa4e3SBjoern A. Zeeb {0x7080, 0x708C},
310da8fa4e3SBjoern A. Zeeb {0x70C0, 0x70C8},
311da8fa4e3SBjoern A. Zeeb {0x7400, 0x741C},
312da8fa4e3SBjoern A. Zeeb {0x7440, 0x7454},
313da8fa4e3SBjoern A. Zeeb {0x7800, 0x7818},
314da8fa4e3SBjoern A. Zeeb {0x8010, 0x8060},
315da8fa4e3SBjoern A. Zeeb {0x8080, 0x8084},
316da8fa4e3SBjoern A. Zeeb {0x80A0, 0x80A4},
317da8fa4e3SBjoern A. Zeeb {0x80C0, 0x80C4},
318da8fa4e3SBjoern A. Zeeb {0x80E0, 0x80ec},
319da8fa4e3SBjoern A. Zeeb {0x8110, 0x8128},
320da8fa4e3SBjoern A. Zeeb {0x9000, 0x9004},
321da8fa4e3SBjoern A. Zeeb {0xF000, 0xF0E0},
322da8fa4e3SBjoern A. Zeeb {0xF140, 0xF190},
323da8fa4e3SBjoern A. Zeeb {0xF250, 0xF25C},
324da8fa4e3SBjoern A. Zeeb {0xF260, 0xF268},
325da8fa4e3SBjoern A. Zeeb {0xF26C, 0xF2A8},
326da8fa4e3SBjoern A. Zeeb {0x10008, 0x1000C},
327da8fa4e3SBjoern A. Zeeb {0x10014, 0x10018},
328da8fa4e3SBjoern A. Zeeb {0x1001C, 0x10020},
329da8fa4e3SBjoern A. Zeeb {0x10024, 0x10028},
330da8fa4e3SBjoern A. Zeeb {0x10030, 0x10034},
331da8fa4e3SBjoern A. Zeeb {0x10040, 0x10054},
332da8fa4e3SBjoern A. Zeeb {0x10058, 0x1007C},
333da8fa4e3SBjoern A. Zeeb {0x10080, 0x100C4},
334da8fa4e3SBjoern A. Zeeb {0x100C8, 0x10114},
335da8fa4e3SBjoern A. Zeeb {0x1012C, 0x10130},
336da8fa4e3SBjoern A. Zeeb {0x10138, 0x10144},
337da8fa4e3SBjoern A. Zeeb {0x10200, 0x10220},
338da8fa4e3SBjoern A. Zeeb {0x10230, 0x10250},
339da8fa4e3SBjoern A. Zeeb {0x10260, 0x10280},
340da8fa4e3SBjoern A. Zeeb {0x10290, 0x102B0},
341da8fa4e3SBjoern A. Zeeb {0x102C0, 0x102DC},
342da8fa4e3SBjoern A. Zeeb {0x102E0, 0x102F4},
343da8fa4e3SBjoern A. Zeeb {0x102FC, 0x1037C},
344da8fa4e3SBjoern A. Zeeb {0x10380, 0x10390},
345da8fa4e3SBjoern A. Zeeb {0x10800, 0x10828},
346da8fa4e3SBjoern A. Zeeb {0x10840, 0x10844},
347da8fa4e3SBjoern A. Zeeb {0x10880, 0x10884},
348da8fa4e3SBjoern A. Zeeb {0x108C0, 0x108E8},
349da8fa4e3SBjoern A. Zeeb {0x10900, 0x10928},
350da8fa4e3SBjoern A. Zeeb {0x10940, 0x10944},
351da8fa4e3SBjoern A. Zeeb {0x10980, 0x10984},
352da8fa4e3SBjoern A. Zeeb {0x109C0, 0x109E8},
353da8fa4e3SBjoern A. Zeeb {0x10A00, 0x10A28},
354da8fa4e3SBjoern A. Zeeb {0x10A40, 0x10A50},
355da8fa4e3SBjoern A. Zeeb {0x11000, 0x11028},
356da8fa4e3SBjoern A. Zeeb {0x11030, 0x11034},
357da8fa4e3SBjoern A. Zeeb {0x11038, 0x11068},
358da8fa4e3SBjoern A. Zeeb {0x11070, 0x11074},
359da8fa4e3SBjoern A. Zeeb {0x11078, 0x110A8},
360da8fa4e3SBjoern A. Zeeb {0x110B0, 0x110B4},
361da8fa4e3SBjoern A. Zeeb {0x110B8, 0x110E8},
362da8fa4e3SBjoern A. Zeeb {0x110F0, 0x110F4},
363da8fa4e3SBjoern A. Zeeb {0x110F8, 0x11128},
364da8fa4e3SBjoern A. Zeeb {0x11138, 0x11144},
365da8fa4e3SBjoern A. Zeeb {0x11178, 0x11180},
366da8fa4e3SBjoern A. Zeeb {0x111B8, 0x111C0},
367da8fa4e3SBjoern A. Zeeb {0x111F8, 0x11200},
368da8fa4e3SBjoern A. Zeeb {0x11238, 0x1123C},
369da8fa4e3SBjoern A. Zeeb {0x11270, 0x11274},
370da8fa4e3SBjoern A. Zeeb {0x11278, 0x1127C},
371da8fa4e3SBjoern A. Zeeb {0x112B0, 0x112B4},
372da8fa4e3SBjoern A. Zeeb {0x112B8, 0x112BC},
373da8fa4e3SBjoern A. Zeeb {0x112F0, 0x112F4},
374da8fa4e3SBjoern A. Zeeb {0x112F8, 0x112FC},
375da8fa4e3SBjoern A. Zeeb {0x11338, 0x1133C},
376da8fa4e3SBjoern A. Zeeb {0x11378, 0x1137C},
377da8fa4e3SBjoern A. Zeeb {0x113B8, 0x113BC},
378da8fa4e3SBjoern A. Zeeb {0x113F8, 0x113FC},
379da8fa4e3SBjoern A. Zeeb {0x11438, 0x11440},
380da8fa4e3SBjoern A. Zeeb {0x11478, 0x11480},
381da8fa4e3SBjoern A. Zeeb {0x114B8, 0x114BC},
382da8fa4e3SBjoern A. Zeeb {0x114F8, 0x114FC},
383da8fa4e3SBjoern A. Zeeb {0x11538, 0x1153C},
384da8fa4e3SBjoern A. Zeeb {0x11578, 0x1157C},
385da8fa4e3SBjoern A. Zeeb {0x115B8, 0x115BC},
386da8fa4e3SBjoern A. Zeeb {0x115F8, 0x115FC},
387da8fa4e3SBjoern A. Zeeb {0x11638, 0x1163C},
388da8fa4e3SBjoern A. Zeeb {0x11678, 0x1167C},
389da8fa4e3SBjoern A. Zeeb {0x116B8, 0x116BC},
390da8fa4e3SBjoern A. Zeeb {0x116F8, 0x116FC},
391da8fa4e3SBjoern A. Zeeb {0x11738, 0x1173C},
392da8fa4e3SBjoern A. Zeeb {0x11778, 0x1177C},
393da8fa4e3SBjoern A. Zeeb {0x117B8, 0x117BC},
394da8fa4e3SBjoern A. Zeeb {0x117F8, 0x117FC},
395da8fa4e3SBjoern A. Zeeb {0x17000, 0x1701C},
396da8fa4e3SBjoern A. Zeeb {0x17020, 0x170AC},
397da8fa4e3SBjoern A. Zeeb {0x18000, 0x18050},
398da8fa4e3SBjoern A. Zeeb {0x18054, 0x18074},
399da8fa4e3SBjoern A. Zeeb {0x18080, 0x180D4},
400da8fa4e3SBjoern A. Zeeb {0x180DC, 0x18104},
401da8fa4e3SBjoern A. Zeeb {0x18108, 0x1813C},
402da8fa4e3SBjoern A. Zeeb {0x18144, 0x18148},
403da8fa4e3SBjoern A. Zeeb {0x18168, 0x18174},
404da8fa4e3SBjoern A. Zeeb {0x18178, 0x18180},
405da8fa4e3SBjoern A. Zeeb {0x181C8, 0x181E0},
406da8fa4e3SBjoern A. Zeeb {0x181E4, 0x181E8},
407da8fa4e3SBjoern A. Zeeb {0x181EC, 0x1820C},
408da8fa4e3SBjoern A. Zeeb {0x1825C, 0x18280},
409da8fa4e3SBjoern A. Zeeb {0x18284, 0x18290},
410da8fa4e3SBjoern A. Zeeb {0x18294, 0x182A0},
411da8fa4e3SBjoern A. Zeeb {0x18300, 0x18304},
412da8fa4e3SBjoern A. Zeeb {0x18314, 0x18320},
413da8fa4e3SBjoern A. Zeeb {0x18328, 0x18350},
414da8fa4e3SBjoern A. Zeeb {0x1835C, 0x1836C},
415da8fa4e3SBjoern A. Zeeb {0x18370, 0x18390},
416da8fa4e3SBjoern A. Zeeb {0x18398, 0x183AC},
417da8fa4e3SBjoern A. Zeeb {0x183BC, 0x183D8},
418da8fa4e3SBjoern A. Zeeb {0x183DC, 0x183F4},
419da8fa4e3SBjoern A. Zeeb {0x18400, 0x186F4},
420da8fa4e3SBjoern A. Zeeb {0x186F8, 0x1871C},
421da8fa4e3SBjoern A. Zeeb {0x18720, 0x18790},
422da8fa4e3SBjoern A. Zeeb {0x19800, 0x19830},
423da8fa4e3SBjoern A. Zeeb {0x19834, 0x19840},
424da8fa4e3SBjoern A. Zeeb {0x19880, 0x1989C},
425da8fa4e3SBjoern A. Zeeb {0x198A4, 0x198B0},
426da8fa4e3SBjoern A. Zeeb {0x198BC, 0x19900},
427da8fa4e3SBjoern A. Zeeb {0x19C00, 0x19C88},
428da8fa4e3SBjoern A. Zeeb {0x19D00, 0x19D20},
429da8fa4e3SBjoern A. Zeeb {0x19E00, 0x19E7C},
430da8fa4e3SBjoern A. Zeeb {0x19E80, 0x19E94},
431da8fa4e3SBjoern A. Zeeb {0x19E98, 0x19EAC},
432da8fa4e3SBjoern A. Zeeb {0x19EB0, 0x19EBC},
433da8fa4e3SBjoern A. Zeeb {0x19F70, 0x19F74},
434da8fa4e3SBjoern A. Zeeb {0x19F80, 0x19F8C},
435da8fa4e3SBjoern A. Zeeb {0x19FA0, 0x19FB4},
436da8fa4e3SBjoern A. Zeeb {0x19FC0, 0x19FD8},
437da8fa4e3SBjoern A. Zeeb {0x1A000, 0x1A200},
438da8fa4e3SBjoern A. Zeeb {0x1A204, 0x1A210},
439da8fa4e3SBjoern A. Zeeb {0x1A228, 0x1A22C},
440da8fa4e3SBjoern A. Zeeb {0x1A230, 0x1A248},
441da8fa4e3SBjoern A. Zeeb {0x1A250, 0x1A270},
442da8fa4e3SBjoern A. Zeeb {0x1A280, 0x1A290},
443da8fa4e3SBjoern A. Zeeb {0x1A2A0, 0x1A2A4},
444da8fa4e3SBjoern A. Zeeb {0x1A2C0, 0x1A2EC},
445da8fa4e3SBjoern A. Zeeb {0x1A300, 0x1A3BC},
446da8fa4e3SBjoern A. Zeeb {0x1A3F0, 0x1A3F4},
447da8fa4e3SBjoern A. Zeeb {0x1A3F8, 0x1A434},
448da8fa4e3SBjoern A. Zeeb {0x1A438, 0x1A444},
449da8fa4e3SBjoern A. Zeeb {0x1A448, 0x1A468},
450da8fa4e3SBjoern A. Zeeb {0x1A580, 0x1A58C},
451da8fa4e3SBjoern A. Zeeb {0x1A644, 0x1A654},
452da8fa4e3SBjoern A. Zeeb {0x1A670, 0x1A698},
453da8fa4e3SBjoern A. Zeeb {0x1A6AC, 0x1A6B0},
454da8fa4e3SBjoern A. Zeeb {0x1A6D0, 0x1A6D4},
455da8fa4e3SBjoern A. Zeeb {0x1A6EC, 0x1A70C},
456da8fa4e3SBjoern A. Zeeb {0x1A710, 0x1A738},
457da8fa4e3SBjoern A. Zeeb {0x1A7C0, 0x1A7D0},
458da8fa4e3SBjoern A. Zeeb {0x1A7D4, 0x1A7D8},
459da8fa4e3SBjoern A. Zeeb {0x1A7DC, 0x1A7E4},
460da8fa4e3SBjoern A. Zeeb {0x1A7F0, 0x1A7F8},
461da8fa4e3SBjoern A. Zeeb {0x1A888, 0x1A89C},
462da8fa4e3SBjoern A. Zeeb {0x1A8A8, 0x1A8AC},
463da8fa4e3SBjoern A. Zeeb {0x1A8C0, 0x1A8DC},
464da8fa4e3SBjoern A. Zeeb {0x1A8F0, 0x1A8FC},
465da8fa4e3SBjoern A. Zeeb {0x1AE04, 0x1AE08},
466da8fa4e3SBjoern A. Zeeb {0x1AE18, 0x1AE24},
467da8fa4e3SBjoern A. Zeeb {0x1AF80, 0x1AF8C},
468da8fa4e3SBjoern A. Zeeb {0x1AFA0, 0x1AFB4},
469da8fa4e3SBjoern A. Zeeb {0x1B000, 0x1B200},
470da8fa4e3SBjoern A. Zeeb {0x1B284, 0x1B288},
471da8fa4e3SBjoern A. Zeeb {0x1B2D0, 0x1B2D8},
472da8fa4e3SBjoern A. Zeeb {0x1B2DC, 0x1B2EC},
473da8fa4e3SBjoern A. Zeeb {0x1B300, 0x1B340},
474da8fa4e3SBjoern A. Zeeb {0x1B374, 0x1B378},
475da8fa4e3SBjoern A. Zeeb {0x1B380, 0x1B384},
476da8fa4e3SBjoern A. Zeeb {0x1B388, 0x1B38C},
477da8fa4e3SBjoern A. Zeeb {0x1B404, 0x1B408},
478da8fa4e3SBjoern A. Zeeb {0x1B420, 0x1B428},
479da8fa4e3SBjoern A. Zeeb {0x1B440, 0x1B444},
480da8fa4e3SBjoern A. Zeeb {0x1B448, 0x1B44C},
481da8fa4e3SBjoern A. Zeeb {0x1B450, 0x1B458},
482da8fa4e3SBjoern A. Zeeb {0x1B45C, 0x1B468},
483da8fa4e3SBjoern A. Zeeb {0x1B584, 0x1B58C},
484da8fa4e3SBjoern A. Zeeb {0x1B68C, 0x1B690},
485da8fa4e3SBjoern A. Zeeb {0x1B6AC, 0x1B6B0},
486da8fa4e3SBjoern A. Zeeb {0x1B7F0, 0x1B7F8},
487da8fa4e3SBjoern A. Zeeb {0x1C800, 0x1CC00},
488da8fa4e3SBjoern A. Zeeb {0x1CE00, 0x1CE04},
489da8fa4e3SBjoern A. Zeeb {0x1CF80, 0x1CF84},
490da8fa4e3SBjoern A. Zeeb {0x1D200, 0x1D800},
491da8fa4e3SBjoern A. Zeeb {0x1E000, 0x20014},
492da8fa4e3SBjoern A. Zeeb {0x20100, 0x20124},
493da8fa4e3SBjoern A. Zeeb {0x21400, 0x217A8},
494da8fa4e3SBjoern A. Zeeb {0x21800, 0x21BA8},
495da8fa4e3SBjoern A. Zeeb {0x21C00, 0x21FA8},
496da8fa4e3SBjoern A. Zeeb {0x22000, 0x223A8},
497da8fa4e3SBjoern A. Zeeb {0x22400, 0x227A8},
498da8fa4e3SBjoern A. Zeeb {0x22800, 0x22BA8},
499da8fa4e3SBjoern A. Zeeb {0x22C00, 0x22FA8},
500da8fa4e3SBjoern A. Zeeb {0x23000, 0x233A8},
501da8fa4e3SBjoern A. Zeeb {0x24000, 0x24034},
502da8fa4e3SBjoern A. Zeeb
503da8fa4e3SBjoern A. Zeeb /* EFUSE0,1,2 is disabled here
504da8fa4e3SBjoern A. Zeeb * because its state may be reset
505da8fa4e3SBjoern A. Zeeb *
506da8fa4e3SBjoern A. Zeeb * {0x24800, 0x24804},
507da8fa4e3SBjoern A. Zeeb * {0x25000, 0x25004},
508da8fa4e3SBjoern A. Zeeb * {0x25800, 0x25804},
509da8fa4e3SBjoern A. Zeeb */
510da8fa4e3SBjoern A. Zeeb
511da8fa4e3SBjoern A. Zeeb {0x26000, 0x26064},
512da8fa4e3SBjoern A. Zeeb {0x27000, 0x27024},
513da8fa4e3SBjoern A. Zeeb {0x34000, 0x3400C},
514da8fa4e3SBjoern A. Zeeb {0x34400, 0x3445C},
515da8fa4e3SBjoern A. Zeeb {0x34800, 0x3485C},
516da8fa4e3SBjoern A. Zeeb {0x34C00, 0x34C5C},
517da8fa4e3SBjoern A. Zeeb {0x35000, 0x3505C},
518da8fa4e3SBjoern A. Zeeb {0x35400, 0x3545C},
519da8fa4e3SBjoern A. Zeeb {0x35800, 0x3585C},
520da8fa4e3SBjoern A. Zeeb {0x35C00, 0x35C5C},
521da8fa4e3SBjoern A. Zeeb {0x36000, 0x3605C},
522da8fa4e3SBjoern A. Zeeb {0x38000, 0x38064},
523da8fa4e3SBjoern A. Zeeb {0x38070, 0x380E0},
524da8fa4e3SBjoern A. Zeeb {0x3A000, 0x3A074},
525da8fa4e3SBjoern A. Zeeb
526da8fa4e3SBjoern A. Zeeb /* DBI windows is skipped here, it can be only accessed when pcie
527da8fa4e3SBjoern A. Zeeb * is active (not in reset) and CORE_CTRL_PCIE_LTSSM_EN = 0 &&
528da8fa4e3SBjoern A. Zeeb * PCIE_CTRL_APP_LTSSM_ENALBE=0.
529da8fa4e3SBjoern A. Zeeb * {0x3C000 , 0x3C004},
530da8fa4e3SBjoern A. Zeeb */
531da8fa4e3SBjoern A. Zeeb
532da8fa4e3SBjoern A. Zeeb {0x40000, 0x400A4},
533da8fa4e3SBjoern A. Zeeb
534*07724ba6SBjoern A. Zeeb /* SI register is skipped here.
535da8fa4e3SBjoern A. Zeeb * Because it will cause bus hang
536da8fa4e3SBjoern A. Zeeb *
537da8fa4e3SBjoern A. Zeeb * {0x50000, 0x50018},
538da8fa4e3SBjoern A. Zeeb */
539da8fa4e3SBjoern A. Zeeb
540da8fa4e3SBjoern A. Zeeb {0x80000, 0x8000C},
541da8fa4e3SBjoern A. Zeeb {0x80010, 0x80020},
542da8fa4e3SBjoern A. Zeeb };
543da8fa4e3SBjoern A. Zeeb
544da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_section qca6174_hw30_register_sections[] = {
545da8fa4e3SBjoern A. Zeeb {0x800, 0x810},
546da8fa4e3SBjoern A. Zeeb {0x820, 0x82C},
547da8fa4e3SBjoern A. Zeeb {0x830, 0x8F4},
548da8fa4e3SBjoern A. Zeeb {0x90C, 0x91C},
549da8fa4e3SBjoern A. Zeeb {0xA14, 0xA18},
550da8fa4e3SBjoern A. Zeeb {0xA84, 0xA94},
551da8fa4e3SBjoern A. Zeeb {0xAA8, 0xAD4},
552da8fa4e3SBjoern A. Zeeb {0xADC, 0xB40},
553da8fa4e3SBjoern A. Zeeb {0x1000, 0x10A4},
554da8fa4e3SBjoern A. Zeeb {0x10BC, 0x111C},
555da8fa4e3SBjoern A. Zeeb {0x1134, 0x1138},
556da8fa4e3SBjoern A. Zeeb {0x1144, 0x114C},
557da8fa4e3SBjoern A. Zeeb {0x1150, 0x115C},
558da8fa4e3SBjoern A. Zeeb {0x1160, 0x1178},
559da8fa4e3SBjoern A. Zeeb {0x1240, 0x1260},
560da8fa4e3SBjoern A. Zeeb {0x2000, 0x207C},
561da8fa4e3SBjoern A. Zeeb {0x3000, 0x3014},
562da8fa4e3SBjoern A. Zeeb {0x4000, 0x4014},
563da8fa4e3SBjoern A. Zeeb {0x5000, 0x5124},
564da8fa4e3SBjoern A. Zeeb {0x6000, 0x6040},
565da8fa4e3SBjoern A. Zeeb {0x6080, 0x60CC},
566da8fa4e3SBjoern A. Zeeb {0x6100, 0x611C},
567da8fa4e3SBjoern A. Zeeb {0x6140, 0x61D8},
568da8fa4e3SBjoern A. Zeeb {0x6200, 0x6238},
569da8fa4e3SBjoern A. Zeeb {0x6240, 0x628C},
570da8fa4e3SBjoern A. Zeeb {0x62C0, 0x62EC},
571da8fa4e3SBjoern A. Zeeb {0x6380, 0x63E8},
572da8fa4e3SBjoern A. Zeeb {0x6400, 0x6440},
573da8fa4e3SBjoern A. Zeeb {0x6480, 0x64CC},
574da8fa4e3SBjoern A. Zeeb {0x6500, 0x651C},
575da8fa4e3SBjoern A. Zeeb {0x6540, 0x6580},
576da8fa4e3SBjoern A. Zeeb {0x6600, 0x6638},
577da8fa4e3SBjoern A. Zeeb {0x6640, 0x668C},
578da8fa4e3SBjoern A. Zeeb {0x66C0, 0x66EC},
579da8fa4e3SBjoern A. Zeeb {0x6780, 0x67E8},
580da8fa4e3SBjoern A. Zeeb {0x7080, 0x708C},
581da8fa4e3SBjoern A. Zeeb {0x70C0, 0x70C8},
582da8fa4e3SBjoern A. Zeeb {0x7400, 0x741C},
583da8fa4e3SBjoern A. Zeeb {0x7440, 0x7454},
584da8fa4e3SBjoern A. Zeeb {0x7800, 0x7818},
585da8fa4e3SBjoern A. Zeeb {0x8000, 0x8004},
586da8fa4e3SBjoern A. Zeeb {0x8010, 0x8064},
587da8fa4e3SBjoern A. Zeeb {0x8080, 0x8084},
588da8fa4e3SBjoern A. Zeeb {0x80A0, 0x80A4},
589da8fa4e3SBjoern A. Zeeb {0x80C0, 0x80C4},
590da8fa4e3SBjoern A. Zeeb {0x80E0, 0x80F4},
591da8fa4e3SBjoern A. Zeeb {0x8100, 0x8104},
592da8fa4e3SBjoern A. Zeeb {0x8110, 0x812C},
593da8fa4e3SBjoern A. Zeeb {0x9000, 0x9004},
594da8fa4e3SBjoern A. Zeeb {0x9800, 0x982C},
595da8fa4e3SBjoern A. Zeeb {0x9830, 0x9838},
596da8fa4e3SBjoern A. Zeeb {0x9840, 0x986C},
597da8fa4e3SBjoern A. Zeeb {0x9870, 0x9898},
598da8fa4e3SBjoern A. Zeeb {0x9A00, 0x9C00},
599da8fa4e3SBjoern A. Zeeb {0xD580, 0xD59C},
600da8fa4e3SBjoern A. Zeeb {0xF000, 0xF0E0},
601da8fa4e3SBjoern A. Zeeb {0xF140, 0xF190},
602da8fa4e3SBjoern A. Zeeb {0xF250, 0xF25C},
603da8fa4e3SBjoern A. Zeeb {0xF260, 0xF268},
604da8fa4e3SBjoern A. Zeeb {0xF26C, 0xF2A8},
605da8fa4e3SBjoern A. Zeeb {0x10008, 0x1000C},
606da8fa4e3SBjoern A. Zeeb {0x10014, 0x10018},
607da8fa4e3SBjoern A. Zeeb {0x1001C, 0x10020},
608da8fa4e3SBjoern A. Zeeb {0x10024, 0x10028},
609da8fa4e3SBjoern A. Zeeb {0x10030, 0x10034},
610da8fa4e3SBjoern A. Zeeb {0x10040, 0x10054},
611da8fa4e3SBjoern A. Zeeb {0x10058, 0x1007C},
612da8fa4e3SBjoern A. Zeeb {0x10080, 0x100C4},
613da8fa4e3SBjoern A. Zeeb {0x100C8, 0x10114},
614da8fa4e3SBjoern A. Zeeb {0x1012C, 0x10130},
615da8fa4e3SBjoern A. Zeeb {0x10138, 0x10144},
616da8fa4e3SBjoern A. Zeeb {0x10200, 0x10220},
617da8fa4e3SBjoern A. Zeeb {0x10230, 0x10250},
618da8fa4e3SBjoern A. Zeeb {0x10260, 0x10280},
619da8fa4e3SBjoern A. Zeeb {0x10290, 0x102B0},
620da8fa4e3SBjoern A. Zeeb {0x102C0, 0x102DC},
621da8fa4e3SBjoern A. Zeeb {0x102E0, 0x102F4},
622da8fa4e3SBjoern A. Zeeb {0x102FC, 0x1037C},
623da8fa4e3SBjoern A. Zeeb {0x10380, 0x10390},
624da8fa4e3SBjoern A. Zeeb {0x10800, 0x10828},
625da8fa4e3SBjoern A. Zeeb {0x10840, 0x10844},
626da8fa4e3SBjoern A. Zeeb {0x10880, 0x10884},
627da8fa4e3SBjoern A. Zeeb {0x108C0, 0x108E8},
628da8fa4e3SBjoern A. Zeeb {0x10900, 0x10928},
629da8fa4e3SBjoern A. Zeeb {0x10940, 0x10944},
630da8fa4e3SBjoern A. Zeeb {0x10980, 0x10984},
631da8fa4e3SBjoern A. Zeeb {0x109C0, 0x109E8},
632da8fa4e3SBjoern A. Zeeb {0x10A00, 0x10A28},
633da8fa4e3SBjoern A. Zeeb {0x10A40, 0x10A50},
634da8fa4e3SBjoern A. Zeeb {0x11000, 0x11028},
635da8fa4e3SBjoern A. Zeeb {0x11030, 0x11034},
636da8fa4e3SBjoern A. Zeeb {0x11038, 0x11068},
637da8fa4e3SBjoern A. Zeeb {0x11070, 0x11074},
638da8fa4e3SBjoern A. Zeeb {0x11078, 0x110A8},
639da8fa4e3SBjoern A. Zeeb {0x110B0, 0x110B4},
640da8fa4e3SBjoern A. Zeeb {0x110B8, 0x110E8},
641da8fa4e3SBjoern A. Zeeb {0x110F0, 0x110F4},
642da8fa4e3SBjoern A. Zeeb {0x110F8, 0x11128},
643da8fa4e3SBjoern A. Zeeb {0x11138, 0x11144},
644da8fa4e3SBjoern A. Zeeb {0x11178, 0x11180},
645da8fa4e3SBjoern A. Zeeb {0x111B8, 0x111C0},
646da8fa4e3SBjoern A. Zeeb {0x111F8, 0x11200},
647da8fa4e3SBjoern A. Zeeb {0x11238, 0x1123C},
648da8fa4e3SBjoern A. Zeeb {0x11270, 0x11274},
649da8fa4e3SBjoern A. Zeeb {0x11278, 0x1127C},
650da8fa4e3SBjoern A. Zeeb {0x112B0, 0x112B4},
651da8fa4e3SBjoern A. Zeeb {0x112B8, 0x112BC},
652da8fa4e3SBjoern A. Zeeb {0x112F0, 0x112F4},
653da8fa4e3SBjoern A. Zeeb {0x112F8, 0x112FC},
654da8fa4e3SBjoern A. Zeeb {0x11338, 0x1133C},
655da8fa4e3SBjoern A. Zeeb {0x11378, 0x1137C},
656da8fa4e3SBjoern A. Zeeb {0x113B8, 0x113BC},
657da8fa4e3SBjoern A. Zeeb {0x113F8, 0x113FC},
658da8fa4e3SBjoern A. Zeeb {0x11438, 0x11440},
659da8fa4e3SBjoern A. Zeeb {0x11478, 0x11480},
660da8fa4e3SBjoern A. Zeeb {0x114B8, 0x114BC},
661da8fa4e3SBjoern A. Zeeb {0x114F8, 0x114FC},
662da8fa4e3SBjoern A. Zeeb {0x11538, 0x1153C},
663da8fa4e3SBjoern A. Zeeb {0x11578, 0x1157C},
664da8fa4e3SBjoern A. Zeeb {0x115B8, 0x115BC},
665da8fa4e3SBjoern A. Zeeb {0x115F8, 0x115FC},
666da8fa4e3SBjoern A. Zeeb {0x11638, 0x1163C},
667da8fa4e3SBjoern A. Zeeb {0x11678, 0x1167C},
668da8fa4e3SBjoern A. Zeeb {0x116B8, 0x116BC},
669da8fa4e3SBjoern A. Zeeb {0x116F8, 0x116FC},
670da8fa4e3SBjoern A. Zeeb {0x11738, 0x1173C},
671da8fa4e3SBjoern A. Zeeb {0x11778, 0x1177C},
672da8fa4e3SBjoern A. Zeeb {0x117B8, 0x117BC},
673da8fa4e3SBjoern A. Zeeb {0x117F8, 0x117FC},
674da8fa4e3SBjoern A. Zeeb {0x17000, 0x1701C},
675da8fa4e3SBjoern A. Zeeb {0x17020, 0x170AC},
676da8fa4e3SBjoern A. Zeeb {0x18000, 0x18050},
677da8fa4e3SBjoern A. Zeeb {0x18054, 0x18074},
678da8fa4e3SBjoern A. Zeeb {0x18080, 0x180D4},
679da8fa4e3SBjoern A. Zeeb {0x180DC, 0x18104},
680da8fa4e3SBjoern A. Zeeb {0x18108, 0x1813C},
681da8fa4e3SBjoern A. Zeeb {0x18144, 0x18148},
682da8fa4e3SBjoern A. Zeeb {0x18168, 0x18174},
683da8fa4e3SBjoern A. Zeeb {0x18178, 0x18180},
684da8fa4e3SBjoern A. Zeeb {0x181C8, 0x181E0},
685da8fa4e3SBjoern A. Zeeb {0x181E4, 0x181E8},
686da8fa4e3SBjoern A. Zeeb {0x181EC, 0x1820C},
687da8fa4e3SBjoern A. Zeeb {0x1825C, 0x18280},
688da8fa4e3SBjoern A. Zeeb {0x18284, 0x18290},
689da8fa4e3SBjoern A. Zeeb {0x18294, 0x182A0},
690da8fa4e3SBjoern A. Zeeb {0x18300, 0x18304},
691da8fa4e3SBjoern A. Zeeb {0x18314, 0x18320},
692da8fa4e3SBjoern A. Zeeb {0x18328, 0x18350},
693da8fa4e3SBjoern A. Zeeb {0x1835C, 0x1836C},
694da8fa4e3SBjoern A. Zeeb {0x18370, 0x18390},
695da8fa4e3SBjoern A. Zeeb {0x18398, 0x183AC},
696da8fa4e3SBjoern A. Zeeb {0x183BC, 0x183D8},
697da8fa4e3SBjoern A. Zeeb {0x183DC, 0x183F4},
698da8fa4e3SBjoern A. Zeeb {0x18400, 0x186F4},
699da8fa4e3SBjoern A. Zeeb {0x186F8, 0x1871C},
700da8fa4e3SBjoern A. Zeeb {0x18720, 0x18790},
701da8fa4e3SBjoern A. Zeeb {0x19800, 0x19830},
702da8fa4e3SBjoern A. Zeeb {0x19834, 0x19840},
703da8fa4e3SBjoern A. Zeeb {0x19880, 0x1989C},
704da8fa4e3SBjoern A. Zeeb {0x198A4, 0x198B0},
705da8fa4e3SBjoern A. Zeeb {0x198BC, 0x19900},
706da8fa4e3SBjoern A. Zeeb {0x19C00, 0x19C88},
707da8fa4e3SBjoern A. Zeeb {0x19D00, 0x19D20},
708da8fa4e3SBjoern A. Zeeb {0x19E00, 0x19E7C},
709da8fa4e3SBjoern A. Zeeb {0x19E80, 0x19E94},
710da8fa4e3SBjoern A. Zeeb {0x19E98, 0x19EAC},
711da8fa4e3SBjoern A. Zeeb {0x19EB0, 0x19EBC},
712da8fa4e3SBjoern A. Zeeb {0x19F70, 0x19F74},
713da8fa4e3SBjoern A. Zeeb {0x19F80, 0x19F8C},
714da8fa4e3SBjoern A. Zeeb {0x19FA0, 0x19FB4},
715da8fa4e3SBjoern A. Zeeb {0x19FC0, 0x19FD8},
716da8fa4e3SBjoern A. Zeeb {0x1A000, 0x1A200},
717da8fa4e3SBjoern A. Zeeb {0x1A204, 0x1A210},
718da8fa4e3SBjoern A. Zeeb {0x1A228, 0x1A22C},
719da8fa4e3SBjoern A. Zeeb {0x1A230, 0x1A248},
720da8fa4e3SBjoern A. Zeeb {0x1A250, 0x1A270},
721da8fa4e3SBjoern A. Zeeb {0x1A280, 0x1A290},
722da8fa4e3SBjoern A. Zeeb {0x1A2A0, 0x1A2A4},
723da8fa4e3SBjoern A. Zeeb {0x1A2C0, 0x1A2EC},
724da8fa4e3SBjoern A. Zeeb {0x1A300, 0x1A3BC},
725da8fa4e3SBjoern A. Zeeb {0x1A3F0, 0x1A3F4},
726da8fa4e3SBjoern A. Zeeb {0x1A3F8, 0x1A434},
727da8fa4e3SBjoern A. Zeeb {0x1A438, 0x1A444},
728da8fa4e3SBjoern A. Zeeb {0x1A448, 0x1A468},
729da8fa4e3SBjoern A. Zeeb {0x1A580, 0x1A58C},
730da8fa4e3SBjoern A. Zeeb {0x1A644, 0x1A654},
731da8fa4e3SBjoern A. Zeeb {0x1A670, 0x1A698},
732da8fa4e3SBjoern A. Zeeb {0x1A6AC, 0x1A6B0},
733da8fa4e3SBjoern A. Zeeb {0x1A6D0, 0x1A6D4},
734da8fa4e3SBjoern A. Zeeb {0x1A6EC, 0x1A70C},
735da8fa4e3SBjoern A. Zeeb {0x1A710, 0x1A738},
736da8fa4e3SBjoern A. Zeeb {0x1A7C0, 0x1A7D0},
737da8fa4e3SBjoern A. Zeeb {0x1A7D4, 0x1A7D8},
738da8fa4e3SBjoern A. Zeeb {0x1A7DC, 0x1A7E4},
739da8fa4e3SBjoern A. Zeeb {0x1A7F0, 0x1A7F8},
740da8fa4e3SBjoern A. Zeeb {0x1A888, 0x1A89C},
741da8fa4e3SBjoern A. Zeeb {0x1A8A8, 0x1A8AC},
742da8fa4e3SBjoern A. Zeeb {0x1A8C0, 0x1A8DC},
743da8fa4e3SBjoern A. Zeeb {0x1A8F0, 0x1A8FC},
744da8fa4e3SBjoern A. Zeeb {0x1AE04, 0x1AE08},
745da8fa4e3SBjoern A. Zeeb {0x1AE18, 0x1AE24},
746da8fa4e3SBjoern A. Zeeb {0x1AF80, 0x1AF8C},
747da8fa4e3SBjoern A. Zeeb {0x1AFA0, 0x1AFB4},
748da8fa4e3SBjoern A. Zeeb {0x1B000, 0x1B200},
749da8fa4e3SBjoern A. Zeeb {0x1B284, 0x1B288},
750da8fa4e3SBjoern A. Zeeb {0x1B2D0, 0x1B2D8},
751da8fa4e3SBjoern A. Zeeb {0x1B2DC, 0x1B2EC},
752da8fa4e3SBjoern A. Zeeb {0x1B300, 0x1B340},
753da8fa4e3SBjoern A. Zeeb {0x1B374, 0x1B378},
754da8fa4e3SBjoern A. Zeeb {0x1B380, 0x1B384},
755da8fa4e3SBjoern A. Zeeb {0x1B388, 0x1B38C},
756da8fa4e3SBjoern A. Zeeb {0x1B404, 0x1B408},
757da8fa4e3SBjoern A. Zeeb {0x1B420, 0x1B428},
758da8fa4e3SBjoern A. Zeeb {0x1B440, 0x1B444},
759da8fa4e3SBjoern A. Zeeb {0x1B448, 0x1B44C},
760da8fa4e3SBjoern A. Zeeb {0x1B450, 0x1B458},
761da8fa4e3SBjoern A. Zeeb {0x1B45C, 0x1B468},
762da8fa4e3SBjoern A. Zeeb {0x1B584, 0x1B58C},
763da8fa4e3SBjoern A. Zeeb {0x1B68C, 0x1B690},
764da8fa4e3SBjoern A. Zeeb {0x1B6AC, 0x1B6B0},
765da8fa4e3SBjoern A. Zeeb {0x1B7F0, 0x1B7F8},
766da8fa4e3SBjoern A. Zeeb {0x1C800, 0x1CC00},
767da8fa4e3SBjoern A. Zeeb {0x1CE00, 0x1CE04},
768da8fa4e3SBjoern A. Zeeb {0x1CF80, 0x1CF84},
769da8fa4e3SBjoern A. Zeeb {0x1D200, 0x1D800},
770da8fa4e3SBjoern A. Zeeb {0x1E000, 0x20014},
771da8fa4e3SBjoern A. Zeeb {0x20100, 0x20124},
772da8fa4e3SBjoern A. Zeeb {0x21400, 0x217A8},
773da8fa4e3SBjoern A. Zeeb {0x21800, 0x21BA8},
774da8fa4e3SBjoern A. Zeeb {0x21C00, 0x21FA8},
775da8fa4e3SBjoern A. Zeeb {0x22000, 0x223A8},
776da8fa4e3SBjoern A. Zeeb {0x22400, 0x227A8},
777da8fa4e3SBjoern A. Zeeb {0x22800, 0x22BA8},
778da8fa4e3SBjoern A. Zeeb {0x22C00, 0x22FA8},
779da8fa4e3SBjoern A. Zeeb {0x23000, 0x233A8},
780da8fa4e3SBjoern A. Zeeb {0x24000, 0x24034},
781da8fa4e3SBjoern A. Zeeb {0x26000, 0x26064},
782da8fa4e3SBjoern A. Zeeb {0x27000, 0x27024},
783da8fa4e3SBjoern A. Zeeb {0x34000, 0x3400C},
784da8fa4e3SBjoern A. Zeeb {0x34400, 0x3445C},
785da8fa4e3SBjoern A. Zeeb {0x34800, 0x3485C},
786da8fa4e3SBjoern A. Zeeb {0x34C00, 0x34C5C},
787da8fa4e3SBjoern A. Zeeb {0x35000, 0x3505C},
788da8fa4e3SBjoern A. Zeeb {0x35400, 0x3545C},
789da8fa4e3SBjoern A. Zeeb {0x35800, 0x3585C},
790da8fa4e3SBjoern A. Zeeb {0x35C00, 0x35C5C},
791da8fa4e3SBjoern A. Zeeb {0x36000, 0x3605C},
792da8fa4e3SBjoern A. Zeeb {0x38000, 0x38064},
793da8fa4e3SBjoern A. Zeeb {0x38070, 0x380E0},
794da8fa4e3SBjoern A. Zeeb {0x3A000, 0x3A074},
795da8fa4e3SBjoern A. Zeeb {0x40000, 0x400A4},
796da8fa4e3SBjoern A. Zeeb {0x80000, 0x8000C},
797da8fa4e3SBjoern A. Zeeb {0x80010, 0x80020},
798da8fa4e3SBjoern A. Zeeb };
799da8fa4e3SBjoern A. Zeeb
800da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca6174_hw10_mem_regions[] = {
801da8fa4e3SBjoern A. Zeeb {
802da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
803da8fa4e3SBjoern A. Zeeb .start = 0x400000,
804da8fa4e3SBjoern A. Zeeb .len = 0x70000,
805da8fa4e3SBjoern A. Zeeb .name = "DRAM",
806da8fa4e3SBjoern A. Zeeb .section_table = {
807da8fa4e3SBjoern A. Zeeb .sections = NULL,
808da8fa4e3SBjoern A. Zeeb .size = 0,
809da8fa4e3SBjoern A. Zeeb },
810da8fa4e3SBjoern A. Zeeb },
811da8fa4e3SBjoern A. Zeeb {
812da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
813da8fa4e3SBjoern A. Zeeb
814da8fa4e3SBjoern A. Zeeb /* RTC_SOC_BASE_ADDRESS */
815da8fa4e3SBjoern A. Zeeb .start = 0x0,
816da8fa4e3SBjoern A. Zeeb
817da8fa4e3SBjoern A. Zeeb /* WLAN_MBOX_BASE_ADDRESS - RTC_SOC_BASE_ADDRESS */
818da8fa4e3SBjoern A. Zeeb .len = 0x800 - 0x0,
819da8fa4e3SBjoern A. Zeeb
820da8fa4e3SBjoern A. Zeeb .name = "REG_PART1",
821da8fa4e3SBjoern A. Zeeb .section_table = {
822da8fa4e3SBjoern A. Zeeb .sections = NULL,
823da8fa4e3SBjoern A. Zeeb .size = 0,
824da8fa4e3SBjoern A. Zeeb },
825da8fa4e3SBjoern A. Zeeb },
826da8fa4e3SBjoern A. Zeeb {
827da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
828da8fa4e3SBjoern A. Zeeb
829da8fa4e3SBjoern A. Zeeb /* STEREO_BASE_ADDRESS */
830da8fa4e3SBjoern A. Zeeb .start = 0x27000,
831da8fa4e3SBjoern A. Zeeb
832da8fa4e3SBjoern A. Zeeb /* USB_BASE_ADDRESS - STEREO_BASE_ADDRESS */
833da8fa4e3SBjoern A. Zeeb .len = 0x60000 - 0x27000,
834da8fa4e3SBjoern A. Zeeb
835da8fa4e3SBjoern A. Zeeb .name = "REG_PART2",
836da8fa4e3SBjoern A. Zeeb .section_table = {
837da8fa4e3SBjoern A. Zeeb .sections = NULL,
838da8fa4e3SBjoern A. Zeeb .size = 0,
839da8fa4e3SBjoern A. Zeeb },
840da8fa4e3SBjoern A. Zeeb },
841da8fa4e3SBjoern A. Zeeb };
842da8fa4e3SBjoern A. Zeeb
843da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca6174_hw21_mem_regions[] = {
844da8fa4e3SBjoern A. Zeeb {
845da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
846da8fa4e3SBjoern A. Zeeb .start = 0x400000,
847da8fa4e3SBjoern A. Zeeb .len = 0x70000,
848da8fa4e3SBjoern A. Zeeb .name = "DRAM",
849da8fa4e3SBjoern A. Zeeb .section_table = {
850da8fa4e3SBjoern A. Zeeb .sections = NULL,
851da8fa4e3SBjoern A. Zeeb .size = 0,
852da8fa4e3SBjoern A. Zeeb },
853da8fa4e3SBjoern A. Zeeb },
854da8fa4e3SBjoern A. Zeeb {
855da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_AXI,
856da8fa4e3SBjoern A. Zeeb .start = 0xa0000,
857da8fa4e3SBjoern A. Zeeb .len = 0x18000,
858da8fa4e3SBjoern A. Zeeb .name = "AXI",
859da8fa4e3SBjoern A. Zeeb .section_table = {
860da8fa4e3SBjoern A. Zeeb .sections = NULL,
861da8fa4e3SBjoern A. Zeeb .size = 0,
862da8fa4e3SBjoern A. Zeeb },
863da8fa4e3SBjoern A. Zeeb },
864da8fa4e3SBjoern A. Zeeb {
865da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
866da8fa4e3SBjoern A. Zeeb .start = 0x800,
867da8fa4e3SBjoern A. Zeeb .len = 0x80020 - 0x800,
868da8fa4e3SBjoern A. Zeeb .name = "REG_TOTAL",
869da8fa4e3SBjoern A. Zeeb .section_table = {
870da8fa4e3SBjoern A. Zeeb .sections = qca6174_hw21_register_sections,
871da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw21_register_sections),
872da8fa4e3SBjoern A. Zeeb },
873da8fa4e3SBjoern A. Zeeb },
874da8fa4e3SBjoern A. Zeeb };
875da8fa4e3SBjoern A. Zeeb
876da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca6174_hw30_sdio_mem_regions[] = {
877da8fa4e3SBjoern A. Zeeb {
878da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
879da8fa4e3SBjoern A. Zeeb .start = 0x400000,
880da8fa4e3SBjoern A. Zeeb .len = 0xa8000,
881da8fa4e3SBjoern A. Zeeb .name = "DRAM",
882da8fa4e3SBjoern A. Zeeb .section_table = {
883da8fa4e3SBjoern A. Zeeb .sections = NULL,
884da8fa4e3SBjoern A. Zeeb .size = 0,
885da8fa4e3SBjoern A. Zeeb },
886da8fa4e3SBjoern A. Zeeb },
887da8fa4e3SBjoern A. Zeeb {
888da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_AXI,
889da8fa4e3SBjoern A. Zeeb .start = 0xa0000,
890da8fa4e3SBjoern A. Zeeb .len = 0x18000,
891da8fa4e3SBjoern A. Zeeb .name = "AXI",
892da8fa4e3SBjoern A. Zeeb .section_table = {
893da8fa4e3SBjoern A. Zeeb .sections = NULL,
894da8fa4e3SBjoern A. Zeeb .size = 0,
895da8fa4e3SBjoern A. Zeeb },
896da8fa4e3SBjoern A. Zeeb },
897da8fa4e3SBjoern A. Zeeb {
898da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IRAM1,
899da8fa4e3SBjoern A. Zeeb .start = 0x00980000,
900da8fa4e3SBjoern A. Zeeb .len = 0x00080000,
901da8fa4e3SBjoern A. Zeeb .name = "IRAM1",
902da8fa4e3SBjoern A. Zeeb .section_table = {
903da8fa4e3SBjoern A. Zeeb .sections = NULL,
904da8fa4e3SBjoern A. Zeeb .size = 0,
905da8fa4e3SBjoern A. Zeeb },
906da8fa4e3SBjoern A. Zeeb },
907da8fa4e3SBjoern A. Zeeb {
908da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IRAM2,
909da8fa4e3SBjoern A. Zeeb .start = 0x00a00000,
910da8fa4e3SBjoern A. Zeeb .len = 0x00040000,
911da8fa4e3SBjoern A. Zeeb .name = "IRAM2",
912da8fa4e3SBjoern A. Zeeb .section_table = {
913da8fa4e3SBjoern A. Zeeb .sections = NULL,
914da8fa4e3SBjoern A. Zeeb .size = 0,
915da8fa4e3SBjoern A. Zeeb },
916da8fa4e3SBjoern A. Zeeb },
917da8fa4e3SBjoern A. Zeeb {
918da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
919da8fa4e3SBjoern A. Zeeb .start = 0x800,
920da8fa4e3SBjoern A. Zeeb .len = 0x80020 - 0x800,
921da8fa4e3SBjoern A. Zeeb .name = "REG_TOTAL",
922da8fa4e3SBjoern A. Zeeb .section_table = {
923da8fa4e3SBjoern A. Zeeb .sections = qca6174_hw30_sdio_register_sections,
924da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_sdio_register_sections),
925da8fa4e3SBjoern A. Zeeb },
926da8fa4e3SBjoern A. Zeeb },
927da8fa4e3SBjoern A. Zeeb };
928da8fa4e3SBjoern A. Zeeb
929da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca6174_hw30_mem_regions[] = {
930da8fa4e3SBjoern A. Zeeb {
931da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
932da8fa4e3SBjoern A. Zeeb .start = 0x400000,
933da8fa4e3SBjoern A. Zeeb .len = 0xa8000,
934da8fa4e3SBjoern A. Zeeb .name = "DRAM",
935da8fa4e3SBjoern A. Zeeb .section_table = {
936da8fa4e3SBjoern A. Zeeb .sections = NULL,
937da8fa4e3SBjoern A. Zeeb .size = 0,
938da8fa4e3SBjoern A. Zeeb },
939da8fa4e3SBjoern A. Zeeb },
940da8fa4e3SBjoern A. Zeeb {
941da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_AXI,
942da8fa4e3SBjoern A. Zeeb .start = 0xa0000,
943da8fa4e3SBjoern A. Zeeb .len = 0x18000,
944da8fa4e3SBjoern A. Zeeb .name = "AXI",
945da8fa4e3SBjoern A. Zeeb .section_table = {
946da8fa4e3SBjoern A. Zeeb .sections = NULL,
947da8fa4e3SBjoern A. Zeeb .size = 0,
948da8fa4e3SBjoern A. Zeeb },
949da8fa4e3SBjoern A. Zeeb },
950da8fa4e3SBjoern A. Zeeb {
951da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
952da8fa4e3SBjoern A. Zeeb .start = 0x800,
953da8fa4e3SBjoern A. Zeeb .len = 0x80020 - 0x800,
954da8fa4e3SBjoern A. Zeeb .name = "REG_TOTAL",
955da8fa4e3SBjoern A. Zeeb .section_table = {
956da8fa4e3SBjoern A. Zeeb .sections = qca6174_hw30_register_sections,
957da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_register_sections),
958da8fa4e3SBjoern A. Zeeb },
959da8fa4e3SBjoern A. Zeeb },
960da8fa4e3SBjoern A. Zeeb
961da8fa4e3SBjoern A. Zeeb /* IRAM dump must be put last */
962da8fa4e3SBjoern A. Zeeb {
963da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IRAM1,
964da8fa4e3SBjoern A. Zeeb .start = 0x00980000,
965da8fa4e3SBjoern A. Zeeb .len = 0x00080000,
966da8fa4e3SBjoern A. Zeeb .name = "IRAM1",
967da8fa4e3SBjoern A. Zeeb .section_table = {
968da8fa4e3SBjoern A. Zeeb .sections = NULL,
969da8fa4e3SBjoern A. Zeeb .size = 0,
970da8fa4e3SBjoern A. Zeeb },
971da8fa4e3SBjoern A. Zeeb },
972da8fa4e3SBjoern A. Zeeb {
973da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IRAM2,
974da8fa4e3SBjoern A. Zeeb .start = 0x00a00000,
975da8fa4e3SBjoern A. Zeeb .len = 0x00040000,
976da8fa4e3SBjoern A. Zeeb .name = "IRAM2",
977da8fa4e3SBjoern A. Zeeb .section_table = {
978da8fa4e3SBjoern A. Zeeb .sections = NULL,
979da8fa4e3SBjoern A. Zeeb .size = 0,
980da8fa4e3SBjoern A. Zeeb },
981da8fa4e3SBjoern A. Zeeb },
982da8fa4e3SBjoern A. Zeeb };
983da8fa4e3SBjoern A. Zeeb
984da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca988x_hw20_mem_regions[] = {
985da8fa4e3SBjoern A. Zeeb {
986da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
987da8fa4e3SBjoern A. Zeeb .start = 0x400000,
988da8fa4e3SBjoern A. Zeeb .len = 0x50000,
989da8fa4e3SBjoern A. Zeeb .name = "DRAM",
990da8fa4e3SBjoern A. Zeeb .section_table = {
991da8fa4e3SBjoern A. Zeeb .sections = NULL,
992da8fa4e3SBjoern A. Zeeb .size = 0,
993da8fa4e3SBjoern A. Zeeb },
994da8fa4e3SBjoern A. Zeeb },
995da8fa4e3SBjoern A. Zeeb {
996da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
997da8fa4e3SBjoern A. Zeeb .start = 0x4000,
998da8fa4e3SBjoern A. Zeeb .len = 0x2000,
999da8fa4e3SBjoern A. Zeeb .name = "REG_PART1",
1000da8fa4e3SBjoern A. Zeeb .section_table = {
1001da8fa4e3SBjoern A. Zeeb .sections = NULL,
1002da8fa4e3SBjoern A. Zeeb .size = 0,
1003da8fa4e3SBjoern A. Zeeb },
1004da8fa4e3SBjoern A. Zeeb },
1005da8fa4e3SBjoern A. Zeeb {
1006da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1007da8fa4e3SBjoern A. Zeeb .start = 0x8000,
1008da8fa4e3SBjoern A. Zeeb .len = 0x58000,
1009da8fa4e3SBjoern A. Zeeb .name = "REG_PART2",
1010da8fa4e3SBjoern A. Zeeb .section_table = {
1011da8fa4e3SBjoern A. Zeeb .sections = NULL,
1012da8fa4e3SBjoern A. Zeeb .size = 0,
1013da8fa4e3SBjoern A. Zeeb },
1014da8fa4e3SBjoern A. Zeeb },
1015da8fa4e3SBjoern A. Zeeb };
1016da8fa4e3SBjoern A. Zeeb
1017da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca99x0_hw20_mem_regions[] = {
1018da8fa4e3SBjoern A. Zeeb {
1019da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
1020da8fa4e3SBjoern A. Zeeb .start = 0x400000,
1021da8fa4e3SBjoern A. Zeeb .len = 0x60000,
1022da8fa4e3SBjoern A. Zeeb .name = "DRAM",
1023da8fa4e3SBjoern A. Zeeb .section_table = {
1024da8fa4e3SBjoern A. Zeeb .sections = NULL,
1025da8fa4e3SBjoern A. Zeeb .size = 0,
1026da8fa4e3SBjoern A. Zeeb },
1027da8fa4e3SBjoern A. Zeeb },
1028da8fa4e3SBjoern A. Zeeb {
1029da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1030da8fa4e3SBjoern A. Zeeb .start = 0x980000,
1031da8fa4e3SBjoern A. Zeeb .len = 0x50000,
1032da8fa4e3SBjoern A. Zeeb .name = "IRAM",
1033da8fa4e3SBjoern A. Zeeb .section_table = {
1034da8fa4e3SBjoern A. Zeeb .sections = NULL,
1035da8fa4e3SBjoern A. Zeeb .size = 0,
1036da8fa4e3SBjoern A. Zeeb },
1037da8fa4e3SBjoern A. Zeeb },
1038da8fa4e3SBjoern A. Zeeb {
1039da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOSRAM,
1040da8fa4e3SBjoern A. Zeeb .start = 0xC0000,
1041da8fa4e3SBjoern A. Zeeb .len = 0x40000,
1042da8fa4e3SBjoern A. Zeeb .name = "SRAM",
1043da8fa4e3SBjoern A. Zeeb .section_table = {
1044da8fa4e3SBjoern A. Zeeb .sections = NULL,
1045da8fa4e3SBjoern A. Zeeb .size = 0,
1046da8fa4e3SBjoern A. Zeeb },
1047da8fa4e3SBjoern A. Zeeb },
1048da8fa4e3SBjoern A. Zeeb {
1049da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1050da8fa4e3SBjoern A. Zeeb .start = 0x30000,
1051da8fa4e3SBjoern A. Zeeb .len = 0x7000,
1052da8fa4e3SBjoern A. Zeeb .name = "APB REG 1",
1053da8fa4e3SBjoern A. Zeeb .section_table = {
1054da8fa4e3SBjoern A. Zeeb .sections = NULL,
1055da8fa4e3SBjoern A. Zeeb .size = 0,
1056da8fa4e3SBjoern A. Zeeb },
1057da8fa4e3SBjoern A. Zeeb },
1058da8fa4e3SBjoern A. Zeeb {
1059da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1060da8fa4e3SBjoern A. Zeeb .start = 0x3f000,
1061da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1062da8fa4e3SBjoern A. Zeeb .name = "APB REG 2",
1063da8fa4e3SBjoern A. Zeeb .section_table = {
1064da8fa4e3SBjoern A. Zeeb .sections = NULL,
1065da8fa4e3SBjoern A. Zeeb .size = 0,
1066da8fa4e3SBjoern A. Zeeb },
1067da8fa4e3SBjoern A. Zeeb },
1068da8fa4e3SBjoern A. Zeeb {
1069da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1070da8fa4e3SBjoern A. Zeeb .start = 0x43000,
1071da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1072da8fa4e3SBjoern A. Zeeb .name = "WIFI REG",
1073da8fa4e3SBjoern A. Zeeb .section_table = {
1074da8fa4e3SBjoern A. Zeeb .sections = NULL,
1075da8fa4e3SBjoern A. Zeeb .size = 0,
1076da8fa4e3SBjoern A. Zeeb },
1077da8fa4e3SBjoern A. Zeeb },
1078da8fa4e3SBjoern A. Zeeb {
1079da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1080da8fa4e3SBjoern A. Zeeb .start = 0x4A000,
1081da8fa4e3SBjoern A. Zeeb .len = 0x5000,
1082da8fa4e3SBjoern A. Zeeb .name = "CE REG",
1083da8fa4e3SBjoern A. Zeeb .section_table = {
1084da8fa4e3SBjoern A. Zeeb .sections = NULL,
1085da8fa4e3SBjoern A. Zeeb .size = 0,
1086da8fa4e3SBjoern A. Zeeb },
1087da8fa4e3SBjoern A. Zeeb },
1088da8fa4e3SBjoern A. Zeeb {
1089da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1090da8fa4e3SBjoern A. Zeeb .start = 0x80000,
1091da8fa4e3SBjoern A. Zeeb .len = 0x6000,
1092da8fa4e3SBjoern A. Zeeb .name = "SOC REG",
1093da8fa4e3SBjoern A. Zeeb .section_table = {
1094da8fa4e3SBjoern A. Zeeb .sections = NULL,
1095da8fa4e3SBjoern A. Zeeb .size = 0,
1096da8fa4e3SBjoern A. Zeeb },
1097da8fa4e3SBjoern A. Zeeb },
1098da8fa4e3SBjoern A. Zeeb };
1099da8fa4e3SBjoern A. Zeeb
1100da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca9984_hw10_mem_regions[] = {
1101da8fa4e3SBjoern A. Zeeb {
1102da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
1103da8fa4e3SBjoern A. Zeeb .start = 0x400000,
1104da8fa4e3SBjoern A. Zeeb .len = 0x80000,
1105da8fa4e3SBjoern A. Zeeb .name = "DRAM",
1106da8fa4e3SBjoern A. Zeeb .section_table = {
1107da8fa4e3SBjoern A. Zeeb .sections = NULL,
1108da8fa4e3SBjoern A. Zeeb .size = 0,
1109da8fa4e3SBjoern A. Zeeb },
1110da8fa4e3SBjoern A. Zeeb },
1111da8fa4e3SBjoern A. Zeeb {
1112da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1113da8fa4e3SBjoern A. Zeeb .start = 0x980000,
1114da8fa4e3SBjoern A. Zeeb .len = 0x50000,
1115da8fa4e3SBjoern A. Zeeb .name = "IRAM",
1116da8fa4e3SBjoern A. Zeeb .section_table = {
1117da8fa4e3SBjoern A. Zeeb .sections = NULL,
1118da8fa4e3SBjoern A. Zeeb .size = 0,
1119da8fa4e3SBjoern A. Zeeb },
1120da8fa4e3SBjoern A. Zeeb },
1121da8fa4e3SBjoern A. Zeeb {
1122da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOSRAM,
1123da8fa4e3SBjoern A. Zeeb .start = 0xC0000,
1124da8fa4e3SBjoern A. Zeeb .len = 0x40000,
1125da8fa4e3SBjoern A. Zeeb .name = "SRAM",
1126da8fa4e3SBjoern A. Zeeb .section_table = {
1127da8fa4e3SBjoern A. Zeeb .sections = NULL,
1128da8fa4e3SBjoern A. Zeeb .size = 0,
1129da8fa4e3SBjoern A. Zeeb },
1130da8fa4e3SBjoern A. Zeeb },
1131da8fa4e3SBjoern A. Zeeb {
1132da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1133da8fa4e3SBjoern A. Zeeb .start = 0x30000,
1134da8fa4e3SBjoern A. Zeeb .len = 0x7000,
1135da8fa4e3SBjoern A. Zeeb .name = "APB REG 1",
1136da8fa4e3SBjoern A. Zeeb .section_table = {
1137da8fa4e3SBjoern A. Zeeb .sections = NULL,
1138da8fa4e3SBjoern A. Zeeb .size = 0,
1139da8fa4e3SBjoern A. Zeeb },
1140da8fa4e3SBjoern A. Zeeb },
1141da8fa4e3SBjoern A. Zeeb {
1142da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1143da8fa4e3SBjoern A. Zeeb .start = 0x3f000,
1144da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1145da8fa4e3SBjoern A. Zeeb .name = "APB REG 2",
1146da8fa4e3SBjoern A. Zeeb .section_table = {
1147da8fa4e3SBjoern A. Zeeb .sections = NULL,
1148da8fa4e3SBjoern A. Zeeb .size = 0,
1149da8fa4e3SBjoern A. Zeeb },
1150da8fa4e3SBjoern A. Zeeb },
1151da8fa4e3SBjoern A. Zeeb {
1152da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1153da8fa4e3SBjoern A. Zeeb .start = 0x43000,
1154da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1155da8fa4e3SBjoern A. Zeeb .name = "WIFI REG",
1156da8fa4e3SBjoern A. Zeeb .section_table = {
1157da8fa4e3SBjoern A. Zeeb .sections = NULL,
1158da8fa4e3SBjoern A. Zeeb .size = 0,
1159da8fa4e3SBjoern A. Zeeb },
1160da8fa4e3SBjoern A. Zeeb },
1161da8fa4e3SBjoern A. Zeeb {
1162da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1163da8fa4e3SBjoern A. Zeeb .start = 0x4A000,
1164da8fa4e3SBjoern A. Zeeb .len = 0x5000,
1165da8fa4e3SBjoern A. Zeeb .name = "CE REG",
1166da8fa4e3SBjoern A. Zeeb .section_table = {
1167da8fa4e3SBjoern A. Zeeb .sections = NULL,
1168da8fa4e3SBjoern A. Zeeb .size = 0,
1169da8fa4e3SBjoern A. Zeeb },
1170da8fa4e3SBjoern A. Zeeb },
1171da8fa4e3SBjoern A. Zeeb {
1172da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1173da8fa4e3SBjoern A. Zeeb .start = 0x80000,
1174da8fa4e3SBjoern A. Zeeb .len = 0x6000,
1175da8fa4e3SBjoern A. Zeeb .name = "SOC REG",
1176da8fa4e3SBjoern A. Zeeb .section_table = {
1177da8fa4e3SBjoern A. Zeeb .sections = NULL,
1178da8fa4e3SBjoern A. Zeeb .size = 0,
1179da8fa4e3SBjoern A. Zeeb },
1180da8fa4e3SBjoern A. Zeeb },
1181da8fa4e3SBjoern A. Zeeb };
1182da8fa4e3SBjoern A. Zeeb
1183da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_section ipq4019_soc_reg_range[] = {
1184da8fa4e3SBjoern A. Zeeb {0x080000, 0x080004},
1185da8fa4e3SBjoern A. Zeeb {0x080020, 0x080024},
1186da8fa4e3SBjoern A. Zeeb {0x080028, 0x080050},
1187da8fa4e3SBjoern A. Zeeb {0x0800d4, 0x0800ec},
1188da8fa4e3SBjoern A. Zeeb {0x08010c, 0x080118},
1189da8fa4e3SBjoern A. Zeeb {0x080284, 0x080290},
1190da8fa4e3SBjoern A. Zeeb {0x0802a8, 0x0802b8},
1191da8fa4e3SBjoern A. Zeeb {0x0802dc, 0x08030c},
1192da8fa4e3SBjoern A. Zeeb {0x082000, 0x083fff}
1193da8fa4e3SBjoern A. Zeeb };
1194da8fa4e3SBjoern A. Zeeb
1195da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region qca4019_hw10_mem_regions[] = {
1196da8fa4e3SBjoern A. Zeeb {
1197da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_DRAM,
1198da8fa4e3SBjoern A. Zeeb .start = 0x400000,
1199da8fa4e3SBjoern A. Zeeb .len = 0x68000,
1200da8fa4e3SBjoern A. Zeeb .name = "DRAM",
1201da8fa4e3SBjoern A. Zeeb .section_table = {
1202da8fa4e3SBjoern A. Zeeb .sections = NULL,
1203da8fa4e3SBjoern A. Zeeb .size = 0,
1204da8fa4e3SBjoern A. Zeeb },
1205da8fa4e3SBjoern A. Zeeb },
1206da8fa4e3SBjoern A. Zeeb {
1207da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1208da8fa4e3SBjoern A. Zeeb .start = 0xC0000,
1209da8fa4e3SBjoern A. Zeeb .len = 0x40000,
1210da8fa4e3SBjoern A. Zeeb .name = "SRAM",
1211da8fa4e3SBjoern A. Zeeb .section_table = {
1212da8fa4e3SBjoern A. Zeeb .sections = NULL,
1213da8fa4e3SBjoern A. Zeeb .size = 0,
1214da8fa4e3SBjoern A. Zeeb },
1215da8fa4e3SBjoern A. Zeeb },
1216da8fa4e3SBjoern A. Zeeb {
1217da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1218da8fa4e3SBjoern A. Zeeb .start = 0x980000,
1219da8fa4e3SBjoern A. Zeeb .len = 0x50000,
1220da8fa4e3SBjoern A. Zeeb .name = "IRAM",
1221da8fa4e3SBjoern A. Zeeb .section_table = {
1222da8fa4e3SBjoern A. Zeeb .sections = NULL,
1223da8fa4e3SBjoern A. Zeeb .size = 0,
1224da8fa4e3SBjoern A. Zeeb },
1225da8fa4e3SBjoern A. Zeeb },
1226da8fa4e3SBjoern A. Zeeb {
1227da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1228da8fa4e3SBjoern A. Zeeb .start = 0x30000,
1229da8fa4e3SBjoern A. Zeeb .len = 0x7000,
1230da8fa4e3SBjoern A. Zeeb .name = "APB REG 1",
1231da8fa4e3SBjoern A. Zeeb .section_table = {
1232da8fa4e3SBjoern A. Zeeb .sections = NULL,
1233da8fa4e3SBjoern A. Zeeb .size = 0,
1234da8fa4e3SBjoern A. Zeeb },
1235da8fa4e3SBjoern A. Zeeb },
1236da8fa4e3SBjoern A. Zeeb {
1237da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1238da8fa4e3SBjoern A. Zeeb .start = 0x3f000,
1239da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1240da8fa4e3SBjoern A. Zeeb .name = "APB REG 2",
1241da8fa4e3SBjoern A. Zeeb .section_table = {
1242da8fa4e3SBjoern A. Zeeb .sections = NULL,
1243da8fa4e3SBjoern A. Zeeb .size = 0,
1244da8fa4e3SBjoern A. Zeeb },
1245da8fa4e3SBjoern A. Zeeb },
1246da8fa4e3SBjoern A. Zeeb {
1247da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1248da8fa4e3SBjoern A. Zeeb .start = 0x43000,
1249da8fa4e3SBjoern A. Zeeb .len = 0x3000,
1250da8fa4e3SBjoern A. Zeeb .name = "WIFI REG",
1251da8fa4e3SBjoern A. Zeeb .section_table = {
1252da8fa4e3SBjoern A. Zeeb .sections = NULL,
1253da8fa4e3SBjoern A. Zeeb .size = 0,
1254da8fa4e3SBjoern A. Zeeb },
1255da8fa4e3SBjoern A. Zeeb },
1256da8fa4e3SBjoern A. Zeeb {
1257da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_IOREG,
1258da8fa4e3SBjoern A. Zeeb .start = 0x4A000,
1259da8fa4e3SBjoern A. Zeeb .len = 0x5000,
1260da8fa4e3SBjoern A. Zeeb .name = "CE REG",
1261da8fa4e3SBjoern A. Zeeb .section_table = {
1262da8fa4e3SBjoern A. Zeeb .sections = NULL,
1263da8fa4e3SBjoern A. Zeeb .size = 0,
1264da8fa4e3SBjoern A. Zeeb },
1265da8fa4e3SBjoern A. Zeeb },
1266da8fa4e3SBjoern A. Zeeb {
1267da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_REG,
1268da8fa4e3SBjoern A. Zeeb .start = 0x080000,
1269da8fa4e3SBjoern A. Zeeb .len = 0x083fff - 0x080000,
1270da8fa4e3SBjoern A. Zeeb .name = "REG_TOTAL",
1271da8fa4e3SBjoern A. Zeeb .section_table = {
1272da8fa4e3SBjoern A. Zeeb .sections = ipq4019_soc_reg_range,
1273da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(ipq4019_soc_reg_range),
1274da8fa4e3SBjoern A. Zeeb },
1275da8fa4e3SBjoern A. Zeeb },
1276da8fa4e3SBjoern A. Zeeb };
1277da8fa4e3SBjoern A. Zeeb
1278da8fa4e3SBjoern A. Zeeb static const struct ath10k_mem_region wcn399x_hw10_mem_regions[] = {
1279da8fa4e3SBjoern A. Zeeb {
1280da8fa4e3SBjoern A. Zeeb /* MSA region start is not fixed, hence it is assigned at runtime */
1281da8fa4e3SBjoern A. Zeeb .type = ATH10K_MEM_REGION_TYPE_MSA,
1282da8fa4e3SBjoern A. Zeeb .len = 0x100000,
1283da8fa4e3SBjoern A. Zeeb .name = "DRAM",
1284da8fa4e3SBjoern A. Zeeb .section_table = {
1285da8fa4e3SBjoern A. Zeeb .sections = NULL,
1286da8fa4e3SBjoern A. Zeeb .size = 0,
1287da8fa4e3SBjoern A. Zeeb },
1288da8fa4e3SBjoern A. Zeeb },
1289da8fa4e3SBjoern A. Zeeb };
1290da8fa4e3SBjoern A. Zeeb
1291da8fa4e3SBjoern A. Zeeb static const struct ath10k_hw_mem_layout hw_mem_layouts[] = {
1292da8fa4e3SBjoern A. Zeeb {
1293da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_1_0_VERSION,
1294da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1295da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1296da8fa4e3SBjoern A. Zeeb .region_table = {
1297da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw10_mem_regions,
1298da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw10_mem_regions),
1299da8fa4e3SBjoern A. Zeeb },
1300da8fa4e3SBjoern A. Zeeb },
1301da8fa4e3SBjoern A. Zeeb {
1302da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_1_1_VERSION,
1303da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1304da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1305da8fa4e3SBjoern A. Zeeb .region_table = {
1306da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw10_mem_regions,
1307da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw10_mem_regions),
1308da8fa4e3SBjoern A. Zeeb },
1309da8fa4e3SBjoern A. Zeeb },
1310da8fa4e3SBjoern A. Zeeb {
1311da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_1_3_VERSION,
1312da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1313da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1314da8fa4e3SBjoern A. Zeeb .region_table = {
1315da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw10_mem_regions,
1316da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw10_mem_regions),
1317da8fa4e3SBjoern A. Zeeb },
1318da8fa4e3SBjoern A. Zeeb },
1319da8fa4e3SBjoern A. Zeeb {
1320da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_2_1_VERSION,
1321da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1322da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1323da8fa4e3SBjoern A. Zeeb .region_table = {
1324da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw21_mem_regions,
1325da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw21_mem_regions),
1326da8fa4e3SBjoern A. Zeeb },
1327da8fa4e3SBjoern A. Zeeb },
1328da8fa4e3SBjoern A. Zeeb {
1329da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_3_0_VERSION,
1330da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1331da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1332da8fa4e3SBjoern A. Zeeb .region_table = {
1333da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw30_mem_regions,
1334da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_mem_regions),
1335da8fa4e3SBjoern A. Zeeb },
1336da8fa4e3SBjoern A. Zeeb },
1337da8fa4e3SBjoern A. Zeeb {
1338da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_3_2_VERSION,
1339da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1340da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1341da8fa4e3SBjoern A. Zeeb .region_table = {
1342da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw30_mem_regions,
1343da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_mem_regions),
1344da8fa4e3SBjoern A. Zeeb },
1345da8fa4e3SBjoern A. Zeeb },
1346da8fa4e3SBjoern A. Zeeb {
1347da8fa4e3SBjoern A. Zeeb .hw_id = QCA6174_HW_3_2_VERSION,
1348da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA6174,
1349da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_SDIO,
1350da8fa4e3SBjoern A. Zeeb .region_table = {
1351da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw30_sdio_mem_regions,
1352da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_sdio_mem_regions),
1353da8fa4e3SBjoern A. Zeeb },
1354da8fa4e3SBjoern A. Zeeb },
1355da8fa4e3SBjoern A. Zeeb {
1356da8fa4e3SBjoern A. Zeeb .hw_id = QCA9377_HW_1_1_DEV_VERSION,
1357da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA9377,
1358da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1359da8fa4e3SBjoern A. Zeeb .region_table = {
1360da8fa4e3SBjoern A. Zeeb .regions = qca6174_hw30_mem_regions,
1361da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca6174_hw30_mem_regions),
1362da8fa4e3SBjoern A. Zeeb },
1363da8fa4e3SBjoern A. Zeeb },
1364da8fa4e3SBjoern A. Zeeb {
1365da8fa4e3SBjoern A. Zeeb .hw_id = QCA988X_HW_2_0_VERSION,
1366da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA988X,
1367da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1368da8fa4e3SBjoern A. Zeeb .region_table = {
1369da8fa4e3SBjoern A. Zeeb .regions = qca988x_hw20_mem_regions,
1370da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca988x_hw20_mem_regions),
1371da8fa4e3SBjoern A. Zeeb },
1372da8fa4e3SBjoern A. Zeeb },
1373da8fa4e3SBjoern A. Zeeb {
1374da8fa4e3SBjoern A. Zeeb .hw_id = QCA9984_HW_1_0_DEV_VERSION,
1375da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA9984,
1376da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1377da8fa4e3SBjoern A. Zeeb .region_table = {
1378da8fa4e3SBjoern A. Zeeb .regions = qca9984_hw10_mem_regions,
1379da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca9984_hw10_mem_regions),
1380da8fa4e3SBjoern A. Zeeb },
1381da8fa4e3SBjoern A. Zeeb },
1382da8fa4e3SBjoern A. Zeeb {
1383da8fa4e3SBjoern A. Zeeb .hw_id = QCA9888_HW_2_0_DEV_VERSION,
1384da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA9888,
1385da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1386da8fa4e3SBjoern A. Zeeb .region_table = {
1387da8fa4e3SBjoern A. Zeeb .regions = qca9984_hw10_mem_regions,
1388da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca9984_hw10_mem_regions),
1389da8fa4e3SBjoern A. Zeeb },
1390da8fa4e3SBjoern A. Zeeb },
1391da8fa4e3SBjoern A. Zeeb {
1392da8fa4e3SBjoern A. Zeeb .hw_id = QCA99X0_HW_2_0_DEV_VERSION,
1393da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA99X0,
1394da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_PCI,
1395da8fa4e3SBjoern A. Zeeb .region_table = {
1396da8fa4e3SBjoern A. Zeeb .regions = qca99x0_hw20_mem_regions,
1397da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca99x0_hw20_mem_regions),
1398da8fa4e3SBjoern A. Zeeb },
1399da8fa4e3SBjoern A. Zeeb },
1400da8fa4e3SBjoern A. Zeeb {
1401da8fa4e3SBjoern A. Zeeb .hw_id = QCA4019_HW_1_0_DEV_VERSION,
1402da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_QCA4019,
1403da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_AHB,
1404da8fa4e3SBjoern A. Zeeb .region_table = {
1405da8fa4e3SBjoern A. Zeeb .regions = qca4019_hw10_mem_regions,
1406da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(qca4019_hw10_mem_regions),
1407da8fa4e3SBjoern A. Zeeb },
1408da8fa4e3SBjoern A. Zeeb },
1409da8fa4e3SBjoern A. Zeeb {
1410da8fa4e3SBjoern A. Zeeb .hw_id = WCN3990_HW_1_0_DEV_VERSION,
1411da8fa4e3SBjoern A. Zeeb .hw_rev = ATH10K_HW_WCN3990,
1412da8fa4e3SBjoern A. Zeeb .bus = ATH10K_BUS_SNOC,
1413da8fa4e3SBjoern A. Zeeb .region_table = {
1414da8fa4e3SBjoern A. Zeeb .regions = wcn399x_hw10_mem_regions,
1415da8fa4e3SBjoern A. Zeeb .size = ARRAY_SIZE(wcn399x_hw10_mem_regions),
1416da8fa4e3SBjoern A. Zeeb },
1417da8fa4e3SBjoern A. Zeeb },
1418da8fa4e3SBjoern A. Zeeb };
1419da8fa4e3SBjoern A. Zeeb
ath10k_coredump_get_ramdump_size(struct ath10k * ar)1420da8fa4e3SBjoern A. Zeeb static u32 ath10k_coredump_get_ramdump_size(struct ath10k *ar)
1421da8fa4e3SBjoern A. Zeeb {
1422da8fa4e3SBjoern A. Zeeb const struct ath10k_hw_mem_layout *hw;
1423da8fa4e3SBjoern A. Zeeb const struct ath10k_mem_region *mem_region;
1424da8fa4e3SBjoern A. Zeeb size_t size = 0;
1425da8fa4e3SBjoern A. Zeeb int i;
1426da8fa4e3SBjoern A. Zeeb
1427da8fa4e3SBjoern A. Zeeb hw = ath10k_coredump_get_mem_layout(ar);
1428da8fa4e3SBjoern A. Zeeb
1429da8fa4e3SBjoern A. Zeeb if (!hw)
1430da8fa4e3SBjoern A. Zeeb return 0;
1431da8fa4e3SBjoern A. Zeeb
1432da8fa4e3SBjoern A. Zeeb mem_region = &hw->region_table.regions[0];
1433da8fa4e3SBjoern A. Zeeb
1434da8fa4e3SBjoern A. Zeeb for (i = 0; i < hw->region_table.size; i++) {
1435da8fa4e3SBjoern A. Zeeb size += mem_region->len;
1436da8fa4e3SBjoern A. Zeeb mem_region++;
1437da8fa4e3SBjoern A. Zeeb }
1438da8fa4e3SBjoern A. Zeeb
1439da8fa4e3SBjoern A. Zeeb /* reserve space for the headers */
1440da8fa4e3SBjoern A. Zeeb size += hw->region_table.size * sizeof(struct ath10k_dump_ram_data_hdr);
1441da8fa4e3SBjoern A. Zeeb
1442da8fa4e3SBjoern A. Zeeb /* make sure it is aligned 16 bytes for debug message print out */
1443da8fa4e3SBjoern A. Zeeb size = ALIGN(size, 16);
1444da8fa4e3SBjoern A. Zeeb
1445da8fa4e3SBjoern A. Zeeb return size;
1446da8fa4e3SBjoern A. Zeeb }
1447da8fa4e3SBjoern A. Zeeb
ath10k_coredump_get_mem_layout(struct ath10k * ar)1448da8fa4e3SBjoern A. Zeeb const struct ath10k_hw_mem_layout *ath10k_coredump_get_mem_layout(struct ath10k *ar)
1449da8fa4e3SBjoern A. Zeeb {
1450da8fa4e3SBjoern A. Zeeb if (!test_bit(ATH10K_FW_CRASH_DUMP_RAM_DATA, &ath10k_coredump_mask))
1451da8fa4e3SBjoern A. Zeeb return NULL;
1452da8fa4e3SBjoern A. Zeeb
1453da8fa4e3SBjoern A. Zeeb return _ath10k_coredump_get_mem_layout(ar);
1454da8fa4e3SBjoern A. Zeeb }
1455da8fa4e3SBjoern A. Zeeb EXPORT_SYMBOL(ath10k_coredump_get_mem_layout);
1456da8fa4e3SBjoern A. Zeeb
_ath10k_coredump_get_mem_layout(struct ath10k * ar)1457da8fa4e3SBjoern A. Zeeb const struct ath10k_hw_mem_layout *_ath10k_coredump_get_mem_layout(struct ath10k *ar)
1458da8fa4e3SBjoern A. Zeeb {
1459da8fa4e3SBjoern A. Zeeb int i;
1460da8fa4e3SBjoern A. Zeeb
1461da8fa4e3SBjoern A. Zeeb if (WARN_ON(ar->target_version == 0))
1462da8fa4e3SBjoern A. Zeeb return NULL;
1463da8fa4e3SBjoern A. Zeeb
1464da8fa4e3SBjoern A. Zeeb for (i = 0; i < ARRAY_SIZE(hw_mem_layouts); i++) {
1465da8fa4e3SBjoern A. Zeeb if (ar->target_version == hw_mem_layouts[i].hw_id &&
1466da8fa4e3SBjoern A. Zeeb ar->hw_rev == hw_mem_layouts[i].hw_rev &&
1467da8fa4e3SBjoern A. Zeeb hw_mem_layouts[i].bus == ar->hif.bus)
1468da8fa4e3SBjoern A. Zeeb return &hw_mem_layouts[i];
1469da8fa4e3SBjoern A. Zeeb }
1470da8fa4e3SBjoern A. Zeeb
1471da8fa4e3SBjoern A. Zeeb return NULL;
1472da8fa4e3SBjoern A. Zeeb }
1473da8fa4e3SBjoern A. Zeeb
ath10k_coredump_new(struct ath10k * ar)1474da8fa4e3SBjoern A. Zeeb struct ath10k_fw_crash_data *ath10k_coredump_new(struct ath10k *ar)
1475da8fa4e3SBjoern A. Zeeb {
1476da8fa4e3SBjoern A. Zeeb struct ath10k_fw_crash_data *crash_data = ar->coredump.fw_crash_data;
1477da8fa4e3SBjoern A. Zeeb
1478da8fa4e3SBjoern A. Zeeb lockdep_assert_held(&ar->dump_mutex);
1479da8fa4e3SBjoern A. Zeeb
1480da8fa4e3SBjoern A. Zeeb if (ath10k_coredump_mask == 0)
1481da8fa4e3SBjoern A. Zeeb /* coredump disabled */
1482da8fa4e3SBjoern A. Zeeb return NULL;
1483da8fa4e3SBjoern A. Zeeb
1484da8fa4e3SBjoern A. Zeeb guid_gen(&crash_data->guid);
1485da8fa4e3SBjoern A. Zeeb ktime_get_real_ts64(&crash_data->timestamp);
1486da8fa4e3SBjoern A. Zeeb
1487da8fa4e3SBjoern A. Zeeb return crash_data;
1488da8fa4e3SBjoern A. Zeeb }
1489da8fa4e3SBjoern A. Zeeb EXPORT_SYMBOL(ath10k_coredump_new);
1490da8fa4e3SBjoern A. Zeeb
ath10k_coredump_build(struct ath10k * ar)1491da8fa4e3SBjoern A. Zeeb static struct ath10k_dump_file_data *ath10k_coredump_build(struct ath10k *ar)
1492da8fa4e3SBjoern A. Zeeb {
1493da8fa4e3SBjoern A. Zeeb struct ath10k_fw_crash_data *crash_data = ar->coredump.fw_crash_data;
1494da8fa4e3SBjoern A. Zeeb struct ath10k_ce_crash_hdr *ce_hdr;
1495da8fa4e3SBjoern A. Zeeb struct ath10k_dump_file_data *dump_data;
1496da8fa4e3SBjoern A. Zeeb struct ath10k_tlv_dump_data *dump_tlv;
1497da8fa4e3SBjoern A. Zeeb size_t hdr_len = sizeof(*dump_data);
1498da8fa4e3SBjoern A. Zeeb size_t len, sofar = 0;
1499da8fa4e3SBjoern A. Zeeb unsigned char *buf;
1500da8fa4e3SBjoern A. Zeeb
1501da8fa4e3SBjoern A. Zeeb len = hdr_len;
1502da8fa4e3SBjoern A. Zeeb
1503da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_REGISTERS, &ath10k_coredump_mask))
1504da8fa4e3SBjoern A. Zeeb len += sizeof(*dump_tlv) + sizeof(crash_data->registers);
1505da8fa4e3SBjoern A. Zeeb
1506da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_CE_DATA, &ath10k_coredump_mask))
1507da8fa4e3SBjoern A. Zeeb len += sizeof(*dump_tlv) + sizeof(*ce_hdr) +
1508da8fa4e3SBjoern A. Zeeb CE_COUNT * sizeof(ce_hdr->entries[0]);
1509da8fa4e3SBjoern A. Zeeb
1510da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_RAM_DATA, &ath10k_coredump_mask))
1511da8fa4e3SBjoern A. Zeeb len += sizeof(*dump_tlv) + crash_data->ramdump_buf_len;
1512da8fa4e3SBjoern A. Zeeb
1513da8fa4e3SBjoern A. Zeeb sofar += hdr_len;
1514da8fa4e3SBjoern A. Zeeb
1515da8fa4e3SBjoern A. Zeeb /* This is going to get big when we start dumping FW RAM and such,
1516da8fa4e3SBjoern A. Zeeb * so go ahead and use vmalloc.
1517da8fa4e3SBjoern A. Zeeb */
1518da8fa4e3SBjoern A. Zeeb buf = vzalloc(len);
1519da8fa4e3SBjoern A. Zeeb if (!buf)
1520da8fa4e3SBjoern A. Zeeb return NULL;
1521da8fa4e3SBjoern A. Zeeb
1522da8fa4e3SBjoern A. Zeeb mutex_lock(&ar->dump_mutex);
1523da8fa4e3SBjoern A. Zeeb
1524da8fa4e3SBjoern A. Zeeb dump_data = (struct ath10k_dump_file_data *)(buf);
1525da8fa4e3SBjoern A. Zeeb strscpy(dump_data->df_magic, "ATH10K-FW-DUMP",
1526da8fa4e3SBjoern A. Zeeb sizeof(dump_data->df_magic));
1527da8fa4e3SBjoern A. Zeeb dump_data->len = cpu_to_le32(len);
1528da8fa4e3SBjoern A. Zeeb
1529da8fa4e3SBjoern A. Zeeb dump_data->version = cpu_to_le32(ATH10K_FW_CRASH_DUMP_VERSION);
1530da8fa4e3SBjoern A. Zeeb
1531da8fa4e3SBjoern A. Zeeb guid_copy(&dump_data->guid, &crash_data->guid);
1532da8fa4e3SBjoern A. Zeeb dump_data->chip_id = cpu_to_le32(ar->bus_param.chip_id);
1533da8fa4e3SBjoern A. Zeeb dump_data->bus_type = cpu_to_le32(0);
1534da8fa4e3SBjoern A. Zeeb dump_data->target_version = cpu_to_le32(ar->target_version);
1535da8fa4e3SBjoern A. Zeeb dump_data->fw_version_major = cpu_to_le32(ar->fw_version_major);
1536da8fa4e3SBjoern A. Zeeb dump_data->fw_version_minor = cpu_to_le32(ar->fw_version_minor);
1537da8fa4e3SBjoern A. Zeeb dump_data->fw_version_release = cpu_to_le32(ar->fw_version_release);
1538da8fa4e3SBjoern A. Zeeb dump_data->fw_version_build = cpu_to_le32(ar->fw_version_build);
1539da8fa4e3SBjoern A. Zeeb dump_data->phy_capability = cpu_to_le32(ar->phy_capability);
1540da8fa4e3SBjoern A. Zeeb dump_data->hw_min_tx_power = cpu_to_le32(ar->hw_min_tx_power);
1541da8fa4e3SBjoern A. Zeeb dump_data->hw_max_tx_power = cpu_to_le32(ar->hw_max_tx_power);
1542da8fa4e3SBjoern A. Zeeb dump_data->ht_cap_info = cpu_to_le32(ar->ht_cap_info);
1543da8fa4e3SBjoern A. Zeeb dump_data->vht_cap_info = cpu_to_le32(ar->vht_cap_info);
1544da8fa4e3SBjoern A. Zeeb dump_data->num_rf_chains = cpu_to_le32(ar->num_rf_chains);
1545da8fa4e3SBjoern A. Zeeb
1546da8fa4e3SBjoern A. Zeeb strscpy(dump_data->fw_ver, ar->hw->wiphy->fw_version,
1547da8fa4e3SBjoern A. Zeeb sizeof(dump_data->fw_ver));
1548da8fa4e3SBjoern A. Zeeb
1549da8fa4e3SBjoern A. Zeeb dump_data->kernel_ver_code = 0;
1550da8fa4e3SBjoern A. Zeeb strscpy(dump_data->kernel_ver, init_utsname()->release,
1551da8fa4e3SBjoern A. Zeeb sizeof(dump_data->kernel_ver));
1552da8fa4e3SBjoern A. Zeeb
1553da8fa4e3SBjoern A. Zeeb dump_data->tv_sec = cpu_to_le64(crash_data->timestamp.tv_sec);
1554da8fa4e3SBjoern A. Zeeb dump_data->tv_nsec = cpu_to_le64(crash_data->timestamp.tv_nsec);
1555da8fa4e3SBjoern A. Zeeb
1556da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_REGISTERS, &ath10k_coredump_mask)) {
1557da8fa4e3SBjoern A. Zeeb dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar);
1558da8fa4e3SBjoern A. Zeeb dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_REGISTERS);
1559da8fa4e3SBjoern A. Zeeb dump_tlv->tlv_len = cpu_to_le32(sizeof(crash_data->registers));
1560da8fa4e3SBjoern A. Zeeb memcpy(dump_tlv->tlv_data, &crash_data->registers,
1561da8fa4e3SBjoern A. Zeeb sizeof(crash_data->registers));
1562da8fa4e3SBjoern A. Zeeb sofar += sizeof(*dump_tlv) + sizeof(crash_data->registers);
1563da8fa4e3SBjoern A. Zeeb }
1564da8fa4e3SBjoern A. Zeeb
1565da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_CE_DATA, &ath10k_coredump_mask)) {
1566da8fa4e3SBjoern A. Zeeb dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar);
1567da8fa4e3SBjoern A. Zeeb dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_CE_DATA);
1568da8fa4e3SBjoern A. Zeeb dump_tlv->tlv_len = cpu_to_le32(struct_size(ce_hdr, entries,
1569da8fa4e3SBjoern A. Zeeb CE_COUNT));
1570da8fa4e3SBjoern A. Zeeb ce_hdr = (struct ath10k_ce_crash_hdr *)(dump_tlv->tlv_data);
1571da8fa4e3SBjoern A. Zeeb ce_hdr->ce_count = cpu_to_le32(CE_COUNT);
1572da8fa4e3SBjoern A. Zeeb memset(ce_hdr->reserved, 0, sizeof(ce_hdr->reserved));
1573da8fa4e3SBjoern A. Zeeb memcpy(ce_hdr->entries, crash_data->ce_crash_data,
1574da8fa4e3SBjoern A. Zeeb CE_COUNT * sizeof(ce_hdr->entries[0]));
1575da8fa4e3SBjoern A. Zeeb sofar += sizeof(*dump_tlv) + sizeof(*ce_hdr) +
1576da8fa4e3SBjoern A. Zeeb CE_COUNT * sizeof(ce_hdr->entries[0]);
1577da8fa4e3SBjoern A. Zeeb }
1578da8fa4e3SBjoern A. Zeeb
1579da8fa4e3SBjoern A. Zeeb /* Gather ram dump */
1580da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_RAM_DATA, &ath10k_coredump_mask)) {
1581da8fa4e3SBjoern A. Zeeb dump_tlv = (struct ath10k_tlv_dump_data *)(buf + sofar);
1582da8fa4e3SBjoern A. Zeeb dump_tlv->type = cpu_to_le32(ATH10K_FW_CRASH_DUMP_RAM_DATA);
1583da8fa4e3SBjoern A. Zeeb dump_tlv->tlv_len = cpu_to_le32(crash_data->ramdump_buf_len);
1584da8fa4e3SBjoern A. Zeeb if (crash_data->ramdump_buf_len) {
1585da8fa4e3SBjoern A. Zeeb memcpy(dump_tlv->tlv_data, crash_data->ramdump_buf,
1586da8fa4e3SBjoern A. Zeeb crash_data->ramdump_buf_len);
1587da8fa4e3SBjoern A. Zeeb sofar += sizeof(*dump_tlv) + crash_data->ramdump_buf_len;
1588da8fa4e3SBjoern A. Zeeb }
1589da8fa4e3SBjoern A. Zeeb }
1590da8fa4e3SBjoern A. Zeeb
1591da8fa4e3SBjoern A. Zeeb mutex_unlock(&ar->dump_mutex);
1592da8fa4e3SBjoern A. Zeeb
1593da8fa4e3SBjoern A. Zeeb return dump_data;
1594da8fa4e3SBjoern A. Zeeb }
1595da8fa4e3SBjoern A. Zeeb
ath10k_coredump_submit(struct ath10k * ar)1596da8fa4e3SBjoern A. Zeeb int ath10k_coredump_submit(struct ath10k *ar)
1597da8fa4e3SBjoern A. Zeeb {
1598da8fa4e3SBjoern A. Zeeb struct ath10k_dump_file_data *dump;
1599da8fa4e3SBjoern A. Zeeb
1600da8fa4e3SBjoern A. Zeeb if (ath10k_coredump_mask == 0)
1601da8fa4e3SBjoern A. Zeeb /* coredump disabled */
1602da8fa4e3SBjoern A. Zeeb return 0;
1603da8fa4e3SBjoern A. Zeeb
1604da8fa4e3SBjoern A. Zeeb dump = ath10k_coredump_build(ar);
1605da8fa4e3SBjoern A. Zeeb if (!dump) {
1606da8fa4e3SBjoern A. Zeeb ath10k_warn(ar, "no crash dump data found for devcoredump");
1607da8fa4e3SBjoern A. Zeeb return -ENODATA;
1608da8fa4e3SBjoern A. Zeeb }
1609da8fa4e3SBjoern A. Zeeb
1610da8fa4e3SBjoern A. Zeeb dev_coredumpv(ar->dev, dump, le32_to_cpu(dump->len), GFP_KERNEL);
1611da8fa4e3SBjoern A. Zeeb
1612da8fa4e3SBjoern A. Zeeb return 0;
1613da8fa4e3SBjoern A. Zeeb }
1614da8fa4e3SBjoern A. Zeeb
ath10k_coredump_create(struct ath10k * ar)1615da8fa4e3SBjoern A. Zeeb int ath10k_coredump_create(struct ath10k *ar)
1616da8fa4e3SBjoern A. Zeeb {
1617da8fa4e3SBjoern A. Zeeb if (ath10k_coredump_mask == 0)
1618da8fa4e3SBjoern A. Zeeb /* coredump disabled */
1619da8fa4e3SBjoern A. Zeeb return 0;
1620da8fa4e3SBjoern A. Zeeb
1621da8fa4e3SBjoern A. Zeeb ar->coredump.fw_crash_data = vzalloc(sizeof(*ar->coredump.fw_crash_data));
1622da8fa4e3SBjoern A. Zeeb if (!ar->coredump.fw_crash_data)
1623da8fa4e3SBjoern A. Zeeb return -ENOMEM;
1624da8fa4e3SBjoern A. Zeeb
1625da8fa4e3SBjoern A. Zeeb return 0;
1626da8fa4e3SBjoern A. Zeeb }
1627da8fa4e3SBjoern A. Zeeb
ath10k_coredump_register(struct ath10k * ar)1628da8fa4e3SBjoern A. Zeeb int ath10k_coredump_register(struct ath10k *ar)
1629da8fa4e3SBjoern A. Zeeb {
1630da8fa4e3SBjoern A. Zeeb struct ath10k_fw_crash_data *crash_data = ar->coredump.fw_crash_data;
1631da8fa4e3SBjoern A. Zeeb
1632da8fa4e3SBjoern A. Zeeb if (test_bit(ATH10K_FW_CRASH_DUMP_RAM_DATA, &ath10k_coredump_mask)) {
1633da8fa4e3SBjoern A. Zeeb crash_data->ramdump_buf_len = ath10k_coredump_get_ramdump_size(ar);
1634da8fa4e3SBjoern A. Zeeb
1635da8fa4e3SBjoern A. Zeeb if (!crash_data->ramdump_buf_len)
1636da8fa4e3SBjoern A. Zeeb return 0;
1637da8fa4e3SBjoern A. Zeeb
1638da8fa4e3SBjoern A. Zeeb crash_data->ramdump_buf = vzalloc(crash_data->ramdump_buf_len);
1639da8fa4e3SBjoern A. Zeeb if (!crash_data->ramdump_buf)
1640da8fa4e3SBjoern A. Zeeb return -ENOMEM;
1641da8fa4e3SBjoern A. Zeeb }
1642da8fa4e3SBjoern A. Zeeb
1643da8fa4e3SBjoern A. Zeeb return 0;
1644da8fa4e3SBjoern A. Zeeb }
1645da8fa4e3SBjoern A. Zeeb
ath10k_coredump_unregister(struct ath10k * ar)1646da8fa4e3SBjoern A. Zeeb void ath10k_coredump_unregister(struct ath10k *ar)
1647da8fa4e3SBjoern A. Zeeb {
1648da8fa4e3SBjoern A. Zeeb struct ath10k_fw_crash_data *crash_data = ar->coredump.fw_crash_data;
1649da8fa4e3SBjoern A. Zeeb
1650da8fa4e3SBjoern A. Zeeb vfree(crash_data->ramdump_buf);
1651da8fa4e3SBjoern A. Zeeb }
1652da8fa4e3SBjoern A. Zeeb
ath10k_coredump_destroy(struct ath10k * ar)1653da8fa4e3SBjoern A. Zeeb void ath10k_coredump_destroy(struct ath10k *ar)
1654da8fa4e3SBjoern A. Zeeb {
1655da8fa4e3SBjoern A. Zeeb if (ar->coredump.fw_crash_data->ramdump_buf) {
1656da8fa4e3SBjoern A. Zeeb vfree(ar->coredump.fw_crash_data->ramdump_buf);
1657da8fa4e3SBjoern A. Zeeb ar->coredump.fw_crash_data->ramdump_buf = NULL;
1658da8fa4e3SBjoern A. Zeeb ar->coredump.fw_crash_data->ramdump_buf_len = 0;
1659da8fa4e3SBjoern A. Zeeb }
1660da8fa4e3SBjoern A. Zeeb
1661da8fa4e3SBjoern A. Zeeb vfree(ar->coredump.fw_crash_data);
1662da8fa4e3SBjoern A. Zeeb ar->coredump.fw_crash_data = NULL;
1663da8fa4e3SBjoern A. Zeeb }
1664