xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/regtable.c (revision a175314c51a4ce5cec2835cc8a8c7dc0c1810915)
1 /*
2  * Copyright (c) 2013-2018 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 = &adrastea_targetdef;
48 		scn->target_ce_def = &adrastea_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 	/* use the same defs for HAWKEYE & NAPIER */
112 	case TARGET_TYPE_QCA6290:
113 		scn->targetdef = QCA6290_TARGETdef;
114 		scn->target_ce_def = QCA6290_CE_TARGETdef;
115 		break;
116 #endif
117 
118 	default:
119 		break;
120 	}
121 }
122 
123 void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
124 {
125 	switch (hif_type) {
126 	case HIF_TYPE_AR6320V2:
127 		scn->hostdef = &ar6320v2_hostdef;
128 		break;
129 	case HIF_TYPE_ADRASTEA:
130 		scn->hostdef = &adrastea_hostdef;
131 		scn->host_shadow_regs = &adrastea_host_shadow_regs;
132 		break;
133 	case HIF_TYPE_QCN7605:
134 		scn->hostdef = &adrastea_hostdef;
135 		scn->host_shadow_regs = &adrastea_host_shadow_regs;
136 		break;
137 #if defined(AR6002_HEADERS_DEF)
138 	case HIF_TYPE_AR6002:
139 		scn->hostdef = AR6002_HOSTdef;
140 		break;
141 #endif
142 #if defined(AR6003_HEADERS_DEF)
143 	case HIF_TYPE_AR6003:
144 		scn->hostdef = AR6003_HOSTdef;
145 		break;
146 #endif
147 #if defined(AR6004_HEADERS_DEF)
148 	case HIF_TYPE_AR6004:
149 		scn->hostdef = AR6004_HOSTdef;
150 		break;
151 #endif
152 #if defined(AR9888_HEADERS_DEF)
153 	case HIF_TYPE_AR9888:
154 		scn->hostdef = AR9888_HOSTdef;
155 		break;
156 #endif
157 #if defined(AR9888V2_HEADERS_DEF)
158 	case HIF_TYPE_AR9888V2:
159 		scn->hostdef = AR9888V2_HOSTdef;
160 		break;
161 #endif
162 #if defined(AR900B_HEADERS_DEF)
163 	case HIF_TYPE_AR900B:
164 		scn->hostdef = AR900B_HOSTdef;
165 		break;
166 #endif
167 #if defined(QCA9984_HEADERS_DEF)
168 	case HIF_TYPE_QCA9984:
169 		scn->hostdef = QCA9984_HOSTdef;
170 		break;
171 #endif
172 #if defined(QCA9888_HEADERS_DEF)
173 	case HIF_TYPE_QCA9888:
174 		scn->hostdef = QCA9888_HOSTdef;
175 		break;
176 #endif
177 
178 #ifdef ATH_AHB
179 #if defined(IPQ4019_HEADERS_DEF)
180 	case HIF_TYPE_IPQ4019:
181 		scn->hostdef = IPQ4019_HOSTdef;
182 		break;
183 #endif
184 #endif
185 #if defined(QCA8074_HEADERS_DEF)
186 	case HIF_TYPE_QCA8074:
187 		scn->hostdef = QCA8074_HOSTdef;
188 		break;
189 #endif
190 
191 #if defined(QCA6290_HEADERS_DEF)
192 	case HIF_TYPE_QCA6290:
193 		scn->hostdef = QCA6290_HOSTdef;
194 		break;
195 #endif
196 
197 	default:
198 		break;
199 	}
200 }
201