regtable.c 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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. #include "targaddrs.h"
  19. #include "target_type.h"
  20. #include "cepci.h"
  21. #include "regtable.h"
  22. #include "ar6320def.h"
  23. #include "ar6320v2def.h"
  24. #include "hif_main.h"
  25. #include "adrastea_reg_def.h"
  26. #include "targetdef.h"
  27. #include "hostdef.h"
  28. void hif_target_register_tbl_attach(struct hif_softc *scn, u32 target_type)
  29. {
  30. switch (target_type) {
  31. case TARGET_TYPE_AR6320:
  32. scn->targetdef = &ar6320_targetdef;
  33. scn->target_ce_def = &ar6320_ce_targetdef;
  34. break;
  35. case TARGET_TYPE_AR6320V2:
  36. scn->targetdef = &ar6320v2_targetdef;
  37. scn->target_ce_def = &ar6320v2_ce_targetdef;
  38. break;
  39. case TARGET_TYPE_ADRASTEA:
  40. scn->targetdef = &adrastea_targetdef;
  41. scn->target_ce_def = &adrastea_ce_targetdef;
  42. break;
  43. case TARGET_TYPE_QCN7605:
  44. scn->targetdef = &genoa_targetdef;
  45. scn->target_ce_def = &genoa_ce_targetdef;
  46. break;
  47. #if defined(AR6002_HEADERS_DEF)
  48. case TARGET_TYPE_AR6002:
  49. scn->targetdef = AR6002_TARGETdef;
  50. break;
  51. #endif
  52. #if defined(AR6003_HEADERS_DEF)
  53. case TARGET_TYPE_AR6003:
  54. scn->targetdef = AR6003_TARGETdef;
  55. break;
  56. #endif
  57. #if defined(AR6004_HEADERS_DEF)
  58. case TARGET_TYPE_AR6004:
  59. scn->targetdef = AR6004_TARGETdef;
  60. break;
  61. #endif
  62. #if defined(AR9888_HEADERS_DEF)
  63. case TARGET_TYPE_AR9888:
  64. scn->targetdef = AR9888_TARGETdef;
  65. scn->target_ce_def = AR9888_CE_TARGETdef;
  66. break;
  67. #endif
  68. #if defined(AR9888V2_HEADERS_DEF)
  69. case TARGET_TYPE_AR9888V2:
  70. scn->targetdef = AR9888V2_TARGETdef;
  71. scn->target_ce_def = AR9888_CE_TARGETdef;
  72. break;
  73. #endif
  74. #if defined(AR900B_HEADERS_DEF)
  75. case TARGET_TYPE_AR900B:
  76. scn->targetdef = AR900B_TARGETdef;
  77. scn->target_ce_def = AR900B_CE_TARGETdef;
  78. break;
  79. #endif
  80. #if defined(QCA9984_HEADERS_DEF)
  81. case TARGET_TYPE_QCA9984:
  82. scn->targetdef = QCA9984_TARGETdef;
  83. scn->target_ce_def = QCA9984_CE_TARGETdef;
  84. break;
  85. #endif
  86. #if defined(QCA9888_HEADERS_DEF)
  87. case TARGET_TYPE_QCA9888:
  88. scn->targetdef = QCA9888_TARGETdef;
  89. scn->target_ce_def = QCA9888_CE_TARGETdef;
  90. break;
  91. #endif
  92. #ifdef ATH_AHB
  93. #if defined(IPQ4019_HEADERS_DEF)
  94. case TARGET_TYPE_IPQ4019:
  95. scn->targetdef = IPQ4019_TARGETdef;
  96. scn->target_ce_def = IPQ4019_CE_TARGETdef;
  97. break;
  98. #endif
  99. #endif
  100. #if defined(QCA8074_HEADERS_DEF)
  101. case TARGET_TYPE_QCA8074:
  102. scn->targetdef = QCA8074_TARGETdef;
  103. scn->target_ce_def = QCA8074_CE_TARGETdef;
  104. break;
  105. #endif
  106. #if defined(QCA6290_HEADERS_DEF)
  107. case TARGET_TYPE_QCA6290:
  108. scn->targetdef = QCA6290_TARGETdef;
  109. scn->target_ce_def = QCA6290_CE_TARGETdef;
  110. break;
  111. #endif
  112. #if defined(QCA8074V2_HEADERS_DEF)
  113. case TARGET_TYPE_QCA8074V2:
  114. scn->targetdef = QCA8074V2_TARGETDEF;
  115. scn->target_ce_def = QCA8074V2_CE_TARGETDEF;
  116. break;
  117. #endif
  118. #if defined(QCA6018_HEADERS_DEF)
  119. case TARGET_TYPE_QCA6018:
  120. scn->targetdef = QCA6018_TARGETDEF;
  121. scn->target_ce_def = QCA6018_CE_TARGETDEF;
  122. break;
  123. #endif
  124. #if defined(QCA9574_HEADERS_DEF)
  125. case TARGET_TYPE_QCA9574:
  126. scn->targetdef = QCA9574_TARGETDEF;
  127. scn->target_ce_def = QCA9574_CE_TARGETDEF;
  128. hif_info("TARGET_TYPE_QCA9574");
  129. break;
  130. #endif
  131. #if defined(QCN9000_HEADERS_DEF)
  132. case TARGET_TYPE_QCN9000:
  133. scn->targetdef = QCN9000_TARGETDEF;
  134. scn->target_ce_def = QCN9000_CE_TARGETDEF;
  135. hif_info("TARGET_TYPE_QCN9000");
  136. break;
  137. #endif
  138. #if defined(QCN9224_HEADERS_DEF)
  139. case TARGET_TYPE_QCN9224:
  140. scn->targetdef = QCN9224_TARGETDEF;
  141. scn->target_ce_def = QCN9224_CE_TARGETDEF;
  142. hif_info("TARGET_TYPE_QCN9224");
  143. break;
  144. #endif
  145. #if defined(QCN6122_HEADERS_DEF)
  146. case TARGET_TYPE_QCN6122:
  147. scn->targetdef = QCN6122_TARGETDEF;
  148. scn->target_ce_def = QCN6122_CE_TARGETDEF;
  149. hif_info("TARGET_TYPE_QCN6122");
  150. break;
  151. #endif
  152. #if defined(QCA5018_HEADERS_DEF)
  153. case TARGET_TYPE_QCA5018:
  154. scn->targetdef = QCA5018_TARGETDEF;
  155. scn->target_ce_def = QCA5018_CE_TARGETDEF;
  156. hif_info("TARGET_TYPE_QCA5018");
  157. break;
  158. #endif
  159. #if defined(QCA6390_HEADERS_DEF)
  160. case TARGET_TYPE_QCA6390:
  161. scn->targetdef = QCA6390_TARGETdef;
  162. scn->target_ce_def = QCA6390_CE_TARGETdef;
  163. hif_info("TARGET_TYPE_QCA6390");
  164. break;
  165. #endif /* QCA6390_HEADERS_DEF */
  166. #if defined(QCA6490_HEADERS_DEF)
  167. case TARGET_TYPE_QCA6490:
  168. scn->targetdef = QCA6490_TARGETdef;
  169. scn->target_ce_def = QCA6490_CE_TARGETdef;
  170. hif_info("TARGET_TYPE_QCA6490");
  171. break;
  172. #endif /* QCA6490_HEADERS_DEF */
  173. #if defined(WCN7850_HEADERS_DEF)
  174. case TARGET_TYPE_WCN7850:
  175. scn->targetdef = WCN7850_TARGETdef;
  176. scn->target_ce_def = WCN7850_CE_TARGETdef;
  177. hif_info("TARGET_TYPE_WCN7850");
  178. break;
  179. #endif /* WCN7850_HEADERS_DEF */
  180. #if defined(QCA6750_HEADERS_DEF)
  181. case TARGET_TYPE_QCA6750:
  182. scn->targetdef = QCA6750_TARGETdef;
  183. scn->target_ce_def = QCA6750_CE_TARGETdef;
  184. hif_info("TARGET_TYPE_QCA6750");
  185. break;
  186. #endif /* QCA6750_HEADERS_DEF */
  187. default:
  188. break;
  189. }
  190. }
  191. void hif_register_tbl_attach(struct hif_softc *scn, u32 hif_type)
  192. {
  193. switch (hif_type) {
  194. case HIF_TYPE_AR6320V2:
  195. scn->hostdef = &ar6320v2_hostdef;
  196. break;
  197. case HIF_TYPE_ADRASTEA:
  198. scn->hostdef = &adrastea_hostdef;
  199. scn->host_shadow_regs = &adrastea_host_shadow_regs;
  200. break;
  201. case HIF_TYPE_QCN7605:
  202. scn->hostdef = &genoa_hostdef;
  203. scn->host_shadow_regs = &genoa_host_shadow_regs;
  204. break;
  205. #if defined(AR6002_HEADERS_DEF)
  206. case HIF_TYPE_AR6002:
  207. scn->hostdef = AR6002_HOSTdef;
  208. break;
  209. #endif
  210. #if defined(AR6003_HEADERS_DEF)
  211. case HIF_TYPE_AR6003:
  212. scn->hostdef = AR6003_HOSTdef;
  213. break;
  214. #endif
  215. #if defined(AR6004_HEADERS_DEF)
  216. case HIF_TYPE_AR6004:
  217. scn->hostdef = AR6004_HOSTdef;
  218. break;
  219. #endif
  220. #if defined(AR9888_HEADERS_DEF)
  221. case HIF_TYPE_AR9888:
  222. scn->hostdef = AR9888_HOSTdef;
  223. break;
  224. #endif
  225. #if defined(AR9888V2_HEADERS_DEF)
  226. case HIF_TYPE_AR9888V2:
  227. scn->hostdef = AR9888V2_HOSTdef;
  228. break;
  229. #endif
  230. #if defined(AR900B_HEADERS_DEF)
  231. case HIF_TYPE_AR900B:
  232. scn->hostdef = AR900B_HOSTdef;
  233. break;
  234. #endif
  235. #if defined(QCA9984_HEADERS_DEF)
  236. case HIF_TYPE_QCA9984:
  237. scn->hostdef = QCA9984_HOSTdef;
  238. break;
  239. #endif
  240. #if defined(QCA9888_HEADERS_DEF)
  241. case HIF_TYPE_QCA9888:
  242. scn->hostdef = QCA9888_HOSTdef;
  243. break;
  244. #endif
  245. #ifdef ATH_AHB
  246. #if defined(IPQ4019_HEADERS_DEF)
  247. case HIF_TYPE_IPQ4019:
  248. scn->hostdef = IPQ4019_HOSTdef;
  249. break;
  250. #endif
  251. #endif
  252. #if defined(QCA8074_HEADERS_DEF)
  253. case HIF_TYPE_QCA8074:
  254. scn->hostdef = QCA8074_HOSTdef;
  255. break;
  256. #endif
  257. #if defined(QCA8074V2_HEADERS_DEF)
  258. case HIF_TYPE_QCA8074V2:
  259. scn->hostdef = QCA8074V2_HOSTDEF;
  260. break;
  261. #endif
  262. #if defined(QCA6018_HEADERS_DEF)
  263. case HIF_TYPE_QCA6018:
  264. scn->hostdef = QCA6018_HOSTDEF;
  265. hif_info("HIF_TYPE_QCA6018");
  266. break;
  267. #endif
  268. #if defined(QCA6290_HEADERS_DEF)
  269. case HIF_TYPE_QCA6290:
  270. scn->hostdef = QCA6290_HOSTdef;
  271. break;
  272. #endif
  273. #if defined(QCN9000_HEADERS_DEF)
  274. case HIF_TYPE_QCN9000:
  275. scn->hostdef = QCN9000_HOSTDEF;
  276. break;
  277. #endif
  278. #if defined(QCN9224_HEADERS_DEF)
  279. case HIF_TYPE_QCN9224:
  280. scn->hostdef = QCN9224_HOSTDEF;
  281. break;
  282. #endif
  283. #if defined(QCN6122_HEADERS_DEF)
  284. case HIF_TYPE_QCN6122:
  285. scn->hostdef = QCN6122_HOSTDEF;
  286. break;
  287. #endif
  288. #if defined(QCA5018_HEADERS_DEF)
  289. case HIF_TYPE_QCA5018:
  290. scn->hostdef = QCA5018_HOSTDEF;
  291. break;
  292. #endif
  293. #if defined(QCA9574_HEADERS_DEF)
  294. case HIF_TYPE_QCA9574:
  295. scn->hostdef = QCA9574_HOSTDEF;
  296. hif_info("HIF_TYPE_QCA9574");
  297. break;
  298. #endif
  299. #if defined(QCA6390_HEADERS_DEF)
  300. case HIF_TYPE_QCA6390:
  301. scn->hostdef = QCA6390_HOSTdef;
  302. hif_info("HIF_TYPE_QCA6390");
  303. break;
  304. #endif /* QCA6390_HEADERS_DEF */
  305. #if defined(QCA6490_HEADERS_DEF)
  306. case HIF_TYPE_QCA6490:
  307. scn->hostdef = QCA6490_HOSTdef;
  308. hif_info("HIF_TYPE_QCA6490");
  309. break;
  310. #endif /* QCA6490_HEADERS_DEF */
  311. #if defined(WCN7850_HEADERS_DEF)
  312. case HIF_TYPE_WCN7850:
  313. scn->hostdef = WCN7850_HOSTdef;
  314. hif_info("HIF_TYPE_WCN7850");
  315. break;
  316. #endif /* WCN7850_HEADERS_DEF */
  317. #if defined(QCA6750_HEADERS_DEF)
  318. case HIF_TYPE_QCA6750:
  319. scn->hostdef = QCA6750_HOSTdef;
  320. hif_info("HIF_TYPE_QCA6750");
  321. break;
  322. #endif /* QCA6750_HEADERS_DEF */
  323. default:
  324. break;
  325. }
  326. }