pwrseq.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2009-2014 Realtek Corporation.
  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. * The full GNU General Public License is included in this distribution in the
  15. * file called LICENSE.
  16. *
  17. * Contact Information:
  18. * wlanfae <wlanfae@realtek.com>
  19. * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20. * Hsinchu 300, Taiwan.
  21. *
  22. * Larry Finger <Larry.Finger@lwfinger.net>
  23. *
  24. *****************************************************************************/
  25. #ifndef __RTL92E_PWRSEQ_H__
  26. #define __RTL92E_PWRSEQ_H__
  27. #include "../pwrseqcmd.h"
  28. /**
  29. * Check document WM-20110607-Paul-RTL8192E_Power_Architecture-R02.vsd
  30. * There are 6 HW Power States:
  31. * 0: POFF--Power Off
  32. * 1: PDN--Power Down
  33. * 2: CARDEMU--Card Emulation
  34. * 3: ACT--Active Mode
  35. * 4: LPS--Low Power State
  36. * 5: SUS--Suspend
  37. *
  38. * The transision from different states are defined below
  39. * TRANS_CARDEMU_TO_ACT
  40. * TRANS_ACT_TO_CARDEMU
  41. * TRANS_CARDEMU_TO_SUS
  42. * TRANS_SUS_TO_CARDEMU
  43. * TRANS_CARDEMU_TO_PDN
  44. * TRANS_ACT_TO_LPS
  45. * TRANS_LPS_TO_ACT
  46. *
  47. * TRANS_END
  48. * PWR SEQ Version: rtl8192E_PwrSeq_V09.h
  49. */
  50. #define RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS 18
  51. #define RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS 18
  52. #define RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS 18
  53. #define RTL8192E_TRANS_SUS_TO_CARDEMU_STEPS 18
  54. #define RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS 18
  55. #define RTL8192E_TRANS_PDN_TO_CARDEMU_STEPS 18
  56. #define RTL8192E_TRANS_ACT_TO_LPS_STEPS 23
  57. #define RTL8192E_TRANS_LPS_TO_ACT_STEPS 23
  58. #define RTL8192E_TRANS_END_STEPS 1
  59. #define RTL8192E_TRANS_CARDEMU_TO_ACT \
  60. /* format */ \
  61. /* comments here */ \
  62. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  63. /* disable HWPDN 0x04[15]=0*/ \
  64. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  65. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
  66. /* disable SW LPS 0x04[10]=0*/ \
  67. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  68. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
  69. /* disable WL suspend*/ \
  70. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  71. PWR_BASEADDR_MAC , PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0}, \
  72. /* wait till 0x04[17] = 1 power ready*/ \
  73. {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  74. PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
  75. /* release WLON reset 0x04[16]=1*/ \
  76. {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  77. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
  78. /* polling until return 0*/ \
  79. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  80. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
  81. /**/ \
  82. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  83. PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(0), 0},
  84. #define RTL8192E_TRANS_ACT_TO_CARDEMU \
  85. /* format */ \
  86. /* comments here */ \
  87. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  88. /*0x1F[7:0] = 0 turn off RF*/ \
  89. {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  90. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
  91. /*0x4C[23]=0x4E[7]=0, switch DPDT_SEL_P output from register 0x65[2] */\
  92. {0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  93. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
  94. /*0x04[9] = 1 turn off MAC by HW state machine*/ \
  95. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  96. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
  97. /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \
  98. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  99. PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), 0},
  100. #define RTL8192E_TRANS_CARDEMU_TO_SUS \
  101. /* format */ \
  102. /* comments here */ \
  103. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  104. /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
  105. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
  106. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))},\
  107. /*0x04[12:11] = 2b'01 enable WL suspend*/ \
  108. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
  109. PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
  110. PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
  111. /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
  112. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
  113. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},\
  114. /*Set SDIO suspend local register*/ \
  115. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  116. PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
  117. /*wait power state to suspend*/ \
  118. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  119. PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
  120. #define RTL8192E_TRANS_SUS_TO_CARDEMU \
  121. /* format */ \
  122. /* comments here */ \
  123. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  124. /*Set SDIO suspend local register*/ \
  125. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  126. PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
  127. /*wait power state to suspend*/ \
  128. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  129. PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
  130. /*0x04[12:11] = 2b'00 disable WL suspend*/ \
  131. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  132. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
  133. #define RTL8192E_TRANS_CARDEMU_TO_CARDDIS \
  134. /* format */ \
  135. /* comments here */ \
  136. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  137. /*0x07=0x20 , SOP option to disable BG/MB*/ \
  138. {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  139. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x20}, \
  140. /*Unlock small LDO Register*/ \
  141. {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  142. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
  143. /*Disable small LDO*/ \
  144. {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  145. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
  146. /*0x04[12:11] = 2b'01 enable WL suspend*/ \
  147. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
  148. PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
  149. PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
  150. /*0x04[10] = 1, enable SW LPS*/ \
  151. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
  152. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
  153. /*Set SDIO suspend local register*/ \
  154. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  155. PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
  156. /*wait power state to suspend*/ \
  157. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  158. PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
  159. #define RTL8192E_TRANS_CARDDIS_TO_CARDEMU \
  160. /* format */ \
  161. /* comments here */ \
  162. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  163. /*Set SDIO suspend local register*/ \
  164. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  165. PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
  166. /*wait power state to suspend*/ \
  167. {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  168. PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
  169. /*Enable small LDO*/ \
  170. {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  171. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
  172. /*Lock small LDO Register*/ \
  173. {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  174. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
  175. /*0x04[12:11] = 2b'00 disable WL suspend*/ \
  176. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  177. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
  178. #define RTL8192E_TRANS_CARDEMU_TO_PDN \
  179. /* format */ \
  180. /* comments here */ \
  181. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  182. /* 0x04[16] = 0*/ \
  183. {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  184. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
  185. /* 0x04[15] = 1*/ \
  186. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  187. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), BIT(7)},
  188. #define RTL8192E_TRANS_PDN_TO_CARDEMU \
  189. /* format */ \
  190. /* comments here */ \
  191. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  192. /* 0x04[15] = 0*/ \
  193. {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  194. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0},
  195. #define RTL8192E_TRANS_ACT_TO_LPS \
  196. /* format */ \
  197. /* comments here */ \
  198. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  199. /*PCIe DMA stop*/ \
  200. {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
  201. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
  202. /*Tx Pause*/ \
  203. {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  204. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
  205. /*Should be zero if no packet is transmitting*/ \
  206. {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  207. PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
  208. /*Should be zero if no packet is transmitting*/ \
  209. {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  210. PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
  211. /*Should be zero if no packet is transmitting*/ \
  212. {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  213. PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
  214. /*Should be zero if no packet is transmitting*/ \
  215. {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  216. PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
  217. /*CCK and OFDM are disabled,and clock are gated*/ \
  218. {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  219. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
  220. /*Delay 1us*/ \
  221. {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  222. PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \
  223. /*Whole BB is reset*/ \
  224. {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  225. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
  226. /*Reset MAC TRX*/ \
  227. {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  228. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x03}, \
  229. /*check if removed later*/ \
  230. {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  231. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
  232. /*When driver enter Sus/ Disable, enable LOP for BT*/ \
  233. {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  234. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x00}, \
  235. /*Respond TxOK to scheduler*/ \
  236. {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  237. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(5), BIT(5)},
  238. #define RTL8192E_TRANS_LPS_TO_ACT \
  239. /* format */ \
  240. /* comments here */ \
  241. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  242. /*SDIO RPWM, For Repeatly In and out, Taggle bit should be changed*/\
  243. {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
  244. PWR_BASEADDR_SDIO , PWR_CMD_WRITE, 0xFF, 0x84}, \
  245. /*USB RPWM*/ \
  246. {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \
  247. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
  248. /*PCIe RPWM*/ \
  249. {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
  250. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
  251. /*Delay*/ \
  252. {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  253. PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \
  254. /*0x08[4] = 0 switch TSF to 40M*/ \
  255. {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  256. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4), 0}, \
  257. /*Polling 0x109[7]=0 TSF in 40M*/ \
  258. {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  259. PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(7), 0}, \
  260. /*0x101[1] = 1*/ \
  261. {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  262. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
  263. /*0x100[7:0] = 0xFF enable WMAC TRX*/ \
  264. {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  265. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
  266. /* 0x02[1:0] = 2b'11 enable BB macro*/ \
  267. {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  268. PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)},\
  269. /*0x522 = 0*/ \
  270. {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  271. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
  272. /*Clear ISR*/ \
  273. {0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  274. PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF},
  275. #define RTL8192E_TRANS_END \
  276. /* format */ \
  277. /* comments here */ \
  278. /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\
  279. {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
  280. 0, PWR_CMD_END, 0, 0},
  281. extern struct wlan_pwr_cfg rtl8192E_power_on_flow
  282. [RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS +
  283. RTL8192E_TRANS_END_STEPS];
  284. extern struct wlan_pwr_cfg rtl8192E_radio_off_flow
  285. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  286. RTL8192E_TRANS_END_STEPS];
  287. extern struct wlan_pwr_cfg rtl8192E_card_disable_flow
  288. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  289. RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
  290. RTL8192E_TRANS_END_STEPS];
  291. extern struct wlan_pwr_cfg rtl8192E_card_enable_flow
  292. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  293. RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
  294. RTL8192E_TRANS_END_STEPS];
  295. extern struct wlan_pwr_cfg rtl8192E_suspend_flow
  296. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  297. RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
  298. RTL8192E_TRANS_END_STEPS];
  299. extern struct wlan_pwr_cfg rtl8192E_resume_flow
  300. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  301. RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
  302. RTL8192E_TRANS_END_STEPS];
  303. extern struct wlan_pwr_cfg rtl8192E_hwpdn_flow
  304. [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
  305. RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
  306. RTL8192E_TRANS_END_STEPS];
  307. extern struct wlan_pwr_cfg rtl8192E_enter_lps_flow
  308. [RTL8192E_TRANS_ACT_TO_LPS_STEPS +
  309. RTL8192E_TRANS_END_STEPS];
  310. extern struct wlan_pwr_cfg rtl8192E_leave_lps_flow
  311. [RTL8192E_TRANS_LPS_TO_ACT_STEPS +
  312. RTL8192E_TRANS_END_STEPS];
  313. /* RTL8192EE Power Configuration CMDs for PCIe interface */
  314. #define RTL8192E_NIC_PWR_ON_FLOW rtl8192E_power_on_flow
  315. #define RTL8192E_NIC_RF_OFF_FLOW rtl8192E_radio_off_flow
  316. #define RTL8192E_NIC_DISABLE_FLOW rtl8192E_card_disable_flow
  317. #define RTL8192E_NIC_ENABLE_FLOW rtl8192E_card_enable_flow
  318. #define RTL8192E_NIC_SUSPEND_FLOW rtl8192E_suspend_flow
  319. #define RTL8192E_NIC_RESUME_FLOW rtl8192E_resume_flow
  320. #define RTL8192E_NIC_PDN_FLOW rtl8192E_hwpdn_flow
  321. #define RTL8192E_NIC_LPS_ENTER_FLOW rtl8192E_enter_lps_flow
  322. #define RTL8192E_NIC_LPS_LEAVE_FLOW rtl8192E_leave_lps_flow
  323. #endif