halmac_gpio_8821c.c 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. ******************************************************************************/
  15. #include "halmac_gpio_8821c.h"
  16. #include "../halmac_gpio_88xx.h"
  17. #if HALMAC_8821C_SUPPORT
  18. /* P_LED0 definition */
  19. #define GPIO0_BT_GPIO0_8821C \
  20. {HALMAC_BT_GPIO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  21. 0x66, BIT(2), BIT(2)}
  22. #define GPIO0_BT_GPIO0_8821C \
  23. {HALMAC_BT_GPIO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  24. 0x66, BIT(2), BIT(2)}
  25. #define GPIO0_BT_ACT_8821C \
  26. {HALMAC_BT_PTA, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  27. 0x41, BIT(1), 0}
  28. #define GPIO0_WL_ACT_8821C \
  29. {HALMAC_WL_PTA, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  30. 0x41, BIT(2), BIT(2)}
  31. #define GPIO0_WLMAC_DBG_GPIO0_8821C \
  32. {HALMAC_WLMAC_DBG, HALMAC_GPIO0, HALMAC_GPIO_OUT, \
  33. 0x40, BIT(1) | BIT(0), BIT(0)}
  34. #define GPIO0_WLPHY_DBG_GPIO0_8821C \
  35. {HALMAC_WLPHY_DBG, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  36. 0x40, BIT(1) | BIT(0), BIT(1)}
  37. #define GPIO0_BT_DBG_GPIO0_8821C \
  38. {HALMAC_BT_DBG, HALMAC_GPIO0, HALMAC_GPIO_OUT, \
  39. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  40. #define GPIO0_SW_IO_8821C \
  41. {HALMAC_SW_IO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
  42. 0x40, BIT(1) | BIT(0), 0}
  43. /* GPIO1 definition */
  44. #define GPIO1_BT_GPIO1_8821C \
  45. {HALMAC_BT_GPIO, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
  46. 0x66, BIT(2), BIT(2)}
  47. #define GPIO1_BT_3DD_SYNC_A_8821C \
  48. {HALMAC_BT_3DDLS_A, HALMAC_GPIO1, HALMAC_GPIO_IN, \
  49. 0x66, BIT(2), BIT(2)}
  50. #define GPIO1_WL_CK_8821C \
  51. {HALMAC_BT_PTA, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
  52. 0x41, BIT(1), 0}
  53. #define GPIO1_BT_CK_8821C \
  54. {HALMAC_WL_PTA, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
  55. 0x41, BIT(2), BIT(2)}
  56. #define GPIO1_WLMAC_DBG_GPIO1_8821C \
  57. {HALMAC_WLMAC_DBG, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
  58. 0x40, BIT(1) | BIT(0), BIT(0)}
  59. #define GPIO1_WLPHY_DBG_GPIO1_8821C \
  60. {HALMAC_WLPHY_DBG, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
  61. 0x40, BIT(1) | BIT(0), BIT(1)}
  62. #define GPIO1_BT_DBG_GPIO1_8821C \
  63. {HALMAC_BT_DBG, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
  64. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  65. #define GPIO1_SW_IO_8821C \
  66. {HALMAC_SW_IO, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
  67. 0x40, BIT(1) | BIT(0), 0}
  68. /* GPIO2 definition */
  69. #define GPIO2_BT_GPIO2_8821C \
  70. {HALMAC_BT_GPIO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
  71. 0x66, BIT(2), BIT(2)}
  72. #define GPIO2_WL_STATE_8821C \
  73. {HALMAC_BT_PTA, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
  74. 0x41, BIT(1), 0}
  75. #define GPIO2_BT_STATE_8821C \
  76. {HALMAC_WL_PTA, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
  77. 0x41, BIT(2), BIT(2)}
  78. #define GPIO2_WLMAC_DBG_GPIO2_8821C \
  79. {HALMAC_WLMAC_DBG, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
  80. 0x40, BIT(1) | BIT(0), BIT(0)}
  81. #define GPIO2_WLPHY_DBG_GPIO2_8821C \
  82. {HALMAC_WLPHY_DBG, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
  83. 0x40, BIT(1) | BIT(0), BIT(1)}
  84. #define GPIO2_BT_DBG_GPIO2_8821C \
  85. {HALMAC_BT_DBG, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
  86. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  87. #define GPIO2_RFE_CTRL_5_8821C \
  88. {HALMAC_WLPHY_RFE_CTRL2GPIO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
  89. 0x40, BIT(2), BIT(2)}
  90. #define GPIO2_SW_IO_8821C \
  91. {HALMAC_SW_IO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
  92. 0x40, BIT(1) | BIT(0), 0}
  93. /* GPIO3 definition */
  94. #define GPIO3_BT_GPIO3_8821C \
  95. {HALMAC_BT_GPIO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
  96. 0x66, BIT(2), BIT(2)}
  97. #define GPIO3_WL_PRI_8821C \
  98. {HALMAC_BT_PTA, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
  99. 0x41, BIT(1), 0}
  100. #define GPIO3_BT_PRI_8821C \
  101. {HALMAC_WL_PTA, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
  102. 0x41, BIT(2), BIT(2)}
  103. #define GPIO3_WLMAC_DBG_GPIO3_8821C \
  104. {HALMAC_WLMAC_DBG, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
  105. 0x40, BIT(1) | BIT(0), BIT(0)}
  106. #define GPIO3_WLPHY_DBG_GPIO3_8821C \
  107. {HALMAC_WLPHY_DBG, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
  108. 0x40, BIT(1) | BIT(0), BIT(1)}
  109. #define GPIO3_BT_DBG_GPIO3_8821C \
  110. {HALMAC_BT_DBG, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
  111. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  112. #define GPIO3_RFE_CTRL_4_8821C \
  113. {HALMAC_WLPHY_RFE_CTRL2GPIO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
  114. 0x40, BIT(2), BIT(2)}
  115. #define GPIO3_SW_IO_8821C \
  116. {HALMAC_SW_IO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
  117. 0x40, BIT(1) | BIT(0), 0}
  118. /* GPIO4 definition */
  119. #define GPIO4_BT_SPI_D0_8821C \
  120. {HALMAC_BT_SFLASH, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
  121. 0x66, BIT(4), BIT(4)}
  122. #define GPIO4_WL_SPI_D0_8821C \
  123. {HALMAC_WL_SFLASH, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
  124. 0x42, BIT(3), BIT(3)}
  125. #define GPIO4_SDIO_INT_8821C \
  126. {HALMAC_SDIO_INT, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
  127. 0x72, BIT(2), BIT(2)}
  128. #define GPIO4_JTAG_TRST_8821C \
  129. {HALMAC_JTAG, HALMAC_GPIO4, HALMAC_GPIO_IN, \
  130. 0x67, BIT(0), BIT(0)}
  131. #define GPIO4_DBG_GNT_WL_8821C \
  132. {HALMAC_DBG_GNT_WL_BT, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
  133. 0x73, BIT(3), BIT(3)}
  134. #define GPIO4_WLMAC_DBG_GPIO4_8821C \
  135. {HALMAC_WLMAC_DBG, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
  136. 0x40, BIT(1) | BIT(0), BIT(0)}
  137. #define GPIO4_WLPHY_DBG_GPIO4_8821C \
  138. {HALMAC_WLPHY_DBG, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
  139. 0x40, BIT(1) | BIT(0), BIT(1)}
  140. #define GPIO4_BT_DBG_GPIO4_8821C \
  141. {HALMAC_BT_DBG, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
  142. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  143. #define GPIO4_SW_IO_8821C \
  144. {HALMAC_SW_IO, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
  145. 0x40, BIT(1) | BIT(0), 0}
  146. /* GPIO5 definition */
  147. #define GPIO5_BT_SPI_D1_8821C \
  148. {HALMAC_BT_SFLASH, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
  149. 0x66, BIT(4), BIT(4)}
  150. #define GPIO5_WL_SPI_D1_8821C \
  151. {HALMAC_WL_SFLASH, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
  152. 0x42, BIT(3), BIT(3)}
  153. #define GPIO5_JTAG_TDI_8821C \
  154. {HALMAC_JTAG, HALMAC_GPIO5, HALMAC_GPIO_IN, \
  155. 0x67, BIT(0), BIT(0)}
  156. #define GPIO5_DBG_GNT_BT_8821C \
  157. {HALMAC_DBG_GNT_WL_BT, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
  158. 0x73, BIT(3), BIT(3)}
  159. #define GPIO5_WLMAC_DBG_GPIO5_8821C \
  160. {HALMAC_WLMAC_DBG, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
  161. 0x40, BIT(1) | BIT(0), BIT(0)}
  162. #define GPIO5_WLPHY_DBG_GPIO5_8821C \
  163. {HALMAC_WLPHY_DBG, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
  164. 0x40, BIT(1) | BIT(0), BIT(1)}
  165. #define GPIO5_BT_DBG_GPIO5_8821C \
  166. {HALMAC_BT_DBG, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
  167. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  168. #define GPIO5_SW_IO_8821C \
  169. {HALMAC_SW_IO, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
  170. 0x40, BIT(1) | BIT(0), 0}
  171. /* GPIO6 definition */
  172. #define GPIO6_BT_SPI_D2_8821C \
  173. {HALMAC_BT_SFLASH, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
  174. 0x66, BIT(4), BIT(4)}
  175. #define GPIO6_WL_SPI_D2_8821C \
  176. {HALMAC_WL_SFLASH, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
  177. 0x42, BIT(3), BIT(3)}
  178. #define GPIO6_EEDO_8821C \
  179. {HALMAC_EEPROM, HALMAC_GPIO6, HALMAC_GPIO_IN, \
  180. 0x40, BIT(4), BIT(4)}
  181. #define GPIO6_JTAG_TDO_8821C \
  182. {HALMAC_JTAG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
  183. 0x67, BIT(0), BIT(0)}
  184. #define GPIO6_BT_3DD_SYNC_B_8821C \
  185. {HALMAC_BT_3DDLS_B, HALMAC_GPIO6, HALMAC_GPIO_IN, \
  186. 0x67, BIT(1), BIT(1)}
  187. #define GPIO6_BT_GPIO18_8821C \
  188. {HALMAC_BT_GPIO, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
  189. 0x67, BIT(1), BIT(1)}
  190. #define GPIO6_SIN_8821C \
  191. {HALMAC_WL_UART, HALMAC_GPIO6, HALMAC_GPIO_IN, \
  192. 0x41, BIT(0), BIT(0)}
  193. #define GPIO6_WLMAC_DBG_GPIO6_8821C \
  194. {HALMAC_WLMAC_DBG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
  195. 0x40, BIT(1) | BIT(0), BIT(0)}
  196. #define GPIO6_WLPHY_DBG_GPIO6_8821C \
  197. {HALMAC_WLPHY_DBG, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
  198. 0x40, BIT(1) | BIT(0), BIT(1)}
  199. #define GPIO6_BT_DBG_GPIO6_8821C \
  200. {HALMAC_BT_DBG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
  201. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  202. #define GPIO6_SW_IO_8821C \
  203. {HALMAC_SW_IO, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
  204. 0x40, BIT(1) | BIT(0), 0}
  205. /* GPIO7 definition */
  206. #define GPIO7_BT_SPI_D3_8821C \
  207. {HALMAC_BT_SFLASH, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
  208. 0x66, BIT(4), BIT(4)}
  209. #define GPIO7_WL_SPI_D3_8821C \
  210. {HALMAC_WL_SFLASH, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
  211. 0x42, BIT(3), BIT(3)}
  212. #define GPIO7_EEDI_8821C \
  213. {HALMAC_EEPROM, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
  214. 0x40, BIT(4), BIT(4)}
  215. #define GPIO7_JTAG_TMS_8821C \
  216. {HALMAC_JTAG, HALMAC_GPIO7, HALMAC_GPIO_IN, \
  217. 0x67, BIT(0), BIT(0)}
  218. #define GPIO7_BT_GPIO16_8821C \
  219. {HALMAC_BT_GPIO, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
  220. 0x67, BIT(2), BIT(2)}
  221. #define GPIO7_SOUT_8821C \
  222. {HALMAC_WL_UART, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
  223. 0x41, BIT(0), BIT(0)}
  224. #define GPIO7_WLMAC_DBG_GPIO7_8821C \
  225. {HALMAC_WLMAC_DBG, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
  226. 0x40, BIT(1) | BIT(0), BIT(0)}
  227. #define GPIO7_WLPHY_DBG_GPIO7_8821C \
  228. {HALMAC_WLPHY_DBG, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
  229. 0x40, BIT(1) | BIT(0), BIT(1)}
  230. #define GPIO7_BT_DBG_GPIO7_8821C \
  231. {HALMAC_BT_DBG, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
  232. 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
  233. #define GPIO7_SW_IO_8821C \
  234. {HALMAC_SW_IO, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
  235. 0x40, BIT(1) | BIT(0), 0}
  236. /* GPIO8 definition */
  237. #define GPIO8_WL_EXT_WOL_8821C \
  238. {HALMAC_WL_HW_EXTWOL, HALMAC_GPIO8, HALMAC_GPIO_IN, \
  239. 0x4a, BIT(0) | BIT(1), BIT(0) | BIT(1)}
  240. #define GPIO8_WL_LED_8821C \
  241. {HALMAC_WL_LED, HALMAC_GPIO8, HALMAC_GPIO_OUT, \
  242. 0x4e, BIT(5), BIT(5)}
  243. #define GPIO8_SW_IO_8821C \
  244. {HALMAC_SW_IO, HALMAC_GPIO8, HALMAC_GPIO_IN_OUT, \
  245. 0x40, BIT(1) | BIT(0), 0}
  246. /* GPIO9 definition */
  247. #define GPIO9_DIS_WL_N_8821C \
  248. {HALMAC_WL_HWPDN, HALMAC_GPIO9, HALMAC_GPIO_IN, \
  249. 0x68, BIT(3) | BIT(0), BIT(3) | BIT(0)}
  250. #define GPIO9_WL_EXT_WOL_8821C \
  251. {HALMAC_WL_HW_EXTWOL, HALMAC_GPIO9, HALMAC_GPIO_IN, \
  252. 0x4a, BIT(0) | BIT(1), BIT(0)}
  253. #define GPIO9_USCTS0_8821C \
  254. {HALMAC_UART0, HALMAC_GPIO9, HALMAC_GPIO_IN, \
  255. 0x66, BIT(6), BIT(6)}
  256. #define GPIO9_SW_IO_8821C \
  257. {HALMAC_SW_IO, HALMAC_GPIO9, HALMAC_GPIO_IN_OUT, \
  258. 0x40, BIT(1) | BIT(0), 0}
  259. /* GPIO10 definition */
  260. #define GPIO10_SW_IO_8821C \
  261. {HALMAC_SW_IO, HALMAC_GPIO10, HALMAC_GPIO_IN_OUT, \
  262. 0x40, BIT(1) | BIT(0), 0}
  263. /* GPIO11 definition */
  264. #define GPIO11_DIS_BT_N_8821C \
  265. {HALMAC_BT_HWPDN, HALMAC_GPIO11, HALMAC_GPIO_IN, \
  266. 0x6a, BIT(0), BIT(0)}
  267. #define GPIO11_USOUT0_8821C \
  268. {HALMAC_UART0, HALMAC_GPIO11, HALMAC_GPIO_OUT, \
  269. 0x66, BIT(6), BIT(6)}
  270. #define GPIO11_SW_IO_8821C \
  271. {HALMAC_SW_IO, HALMAC_GPIO11, HALMAC_GPIO_IN_OUT, \
  272. 0x40, BIT(1) | BIT(0), 0}
  273. /* GPIO12 definition */
  274. #define GPIO12_USIN0_8821C \
  275. {HALMAC_UART0, HALMAC_GPIO12, HALMAC_GPIO_IN, \
  276. 0x66, BIT(6), BIT(6)}
  277. #define GPIO12_SW_IO_8821C \
  278. {HALMAC_SW_IO, HALMAC_GPIO12, HALMAC_GPIO_IN_OUT, \
  279. 0x40, BIT(1) | BIT(0), 0}
  280. /* GPIO13 definition */
  281. #define GPIO13_BT_WAKE_8821C \
  282. {HALMAC_GPIO13_14_WL_CTRL_EN, HALMAC_GPIO13, HALMAC_GPIO_IN, \
  283. 0x4e, BIT(6), BIT(6)}
  284. #define GPIO13_SW_IO_8821C \
  285. {HALMAC_SW_IO, HALMAC_GPIO13, HALMAC_GPIO_IN_OUT, \
  286. 0x40, BIT(1) | BIT(0), 0}
  287. /* GPIO14 definition */
  288. #define GPIO14_UART_WAKE_8821C \
  289. {HALMAC_GPIO13_14_WL_CTRL_EN, HALMAC_GPIO14, HALMAC_GPIO_OUT, \
  290. 0x4e, BIT(6), BIT(6)}
  291. #define GPIO14_SW_IO_8821C \
  292. {HALMAC_SW_IO, HALMAC_GPIO14, HALMAC_GPIO_IN_OUT, \
  293. 0x40, BIT(1) | BIT(0), 0}
  294. /* GPIO15 definition */
  295. #define GPIO15_EXT_XTAL_8821C \
  296. {HALMAC_EXT_XTAL, HALMAC_GPIO15, HALMAC_GPIO_OUT, \
  297. 0x66, BIT(7), BIT(7)}
  298. #define GPIO15_SW_IO_8821C \
  299. {HALMAC_SW_IO, HALMAC_GPIO15, HALMAC_GPIO_IN_OUT, \
  300. 0x40, BIT(1) | BIT(0), 0}
  301. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO0_8821C[] = {
  302. GPIO0_BT_GPIO0_8821C,
  303. GPIO0_BT_ACT_8821C,
  304. GPIO0_WL_ACT_8821C,
  305. GPIO0_WLMAC_DBG_GPIO0_8821C,
  306. GPIO0_WLPHY_DBG_GPIO0_8821C,
  307. GPIO0_BT_DBG_GPIO0_8821C,
  308. GPIO0_SW_IO_8821C
  309. };
  310. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO1_8821C[] = {
  311. GPIO1_BT_GPIO1_8821C,
  312. GPIO1_BT_3DD_SYNC_A_8821C,
  313. GPIO1_WL_CK_8821C,
  314. GPIO1_BT_CK_8821C,
  315. GPIO1_WLMAC_DBG_GPIO1_8821C,
  316. GPIO1_WLPHY_DBG_GPIO1_8821C,
  317. GPIO1_BT_DBG_GPIO1_8821C,
  318. GPIO1_SW_IO_8821C
  319. };
  320. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO2_8821C[] = {
  321. GPIO2_BT_GPIO2_8821C,
  322. GPIO2_WL_STATE_8821C,
  323. GPIO2_BT_STATE_8821C,
  324. GPIO2_WLMAC_DBG_GPIO2_8821C,
  325. GPIO2_WLPHY_DBG_GPIO2_8821C,
  326. GPIO2_BT_DBG_GPIO2_8821C,
  327. GPIO2_RFE_CTRL_5_8821C,
  328. GPIO2_SW_IO_8821C
  329. };
  330. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO3_8821C[] = {
  331. GPIO3_BT_GPIO3_8821C,
  332. GPIO3_WL_PRI_8821C,
  333. GPIO3_BT_PRI_8821C,
  334. GPIO3_WLMAC_DBG_GPIO3_8821C,
  335. GPIO3_WLPHY_DBG_GPIO3_8821C,
  336. GPIO3_BT_DBG_GPIO3_8821C,
  337. GPIO3_RFE_CTRL_4_8821C,
  338. GPIO3_SW_IO_8821C
  339. };
  340. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO4_8821C[] = {
  341. GPIO4_BT_SPI_D0_8821C,
  342. GPIO4_WL_SPI_D0_8821C,
  343. GPIO4_SDIO_INT_8821C,
  344. GPIO4_JTAG_TRST_8821C,
  345. GPIO4_DBG_GNT_WL_8821C,
  346. GPIO4_WLMAC_DBG_GPIO4_8821C,
  347. GPIO4_WLPHY_DBG_GPIO4_8821C,
  348. GPIO4_BT_DBG_GPIO4_8821C,
  349. GPIO4_SW_IO_8821C
  350. };
  351. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO5_8821C[] = {
  352. GPIO5_BT_SPI_D1_8821C,
  353. GPIO5_WL_SPI_D1_8821C,
  354. GPIO5_JTAG_TDI_8821C,
  355. GPIO5_DBG_GNT_BT_8821C,
  356. GPIO5_WLMAC_DBG_GPIO5_8821C,
  357. GPIO5_WLPHY_DBG_GPIO5_8821C,
  358. GPIO5_BT_DBG_GPIO5_8821C,
  359. GPIO5_SW_IO_8821C
  360. };
  361. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO6_8821C[] = {
  362. GPIO6_BT_SPI_D2_8821C,
  363. GPIO6_WL_SPI_D2_8821C,
  364. GPIO6_EEDO_8821C,
  365. GPIO6_JTAG_TDO_8821C,
  366. GPIO6_BT_3DD_SYNC_B_8821C,
  367. GPIO6_BT_GPIO18_8821C,
  368. GPIO6_SIN_8821C,
  369. GPIO6_WLMAC_DBG_GPIO6_8821C,
  370. GPIO6_WLPHY_DBG_GPIO6_8821C,
  371. GPIO6_BT_DBG_GPIO6_8821C,
  372. GPIO6_SW_IO_8821C
  373. };
  374. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO7_8821C[] = {
  375. GPIO7_BT_SPI_D3_8821C,
  376. GPIO7_WL_SPI_D3_8821C,
  377. GPIO7_EEDI_8821C,
  378. GPIO7_JTAG_TMS_8821C,
  379. GPIO7_BT_GPIO16_8821C,
  380. GPIO7_SOUT_8821C,
  381. GPIO7_WLMAC_DBG_GPIO7_8821C,
  382. GPIO7_WLPHY_DBG_GPIO7_8821C,
  383. GPIO7_BT_DBG_GPIO7_8821C,
  384. GPIO7_SW_IO_8821C
  385. };
  386. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO8_8821C[] = {
  387. GPIO8_WL_EXT_WOL_8821C,
  388. GPIO8_WL_LED_8821C,
  389. GPIO8_SW_IO_8821C
  390. };
  391. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO9_8821C[] = {
  392. GPIO9_DIS_WL_N_8821C,
  393. GPIO9_WL_EXT_WOL_8821C,
  394. GPIO9_USCTS0_8821C,
  395. GPIO9_SW_IO_8821C
  396. };
  397. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO10_8821C[] = {
  398. GPIO10_SW_IO_8821C
  399. };
  400. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO11_8821C[] = {
  401. GPIO11_DIS_BT_N_8821C,
  402. GPIO11_USOUT0_8821C,
  403. GPIO11_SW_IO_8821C
  404. };
  405. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO12_8821C[] = {
  406. GPIO12_USIN0_8821C,
  407. GPIO12_SW_IO_8821C
  408. };
  409. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO13_8821C[] = {
  410. GPIO13_BT_WAKE_8821C,
  411. GPIO13_SW_IO_8821C
  412. };
  413. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO14_8821C[] = {
  414. GPIO14_UART_WAKE_8821C,
  415. GPIO14_SW_IO_8821C
  416. };
  417. static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO15_8821C[] = {
  418. GPIO15_EXT_XTAL_8821C,
  419. GPIO15_SW_IO_8821C
  420. };
  421. static enum halmac_ret_status
  422. get_pinmux_list_8821c(struct halmac_adapter *adapter,
  423. enum halmac_gpio_func gpio_func,
  424. const struct halmac_gpio_pimux_list **list,
  425. u32 *list_size, u32 *gpio_id);
  426. static enum halmac_ret_status
  427. chk_pinmux_valid_8821c(struct halmac_adapter *adapter,
  428. enum halmac_gpio_func gpio_func);
  429. /**
  430. * pinmux_get_func_8821c() -get current gpio status
  431. * @adapter : the adapter of halmac
  432. * @gpio_func : gpio function
  433. * @enable : function is enable(1) or disable(0)
  434. * Author : Ivan Lin
  435. * Return : enum halmac_ret_status
  436. * More details of status code can be found in prototype document
  437. */
  438. enum halmac_ret_status
  439. pinmux_get_func_8821c(struct halmac_adapter *adapter,
  440. enum halmac_gpio_func gpio_func, u8 *enable)
  441. {
  442. u32 list_size;
  443. u32 cur_func;
  444. u32 gpio_id;
  445. enum halmac_ret_status status;
  446. const struct halmac_gpio_pimux_list *list = NULL;
  447. PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
  448. status = get_pinmux_list_8821c(adapter, gpio_func, &list, &list_size,
  449. &gpio_id);
  450. if (status != HALMAC_RET_SUCCESS)
  451. return status;
  452. status = pinmux_parser_88xx(adapter, list, list_size, gpio_id,
  453. &cur_func);
  454. if (status != HALMAC_RET_SUCCESS)
  455. return status;
  456. switch (gpio_func) {
  457. case HALMAC_GPIO_FUNC_WL_LED:
  458. *enable = (cur_func == HALMAC_WL_LED) ? 1 : 0;
  459. break;
  460. case HALMAC_GPIO_FUNC_SDIO_INT:
  461. *enable = (cur_func == HALMAC_SDIO_INT) ? 1 : 0;
  462. break;
  463. case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
  464. case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
  465. *enable = (cur_func == HALMAC_GPIO13_14_WL_CTRL_EN) ? 1 : 0;
  466. break;
  467. case HALMAC_GPIO_FUNC_SW_IO_0:
  468. case HALMAC_GPIO_FUNC_SW_IO_1:
  469. case HALMAC_GPIO_FUNC_SW_IO_2:
  470. case HALMAC_GPIO_FUNC_SW_IO_3:
  471. case HALMAC_GPIO_FUNC_SW_IO_4:
  472. case HALMAC_GPIO_FUNC_SW_IO_5:
  473. case HALMAC_GPIO_FUNC_SW_IO_6:
  474. case HALMAC_GPIO_FUNC_SW_IO_7:
  475. case HALMAC_GPIO_FUNC_SW_IO_8:
  476. case HALMAC_GPIO_FUNC_SW_IO_9:
  477. case HALMAC_GPIO_FUNC_SW_IO_10:
  478. case HALMAC_GPIO_FUNC_SW_IO_11:
  479. case HALMAC_GPIO_FUNC_SW_IO_12:
  480. case HALMAC_GPIO_FUNC_SW_IO_13:
  481. case HALMAC_GPIO_FUNC_SW_IO_14:
  482. case HALMAC_GPIO_FUNC_SW_IO_15:
  483. *enable = (cur_func == HALMAC_SW_IO) ? 1 : 0;
  484. break;
  485. default:
  486. *enable = 0;
  487. return HALMAC_RET_GET_PINMUX_ERR;
  488. }
  489. PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
  490. return HALMAC_RET_SUCCESS;
  491. }
  492. /**
  493. * pinmux_set_func_8821c() -set gpio function
  494. * @adapter : the adapter of halmac
  495. * @gpio_func : gpio function
  496. * Author : Ivan Lin
  497. * Return : enum halmac_ret_status
  498. * More details of status code can be found in prototype document
  499. */
  500. enum halmac_ret_status
  501. pinmux_set_func_8821c(struct halmac_adapter *adapter,
  502. enum halmac_gpio_func gpio_func)
  503. {
  504. u32 list_size;
  505. u32 gpio_id;
  506. enum halmac_ret_status status;
  507. const struct halmac_gpio_pimux_list *list = NULL;
  508. PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
  509. PLTFM_MSG_TRACE("[TRACE]func name : %d\n", gpio_func);
  510. status = chk_pinmux_valid_8821c(adapter, gpio_func);
  511. if (status != HALMAC_RET_SUCCESS)
  512. return status;
  513. status = get_pinmux_list_8821c(adapter, gpio_func, &list, &list_size,
  514. &gpio_id);
  515. if (status != HALMAC_RET_SUCCESS)
  516. return status;
  517. status = pinmux_switch_88xx(adapter, list, list_size, gpio_id,
  518. gpio_func);
  519. if (status != HALMAC_RET_SUCCESS)
  520. return status;
  521. status = pinmux_record_88xx(adapter, gpio_func, 1);
  522. if (status != HALMAC_RET_SUCCESS)
  523. return status;
  524. PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
  525. return HALMAC_RET_SUCCESS;
  526. }
  527. /**
  528. * pinmux_free_func_8821c() -free locked gpio function
  529. * @adapter : the adapter of halmac
  530. * @gpio_func : gpio function
  531. * Author : Ivan Lin
  532. * Return : enum halmac_ret_status
  533. * More details of status code can be found in prototype document
  534. */
  535. enum halmac_ret_status
  536. pinmux_free_func_8821c(struct halmac_adapter *adapter,
  537. enum halmac_gpio_func gpio_func)
  538. {
  539. struct halmac_pinmux_info *info = &adapter->pinmux_info;
  540. PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
  541. switch (gpio_func) {
  542. case HALMAC_GPIO_FUNC_SW_IO_0:
  543. info->sw_io_0 = 0;
  544. break;
  545. case HALMAC_GPIO_FUNC_SW_IO_1:
  546. info->sw_io_1 = 0;
  547. break;
  548. case HALMAC_GPIO_FUNC_SW_IO_2:
  549. info->sw_io_2 = 0;
  550. break;
  551. case HALMAC_GPIO_FUNC_SW_IO_3:
  552. info->sw_io_3 = 0;
  553. break;
  554. case HALMAC_GPIO_FUNC_SW_IO_4:
  555. case HALMAC_GPIO_FUNC_SDIO_INT:
  556. info->sw_io_4 = 0;
  557. info->sdio_int = 0;
  558. break;
  559. case HALMAC_GPIO_FUNC_SW_IO_5:
  560. info->sw_io_5 = 0;
  561. break;
  562. case HALMAC_GPIO_FUNC_SW_IO_6:
  563. info->sw_io_6 = 0;
  564. break;
  565. case HALMAC_GPIO_FUNC_SW_IO_7:
  566. info->sw_io_7 = 0;
  567. break;
  568. case HALMAC_GPIO_FUNC_SW_IO_8:
  569. case HALMAC_GPIO_FUNC_WL_LED:
  570. info->sw_io_8 = 0;
  571. info->wl_led = 0;
  572. break;
  573. case HALMAC_GPIO_FUNC_SW_IO_9:
  574. info->sw_io_9 = 0;
  575. break;
  576. case HALMAC_GPIO_FUNC_SW_IO_10:
  577. info->sw_io_10 = 0;
  578. break;
  579. case HALMAC_GPIO_FUNC_SW_IO_11:
  580. info->sw_io_11 = 0;
  581. break;
  582. case HALMAC_GPIO_FUNC_SW_IO_12:
  583. info->sw_io_12 = 0;
  584. break;
  585. case HALMAC_GPIO_FUNC_SW_IO_13:
  586. case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
  587. info->bt_dev_wake = 0;
  588. info->sw_io_13 = 0;
  589. break;
  590. case HALMAC_GPIO_FUNC_SW_IO_14:
  591. case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
  592. info->bt_host_wake = 0;
  593. info->sw_io_14 = 0;
  594. break;
  595. case HALMAC_GPIO_FUNC_SW_IO_15:
  596. info->sw_io_15 = 0;
  597. break;
  598. default:
  599. return HALMAC_RET_SWITCH_CASE_ERROR;
  600. }
  601. PLTFM_MSG_TRACE("[TRACE]func : %X\n", gpio_func);
  602. PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
  603. return HALMAC_RET_SUCCESS;
  604. }
  605. static enum halmac_ret_status
  606. get_pinmux_list_8821c(struct halmac_adapter *adapter,
  607. enum halmac_gpio_func gpio_func,
  608. const struct halmac_gpio_pimux_list **list,
  609. u32 *list_size, u32 *gpio_id)
  610. {
  611. switch (gpio_func) {
  612. case HALMAC_GPIO_FUNC_SW_IO_0:
  613. *list = PINMUX_LIST_GPIO0_8821C;
  614. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO0_8821C);
  615. *gpio_id = HALMAC_GPIO0;
  616. break;
  617. case HALMAC_GPIO_FUNC_SW_IO_1:
  618. *list = PINMUX_LIST_GPIO1_8821C;
  619. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO1_8821C);
  620. *gpio_id = HALMAC_GPIO1;
  621. break;
  622. case HALMAC_GPIO_FUNC_SW_IO_2:
  623. *list = PINMUX_LIST_GPIO2_8821C;
  624. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO2_8821C);
  625. *gpio_id = HALMAC_GPIO2;
  626. break;
  627. case HALMAC_GPIO_FUNC_SW_IO_3:
  628. *list = PINMUX_LIST_GPIO3_8821C;
  629. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO3_8821C);
  630. *gpio_id = HALMAC_GPIO3;
  631. break;
  632. case HALMAC_GPIO_FUNC_SW_IO_4:
  633. case HALMAC_GPIO_FUNC_SDIO_INT:
  634. *list = PINMUX_LIST_GPIO4_8821C;
  635. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO4_8821C);
  636. *gpio_id = HALMAC_GPIO4;
  637. break;
  638. case HALMAC_GPIO_FUNC_SW_IO_5:
  639. *list = PINMUX_LIST_GPIO5_8821C;
  640. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO5_8821C);
  641. *gpio_id = HALMAC_GPIO5;
  642. break;
  643. case HALMAC_GPIO_FUNC_SW_IO_6:
  644. *list = PINMUX_LIST_GPIO6_8821C;
  645. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO6_8821C);
  646. *gpio_id = HALMAC_GPIO6;
  647. break;
  648. case HALMAC_GPIO_FUNC_SW_IO_7:
  649. *list = PINMUX_LIST_GPIO7_8821C;
  650. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO7_8821C);
  651. *gpio_id = HALMAC_GPIO7;
  652. break;
  653. case HALMAC_GPIO_FUNC_SW_IO_8:
  654. case HALMAC_GPIO_FUNC_WL_LED:
  655. *list = PINMUX_LIST_GPIO8_8821C;
  656. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO8_8821C);
  657. *gpio_id = HALMAC_GPIO8;
  658. break;
  659. case HALMAC_GPIO_FUNC_SW_IO_9:
  660. *list = PINMUX_LIST_GPIO9_8821C;
  661. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO9_8821C);
  662. *gpio_id = HALMAC_GPIO9;
  663. break;
  664. case HALMAC_GPIO_FUNC_SW_IO_10:
  665. *list = PINMUX_LIST_GPIO10_8821C;
  666. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO10_8821C);
  667. *gpio_id = HALMAC_GPIO10;
  668. break;
  669. case HALMAC_GPIO_FUNC_SW_IO_11:
  670. *list = PINMUX_LIST_GPIO11_8821C;
  671. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO11_8821C);
  672. *gpio_id = HALMAC_GPIO11;
  673. break;
  674. case HALMAC_GPIO_FUNC_SW_IO_12:
  675. *list = PINMUX_LIST_GPIO12_8821C;
  676. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO12_8821C);
  677. *gpio_id = HALMAC_GPIO12;
  678. break;
  679. case HALMAC_GPIO_FUNC_SW_IO_13:
  680. case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
  681. *list = PINMUX_LIST_GPIO13_8821C;
  682. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO13_8821C);
  683. *gpio_id = HALMAC_GPIO13;
  684. break;
  685. case HALMAC_GPIO_FUNC_SW_IO_14:
  686. case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
  687. *list = PINMUX_LIST_GPIO14_8821C;
  688. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO14_8821C);
  689. *gpio_id = HALMAC_GPIO14;
  690. break;
  691. case HALMAC_GPIO_FUNC_SW_IO_15:
  692. *list = PINMUX_LIST_GPIO15_8821C;
  693. *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO15_8821C);
  694. *gpio_id = HALMAC_GPIO15;
  695. break;
  696. default:
  697. return HALMAC_RET_SWITCH_CASE_ERROR;
  698. }
  699. return HALMAC_RET_SUCCESS;
  700. }
  701. static enum halmac_ret_status
  702. chk_pinmux_valid_8821c(struct halmac_adapter *adapter,
  703. enum halmac_gpio_func gpio_func)
  704. {
  705. struct halmac_pinmux_info *info = &adapter->pinmux_info;
  706. enum halmac_ret_status status = HALMAC_RET_SUCCESS;
  707. switch (gpio_func) {
  708. case HALMAC_GPIO_FUNC_SW_IO_0:
  709. if (info->sw_io_0 == 1)
  710. status = HALMAC_RET_PINMUX_USED;
  711. break;
  712. case HALMAC_GPIO_FUNC_SW_IO_1:
  713. if (info->sw_io_1 == 1)
  714. status = HALMAC_RET_PINMUX_USED;
  715. break;
  716. case HALMAC_GPIO_FUNC_SW_IO_2:
  717. if (info->sw_io_2 == 1)
  718. status = HALMAC_RET_PINMUX_USED;
  719. break;
  720. case HALMAC_GPIO_FUNC_SW_IO_3:
  721. if (info->sw_io_3 == 1)
  722. status = HALMAC_RET_PINMUX_USED;
  723. break;
  724. case HALMAC_GPIO_FUNC_SW_IO_4:
  725. case HALMAC_GPIO_FUNC_SDIO_INT:
  726. if (info->sw_io_4 == 1 || info->sdio_int == 1)
  727. status = HALMAC_RET_PINMUX_USED;
  728. break;
  729. case HALMAC_GPIO_FUNC_SW_IO_5:
  730. if (info->sw_io_5 == 1)
  731. status = HALMAC_RET_PINMUX_USED;
  732. break;
  733. case HALMAC_GPIO_FUNC_SW_IO_6:
  734. if (info->sw_io_6 == 1)
  735. status = HALMAC_RET_PINMUX_USED;
  736. break;
  737. case HALMAC_GPIO_FUNC_SW_IO_7:
  738. if (info->sw_io_7 == 1)
  739. status = HALMAC_RET_PINMUX_USED;
  740. break;
  741. case HALMAC_GPIO_FUNC_SW_IO_8:
  742. case HALMAC_GPIO_FUNC_WL_LED:
  743. if (info->sw_io_8 == 1 || info->wl_led == 1)
  744. status = HALMAC_RET_PINMUX_USED;
  745. break;
  746. case HALMAC_GPIO_FUNC_SW_IO_9:
  747. if (info->sw_io_9 == 1)
  748. status = HALMAC_RET_PINMUX_USED;
  749. break;
  750. case HALMAC_GPIO_FUNC_SW_IO_10:
  751. if (info->sw_io_10 == 1)
  752. status = HALMAC_RET_PINMUX_USED;
  753. break;
  754. case HALMAC_GPIO_FUNC_SW_IO_11:
  755. if (info->sw_io_11 == 1)
  756. status = HALMAC_RET_PINMUX_USED;
  757. break;
  758. case HALMAC_GPIO_FUNC_SW_IO_12:
  759. if (info->sw_io_12 == 1)
  760. status = HALMAC_RET_PINMUX_USED;
  761. break;
  762. case HALMAC_GPIO_FUNC_SW_IO_13:
  763. case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
  764. if (info->sw_io_13 == 1 || info->bt_dev_wake == 1)
  765. status = HALMAC_RET_PINMUX_USED;
  766. break;
  767. case HALMAC_GPIO_FUNC_SW_IO_14:
  768. case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
  769. if (info->sw_io_14 == 1 || info->bt_host_wake == 1)
  770. status = HALMAC_RET_PINMUX_USED;
  771. break;
  772. case HALMAC_GPIO_FUNC_SW_IO_15:
  773. if (info->sw_io_15 == 1)
  774. status = HALMAC_RET_PINMUX_USED;
  775. break;
  776. default:
  777. return HALMAC_RET_SWITCH_CASE_ERROR;
  778. }
  779. PLTFM_MSG_TRACE("[TRACE]chk_pinmux_valid func : %X status : %X\n",
  780. gpio_func, status);
  781. return status;
  782. }
  783. #endif /* HALMAC_8821C_SUPPORT */