xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/regtable.c (revision 7be08f15775e0e24440f836dfb6edcd5fe601d80)
1 /*
2  * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #include "targaddrs.h"
20 #include "target_type.h"
21 #include "cepci.h"
22 #include "regtable.h"
23 #include "ar6320def.h"
24 #include "ar6320v2def.h"
25 #include "hif_main.h"
26 #include "adrastea_reg_def.h"
27 
28 #include "targetdef.h"
29 #include "hostdef.h"
30 
31 void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type)
32 {
33 	switch (target_type) {
34 	case TARGET_TYPE_AR6320:
35 		scn->targetdef = &ar6320_targetdef;
36 		scn->target_ce_def = &ar6320_ce_targetdef;
37 		break;
38 	case TARGET_TYPE_AR6320V2:
39 		scn->targetdef = &ar6320v2_targetdef;
40 		scn->target_ce_def = &ar6320v2_ce_targetdef;
41 		break;
42 	case TARGET_TYPE_ADRASTEA:
43 		scn->targetdef = &adrastea_targetdef;
44 		scn->target_ce_def = &adrastea_ce_targetdef;
45 		break;
46 	case TARGET_TYPE_QCN7605:
47 		scn->targetdef = &genoa_targetdef;
48 		scn->target_ce_def = &genoa_ce_targetdef;
49 		break;
50 #if defined(AR6002_HEADERS_DEF)
51 	case TARGET_TYPE_AR6002:
52 		scn->targetdef = AR6002_TARGETdef;
53 		break;
54 #endif
55 #if defined(AR6003_HEADERS_DEF)
56 	case TARGET_TYPE_AR6003:
57 		scn->targetdef = AR6003_TARGETdef;
58 		break;
59 #endif
60 #if defined(AR6004_HEADERS_DEF)
61 	case TARGET_TYPE_AR6004:
62 		scn->targetdef = AR6004_TARGETdef;
63 		break;
64 #endif
65 #if defined(AR9888_HEADERS_DEF)
66 	case TARGET_TYPE_AR9888:
67 		scn->targetdef = AR9888_TARGETdef;
68 		scn->target_ce_def = AR9888_CE_TARGETdef;
69 		break;
70 #endif
71 #if defined(AR9888V2_HEADERS_DEF)
72 	case TARGET_TYPE_AR9888V2:
73 		scn->targetdef = AR9888V2_TARGETdef;
74 		scn->target_ce_def = AR9888_CE_TARGETdef;
75 		break;
76 #endif
77 #if defined(AR900B_HEADERS_DEF)
78 	case TARGET_TYPE_AR900B:
79 		scn->targetdef = AR900B_TARGETdef;
80 		scn->target_ce_def = AR900B_CE_TARGETdef;
81 		break;
82 #endif
83 #if defined(QCA9984_HEADERS_DEF)
84 	case TARGET_TYPE_QCA9984:
85 		scn->targetdef = QCA9984_TARGETdef;
86 		scn->target_ce_def = QCA9984_CE_TARGETdef;
87 		break;
88 #endif
89 #if defined(QCA9888_HEADERS_DEF)
90 	case TARGET_TYPE_QCA9888:
91 		scn->targetdef = QCA9888_TARGETdef;
92 		scn->target_ce_def = QCA9888_CE_TARGETdef;
93 		break;
94 #endif
95 #ifdef ATH_AHB
96 #if defined(IPQ4019_HEADERS_DEF)
97 	case TARGET_TYPE_IPQ4019:
98 		scn->targetdef = IPQ4019_TARGETdef;
99 		scn->target_ce_def = IPQ4019_CE_TARGETdef;
100 		break;
101 #endif
102 #endif
103 #if defined(QCA8074_HEADERS_DEF)
104 	case TARGET_TYPE_QCA8074:
105 		scn->targetdef = QCA8074_TARGETdef;
106 		scn->target_ce_def = QCA8074_CE_TARGETdef;
107 		break;
108 #endif
109 
110 #if defined(QCA6290_HEADERS_DEF)
111 	case TARGET_TYPE_QCA6290:
112 		scn->targetdef = QCA6290_TARGETdef;
113 		scn->target_ce_def = QCA6290_CE_TARGETdef;
114 		break;
115 #endif
116 #if defined(QCA8074V2_HEADERS_DEF)
117 	case TARGET_TYPE_QCA8074V2:
118 		scn->targetdef = QCA8074V2_TARGETDEF;
119 		scn->target_ce_def = QCA8074V2_CE_TARGETDEF;
120 		break;
121 #endif
122 #if defined(QCA6018_HEADERS_DEF)
123 	case TARGET_TYPE_QCA6018:
124 		scn->targetdef = QCA6018_TARGETDEF;
125 		scn->target_ce_def = QCA6018_CE_TARGETDEF;
126 		break;
127 #endif
128 #if defined(QCA9574_HEADERS_DEF)
129 	case TARGET_TYPE_QCA9574:
130 		scn->targetdef = QCA9574_TARGETDEF;
131 		scn->target_ce_def = QCA9574_CE_TARGETDEF;
132 		hif_info("TARGET_TYPE_QCA9574");
133 		break;
134 #endif
135 
136 #if defined(QCN9000_HEADERS_DEF)
137 	case TARGET_TYPE_QCN9000:
138 		scn->targetdef = QCN9000_TARGETDEF;
139 		scn->target_ce_def = QCN9000_CE_TARGETDEF;
140 		hif_info("TARGET_TYPE_QCN9000");
141 		break;
142 #endif
143 
144 #if defined(QCN9224_HEADERS_DEF)
145 	case TARGET_TYPE_QCN9224:
146 		scn->targetdef = QCN9224_TARGETDEF;
147 		scn->target_ce_def = QCN9224_CE_TARGETDEF;
148 		hif_info("TARGET_TYPE_QCN9224");
149 		break;
150 #endif
151 
152 #if defined(QCN6122_HEADERS_DEF)
153 	case TARGET_TYPE_QCN6122:
154 		scn->targetdef = QCN6122_TARGETDEF;
155 		scn->target_ce_def = QCN6122_CE_TARGETDEF;
156 		hif_info("TARGET_TYPE_QCN6122");
157 		break;
158 #endif
159 
160 #if defined(QCA5018_HEADERS_DEF)
161 	case TARGET_TYPE_QCA5018:
162 		scn->targetdef = QCA5018_TARGETDEF;
163 		scn->target_ce_def = QCA5018_CE_TARGETDEF;
164 		hif_info("TARGET_TYPE_QCA5018");
165 		break;
166 #endif
167 
168 #if defined(QCA6390_HEADERS_DEF)
169 	case TARGET_TYPE_QCA6390:
170 		scn->targetdef = QCA6390_TARGETdef;
171 		scn->target_ce_def = QCA6390_CE_TARGETdef;
172 		hif_info("TARGET_TYPE_QCA6390");
173 		break;
174 #endif /* QCA6390_HEADERS_DEF */
175 
176 #if defined(QCA6490_HEADERS_DEF)
177 	case TARGET_TYPE_QCA6490:
178 		scn->targetdef = QCA6490_TARGETdef;
179 		scn->target_ce_def = QCA6490_CE_TARGETdef;
180 		hif_info("TARGET_TYPE_QCA6490");
181 		break;
182 #endif /* QCA6490_HEADERS_DEF */
183 
184 #if defined(WCN7850_HEADERS_DEF)
185 	case TARGET_TYPE_WCN7850:
186 		scn->targetdef = WCN7850_TARGETdef;
187 		scn->target_ce_def = WCN7850_CE_TARGETdef;
188 		hif_info("TARGET_TYPE_WCN7850");
189 		break;
190 #endif /* WCN7850_HEADERS_DEF */
191 
192 #if defined(QCA6750_HEADERS_DEF)
193 	case TARGET_TYPE_QCA6750:
194 		scn->targetdef = QCA6750_TARGETdef;
195 		scn->target_ce_def = QCA6750_CE_TARGETdef;
196 		hif_info("TARGET_TYPE_QCA6750");
197 		break;
198 #endif /* QCA6750_HEADERS_DEF */
199 	default:
200 		break;
201 	}
202 }
203 
204 void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
205 {
206 	switch (hif_type) {
207 	case HIF_TYPE_AR6320V2:
208 		scn->hostdef = &ar6320v2_hostdef;
209 		break;
210 	case HIF_TYPE_ADRASTEA:
211 		scn->hostdef = &adrastea_hostdef;
212 		scn->host_shadow_regs = &adrastea_host_shadow_regs;
213 		break;
214 	case HIF_TYPE_QCN7605:
215 		scn->hostdef = &genoa_hostdef;
216 		scn->host_shadow_regs = &genoa_host_shadow_regs;
217 		break;
218 #if defined(AR6002_HEADERS_DEF)
219 	case HIF_TYPE_AR6002:
220 		scn->hostdef = AR6002_HOSTdef;
221 		break;
222 #endif
223 #if defined(AR6003_HEADERS_DEF)
224 	case HIF_TYPE_AR6003:
225 		scn->hostdef = AR6003_HOSTdef;
226 		break;
227 #endif
228 #if defined(AR6004_HEADERS_DEF)
229 	case HIF_TYPE_AR6004:
230 		scn->hostdef = AR6004_HOSTdef;
231 		break;
232 #endif
233 #if defined(AR9888_HEADERS_DEF)
234 	case HIF_TYPE_AR9888:
235 		scn->hostdef = AR9888_HOSTdef;
236 		break;
237 #endif
238 #if defined(AR9888V2_HEADERS_DEF)
239 	case HIF_TYPE_AR9888V2:
240 		scn->hostdef = AR9888V2_HOSTdef;
241 		break;
242 #endif
243 #if defined(AR900B_HEADERS_DEF)
244 	case HIF_TYPE_AR900B:
245 		scn->hostdef = AR900B_HOSTdef;
246 		break;
247 #endif
248 #if defined(QCA9984_HEADERS_DEF)
249 	case HIF_TYPE_QCA9984:
250 		scn->hostdef = QCA9984_HOSTdef;
251 		break;
252 #endif
253 #if defined(QCA9888_HEADERS_DEF)
254 	case HIF_TYPE_QCA9888:
255 		scn->hostdef = QCA9888_HOSTdef;
256 		break;
257 #endif
258 
259 #ifdef ATH_AHB
260 #if defined(IPQ4019_HEADERS_DEF)
261 	case HIF_TYPE_IPQ4019:
262 		scn->hostdef = IPQ4019_HOSTdef;
263 		break;
264 #endif
265 #endif
266 #if defined(QCA8074_HEADERS_DEF)
267 	case HIF_TYPE_QCA8074:
268 		scn->hostdef = QCA8074_HOSTdef;
269 		break;
270 #endif
271 #if defined(QCA8074V2_HEADERS_DEF)
272 	case HIF_TYPE_QCA8074V2:
273 		scn->hostdef = QCA8074V2_HOSTDEF;
274 		break;
275 #endif
276 #if defined(QCA6018_HEADERS_DEF)
277 	case HIF_TYPE_QCA6018:
278 		scn->hostdef = QCA6018_HOSTDEF;
279 		hif_info("HIF_TYPE_QCA6018");
280 		break;
281 #endif
282 #if defined(QCA6290_HEADERS_DEF)
283 	case HIF_TYPE_QCA6290:
284 		scn->hostdef = QCA6290_HOSTdef;
285 		break;
286 #endif
287 #if defined(QCN9000_HEADERS_DEF)
288 	case HIF_TYPE_QCN9000:
289 		scn->hostdef = QCN9000_HOSTDEF;
290 		break;
291 #endif
292 #if defined(QCN9224_HEADERS_DEF)
293 	case HIF_TYPE_QCN9224:
294 		scn->hostdef = QCN9224_HOSTDEF;
295 		break;
296 #endif
297 #if defined(QCN6122_HEADERS_DEF)
298 	case HIF_TYPE_QCN6122:
299 		scn->hostdef = QCN6122_HOSTDEF;
300 		break;
301 #endif
302 #if defined(QCA5018_HEADERS_DEF)
303 	case HIF_TYPE_QCA5018:
304 		scn->hostdef = QCA5018_HOSTDEF;
305 		break;
306 #endif
307 #if defined(QCA9574_HEADERS_DEF)
308 	case HIF_TYPE_QCA9574:
309 		scn->hostdef = QCA9574_HOSTDEF;
310 		hif_info("HIF_TYPE_QCA9574");
311 		break;
312 #endif
313 
314 #if defined(QCA6390_HEADERS_DEF)
315 	case HIF_TYPE_QCA6390:
316 		scn->hostdef = QCA6390_HOSTdef;
317 		hif_info("HIF_TYPE_QCA6390");
318 		break;
319 #endif /* QCA6390_HEADERS_DEF */
320 
321 #if defined(QCA6490_HEADERS_DEF)
322 	case HIF_TYPE_QCA6490:
323 		scn->hostdef = QCA6490_HOSTdef;
324 		hif_info("HIF_TYPE_QCA6490");
325 		break;
326 #endif /* QCA6490_HEADERS_DEF */
327 
328 #if defined(WCN7850_HEADERS_DEF)
329 	case HIF_TYPE_WCN7850:
330 		scn->hostdef = WCN7850_HOSTdef;
331 		hif_info("HIF_TYPE_WCN7850");
332 		break;
333 #endif /* WCN7850_HEADERS_DEF */
334 
335 #if defined(QCA6750_HEADERS_DEF)
336 	case HIF_TYPE_QCA6750:
337 		scn->hostdef = QCA6750_HOSTdef;
338 		hif_info("HIF_TYPE_QCA6750");
339 		break;
340 #endif /* QCA6750_HEADERS_DEF */
341 	default:
342 		break;
343 	}
344 }
345