xref: /wlan-dirver/qca-wifi-host-cmn/hif/src/regtable.c (revision 4865edfd190c086bbe2c69aae12a8226f877b91e)
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 #if defined(AR6002_HEADERS_DEF)
47 	case TARGET_TYPE_AR6002:
48 		scn->targetdef = AR6002_TARGETdef;
49 		break;
50 #endif
51 #if defined(AR6003_HEADERS_DEF)
52 	case TARGET_TYPE_AR6003:
53 		scn->targetdef = AR6003_TARGETdef;
54 		break;
55 #endif
56 #if defined(AR6004_HEADERS_DEF)
57 	case TARGET_TYPE_AR6004:
58 		scn->targetdef = AR6004_TARGETdef;
59 		break;
60 #endif
61 #if defined(AR9888_HEADERS_DEF)
62 	case TARGET_TYPE_AR9888:
63 		scn->targetdef = AR9888_TARGETdef;
64 		scn->target_ce_def = AR9888_CE_TARGETdef;
65 		break;
66 #endif
67 #if defined(AR9888V2_HEADERS_DEF)
68 	case TARGET_TYPE_AR9888V2:
69 		scn->targetdef = AR9888V2_TARGETdef;
70 		scn->target_ce_def = AR9888_CE_TARGETdef;
71 		break;
72 #endif
73 #if defined(AR900B_HEADERS_DEF)
74 	case TARGET_TYPE_AR900B:
75 		scn->targetdef = AR900B_TARGETdef;
76 		scn->target_ce_def = AR900B_CE_TARGETdef;
77 		break;
78 #endif
79 #if defined(QCA9984_HEADERS_DEF)
80 	case TARGET_TYPE_QCA9984:
81 		scn->targetdef = QCA9984_TARGETdef;
82 		scn->target_ce_def = QCA9984_CE_TARGETdef;
83 		break;
84 #endif
85 #if defined(QCA9888_HEADERS_DEF)
86 	case TARGET_TYPE_QCA9888:
87 		scn->targetdef = QCA9888_TARGETdef;
88 		scn->target_ce_def = QCA9888_CE_TARGETdef;
89 		break;
90 #endif
91 #ifdef ATH_AHB
92 #if defined(IPQ4019_HEADERS_DEF)
93 	case TARGET_TYPE_IPQ4019:
94 		scn->targetdef = IPQ4019_TARGETdef;
95 		scn->target_ce_def = IPQ4019_CE_TARGETdef;
96 		break;
97 #endif
98 #endif
99 #if defined(QCA8074_HEADERS_DEF)
100 	case TARGET_TYPE_QCA8074:
101 		scn->targetdef = QCA8074_TARGETdef;
102 		scn->target_ce_def = QCA8074_CE_TARGETdef;
103 		break;
104 #endif
105 
106 #if defined(QCA6290_HEADERS_DEF)
107 	/* use the same defs for HAWKEYE & NAPIER */
108 	case TARGET_TYPE_QCA6290:
109 		scn->targetdef = QCA6290_TARGETdef;
110 		scn->target_ce_def = QCA6290_CE_TARGETdef;
111 		break;
112 #endif
113 
114 	default:
115 		break;
116 	}
117 }
118 
119 void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
120 {
121 	switch (hif_type) {
122 	case HIF_TYPE_AR6320V2:
123 		scn->hostdef = &ar6320v2_hostdef;
124 		break;
125 	case HIF_TYPE_ADRASTEA:
126 		scn->hostdef = &adrastea_hostdef;
127 		scn->host_shadow_regs = &adrastea_host_shadow_regs;
128 		break;
129 #if defined(AR6002_HEADERS_DEF)
130 	case HIF_TYPE_AR6002:
131 		scn->hostdef = AR6002_HOSTdef;
132 		break;
133 #endif
134 #if defined(AR6003_HEADERS_DEF)
135 	case HIF_TYPE_AR6003:
136 		scn->hostdef = AR6003_HOSTdef;
137 		break;
138 #endif
139 #if defined(AR6004_HEADERS_DEF)
140 	case HIF_TYPE_AR6004:
141 		scn->hostdef = AR6004_HOSTdef;
142 		break;
143 #endif
144 #if defined(AR9888_HEADERS_DEF)
145 	case HIF_TYPE_AR9888:
146 		scn->hostdef = AR9888_HOSTdef;
147 		break;
148 #endif
149 #if defined(AR9888V2_HEADERS_DEF)
150 	case HIF_TYPE_AR9888V2:
151 		scn->hostdef = AR9888V2_HOSTdef;
152 		break;
153 #endif
154 #if defined(AR900B_HEADERS_DEF)
155 	case HIF_TYPE_AR900B:
156 		scn->hostdef = AR900B_HOSTdef;
157 		break;
158 #endif
159 #if defined(QCA9984_HEADERS_DEF)
160 	case HIF_TYPE_QCA9984:
161 		scn->hostdef = QCA9984_HOSTdef;
162 		break;
163 #endif
164 #if defined(QCA9888_HEADERS_DEF)
165 	case HIF_TYPE_QCA9888:
166 		scn->hostdef = QCA9888_HOSTdef;
167 		break;
168 #endif
169 
170 #ifdef ATH_AHB
171 #if defined(IPQ4019_HEADERS_DEF)
172 	case HIF_TYPE_IPQ4019:
173 		scn->hostdef = IPQ4019_HOSTdef;
174 		break;
175 #endif
176 #endif
177 #if defined(QCA8074_HEADERS_DEF)
178 	case HIF_TYPE_QCA8074:
179 		scn->hostdef = QCA8074_HOSTdef;
180 		break;
181 #endif
182 
183 #if defined(QCA6290_HEADERS_DEF)
184 	case HIF_TYPE_QCA6290:
185 		scn->hostdef = QCA6290_HOSTdef;
186 		break;
187 #endif
188 
189 	default:
190 		break;
191 	}
192 }
193