halmac_pwr_seq_8821c.c 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905
  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_pwr_seq_8821c.h"
  16. #if HALMAC_8821C_SUPPORT
  17. static struct halmac_wlan_pwr_cfg TRANS_CARDDIS_TO_CARDEMU_8821C[] = {
  18. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  19. {0x0086,
  20. HALMAC_PWR_CUT_ALL_MSK,
  21. HALMAC_PWR_INTF_SDIO_MSK,
  22. HALMAC_PWR_ADDR_SDIO,
  23. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  24. {0x0086,
  25. HALMAC_PWR_CUT_ALL_MSK,
  26. HALMAC_PWR_INTF_SDIO_MSK,
  27. HALMAC_PWR_ADDR_SDIO,
  28. HALMAC_PWR_CMD_POLLING, BIT(1), BIT(1)},
  29. {0x004A,
  30. HALMAC_PWR_CUT_ALL_MSK,
  31. HALMAC_PWR_INTF_USB_MSK,
  32. HALMAC_PWR_ADDR_MAC,
  33. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  34. {0x0005,
  35. HALMAC_PWR_CUT_ALL_MSK,
  36. HALMAC_PWR_INTF_ALL_MSK,
  37. HALMAC_PWR_ADDR_MAC,
  38. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(4) | BIT(7), 0},
  39. {0x0300,
  40. HALMAC_PWR_CUT_ALL_MSK,
  41. HALMAC_PWR_INTF_PCI_MSK,
  42. HALMAC_PWR_ADDR_MAC,
  43. HALMAC_PWR_CMD_WRITE, 0xFF, 0},
  44. {0x0301,
  45. HALMAC_PWR_CUT_ALL_MSK,
  46. HALMAC_PWR_INTF_PCI_MSK,
  47. HALMAC_PWR_ADDR_MAC,
  48. HALMAC_PWR_CMD_WRITE, 0xFF, 0},
  49. {0xFFFF,
  50. HALMAC_PWR_CUT_ALL_MSK,
  51. HALMAC_PWR_INTF_ALL_MSK,
  52. 0,
  53. HALMAC_PWR_CMD_END, 0, 0},
  54. };
  55. static struct halmac_wlan_pwr_cfg TRANS_CARDEMU_TO_ACT_8821C[] = {
  56. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  57. {0x0020,
  58. HALMAC_PWR_CUT_ALL_MSK,
  59. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  60. HALMAC_PWR_ADDR_MAC,
  61. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  62. {0x0001,
  63. HALMAC_PWR_CUT_ALL_MSK,
  64. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  65. HALMAC_PWR_ADDR_MAC,
  66. HALMAC_PWR_CMD_DELAY, 1, HALMAC_PWR_DELAY_MS},
  67. {0x0000,
  68. HALMAC_PWR_CUT_ALL_MSK,
  69. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  70. HALMAC_PWR_ADDR_MAC,
  71. HALMAC_PWR_CMD_WRITE, BIT(5), 0},
  72. {0x0005,
  73. HALMAC_PWR_CUT_ALL_MSK,
  74. HALMAC_PWR_INTF_ALL_MSK,
  75. HALMAC_PWR_ADDR_MAC,
  76. HALMAC_PWR_CMD_WRITE, (BIT(4) | BIT(3) | BIT(2)), 0},
  77. {0x0075,
  78. HALMAC_PWR_CUT_ALL_MSK,
  79. HALMAC_PWR_INTF_PCI_MSK,
  80. HALMAC_PWR_ADDR_MAC,
  81. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  82. {0x0006,
  83. HALMAC_PWR_CUT_ALL_MSK,
  84. HALMAC_PWR_INTF_ALL_MSK,
  85. HALMAC_PWR_ADDR_MAC,
  86. HALMAC_PWR_CMD_POLLING, BIT(1), BIT(1)},
  87. {0x0075,
  88. HALMAC_PWR_CUT_ALL_MSK,
  89. HALMAC_PWR_INTF_PCI_MSK,
  90. HALMAC_PWR_ADDR_MAC,
  91. HALMAC_PWR_CMD_WRITE, BIT(0), 0 },
  92. {0x0006,
  93. HALMAC_PWR_CUT_ALL_MSK,
  94. HALMAC_PWR_INTF_ALL_MSK,
  95. HALMAC_PWR_ADDR_MAC,
  96. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  97. {0x0005,
  98. HALMAC_PWR_CUT_ALL_MSK,
  99. HALMAC_PWR_INTF_ALL_MSK,
  100. HALMAC_PWR_ADDR_MAC,
  101. HALMAC_PWR_CMD_WRITE, BIT(7), 0 },
  102. {0x0005,
  103. HALMAC_PWR_CUT_ALL_MSK,
  104. HALMAC_PWR_INTF_ALL_MSK,
  105. HALMAC_PWR_ADDR_MAC,
  106. HALMAC_PWR_CMD_WRITE, (BIT(4) | BIT(3)), 0},
  107. {0x10C3,
  108. HALMAC_PWR_CUT_ALL_MSK,
  109. HALMAC_PWR_INTF_USB_MSK,
  110. HALMAC_PWR_ADDR_MAC,
  111. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  112. {0x0005,
  113. HALMAC_PWR_CUT_ALL_MSK,
  114. HALMAC_PWR_INTF_ALL_MSK,
  115. HALMAC_PWR_ADDR_MAC,
  116. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  117. {0x0005,
  118. HALMAC_PWR_CUT_ALL_MSK,
  119. HALMAC_PWR_INTF_ALL_MSK,
  120. HALMAC_PWR_ADDR_MAC,
  121. HALMAC_PWR_CMD_POLLING, BIT(0), 0},
  122. {0x0020,
  123. HALMAC_PWR_CUT_ALL_MSK,
  124. HALMAC_PWR_INTF_ALL_MSK,
  125. HALMAC_PWR_ADDR_MAC,
  126. HALMAC_PWR_CMD_WRITE, BIT(3), BIT(3)},
  127. {0x0074,
  128. HALMAC_PWR_CUT_ALL_MSK,
  129. HALMAC_PWR_INTF_PCI_MSK,
  130. HALMAC_PWR_ADDR_MAC,
  131. HALMAC_PWR_CMD_WRITE, BIT(5), BIT(5)},
  132. {0x0022,
  133. HALMAC_PWR_CUT_ALL_MSK,
  134. HALMAC_PWR_INTF_PCI_MSK,
  135. HALMAC_PWR_ADDR_MAC,
  136. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  137. {0x0062,
  138. HALMAC_PWR_CUT_ALL_MSK,
  139. HALMAC_PWR_INTF_PCI_MSK,
  140. HALMAC_PWR_ADDR_MAC,
  141. HALMAC_PWR_CMD_WRITE, (BIT(7) | BIT(6) | BIT(5)),
  142. (BIT(7) | BIT(6) | BIT(5))},
  143. {0x0061,
  144. HALMAC_PWR_CUT_ALL_MSK,
  145. HALMAC_PWR_INTF_PCI_MSK,
  146. HALMAC_PWR_ADDR_MAC,
  147. HALMAC_PWR_CMD_WRITE, (BIT(7) | BIT(6) | BIT(5)), 0},
  148. {0x007C,
  149. HALMAC_PWR_CUT_ALL_MSK,
  150. HALMAC_PWR_INTF_ALL_MSK,
  151. HALMAC_PWR_ADDR_MAC,
  152. HALMAC_PWR_CMD_WRITE, BIT(1), 0 },
  153. {0xFFFF,
  154. HALMAC_PWR_CUT_ALL_MSK,
  155. HALMAC_PWR_INTF_ALL_MSK,
  156. 0,
  157. HALMAC_PWR_CMD_END, 0, 0},
  158. };
  159. static struct halmac_wlan_pwr_cfg TRANS_ACT_TO_CARDEMU_8821C[] = {
  160. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  161. {0x0093,
  162. HALMAC_PWR_CUT_ALL_MSK,
  163. HALMAC_PWR_INTF_ALL_MSK,
  164. HALMAC_PWR_ADDR_MAC,
  165. HALMAC_PWR_CMD_WRITE, BIT(3), 0},
  166. {0x001F,
  167. HALMAC_PWR_CUT_ALL_MSK,
  168. HALMAC_PWR_INTF_ALL_MSK,
  169. HALMAC_PWR_ADDR_MAC,
  170. HALMAC_PWR_CMD_WRITE, 0xFF, 0},
  171. {0x0049,
  172. HALMAC_PWR_CUT_ALL_MSK,
  173. HALMAC_PWR_INTF_ALL_MSK,
  174. HALMAC_PWR_ADDR_MAC,
  175. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  176. {0x0006,
  177. HALMAC_PWR_CUT_ALL_MSK,
  178. HALMAC_PWR_INTF_ALL_MSK,
  179. HALMAC_PWR_ADDR_MAC,
  180. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  181. {0x0002,
  182. HALMAC_PWR_CUT_ALL_MSK,
  183. HALMAC_PWR_INTF_ALL_MSK,
  184. HALMAC_PWR_ADDR_MAC,
  185. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  186. {0x10C3,
  187. HALMAC_PWR_CUT_ALL_MSK,
  188. HALMAC_PWR_INTF_USB_MSK,
  189. HALMAC_PWR_ADDR_MAC,
  190. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  191. {0x0005,
  192. HALMAC_PWR_CUT_ALL_MSK,
  193. HALMAC_PWR_INTF_ALL_MSK,
  194. HALMAC_PWR_ADDR_MAC,
  195. HALMAC_PWR_CMD_WRITE, BIT(1), BIT(1)},
  196. {0x0005,
  197. HALMAC_PWR_CUT_ALL_MSK,
  198. HALMAC_PWR_INTF_ALL_MSK,
  199. HALMAC_PWR_ADDR_MAC,
  200. HALMAC_PWR_CMD_POLLING, BIT(1), 0},
  201. {0x0020,
  202. HALMAC_PWR_CUT_ALL_MSK,
  203. HALMAC_PWR_INTF_ALL_MSK,
  204. HALMAC_PWR_ADDR_MAC,
  205. HALMAC_PWR_CMD_WRITE, BIT(3), 0},
  206. {0x0000,
  207. HALMAC_PWR_CUT_ALL_MSK,
  208. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  209. HALMAC_PWR_ADDR_MAC,
  210. HALMAC_PWR_CMD_WRITE, BIT(5), BIT(5)},
  211. {0xFFFF,
  212. HALMAC_PWR_CUT_ALL_MSK,
  213. HALMAC_PWR_INTF_ALL_MSK,
  214. 0,
  215. HALMAC_PWR_CMD_END, 0, 0},
  216. };
  217. static struct halmac_wlan_pwr_cfg TRANS_CARDEMU_TO_CARDDIS_8821C[] = {
  218. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  219. {0x0007,
  220. HALMAC_PWR_CUT_ALL_MSK,
  221. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  222. HALMAC_PWR_ADDR_MAC,
  223. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  224. {0x0067,
  225. HALMAC_PWR_CUT_ALL_MSK,
  226. HALMAC_PWR_INTF_ALL_MSK,
  227. HALMAC_PWR_ADDR_MAC,
  228. HALMAC_PWR_CMD_WRITE, BIT(5), 0},
  229. {0x0005,
  230. HALMAC_PWR_CUT_ALL_MSK,
  231. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  232. HALMAC_PWR_ADDR_MAC,
  233. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)},
  234. {0x0005,
  235. HALMAC_PWR_CUT_ALL_MSK,
  236. HALMAC_PWR_INTF_PCI_MSK,
  237. HALMAC_PWR_ADDR_MAC,
  238. HALMAC_PWR_CMD_WRITE, BIT(2), BIT(2)},
  239. {0x004A,
  240. HALMAC_PWR_CUT_ALL_MSK,
  241. HALMAC_PWR_INTF_USB_MSK,
  242. HALMAC_PWR_ADDR_MAC,
  243. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  244. {0x0067,
  245. HALMAC_PWR_CUT_ALL_MSK,
  246. HALMAC_PWR_INTF_SDIO_MSK,
  247. HALMAC_PWR_ADDR_MAC,
  248. HALMAC_PWR_CMD_WRITE, BIT(5), 0 },
  249. {0x0067,
  250. HALMAC_PWR_CUT_ALL_MSK,
  251. HALMAC_PWR_INTF_SDIO_MSK,
  252. HALMAC_PWR_ADDR_MAC,
  253. HALMAC_PWR_CMD_WRITE, BIT(4), 0 },
  254. {0x004F,
  255. HALMAC_PWR_CUT_ALL_MSK,
  256. HALMAC_PWR_INTF_SDIO_MSK,
  257. HALMAC_PWR_ADDR_MAC,
  258. HALMAC_PWR_CMD_WRITE, BIT(0), 0 },
  259. {0x0067,
  260. HALMAC_PWR_CUT_ALL_MSK,
  261. HALMAC_PWR_INTF_SDIO_MSK,
  262. HALMAC_PWR_ADDR_MAC,
  263. HALMAC_PWR_CMD_WRITE, BIT(1), 0 },
  264. {0x0046,
  265. HALMAC_PWR_CUT_ALL_MSK,
  266. HALMAC_PWR_INTF_SDIO_MSK,
  267. HALMAC_PWR_ADDR_MAC,
  268. HALMAC_PWR_CMD_WRITE, BIT(6), BIT(6) },
  269. {0x0067,
  270. HALMAC_PWR_CUT_ALL_MSK,
  271. HALMAC_PWR_INTF_SDIO_MSK,
  272. HALMAC_PWR_ADDR_MAC,
  273. HALMAC_PWR_CMD_WRITE, BIT(2), 0 },
  274. {0x0046,
  275. HALMAC_PWR_CUT_ALL_MSK,
  276. HALMAC_PWR_INTF_SDIO_MSK,
  277. HALMAC_PWR_ADDR_MAC,
  278. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7) },
  279. {0x0062,
  280. HALMAC_PWR_CUT_ALL_MSK,
  281. HALMAC_PWR_INTF_SDIO_MSK,
  282. HALMAC_PWR_ADDR_MAC,
  283. HALMAC_PWR_CMD_WRITE, BIT(4), BIT(4) },
  284. {0x0081,
  285. HALMAC_PWR_CUT_ALL_MSK,
  286. HALMAC_PWR_INTF_ALL_MSK,
  287. HALMAC_PWR_ADDR_MAC,
  288. HALMAC_PWR_CMD_WRITE, BIT(7) | BIT(6), 0},
  289. {0x0086,
  290. HALMAC_PWR_CUT_ALL_MSK,
  291. HALMAC_PWR_INTF_SDIO_MSK,
  292. HALMAC_PWR_ADDR_SDIO,
  293. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  294. {0x0086,
  295. HALMAC_PWR_CUT_ALL_MSK,
  296. HALMAC_PWR_INTF_SDIO_MSK,
  297. HALMAC_PWR_ADDR_SDIO,
  298. HALMAC_PWR_CMD_POLLING, BIT(1), 0},
  299. {0x0090,
  300. HALMAC_PWR_CUT_ALL_MSK,
  301. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_PCI_MSK,
  302. HALMAC_PWR_ADDR_MAC,
  303. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  304. {0x0044,
  305. HALMAC_PWR_CUT_ALL_MSK,
  306. HALMAC_PWR_INTF_SDIO_MSK,
  307. HALMAC_PWR_ADDR_SDIO,
  308. HALMAC_PWR_CMD_WRITE, 0xFF, 0},
  309. {0x0040,
  310. HALMAC_PWR_CUT_ALL_MSK,
  311. HALMAC_PWR_INTF_SDIO_MSK,
  312. HALMAC_PWR_ADDR_SDIO,
  313. HALMAC_PWR_CMD_WRITE, 0xFF, 0x90},
  314. {0x0041,
  315. HALMAC_PWR_CUT_ALL_MSK,
  316. HALMAC_PWR_INTF_SDIO_MSK,
  317. HALMAC_PWR_ADDR_SDIO,
  318. HALMAC_PWR_CMD_WRITE, 0xFF, 0x00},
  319. {0x0042,
  320. HALMAC_PWR_CUT_ALL_MSK,
  321. HALMAC_PWR_INTF_SDIO_MSK,
  322. HALMAC_PWR_ADDR_SDIO,
  323. HALMAC_PWR_CMD_WRITE, 0xFF, 0x04},
  324. {0xFFFF,
  325. HALMAC_PWR_CUT_ALL_MSK,
  326. HALMAC_PWR_INTF_ALL_MSK,
  327. 0,
  328. HALMAC_PWR_CMD_END, 0, 0},
  329. };
  330. /* Card Enable Array */
  331. struct halmac_wlan_pwr_cfg *card_en_flow_8821c[] = {
  332. TRANS_CARDDIS_TO_CARDEMU_8821C,
  333. TRANS_CARDEMU_TO_ACT_8821C,
  334. NULL
  335. };
  336. /* Card Disable Array */
  337. struct halmac_wlan_pwr_cfg *card_dis_flow_8821c[] = {
  338. TRANS_ACT_TO_CARDEMU_8821C,
  339. TRANS_CARDEMU_TO_CARDDIS_8821C,
  340. NULL
  341. };
  342. #if HALMAC_PLATFORM_TESTPROGRAM
  343. static struct halmac_wlan_pwr_cfg TRANS_CARDEMU_TO_SUS_8821C[] = {
  344. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  345. {0x0005,
  346. HALMAC_PWR_CUT_ALL_MSK,
  347. HALMAC_PWR_INTF_PCI_MSK,
  348. HALMAC_PWR_ADDR_MAC,
  349. HALMAC_PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))},
  350. {0x0005,
  351. HALMAC_PWR_CUT_ALL_MSK,
  352. HALMAC_PWR_INTF_USB_MSK | HALMAC_PWR_INTF_SDIO_MSK,
  353. HALMAC_PWR_ADDR_MAC,
  354. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)},
  355. {0x0007,
  356. HALMAC_PWR_CUT_ALL_MSK,
  357. HALMAC_PWR_INTF_SDIO_MSK,
  358. HALMAC_PWR_ADDR_MAC,
  359. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  360. {0x0005,
  361. HALMAC_PWR_CUT_ALL_MSK,
  362. HALMAC_PWR_INTF_PCI_MSK,
  363. HALMAC_PWR_ADDR_MAC,
  364. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},
  365. {0x0086,
  366. HALMAC_PWR_CUT_ALL_MSK,
  367. HALMAC_PWR_INTF_SDIO_MSK,
  368. HALMAC_PWR_ADDR_SDIO,
  369. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  370. {0x0086,
  371. HALMAC_PWR_CUT_ALL_MSK,
  372. HALMAC_PWR_INTF_SDIO_MSK,
  373. HALMAC_PWR_ADDR_SDIO,
  374. HALMAC_PWR_CMD_POLLING, BIT(1), 0},
  375. {0xFFFF,
  376. HALMAC_PWR_CUT_ALL_MSK,
  377. HALMAC_PWR_INTF_ALL_MSK,
  378. 0,
  379. HALMAC_PWR_CMD_END, 0, 0},
  380. };
  381. static struct halmac_wlan_pwr_cfg TRANS_SUS_TO_CARDEMU_8821C[] = {
  382. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  383. {0x0005,
  384. HALMAC_PWR_CUT_ALL_MSK,
  385. HALMAC_PWR_INTF_ALL_MSK,
  386. HALMAC_PWR_ADDR_MAC,
  387. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(7), 0},
  388. {0x0086,
  389. HALMAC_PWR_CUT_ALL_MSK,
  390. HALMAC_PWR_INTF_SDIO_MSK,
  391. HALMAC_PWR_ADDR_SDIO,
  392. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  393. {0x0086,
  394. HALMAC_PWR_CUT_ALL_MSK,
  395. HALMAC_PWR_INTF_SDIO_MSK,
  396. HALMAC_PWR_ADDR_SDIO,
  397. HALMAC_PWR_CMD_POLLING, BIT(1), BIT(1)},
  398. {0x0005,
  399. HALMAC_PWR_CUT_ALL_MSK,
  400. HALMAC_PWR_INTF_ALL_MSK,
  401. HALMAC_PWR_ADDR_MAC,
  402. HALMAC_PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
  403. {0xFFFF,
  404. HALMAC_PWR_CUT_ALL_MSK,
  405. HALMAC_PWR_INTF_ALL_MSK,
  406. 0,
  407. HALMAC_PWR_CMD_END, 0, 0},
  408. };
  409. static struct halmac_wlan_pwr_cfg TRANS_CARDEMU_TO_PDN_8821C[] = {
  410. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  411. {0x0007,
  412. HALMAC_PWR_CUT_ALL_MSK,
  413. HALMAC_PWR_INTF_SDIO_MSK | HALMAC_PWR_INTF_USB_MSK,
  414. HALMAC_PWR_ADDR_MAC,
  415. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  416. {0x0006,
  417. HALMAC_PWR_CUT_ALL_MSK,
  418. HALMAC_PWR_INTF_ALL_MSK,
  419. HALMAC_PWR_ADDR_MAC,
  420. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  421. {0x0005,
  422. HALMAC_PWR_CUT_ALL_MSK,
  423. HALMAC_PWR_INTF_ALL_MSK,
  424. HALMAC_PWR_ADDR_MAC,
  425. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7)},
  426. {0xFFFF,
  427. HALMAC_PWR_CUT_ALL_MSK,
  428. HALMAC_PWR_INTF_ALL_MSK,
  429. 0,
  430. HALMAC_PWR_CMD_END, 0, 0},
  431. };
  432. static struct halmac_wlan_pwr_cfg TRANS_PDN_TO_CARDEMU_8821C[] = {
  433. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  434. {0x0005,
  435. HALMAC_PWR_CUT_ALL_MSK,
  436. HALMAC_PWR_INTF_ALL_MSK,
  437. HALMAC_PWR_ADDR_MAC,
  438. HALMAC_PWR_CMD_WRITE, BIT(7), 0},
  439. {0xFFFF,
  440. HALMAC_PWR_CUT_ALL_MSK,
  441. HALMAC_PWR_INTF_ALL_MSK,
  442. 0,
  443. HALMAC_PWR_CMD_END, 0, 0},
  444. };
  445. static struct halmac_wlan_pwr_cfg TRANS_ACT_TO_LPS_8821C[] = {
  446. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  447. {0x0101,
  448. HALMAC_PWR_CUT_ALL_MSK,
  449. HALMAC_PWR_INTF_ALL_MSK,
  450. HALMAC_PWR_ADDR_MAC,
  451. HALMAC_PWR_CMD_WRITE, BIT(2), BIT(2)},
  452. {0x0199,
  453. HALMAC_PWR_CUT_ALL_MSK,
  454. HALMAC_PWR_INTF_ALL_MSK,
  455. HALMAC_PWR_ADDR_MAC,
  456. HALMAC_PWR_CMD_WRITE, BIT(3), BIT(3)},
  457. {0x019B,
  458. HALMAC_PWR_CUT_ALL_MSK,
  459. HALMAC_PWR_INTF_ALL_MSK,
  460. HALMAC_PWR_ADDR_MAC,
  461. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7)},
  462. {0x1138,
  463. HALMAC_PWR_CUT_ALL_MSK,
  464. HALMAC_PWR_INTF_ALL_MSK,
  465. HALMAC_PWR_ADDR_MAC,
  466. HALMAC_PWR_CMD_WRITE, BIT(0) | BIT(1), BIT(0) | BIT(1)},
  467. {0x0194,
  468. HALMAC_PWR_CUT_ALL_MSK,
  469. HALMAC_PWR_INTF_ALL_MSK,
  470. HALMAC_PWR_ADDR_MAC,
  471. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  472. {0x0093,
  473. HALMAC_PWR_CUT_ALL_MSK,
  474. HALMAC_PWR_INTF_PCI_MSK,
  475. HALMAC_PWR_ADDR_MAC,
  476. HALMAC_PWR_CMD_WRITE, 0xFF, 0xD6},
  477. {0x0092,
  478. HALMAC_PWR_CUT_ALL_MSK,
  479. HALMAC_PWR_INTF_PCI_MSK,
  480. HALMAC_PWR_ADDR_MAC,
  481. HALMAC_PWR_CMD_WRITE, 0xFF, 0x60},
  482. {0x0093,
  483. HALMAC_PWR_CUT_ALL_MSK,
  484. HALMAC_PWR_INTF_USB_MSK,
  485. HALMAC_PWR_ADDR_MAC,
  486. HALMAC_PWR_CMD_WRITE, 0xFF, 0x93},
  487. {0x0092,
  488. HALMAC_PWR_CUT_ALL_MSK,
  489. HALMAC_PWR_INTF_USB_MSK,
  490. HALMAC_PWR_ADDR_MAC,
  491. HALMAC_PWR_CMD_WRITE, 0xFF, 0x60},
  492. {0x0093,
  493. HALMAC_PWR_CUT_ALL_MSK,
  494. HALMAC_PWR_INTF_SDIO_MSK,
  495. HALMAC_PWR_ADDR_MAC,
  496. HALMAC_PWR_CMD_WRITE, 0xFF, 0x2},
  497. {0x0092,
  498. HALMAC_PWR_CUT_ALL_MSK,
  499. HALMAC_PWR_INTF_SDIO_MSK,
  500. HALMAC_PWR_ADDR_MAC,
  501. HALMAC_PWR_CMD_WRITE, 0xFF, 0x60},
  502. {0x0090,
  503. HALMAC_PWR_CUT_ALL_MSK,
  504. HALMAC_PWR_INTF_ALL_MSK,
  505. HALMAC_PWR_ADDR_MAC,
  506. HALMAC_PWR_CMD_WRITE, BIT(1), BIT(1)},
  507. {0x0301,
  508. HALMAC_PWR_CUT_ALL_MSK,
  509. HALMAC_PWR_INTF_PCI_MSK,
  510. HALMAC_PWR_ADDR_MAC,
  511. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  512. {0x0522,
  513. HALMAC_PWR_CUT_ALL_MSK,
  514. HALMAC_PWR_INTF_ALL_MSK,
  515. HALMAC_PWR_ADDR_MAC,
  516. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  517. {0x05F8,
  518. HALMAC_PWR_CUT_ALL_MSK,
  519. HALMAC_PWR_INTF_ALL_MSK,
  520. HALMAC_PWR_ADDR_MAC,
  521. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  522. {0x05F9,
  523. HALMAC_PWR_CUT_ALL_MSK,
  524. HALMAC_PWR_INTF_ALL_MSK,
  525. HALMAC_PWR_ADDR_MAC,
  526. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  527. {0x05FA,
  528. HALMAC_PWR_CUT_ALL_MSK,
  529. HALMAC_PWR_INTF_ALL_MSK,
  530. HALMAC_PWR_ADDR_MAC,
  531. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  532. {0x05FB,
  533. HALMAC_PWR_CUT_ALL_MSK,
  534. HALMAC_PWR_INTF_ALL_MSK,
  535. HALMAC_PWR_ADDR_MAC,
  536. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  537. {0x0002,
  538. HALMAC_PWR_CUT_ALL_MSK,
  539. HALMAC_PWR_INTF_ALL_MSK,
  540. HALMAC_PWR_ADDR_MAC,
  541. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  542. {0x0002,
  543. HALMAC_PWR_CUT_ALL_MSK,
  544. HALMAC_PWR_INTF_ALL_MSK,
  545. HALMAC_PWR_ADDR_MAC,
  546. HALMAC_PWR_CMD_DELAY, 0, HALMAC_PWR_DELAY_US},
  547. {0x0002,
  548. HALMAC_PWR_CUT_ALL_MSK,
  549. HALMAC_PWR_INTF_ALL_MSK,
  550. HALMAC_PWR_ADDR_MAC,
  551. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  552. {0x0100,
  553. HALMAC_PWR_CUT_ALL_MSK,
  554. HALMAC_PWR_INTF_ALL_MSK,
  555. HALMAC_PWR_ADDR_MAC,
  556. HALMAC_PWR_CMD_WRITE, 0xFF, 0x3F},
  557. {0x0101,
  558. HALMAC_PWR_CUT_ALL_MSK,
  559. HALMAC_PWR_INTF_ALL_MSK,
  560. HALMAC_PWR_ADDR_MAC,
  561. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  562. {0x0553,
  563. HALMAC_PWR_CUT_ALL_MSK,
  564. HALMAC_PWR_INTF_ALL_MSK,
  565. HALMAC_PWR_ADDR_MAC,
  566. HALMAC_PWR_CMD_WRITE, BIT(5), BIT(5)},
  567. {0x0008,
  568. HALMAC_PWR_CUT_ALL_MSK,
  569. HALMAC_PWR_INTF_ALL_MSK,
  570. HALMAC_PWR_ADDR_MAC,
  571. HALMAC_PWR_CMD_WRITE, BIT(4), BIT(4)},
  572. {0x0109,
  573. HALMAC_PWR_CUT_ALL_MSK,
  574. HALMAC_PWR_INTF_ALL_MSK,
  575. HALMAC_PWR_ADDR_MAC,
  576. HALMAC_PWR_CMD_POLLING, BIT(7), BIT(7)},
  577. {0x0090,
  578. HALMAC_PWR_CUT_ALL_MSK,
  579. HALMAC_PWR_INTF_ALL_MSK,
  580. HALMAC_PWR_ADDR_MAC,
  581. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  582. {0xFFFF,
  583. HALMAC_PWR_CUT_ALL_MSK,
  584. HALMAC_PWR_INTF_ALL_MSK,
  585. 0,
  586. HALMAC_PWR_CMD_END, 0, 0},
  587. };
  588. static struct halmac_wlan_pwr_cfg TRANS_ACT_TO_DEEP_LPS_8821C[] = {
  589. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  590. {0x0101,
  591. HALMAC_PWR_CUT_ALL_MSK,
  592. HALMAC_PWR_INTF_ALL_MSK,
  593. HALMAC_PWR_ADDR_MAC,
  594. HALMAC_PWR_CMD_WRITE, BIT(2), BIT(2)},
  595. {0x0199,
  596. HALMAC_PWR_CUT_ALL_MSK,
  597. HALMAC_PWR_INTF_ALL_MSK,
  598. HALMAC_PWR_ADDR_MAC,
  599. HALMAC_PWR_CMD_WRITE, BIT(3), BIT(3)},
  600. {0x019B,
  601. HALMAC_PWR_CUT_ALL_MSK,
  602. HALMAC_PWR_INTF_ALL_MSK,
  603. HALMAC_PWR_ADDR_MAC,
  604. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7)},
  605. {0x1138,
  606. HALMAC_PWR_CUT_ALL_MSK,
  607. HALMAC_PWR_INTF_ALL_MSK,
  608. HALMAC_PWR_ADDR_MAC,
  609. HALMAC_PWR_CMD_WRITE, BIT(0) | BIT(1), BIT(0) | BIT(1)},
  610. {0x0194,
  611. HALMAC_PWR_CUT_ALL_MSK,
  612. HALMAC_PWR_INTF_ALL_MSK,
  613. HALMAC_PWR_ADDR_MAC,
  614. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  615. {0x0093,
  616. HALMAC_PWR_CUT_ALL_MSK,
  617. HALMAC_PWR_INTF_PCI_MSK,
  618. HALMAC_PWR_ADDR_MAC,
  619. HALMAC_PWR_CMD_WRITE, 0xFF, 0xD4},
  620. {0x0092,
  621. HALMAC_PWR_CUT_ALL_MSK,
  622. HALMAC_PWR_INTF_PCI_MSK,
  623. HALMAC_PWR_ADDR_MAC,
  624. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  625. {0x0093,
  626. HALMAC_PWR_CUT_ALL_MSK,
  627. HALMAC_PWR_INTF_USB_MSK,
  628. HALMAC_PWR_ADDR_MAC,
  629. HALMAC_PWR_CMD_WRITE, 0xFF, 0x91},
  630. {0x0092,
  631. HALMAC_PWR_CUT_ALL_MSK,
  632. HALMAC_PWR_INTF_USB_MSK,
  633. HALMAC_PWR_ADDR_MAC,
  634. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  635. {0x0093,
  636. HALMAC_PWR_CUT_ALL_MSK,
  637. HALMAC_PWR_INTF_SDIO_MSK,
  638. HALMAC_PWR_ADDR_MAC,
  639. HALMAC_PWR_CMD_WRITE, 0xFF, 0x0},
  640. {0x0092,
  641. HALMAC_PWR_CUT_ALL_MSK,
  642. HALMAC_PWR_INTF_SDIO_MSK,
  643. HALMAC_PWR_ADDR_MAC,
  644. HALMAC_PWR_CMD_WRITE, 0xFF, 0x20},
  645. {0x0090,
  646. HALMAC_PWR_CUT_ALL_MSK,
  647. HALMAC_PWR_INTF_ALL_MSK,
  648. HALMAC_PWR_ADDR_MAC,
  649. HALMAC_PWR_CMD_WRITE, BIT(1), BIT(1)},
  650. {0x0301,
  651. HALMAC_PWR_CUT_ALL_MSK,
  652. HALMAC_PWR_INTF_PCI_MSK,
  653. HALMAC_PWR_ADDR_MAC,
  654. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  655. {0x0522,
  656. HALMAC_PWR_CUT_ALL_MSK,
  657. HALMAC_PWR_INTF_ALL_MSK,
  658. HALMAC_PWR_ADDR_MAC,
  659. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  660. {0x05F8,
  661. HALMAC_PWR_CUT_ALL_MSK,
  662. HALMAC_PWR_INTF_ALL_MSK,
  663. HALMAC_PWR_ADDR_MAC,
  664. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  665. {0x05F9,
  666. HALMAC_PWR_CUT_ALL_MSK,
  667. HALMAC_PWR_INTF_ALL_MSK,
  668. HALMAC_PWR_ADDR_MAC,
  669. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  670. {0x05FA,
  671. HALMAC_PWR_CUT_ALL_MSK,
  672. HALMAC_PWR_INTF_ALL_MSK,
  673. HALMAC_PWR_ADDR_MAC,
  674. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  675. {0x05FB,
  676. HALMAC_PWR_CUT_ALL_MSK,
  677. HALMAC_PWR_INTF_ALL_MSK,
  678. HALMAC_PWR_ADDR_MAC,
  679. HALMAC_PWR_CMD_POLLING, 0xFF, 0},
  680. {0x0002,
  681. HALMAC_PWR_CUT_ALL_MSK,
  682. HALMAC_PWR_INTF_ALL_MSK,
  683. HALMAC_PWR_ADDR_MAC,
  684. HALMAC_PWR_CMD_WRITE, BIT(0), 0},
  685. {0x0002,
  686. HALMAC_PWR_CUT_ALL_MSK,
  687. HALMAC_PWR_INTF_ALL_MSK,
  688. HALMAC_PWR_ADDR_MAC,
  689. HALMAC_PWR_CMD_DELAY, 0, HALMAC_PWR_DELAY_US},
  690. {0x0002,
  691. HALMAC_PWR_CUT_ALL_MSK,
  692. HALMAC_PWR_INTF_ALL_MSK,
  693. HALMAC_PWR_ADDR_MAC,
  694. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  695. {0x0100,
  696. HALMAC_PWR_CUT_ALL_MSK,
  697. HALMAC_PWR_INTF_ALL_MSK,
  698. HALMAC_PWR_ADDR_MAC,
  699. HALMAC_PWR_CMD_WRITE, 0xFF, 0x3F},
  700. {0x0101,
  701. HALMAC_PWR_CUT_ALL_MSK,
  702. HALMAC_PWR_INTF_ALL_MSK,
  703. HALMAC_PWR_ADDR_MAC,
  704. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  705. {0x0553,
  706. HALMAC_PWR_CUT_ALL_MSK,
  707. HALMAC_PWR_INTF_ALL_MSK,
  708. HALMAC_PWR_ADDR_MAC,
  709. HALMAC_PWR_CMD_WRITE, BIT(5), BIT(5)},
  710. {0x0008,
  711. HALMAC_PWR_CUT_ALL_MSK,
  712. HALMAC_PWR_INTF_ALL_MSK,
  713. HALMAC_PWR_ADDR_MAC,
  714. HALMAC_PWR_CMD_WRITE, BIT(4), BIT(4)},
  715. {0x0109,
  716. HALMAC_PWR_CUT_ALL_MSK,
  717. HALMAC_PWR_INTF_ALL_MSK,
  718. HALMAC_PWR_ADDR_MAC,
  719. HALMAC_PWR_CMD_POLLING, BIT(7), BIT(7)},
  720. {0x0090,
  721. HALMAC_PWR_CUT_ALL_MSK,
  722. HALMAC_PWR_INTF_ALL_MSK,
  723. HALMAC_PWR_ADDR_MAC,
  724. HALMAC_PWR_CMD_WRITE, BIT(0), BIT(0)},
  725. {0xFFFF,
  726. HALMAC_PWR_CUT_ALL_MSK,
  727. HALMAC_PWR_INTF_ALL_MSK,
  728. 0,
  729. HALMAC_PWR_CMD_END, 0, 0},
  730. };
  731. static struct halmac_wlan_pwr_cfg TRANS_LPS_TO_ACT_8821C[] = {
  732. /* { offset, cut_msk, interface_msk, base|cmd, msk, value } */
  733. {0x0080,
  734. HALMAC_PWR_CUT_ALL_MSK,
  735. HALMAC_PWR_INTF_SDIO_MSK,
  736. HALMAC_PWR_ADDR_SDIO,
  737. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7)},
  738. {0x0002,
  739. HALMAC_PWR_CUT_ALL_MSK,
  740. HALMAC_PWR_INTF_ALL_MSK,
  741. HALMAC_PWR_ADDR_MAC,
  742. HALMAC_PWR_CMD_DELAY, 0, HALMAC_PWR_DELAY_MS},
  743. {0x0080,
  744. HALMAC_PWR_CUT_ALL_MSK,
  745. HALMAC_PWR_INTF_SDIO_MSK,
  746. HALMAC_PWR_ADDR_SDIO,
  747. HALMAC_PWR_CMD_WRITE, BIT(7), 0},
  748. {0xFE58,
  749. HALMAC_PWR_CUT_ALL_MSK,
  750. HALMAC_PWR_INTF_USB_MSK,
  751. HALMAC_PWR_ADDR_MAC,
  752. HALMAC_PWR_CMD_WRITE, 0xFF, 0x84},
  753. {0xFE58,
  754. HALMAC_PWR_CUT_ALL_MSK,
  755. HALMAC_PWR_INTF_USB_MSK,
  756. HALMAC_PWR_ADDR_MAC,
  757. HALMAC_PWR_CMD_WRITE, 0xFF, 0x04},
  758. {0x03D9,
  759. HALMAC_PWR_CUT_ALL_MSK,
  760. HALMAC_PWR_INTF_PCI_MSK,
  761. HALMAC_PWR_ADDR_MAC,
  762. HALMAC_PWR_CMD_WRITE, BIT(7), BIT(7)},
  763. {0x0002,
  764. HALMAC_PWR_CUT_ALL_MSK,
  765. HALMAC_PWR_INTF_PCI_MSK,
  766. HALMAC_PWR_ADDR_MAC,
  767. HALMAC_PWR_CMD_DELAY, 0, HALMAC_PWR_DELAY_MS},
  768. {0x03D9,
  769. HALMAC_PWR_CUT_ALL_MSK,
  770. HALMAC_PWR_INTF_PCI_MSK,
  771. HALMAC_PWR_ADDR_MAC,
  772. HALMAC_PWR_CMD_WRITE, BIT(7), 0},
  773. {0x0002,
  774. HALMAC_PWR_CUT_ALL_MSK,
  775. HALMAC_PWR_INTF_ALL_MSK,
  776. HALMAC_PWR_ADDR_MAC,
  777. HALMAC_PWR_CMD_DELAY, 0, HALMAC_PWR_DELAY_MS},
  778. {0x0008,
  779. HALMAC_PWR_CUT_ALL_MSK,
  780. HALMAC_PWR_INTF_ALL_MSK,
  781. HALMAC_PWR_ADDR_MAC,
  782. HALMAC_PWR_CMD_WRITE, BIT(4), 0},
  783. {0x0109,
  784. HALMAC_PWR_CUT_ALL_MSK,
  785. HALMAC_PWR_INTF_ALL_MSK,
  786. HALMAC_PWR_ADDR_MAC,
  787. HALMAC_PWR_CMD_POLLING, BIT(7), 0},
  788. {0x0101,
  789. HALMAC_PWR_CUT_ALL_MSK,
  790. HALMAC_PWR_INTF_ALL_MSK,
  791. HALMAC_PWR_ADDR_MAC,
  792. HALMAC_PWR_CMD_WRITE, BIT(1), BIT(1)},
  793. {0x0100,
  794. HALMAC_PWR_CUT_ALL_MSK,
  795. HALMAC_PWR_INTF_ALL_MSK,
  796. HALMAC_PWR_ADDR_MAC,
  797. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF },
  798. {0x0002,
  799. HALMAC_PWR_CUT_ALL_MSK,
  800. HALMAC_PWR_INTF_ALL_MSK,
  801. HALMAC_PWR_ADDR_MAC,
  802. HALMAC_PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)},
  803. {0x0522,
  804. HALMAC_PWR_CUT_ALL_MSK,
  805. HALMAC_PWR_INTF_ALL_MSK,
  806. HALMAC_PWR_ADDR_MAC,
  807. HALMAC_PWR_CMD_WRITE, 0xFF, 0},
  808. {0x113C,
  809. HALMAC_PWR_CUT_ALL_MSK,
  810. HALMAC_PWR_INTF_ALL_MSK,
  811. HALMAC_PWR_ADDR_MAC,
  812. HALMAC_PWR_CMD_WRITE, 0xFF, 0x03},
  813. {0x0124,
  814. HALMAC_PWR_CUT_ALL_MSK,
  815. HALMAC_PWR_INTF_ALL_MSK,
  816. HALMAC_PWR_ADDR_MAC,
  817. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  818. {0x0125,
  819. HALMAC_PWR_CUT_ALL_MSK,
  820. HALMAC_PWR_INTF_ALL_MSK,
  821. HALMAC_PWR_ADDR_MAC,
  822. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  823. {0x0126,
  824. HALMAC_PWR_CUT_ALL_MSK,
  825. HALMAC_PWR_INTF_ALL_MSK,
  826. HALMAC_PWR_ADDR_MAC,
  827. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  828. {0x0127,
  829. HALMAC_PWR_CUT_ALL_MSK,
  830. HALMAC_PWR_INTF_ALL_MSK,
  831. HALMAC_PWR_ADDR_MAC,
  832. HALMAC_PWR_CMD_WRITE, 0xFF, 0xFF},
  833. {0x0090,
  834. HALMAC_PWR_CUT_ALL_MSK,
  835. HALMAC_PWR_INTF_ALL_MSK,
  836. HALMAC_PWR_ADDR_MAC,
  837. HALMAC_PWR_CMD_WRITE, BIT(1), 0},
  838. {0x0101,
  839. HALMAC_PWR_CUT_ALL_MSK,
  840. HALMAC_PWR_INTF_ALL_MSK,
  841. HALMAC_PWR_ADDR_MAC,
  842. HALMAC_PWR_CMD_WRITE, BIT(2), 0},
  843. {0xFFFF,
  844. HALMAC_PWR_CUT_ALL_MSK,
  845. HALMAC_PWR_INTF_ALL_MSK,
  846. 0,
  847. HALMAC_PWR_CMD_END, 0, 0},
  848. };
  849. /* Suspend Array */
  850. struct halmac_wlan_pwr_cfg *suspend_flow_8821c[] = {
  851. TRANS_ACT_TO_CARDEMU_8821C,
  852. TRANS_CARDEMU_TO_SUS_8821C,
  853. NULL
  854. };
  855. /* Resume Array */
  856. struct halmac_wlan_pwr_cfg *resume_flow_8821c[] = {
  857. TRANS_SUS_TO_CARDEMU_8821C,
  858. TRANS_CARDEMU_TO_ACT_8821C,
  859. NULL
  860. };
  861. /* HWPDN Array - HW behavior */
  862. struct halmac_wlan_pwr_cfg *hwpdn_flow_8821c[] = {
  863. NULL
  864. };
  865. /* Enter LPS - FW behavior */
  866. struct halmac_wlan_pwr_cfg *enter_lps_flow_8821c[] = {
  867. TRANS_ACT_TO_LPS_8821C,
  868. NULL
  869. };
  870. /* Enter Deep LPS - FW behavior */
  871. struct halmac_wlan_pwr_cfg *enter_dlps_flow_8821c[] = {
  872. TRANS_ACT_TO_DEEP_LPS_8821C,
  873. NULL
  874. };
  875. /* Leave LPS -FW behavior */
  876. struct halmac_wlan_pwr_cfg *leave_lps_flow_8821c[] = {
  877. TRANS_LPS_TO_ACT_8821C,
  878. NULL
  879. };
  880. #endif
  881. #endif /* HALMAC_8821C_SUPPORT */