Commit | Line | Data |
---|---|---|
1b4a7c03 LJ |
1 | \r |
2 | #ifdef CCODE_LIST\r | |
3 | #ifdef CONFIG_COMPAT\r | |
4 | #include <linux/compat.h>\r | |
5 | #endif /* COMFIG_COMPAT */\r | |
6 | #include <typedefs.h>\r | |
7 | #include <dhd_config.h>\r | |
8 | \r | |
9 | #ifdef BCMSDIO\r | |
10 | #define CCODE_43438\r | |
11 | #define CCODE_43436\r | |
12 | #define CCODE_43455C0\r | |
13 | #define CCODE_43456C5\r | |
14 | #endif\r | |
15 | #if defined(BCMSDIO) || defined(BCMPCIE)\r | |
16 | #define CCODE_4356A2\r | |
17 | #define CCODE_4359C0\r | |
18 | #endif\r | |
19 | #ifdef BCMDBUS\r | |
20 | #define CCODE_4358U\r | |
21 | #endif\r | |
22 | \r | |
23 | #ifdef BCMSDIO\r | |
24 | #ifdef CCODE_43438\r | |
25 | const char ccode_43438[] = "RU/13";\r | |
26 | #else\r | |
27 | const char ccode_43438[] = "";\r | |
28 | #endif\r | |
29 | \r | |
30 | #ifdef CCODE_43436\r | |
31 | const char ccode_43436[] = \\r | |
32 | "AE/1 AR/1 AT/1 AU/2 "\\r | |
33 | "BE/1 BG/1 BN/1 "\\r | |
34 | "CA/2 CH/1 CN/38 CY/1 CZ/1 "\\r | |
35 | "DE/3 DK/1 "\\r | |
36 | "EE/1 ES/1 "\\r | |
37 | "FI/1 FR/1 "\\r | |
38 | "GB/1 GR/1 "\\r | |
39 | "HR/1 HU/1 "\\r | |
40 | "ID/5 IE/1 IS/1 IT/1 "\\r | |
41 | "JP/3 "\\r | |
42 | "KR/4 KW/1 "\\r | |
43 | "LI/1 LT/1 LU/1 LV/1 "\\r | |
44 | "MA/1 MT/1 MX/1 "\\r | |
45 | "NL/1 NO/1 "\\r | |
46 | "PL/1 PT/1 PY/1 "\\r | |
47 | "RO/1 RU/5 "\\r | |
48 | "SE/1 SI/1 SK/1 "\\r | |
49 | "TR/7 TW/2 "\\r | |
50 | "US/26 "\\r | |
51 | "XZ/11";\r | |
52 | #else\r | |
53 | const char ccode_43436[] = "";\r | |
54 | #endif\r | |
55 | \r | |
56 | #ifdef CCODE_43455C0\r | |
57 | const char ccode_43455c0[] = \\r | |
58 | "AE/6 AG/2 AI/1 AL/2 AS/12 AT/4 AU/6 AW/2 AZ/2 "\\r | |
59 | "BA/2 BD/1 BE/4 BG/4 BH/4 BM/12 BN/4 BR/2 BS/2 BY/3 "\\r | |
60 | "CA/2 CH/4 CN/38 CO/17 CR/17 CY/4 CZ/4 "\\r | |
61 | "DE/7 DK/4 "\\r | |
62 | "EC/21 EE/4 EG/13 ES/4 ET/2 "\\r | |
63 | "FI/4 FR/5 "\\r | |
64 | "GB/6 GD/2 GF/2 GP/2 GR/4 GT/1 GU/30 "\\r | |
65 | "HK/2 HR/4 HU/4 "\\r | |
66 | "ID/1 IE/5 IL/14 IN/3 IS/4 IT/4 "\\r | |
67 | "JO/3 JP/58 "\\r | |
68 | "KH/2 KR/96 KW/5 KY/3 "\\r | |
69 | "LA/2 LB/5 LI/4 LK/1 LS/2 LT/4 LU/3 LV/4 "\\r | |
70 | "MA/2 MC/1 MD/2 ME/2 MK/2 MN/1 MQ/2 MR/2 MT/4 MU/2 MV/3 MW/1 MX/44 MY/3 "\\r | |
71 | "NI/2 NL/4 NO/4 NZ/4 "\\r | |
72 | "OM/4 "\\r | |
73 | "PA/17 PE/20 PH/5 PL/4 PR/38 PT/4 PY/2 "\\r | |
74 | "Q2/993 "\\r | |
75 | "RE/2 RO/4 RS/2 RU/13 "\\r | |
76 | "SE/4 SI/4 SK/4 SV/25 "\\r | |
77 | "TH/5 TN/1 TR/7 TT/3 TW/65 "\\r | |
78 | "UA/8 US/988 "\\r | |
79 | "VA/2 VE/3 VG/2 VN/4 "\\r | |
80 | "XZ/11 "\\r | |
81 | "YT/2 "\\r | |
82 | "ZA/6";\r | |
83 | #else\r | |
84 | const char ccode_43455c0[] = "";\r | |
85 | #endif\r | |
86 | \r | |
87 | #ifdef CCODE_43456C5\r | |
88 | const char ccode_43456c5[] = \\r | |
89 | "AE/6 AG/2 AI/1 AL/2 AS/12 AT/4 AU/6 AW/2 AZ/2 "\\r | |
90 | "BA/2 BD/1 BE/4 BG/4 BH/4 BM/12 BN/4 BR/4 BS/2 BY/3 "\\r | |
91 | "CA/2 CH/4 CN/38 CO/17 CR/17 CY/4 CZ/4 "\\r | |
92 | "DE/7 DK/4 "\\r | |
93 | "EC/21 EE/4 EG/13 ES/4 ET/2 "\\r | |
94 | "FI/4 FR/5 "\\r | |
95 | "GB/6 GD/2 GF/2 GP/2 GR/4 GT/1 GU/30 "\\r | |
96 | "HK/2 HR/4 HU/4 "\\r | |
97 | "ID/1 IE/5 IL/14 IN/3 IS/4 IT/4 "\\r | |
98 | "JO/3 JP/58 "\\r | |
99 | "KH/2 KR/96 KW/5 KY/3 "\\r | |
100 | "LA/2 LB/5 LI/4 LK/1 LS/2 LT/4 LU/3 LV/4 "\\r | |
101 | "MA/2 MC/1 MD/2 ME/2 MK/2 MN/1 MQ/2 MR/2 MT/4 MU/2 MV/3 MW/1 MX/44 MY/3 "\\r | |
102 | "NI/2 NL/4 NO/4 NZ/4 "\\r | |
103 | "OM/4 "\\r | |
104 | "PA/17 PE/20 PH/5 PL/4 PR/38 PT/4 PY/2 "\\r | |
105 | "Q2/993 "\\r | |
106 | "RE/2 RO/4 RS/2 RU/13 "\\r | |
107 | "SE/4 SI/4 SK/4 SV/25 "\\r | |
108 | "TH/5 TN/1 TR/7 TT/3 TW/65 "\\r | |
109 | "UA/8 US/988 "\\r | |
110 | "VA/2 VE/3 VG/2 VN/4 "\\r | |
111 | "XZ/11 "\\r | |
112 | "YT/2 "\\r | |
113 | "ZA/6";\r | |
114 | #else\r | |
115 | const char ccode_43456c5[] = "";\r | |
116 | #endif\r | |
117 | #endif\r | |
118 | \r | |
119 | #ifdef CCODE_4356A2\r | |
120 | const char ccode_4356a2[] = \\r | |
121 | "AE/6 AG/2 AI/1 AL/2 AN/2 AR/21 AS/12 AT/4 AU/6 AW/2 AZ/2 "\\r | |
122 | "BA/2 BD/2 BE/4 BG/4 BH/4 BM/12 BN/4 BR/4 BS/2 BY/3 "\\r | |
123 | "CA/31 CH/4 CN/38 CO/17 CR/17 CY/4 CZ/4 "\\r | |
124 | "DE/7 DK/4 DZ/1 "\\r | |
125 | "EC/21 EE/4 ES/4 ET/2 "\\r | |
126 | "FI/4 FR/5 "\\r | |
127 | "GB/6 GD/2 GF/2 GP/2 GR/4 GT/1 GU/12 "\\r | |
128 | "HK/2 HR/4 HU/4 "\\r | |
129 | "ID/13 IE/5 IL/7 IN/28 IS/4 IT/4 "\\r | |
130 | "JO/3 JP/58 "\\r | |
131 | "KH/2 KR/57 KW/5 KY/3 "\\r | |
132 | "LA/2 LB/5 LI/4 LK/1 LS/2 LT/4 LU/3 LV/4 "\\r | |
133 | "MA/2 MC/1 MD/2 ME/2 MK/2 MN/1 MO/2 MR/2 MT/4 MQ/2 MU/2 MV/3 MW/1 MX/20 MY/16 "\\r | |
134 | "NI/2 NL/4 NO/4 NP/3 NZ/4 "\\r | |
135 | "OM/4 "\\r | |
136 | "PA/17 PE/20 PG/2 PH/5 PL/4 PR/20 PT/4 PY/2 "\\r | |
137 | "RE/2 RO/4 RS/2 RU/986 "\\r | |
138 | "SE/4 SG/19 SI/4 SK/4 SN/2 SV/19 "\\r | |
139 | "TH/9 TN/1 TR/7 TT/3 TW/1 "\\r | |
140 | "UA/8 UG/2 US/1 UY/1 "\\r | |
141 | "VA/2 VE/3 VG/2 VI/13 VN/4 "\\r | |
142 | "XZ/11 "\\r | |
143 | "YT/2 "\\r | |
144 | "ZM/2 "\\r | |
145 | "E0/32";\r | |
146 | #else\r | |
147 | const char ccode_4356a2[] = "";\r | |
148 | #endif\r | |
149 | \r | |
150 | #ifdef CCODE_4359C0\r | |
151 | const char ccode_4359c0[] = \\r | |
152 | "AD/1 AE/6 AG/2 AI/1 AL/3 AS/12 AT/21 AU/6 AW/2 AZ/8 "\\r | |
153 | "BA/4 BD/1 BE/19 BG/18 BH/4 BM/12 BN/4 BR/2 BS/2 BY/3 "\\r | |
154 | "CN/38 CO/17 CR/17 CY/18 CZ/18 "\\r | |
155 | "DE/30 DK/19 "\\r | |
156 | "E0/32 EC/21 EE/18 EG/13 ES/21 ET/2 "\\r | |
157 | "FI/19 FR/21 "\\r | |
158 | "GB/996 GD/2 GE/1 GF/2 GP/2 GR/18 GT/1 GU/30 "\\r | |
159 | "HK/2 HR/18 HU/18 "\\r | |
160 | "ID/1 IE/21 IL/14 IN/3 IS/17 IT/20 "\\r | |
161 | "JO/3 JP/967 "\\r | |
162 | "KH/2 KR/70 KW/5 KY/3 "\\r | |
163 | "LA/2 LB/5 LI/17 LK/1 LS/2 LT/18 LU/18 LV/18 "\\r | |
164 | "MA/2 MC/2 MD/3 ME/5 MK/4 MN/1 MQ/2 MR/2 MT/18 MU/2 MV/3 MW/1 MX/44 MY/3 "\\r | |
165 | "NI/2 NL/19 NO/18 NZ/4 "\\r | |
166 | "OM/4 "\\r | |
167 | "PA/17 PE/20 PH/5 PL/18 PR/38 PT/20 PY/2 "\\r | |
168 | "Q1/947 Q2/993 "\\r | |
169 | "RE/2 RO/18 RS/4 RU/986 "\\r | |
170 | "SE/19 SI/18 SK/18 SM/1 SV/25 "\\r | |
171 | "TH/5 TN/1 TR/18 TT/3 TW/980 "\\r | |
172 | "UA/16 US/988 "\\r | |
173 | "VA/3 VE/3 VG/2 VN/4 "\\r | |
174 | "XZ/11 "\\r | |
175 | "YT/2 "\\r | |
176 | "ZA/6";\r | |
177 | #else\r | |
178 | const char ccode_4359c0[] = "";\r | |
179 | #endif\r | |
180 | \r | |
181 | #ifdef CCODE_4358U\r | |
182 | const char ccode_4358u[] = \\r | |
183 | "BE/4 BR/4 CA/2 CH/4 CN/38 CY/4 DE/7 DK/4 ES/4 "\\r | |
184 | "FI/4 FR/5 GB/6 GR/4 HK/2 HU/4 IE/5 IL/7 IS/4 "\\r | |
185 | "IT/4 JP/72 KE/0 MY/3 NL/4 PT/4 SA/5 SE/4 SG/0 "\\r | |
186 | "SZ/0 TH/5 TR/7 TW/230 US/0 VN/4";\r | |
187 | #else\r | |
188 | const char ccode_4358u[] = "";\r | |
189 | #endif\r | |
190 | \r | |
191 | typedef struct ccode_list_map_t {\r | |
192 | uint chip;\r | |
193 | uint chiprev;\r | |
194 | const char *ccode_list;\r | |
195 | const char *ccode_ww;\r | |
196 | } ccode_list_map_t;\r | |
197 | \r | |
198 | extern const char ccode_43438[];\r | |
199 | extern const char ccode_43455c0[];\r | |
200 | extern const char ccode_43456c5[];\r | |
201 | extern const char ccode_4356a2[];\r | |
202 | extern const char ccode_4359c0[];\r | |
203 | extern const char ccode_4358u[];\r | |
204 | \r | |
205 | const ccode_list_map_t ccode_list_map[] = {\r | |
206 | /* ChipID Chiprev ccode */\r | |
207 | #ifdef BCMSDIO\r | |
208 | {BCM43430_CHIP_ID, 0, ccode_43438, ""},\r | |
209 | {BCM43430_CHIP_ID, 1, ccode_43438, ""},\r | |
210 | {BCM43430_CHIP_ID, 2, ccode_43436, ""},\r | |
211 | {BCM4345_CHIP_ID, 6, ccode_43455c0, "XZ/11"},\r | |
212 | {BCM43454_CHIP_ID, 6, ccode_43455c0, "XZ/11"},\r | |
213 | {BCM4345_CHIP_ID, 9, ccode_43456c5, "XZ/11"},\r | |
214 | {BCM43454_CHIP_ID, 9, ccode_43456c5, "XZ/11"},\r | |
215 | {BCM4354_CHIP_ID, 2, ccode_4356a2, "XZ/11"},\r | |
216 | {BCM4356_CHIP_ID, 2, ccode_4356a2, "XZ/11"},\r | |
217 | {BCM4371_CHIP_ID, 2, ccode_4356a2, "XZ/11"},\r | |
218 | {BCM4359_CHIP_ID, 9, ccode_4359c0, "XZ/11"},\r | |
219 | #endif\r | |
220 | #ifdef BCMPCIE\r | |
221 | {BCM4354_CHIP_ID, 2, ccode_4356a2, "XZ/11"},\r | |
222 | {BCM4356_CHIP_ID, 2, ccode_4356a2, "XZ/11"},\r | |
223 | {BCM4359_CHIP_ID, 9, ccode_4359c0, "XZ/11"},\r | |
224 | #endif\r | |
225 | #ifdef BCMDBUS\r | |
226 | {BCM43569_CHIP_ID, 2, ccode_4358u, "XW/0"},\r | |
227 | #endif\r | |
228 | };\r | |
229 | \r | |
230 | int\r | |
231 | dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec)\r | |
232 | {\r | |
233 | int bcmerror = -1, i;\r | |
234 | uint chip = dhd->conf->chip, chiprev = dhd->conf->chiprev; \r | |
235 | const char *ccode_list = NULL, *ccode_ww = NULL;\r | |
236 | char *pch;\r | |
237 | \r | |
238 | for (i=0; i<sizeof(ccode_list_map)/sizeof(ccode_list_map[0]); i++) {\r | |
239 | const ccode_list_map_t* row = &ccode_list_map[i];\r | |
240 | if (row->chip == chip && row->chiprev == chiprev) {\r | |
241 | ccode_list = row->ccode_list;\r | |
242 | ccode_ww = row->ccode_ww;\r | |
243 | break;\r | |
244 | }\r | |
245 | }\r | |
246 | \r | |
247 | if (ccode_list) {\r | |
248 | pch = strstr(ccode_list, cspec->ccode);\r | |
249 | if (pch) {\r | |
250 | cspec->rev = (int)simple_strtol(pch+strlen(cspec->ccode)+1, NULL, 0);\r | |
251 | bcmerror = 0;\r | |
252 | }\r | |
253 | }\r | |
254 | \r | |
255 | if (bcmerror && ccode_ww && strlen(ccode_ww)>=4) {\r | |
256 | memcpy(cspec->ccode, ccode_ww, 2);\r | |
257 | cspec->rev = (int)simple_strtol(ccode_ww+3, NULL, 0);\r | |
258 | }\r | |
259 | \r | |
260 | return bcmerror;\r | |
261 | }\r | |
262 | #endif\r |