regtable.c 10.0 KB

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