0001
0002
0003
0004 #ifndef __RTL92E_PWRSEQ_H__
0005 #define __RTL92E_PWRSEQ_H__
0006
0007 #include "../pwrseqcmd.h"
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #define RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS 18
0032 #define RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS 18
0033 #define RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS 18
0034 #define RTL8192E_TRANS_SUS_TO_CARDEMU_STEPS 18
0035 #define RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS 18
0036 #define RTL8192E_TRANS_PDN_TO_CARDEMU_STEPS 18
0037 #define RTL8192E_TRANS_ACT_TO_LPS_STEPS 23
0038 #define RTL8192E_TRANS_LPS_TO_ACT_STEPS 23
0039 #define RTL8192E_TRANS_END_STEPS 1
0040
0041 #define RTL8192E_TRANS_CARDEMU_TO_ACT \
0042 \
0043 \
0044 \
0045 \
0046 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0047 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
0048 \
0049 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0050 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
0051 \
0052 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0053 PWR_BASEADDR_MAC , PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0}, \
0054 \
0055 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0056 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
0057 \
0058 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0059 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0060 \
0061 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0062 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0063 \
0064 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0065 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(0), 0},
0066
0067 #define RTL8192E_TRANS_ACT_TO_CARDEMU \
0068 \
0069 \
0070 \
0071 \
0072 {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0073 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
0074 \
0075 {0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0076 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0}, \
0077 \
0078 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0079 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
0080 \
0081 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0082 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(1), 0},
0083
0084 #define RTL8192E_TRANS_CARDEMU_TO_SUS \
0085 \
0086 \
0087 \
0088 \
0089 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
0090 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))},\
0091 \
0092 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0093 PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
0094 PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
0095 \
0096 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
0097 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},\
0098 \
0099 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0100 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0101 \
0102 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0103 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
0104
0105 #define RTL8192E_TRANS_SUS_TO_CARDEMU \
0106 \
0107 \
0108 \
0109 \
0110 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0111 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
0112 \
0113 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0114 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
0115 \
0116 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0117 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
0118
0119 #define RTL8192E_TRANS_CARDEMU_TO_CARDDIS \
0120 \
0121 \
0122 \
0123 \
0124 {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0125 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x20}, \
0126 \
0127 {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0128 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
0129 \
0130 {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0131 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
0132 \
0133 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0134 PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \
0135 PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
0136 \
0137 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
0138 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), BIT(2)}, \
0139 \
0140 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0141 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0142 \
0143 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0144 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), 0},
0145
0146 #define RTL8192E_TRANS_CARDDIS_TO_CARDEMU \
0147 \
0148 \
0149 \
0150 \
0151 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0152 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, BIT(0), 0}, \
0153 \
0154 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0155 PWR_BASEADDR_SDIO , PWR_CMD_POLLING, BIT(1), BIT(1)}, \
0156 \
0157 {0x0011, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0158 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0159 \
0160 {0x00CC, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0161 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(2), 0}, \
0162 \
0163 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0164 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(3) | BIT(4), 0},
0165
0166 #define RTL8192E_TRANS_CARDEMU_TO_PDN \
0167 \
0168 \
0169 \
0170 \
0171 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0172 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
0173 \
0174 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0175 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), BIT(7)},
0176
0177 #define RTL8192E_TRANS_PDN_TO_CARDEMU \
0178 \
0179 \
0180 \
0181 \
0182 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0183 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(7), 0},
0184
0185 #define RTL8192E_TRANS_ACT_TO_LPS \
0186 \
0187 \
0188 \
0189 \
0190 {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
0191 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
0192 \
0193 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0194 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
0195 \
0196 {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0197 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
0198 \
0199 {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0200 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
0201 \
0202 {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0203 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
0204 \
0205 {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0206 PWR_BASEADDR_MAC , PWR_CMD_POLLING, 0xFF, 0}, \
0207 \
0208 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0209 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(0), 0}, \
0210 \
0211 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0212 PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \
0213 \
0214 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0215 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
0216 \
0217 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0218 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x03}, \
0219 \
0220 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0221 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), 0}, \
0222 \
0223 {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0224 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x00}, \
0225 \
0226 {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0227 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(5), BIT(5)},
0228
0229 #define RTL8192E_TRANS_LPS_TO_ACT \
0230 \
0231 \
0232 \
0233 \
0234 {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \
0235 PWR_BASEADDR_SDIO , PWR_CMD_WRITE, 0xFF, 0x84}, \
0236 \
0237 {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \
0238 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
0239 \
0240 {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \
0241 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0x84}, \
0242 \
0243 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0244 PWR_BASEADDR_MAC , PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \
0245 \
0246 {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0247 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(4), 0}, \
0248 \
0249 {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0250 PWR_BASEADDR_MAC , PWR_CMD_POLLING, BIT(7), 0}, \
0251 \
0252 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0253 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1), BIT(1)}, \
0254 \
0255 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0256 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF}, \
0257 \
0258 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0259 PWR_BASEADDR_MAC , PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)},\
0260 \
0261 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0262 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0}, \
0263 \
0264 {0x013D, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0265 PWR_BASEADDR_MAC , PWR_CMD_WRITE, 0xFF, 0xFF},
0266
0267 #define RTL8192E_TRANS_END \
0268 \
0269 \
0270 \
0271 {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \
0272 0, PWR_CMD_END, 0, 0},
0273
0274 extern struct wlan_pwr_cfg rtl8192E_power_on_flow
0275 [RTL8192E_TRANS_CARDEMU_TO_ACT_STEPS +
0276 RTL8192E_TRANS_END_STEPS];
0277 extern struct wlan_pwr_cfg rtl8192E_radio_off_flow
0278 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0279 RTL8192E_TRANS_END_STEPS];
0280 extern struct wlan_pwr_cfg rtl8192E_card_disable_flow
0281 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0282 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
0283 RTL8192E_TRANS_END_STEPS];
0284 extern struct wlan_pwr_cfg rtl8192E_card_enable_flow
0285 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0286 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
0287 RTL8192E_TRANS_END_STEPS];
0288 extern struct wlan_pwr_cfg rtl8192E_suspend_flow
0289 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0290 RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
0291 RTL8192E_TRANS_END_STEPS];
0292 extern struct wlan_pwr_cfg rtl8192E_resume_flow
0293 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0294 RTL8192E_TRANS_CARDEMU_TO_SUS_STEPS +
0295 RTL8192E_TRANS_END_STEPS];
0296 extern struct wlan_pwr_cfg rtl8192E_hwpdn_flow
0297 [RTL8192E_TRANS_ACT_TO_CARDEMU_STEPS +
0298 RTL8192E_TRANS_CARDEMU_TO_PDN_STEPS +
0299 RTL8192E_TRANS_END_STEPS];
0300 extern struct wlan_pwr_cfg rtl8192E_enter_lps_flow
0301 [RTL8192E_TRANS_ACT_TO_LPS_STEPS +
0302 RTL8192E_TRANS_END_STEPS];
0303 extern struct wlan_pwr_cfg rtl8192E_leave_lps_flow
0304 [RTL8192E_TRANS_LPS_TO_ACT_STEPS +
0305 RTL8192E_TRANS_END_STEPS];
0306
0307
0308 #define RTL8192E_NIC_PWR_ON_FLOW rtl8192E_power_on_flow
0309 #define RTL8192E_NIC_RF_OFF_FLOW rtl8192E_radio_off_flow
0310 #define RTL8192E_NIC_DISABLE_FLOW rtl8192E_card_disable_flow
0311 #define RTL8192E_NIC_ENABLE_FLOW rtl8192E_card_enable_flow
0312 #define RTL8192E_NIC_SUSPEND_FLOW rtl8192E_suspend_flow
0313 #define RTL8192E_NIC_RESUME_FLOW rtl8192E_resume_flow
0314 #define RTL8192E_NIC_PDN_FLOW rtl8192E_hwpdn_flow
0315 #define RTL8192E_NIC_LPS_ENTER_FLOW rtl8192E_enter_lps_flow
0316 #define RTL8192E_NIC_LPS_LEAVE_FLOW rtl8192E_leave_lps_flow
0317
0318 #endif