0001
0002
0003
0004 #ifndef __RTL8723E_PWRSEQ_H__
0005 #define __RTL8723E_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 #define RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS 10
0031 #define RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS 10
0032 #define RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS 10
0033 #define RTL8723A_TRANS_SUS_TO_CARDEMU_STEPS 10
0034 #define RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS 10
0035 #define RTL8723A_TRANS_PDN_TO_CARDEMU_STEPS 10
0036 #define RTL8723A_TRANS_ACT_TO_LPS_STEPS 15
0037 #define RTL8723A_TRANS_LPS_TO_ACT_STEPS 15
0038 #define RTL8723A_TRANS_END_STEPS 1
0039
0040
0041
0042
0043 #define RTL8723A_TRANS_CARDEMU_TO_ACT \
0044 \
0045 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0046 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), 0},\
0047 \
0048 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0049 PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)},\
0050 \
0051 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0052 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},\
0053 \
0054 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0055 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},\
0056 \
0057 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0058 PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0},\
0059 \
0060 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0061 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},\
0062 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0063 PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0},
0064
0065
0066
0067
0068 #define RTL8723A_TRANS_ACT_TO_CARDEMU \
0069 \
0070 {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0071 PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, \
0072 {0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0073 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},\
0074 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0075 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \
0076 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0077 PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), 0},
0078
0079
0080
0081 #define RTL8723A_TRANS_CARDEMU_TO_SUS \
0082 \
0083 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\
0084 PWR_BASEADDR_MAC, PWR_CMD_WRITE, \
0085 BIT(4)|BIT(3), (BIT(4)|BIT(3))},\
0086 \
0087 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK| \
0088 PWR_INTF_SDIO_MSK,\
0089 PWR_BASEADDR_MAC, \
0090 PWR_CMD_WRITE, \
0091 BIT(3)|BIT(4), BIT(3)}, \
0092 \
0093 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0094 PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, \
0095 PWR_CMD_WRITE, BIT(3)|BIT(4), \
0096 BIT(3)|BIT(4)}, \
0097 \
0098 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0099 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0100 PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0101 \
0102 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0103 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0104 PWR_CMD_POLLING, BIT(1), 0},
0105
0106
0107
0108
0109 #define RTL8723A_TRANS_SUS_TO_CARDEMU \
0110 \
0111 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\
0112 PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0},\
0113 \
0114 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\
0115 PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)},\
0116 \
0117 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0118 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0},
0119
0120
0121
0122
0123 #define RTL8723A_TRANS_CARDEMU_TO_CARDDIS \
0124 \
0125 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0126 PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, \
0127 PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
0128 \
0129 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0130 PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC,\
0131 PWR_CMD_WRITE, BIT(2), BIT(2)}, \
0132 \
0133 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0134 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0135 PWR_CMD_WRITE, BIT(0), BIT(0)}, \
0136 \
0137 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0138 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0139 PWR_CMD_POLLING, BIT(1), 0},
0140
0141
0142
0143
0144 #define RTL8723A_TRANS_CARDDIS_TO_CARDEMU\
0145 \
0146 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0147 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0148 PWR_CMD_WRITE, BIT(0), 0}, \
0149 \
0150 {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0151 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0152 PWR_CMD_POLLING, BIT(1), BIT(1)},\
0153 \
0154 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0155 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0156 PWR_CMD_WRITE, BIT(3)|BIT(4), 0},\
0157 \
0158 {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0159 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0160 PWR_CMD_WRITE, 0xFF, 0},
0161
0162
0163
0164 #define RTL8723A_TRANS_CARDEMU_TO_PDN \
0165 {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0166 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0167 PWR_CMD_WRITE, BIT(0), 0},\
0168 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0169 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0170 PWR_CMD_WRITE, BIT(7), BIT(7)},
0171
0172
0173
0174 #define RTL8723A_TRANS_PDN_TO_CARDEMU \
0175 {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0176 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0177 PWR_CMD_WRITE, BIT(7), 0},
0178
0179
0180
0181
0182 #define RTL8723A_TRANS_ACT_TO_LPS \
0183 {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0184 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0185 PWR_CMD_WRITE, 0xFF, 0xFF}, \
0186 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0187 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0188 PWR_CMD_WRITE, 0xFF, 0x7F}, \
0189 \
0190 {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0191 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0192 PWR_CMD_POLLING, 0xFF, 0},\
0193 \
0194 {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0195 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0196 PWR_CMD_POLLING, 0xFF, 0},\
0197 \
0198 {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0199 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0200 PWR_CMD_POLLING, 0xFF, 0},\
0201 \
0202 {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0203 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0204 PWR_CMD_POLLING, 0xFF, 0},\
0205 \
0206 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0207 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0208 PWR_CMD_WRITE, BIT(0), 0},\
0209 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0210 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0211 PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},\
0212 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0213 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0214 PWR_CMD_WRITE, BIT(1), 0}, \
0215 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0216 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0217 PWR_CMD_WRITE, 0xFF, 0x3F}, \
0218 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0219 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0220 PWR_CMD_WRITE, BIT(1), 0}, \
0221 \
0222 {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0223 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0224 PWR_CMD_WRITE, BIT(5), BIT(5)},\
0225
0226 #define RTL8723A_TRANS_LPS_TO_ACT\
0227 \
0228 \
0229 {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0230 PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
0231 PWR_CMD_WRITE, 0xFF, 0x84}, \
0232 {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0233 PWR_INTF_USB_MSK, PWR_BASEADDR_MAC,\
0234 PWR_CMD_WRITE, 0xFF, 0x84}, \
0235 {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0236 PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC,\
0237 PWR_CMD_WRITE, 0xFF, 0x84}, \
0238 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0239 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0240 PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \
0241 \
0242 {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0243 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0244 PWR_CMD_WRITE, BIT(4), 0}, \
0245 \
0246 {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0247 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0248 PWR_CMD_POLLING, BIT(7), 0}, \
0249 \
0250 {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0251 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0252 PWR_CMD_WRITE, BIT(6)|BIT(7), 0},\
0253 \
0254 {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0255 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0256 PWR_CMD_WRITE, BIT(1), BIT(1)},\
0257 \
0258 {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0259 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0260 PWR_CMD_WRITE, 0xFF, 0xFF},\
0261 \
0262 {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0263 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0264 PWR_CMD_WRITE, BIT(1)|BIT(0), BIT(1)|BIT(0)},\
0265 {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
0266 PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
0267 PWR_CMD_WRITE, 0xFF, 0},
0268
0269
0270
0271
0272 #define RTL8723A_TRANS_END \
0273 {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
0274 0, PWR_CMD_END, 0, 0}
0275
0276 extern struct wlan_pwr_cfg rtl8723A_power_on_flow
0277 [RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS +
0278 RTL8723A_TRANS_END_STEPS];
0279 extern struct wlan_pwr_cfg rtl8723A_radio_off_flow
0280 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0281 RTL8723A_TRANS_END_STEPS];
0282 extern struct wlan_pwr_cfg rtl8723A_card_disable_flow
0283 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0284 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
0285 RTL8723A_TRANS_END_STEPS];
0286 extern struct wlan_pwr_cfg rtl8723A_card_enable_flow
0287 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0288 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
0289 RTL8723A_TRANS_END_STEPS];
0290 extern struct wlan_pwr_cfg rtl8723A_suspend_flow
0291 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0292 RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS +
0293 RTL8723A_TRANS_END_STEPS];
0294 extern struct wlan_pwr_cfg rtl8723A_resume_flow
0295 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0296 RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS +
0297 RTL8723A_TRANS_END_STEPS];
0298 extern struct wlan_pwr_cfg rtl8723A_hwpdn_flow
0299 [RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
0300 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
0301 RTL8723A_TRANS_END_STEPS];
0302 extern struct wlan_pwr_cfg rtl8723A_enter_lps_flow
0303 [RTL8723A_TRANS_ACT_TO_LPS_STEPS + RTL8723A_TRANS_END_STEPS];
0304 extern struct wlan_pwr_cfg rtl8723A_leave_lps_flow
0305 [RTL8723A_TRANS_LPS_TO_ACT_STEPS + RTL8723A_TRANS_END_STEPS];
0306
0307
0308 #define RTL8723_NIC_PWR_ON_FLOW rtl8723A_power_on_flow
0309 #define RTL8723_NIC_RF_OFF_FLOW rtl8723A_radio_off_flow
0310 #define RTL8723_NIC_DISABLE_FLOW rtl8723A_card_disable_flow
0311 #define RTL8723_NIC_ENABLE_FLOW rtl8723A_card_enable_flow
0312 #define RTL8723_NIC_SUSPEND_FLOW rtl8723A_suspend_flow
0313 #define RTL8723_NIC_RESUME_FLOW rtl8723A_resume_flow
0314 #define RTL8723_NIC_PDN_FLOW rtl8723A_hwpdn_flow
0315 #define RTL8723_NIC_LPS_ENTER_FLOW rtl8723A_enter_lps_flow
0316 #define RTL8723_NIC_LPS_LEAVE_FLOW rtl8723A_leave_lps_flow
0317
0318 #endif