18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Copyright(c) 2009-2010 Realtek Corporation.*/ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef __RTL8821AE_PWRSEQ_H__ 58c2ecf20Sopenharmony_ci#define __RTL8821AE_PWRSEQ_H__ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include "../pwrseqcmd.h" 88c2ecf20Sopenharmony_ci#include "../btcoexist/halbt_precomp.h" 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_ACT_STEPS 15 118c2ecf20Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 15 128c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_SUS_STEPS 15 138c2ecf20Sopenharmony_ci#define RTL8812_TRANS_SUS_TO_CARDEMU_STEPS 15 148c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 25 158c2ecf20Sopenharmony_ci#define RTL8812_TRANS_PDN_TO_CARDEMU_STEPS 15 168c2ecf20Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_LPS_STEPS 15 178c2ecf20Sopenharmony_ci#define RTL8812_TRANS_LPS_TO_ACT_STEPS 15 188c2ecf20Sopenharmony_ci#define RTL8812_TRANS_END_STEPS 1 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci/* The following macros have the following format: 218c2ecf20Sopenharmony_ci * { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value 228c2ecf20Sopenharmony_ci * comments }, 238c2ecf20Sopenharmony_ci */ 248c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_ACT \ 258c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 268c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 278c2ecf20Sopenharmony_ci /* disable SW LPS 0x04[10]=0*/}, \ 288c2ecf20Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 298c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, BIT1 \ 308c2ecf20Sopenharmony_ci /* wait till 0x04[17] = 1 power ready*/}, \ 318c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 328c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 338c2ecf20Sopenharmony_ci /* disable HWPDN 0x04[15]=0*/}, \ 348c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 358c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 368c2ecf20Sopenharmony_ci /* disable WL suspend*/}, \ 378c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 388c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 398c2ecf20Sopenharmony_ci /* polling until return 0*/}, \ 408c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 418c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT0, 0}, 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_CARDEMU \ 448c2ecf20Sopenharmony_ci {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 458c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 468c2ecf20Sopenharmony_ci /* 0xc00[7:0] = 4 turn off 3-wire */}, \ 478c2ecf20Sopenharmony_ci {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 488c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 498c2ecf20Sopenharmony_ci /* 0xe00[7:0] = 4 turn off 3-wire */}, \ 508c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 518c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 528c2ecf20Sopenharmony_ci /* 0x2[0] = 0 RESET BB, CLOSE RF */}, \ 538c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 548c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 558c2ecf20Sopenharmony_ci /*Delay 1us*/}, \ 568c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 578c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 588c2ecf20Sopenharmony_ci /* Whole BB is reset*/}, \ 598c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 608c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x2A \ 618c2ecf20Sopenharmony_ci /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/}, \ 628c2ecf20Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 638c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 648c2ecf20Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 658c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 668c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 678c2ecf20Sopenharmony_ci /*0x04[9] = 1 turn off MAC by HW state machine*/}, \ 688c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 698c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, 0 \ 708c2ecf20Sopenharmony_ci /*wait till 0x04[9] = 0 polling until return 0 to disable*/}, 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_SUS \ 738c2ecf20Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 748c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xc0}, \ 758c2ecf20Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 768c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xE0}, \ 778c2ecf20Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 788c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ 798c2ecf20Sopenharmony_ci /* gpio11 input mode, gpio10~8 output mode */}, \ 808c2ecf20Sopenharmony_ci {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 818c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 828c2ecf20Sopenharmony_ci /* gpio 0~7 output same value as input ?? */}, \ 838c2ecf20Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 848c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff \ 858c2ecf20Sopenharmony_ci /* gpio0~7 output mode */}, \ 868c2ecf20Sopenharmony_ci {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 878c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 888c2ecf20Sopenharmony_ci /* 0x47[7:0] = 00 gpio mode */}, \ 898c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 908c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 918c2ecf20Sopenharmony_ci /* suspend option all off */}, \ 928c2ecf20Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 938c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, BIT7 \ 948c2ecf20Sopenharmony_ci /*0x14[7] = 1 turn on ZCD */}, \ 958c2ecf20Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 968c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, BIT0 \ 978c2ecf20Sopenharmony_ci /* 0x15[0] =1 trun on ZCD */}, \ 988c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 998c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, BIT4 \ 1008c2ecf20Sopenharmony_ci /*0x23[4] = 1 hpon LDO sleep mode */}, \ 1018c2ecf20Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1028c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 1038c2ecf20Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 1048c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1058c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3 \ 1068c2ecf20Sopenharmony_ci /*0x04[11] = 2b'11 enable WL suspend for PCIe*/}, 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci#define RTL8812_TRANS_SUS_TO_CARDEMU \ 1098c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1108c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 1118c2ecf20Sopenharmony_ci /*0x04[11] = 2b'01enable WL suspend*/}, \ 1128c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1138c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, 0 \ 1148c2ecf20Sopenharmony_ci /*0x23[4] = 0 hpon LDO sleep mode leave */}, \ 1158c2ecf20Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1168c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 1178c2ecf20Sopenharmony_ci /* 0x15[0] =0 trun off ZCD */}, \ 1188c2ecf20Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1198c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, 0 \ 1208c2ecf20Sopenharmony_ci /*0x14[7] = 0 turn off ZCD */}, \ 1218c2ecf20Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1228c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 1238c2ecf20Sopenharmony_ci /* gpio0~7 input mode */}, \ 1248c2ecf20Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1258c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 1268c2ecf20Sopenharmony_ci /* gpio11 input mode, gpio10~8 input mode */}, 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_CARDDIS \ 1298c2ecf20Sopenharmony_ci {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1308c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 1318c2ecf20Sopenharmony_ci /*0x03[2] = 0, reset 8051*/}, \ 1328c2ecf20Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1338c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x05 \ 1348c2ecf20Sopenharmony_ci /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/}, \ 1358c2ecf20Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1368c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xcc}, \ 1378c2ecf20Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 1388c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xEC}, \ 1398c2ecf20Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1408c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ 1418c2ecf20Sopenharmony_ci /* gpio11 input mode, gpio10~8 output mode */}, \ 1428c2ecf20Sopenharmony_ci {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1438c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 1448c2ecf20Sopenharmony_ci /* gpio 0~7 output same value as input ?? */}, \ 1458c2ecf20Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1468c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff \ 1478c2ecf20Sopenharmony_ci /* gpio0~7 output mode */}, \ 1488c2ecf20Sopenharmony_ci {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1498c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 1508c2ecf20Sopenharmony_ci /* 0x47[7:0] = 00 gpio mode */}, \ 1518c2ecf20Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1528c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, BIT7 \ 1538c2ecf20Sopenharmony_ci /*0x14[7] = 1 turn on ZCD */}, \ 1548c2ecf20Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1558c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, BIT0 \ 1568c2ecf20Sopenharmony_ci /* 0x15[0] =1 trun on ZCD */}, \ 1578c2ecf20Sopenharmony_ci {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1588c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 1598c2ecf20Sopenharmony_ci /*0x12[0] = 0 force PFM mode */}, \ 1608c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1618c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, BIT4 \ 1628c2ecf20Sopenharmony_ci /*0x23[4] = 1 hpon LDO sleep mode */}, \ 1638c2ecf20Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1648c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 1658c2ecf20Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 1668c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1678c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 1688c2ecf20Sopenharmony_ci /*0x07=0x20 , SOP option to disable BG/MB*/}, \ 1698c2ecf20Sopenharmony_ci {0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1708c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 1718c2ecf20Sopenharmony_ci /*0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8812 */}, \ 1728c2ecf20Sopenharmony_ci {0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 1738c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 1748c2ecf20Sopenharmony_ci /*0x076[1]=0 , disable RFC_1 control REG_OPT_CTRL_8812 +2 */}, \ 1758c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1768c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3 \ 1778c2ecf20Sopenharmony_ci /*0x04[11] = 2b'01 enable WL suspend*/}, 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDDIS_TO_CARDEMU \ 1808c2ecf20Sopenharmony_ci {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1818c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 1828c2ecf20Sopenharmony_ci /*0x12[0] = 1 force PWM mode */}, \ 1838c2ecf20Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1848c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, 0 \ 1858c2ecf20Sopenharmony_ci /*0x14[7] = 0 turn off ZCD */}, \ 1868c2ecf20Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1878c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 1888c2ecf20Sopenharmony_ci /* 0x15[0] =0 trun off ZCD */}, \ 1898c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1908c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, 0 \ 1918c2ecf20Sopenharmony_ci /*0x23[4] = 0 hpon LDO leave sleep mode */}, \ 1928c2ecf20Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1938c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 1948c2ecf20Sopenharmony_ci /* gpio0~7 input mode */}, \ 1958c2ecf20Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 1968c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 1978c2ecf20Sopenharmony_ci /* gpio11 input mode, gpio10~8 input mode */}, \ 1988c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 1998c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 2008c2ecf20Sopenharmony_ci /*0x04[10] = 0, enable SW LPS PCIE only*/}, \ 2018c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2028c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 2038c2ecf20Sopenharmony_ci /*0x04[11] = 2b'01enable WL suspend*/}, \ 2048c2ecf20Sopenharmony_ci {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2058c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, BIT2 \ 2068c2ecf20Sopenharmony_ci /*0x03[2] = 1, enable 8051*/}, \ 2078c2ecf20Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 2088c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 2098c2ecf20Sopenharmony_ci /*PCIe DMA start*/}, 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_PDN \ 2128c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2138c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7 \ 2148c2ecf20Sopenharmony_ci /* 0x04[15] = 1*/}, 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci#define RTL8812_TRANS_PDN_TO_CARDEMU \ 2178c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2188c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 2198c2ecf20Sopenharmony_ci /* 0x04[15] = 0*/}, 2208c2ecf20Sopenharmony_ci 2218c2ecf20Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_LPS \ 2228c2ecf20Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 2238c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 2248c2ecf20Sopenharmony_ci /*PCIe DMA stop*/}, \ 2258c2ecf20Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2268c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x7F \ 2278c2ecf20Sopenharmony_ci /*Tx Pause*/}, \ 2288c2ecf20Sopenharmony_ci {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2298c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 2308c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 2318c2ecf20Sopenharmony_ci {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2328c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 2338c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 2348c2ecf20Sopenharmony_ci {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2358c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 2368c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 2378c2ecf20Sopenharmony_ci {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2388c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 2398c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 2408c2ecf20Sopenharmony_ci {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2418c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 2428c2ecf20Sopenharmony_ci /* 0xc00[7:0] = 4 turn off 3-wire */}, \ 2438c2ecf20Sopenharmony_ci {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2448c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 2458c2ecf20Sopenharmony_ci /* 0xe00[7:0] = 4 turn off 3-wire */}, \ 2468c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2478c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 2488c2ecf20Sopenharmony_ci /*CCK and OFDM are disabled,and clock are gated,and RF closed*/}, \ 2498c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2508c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 2518c2ecf20Sopenharmony_ci /*Delay 1us*/}, \ 2528c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 2538c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 2548c2ecf20Sopenharmony_ci /* Whole BB is reset*/}, \ 2558c2ecf20Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2568c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03 \ 2578c2ecf20Sopenharmony_ci /*Reset MAC TRX*/}, \ 2588c2ecf20Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2598c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 2608c2ecf20Sopenharmony_ci /*check if removed later*/}, \ 2618c2ecf20Sopenharmony_ci {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2628c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 2638c2ecf20Sopenharmony_ci /*Respond TxOK to scheduler*/}, 2648c2ecf20Sopenharmony_ci 2658c2ecf20Sopenharmony_ci#define RTL8812_TRANS_LPS_TO_ACT \ 2668c2ecf20Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 2678c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84 \ 2688c2ecf20Sopenharmony_ci /*SDIO RPWM*/}, \ 2698c2ecf20Sopenharmony_ci {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 2708c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 2718c2ecf20Sopenharmony_ci /*USB RPWM*/}, \ 2728c2ecf20Sopenharmony_ci {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 2738c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 2748c2ecf20Sopenharmony_ci /*PCIe RPWM*/}, \ 2758c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2768c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS \ 2778c2ecf20Sopenharmony_ci /*Delay*/}, \ 2788c2ecf20Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2798c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 2808c2ecf20Sopenharmony_ci /*. 0x08[4] = 0 switch TSF to 40M*/}, \ 2818c2ecf20Sopenharmony_ci {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2828c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT7, 0 \ 2838c2ecf20Sopenharmony_ci /*Polling 0x109[7]=0 TSF in 40M*/}, \ 2848c2ecf20Sopenharmony_ci {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2858c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6|BIT7, 0 \ 2868c2ecf20Sopenharmony_ci /*. 0x29[7:6] = 2b'00 enable BB clock*/}, \ 2878c2ecf20Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2888c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 2898c2ecf20Sopenharmony_ci /*. 0x101[1] = 1*/}, \ 2908c2ecf20Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2918c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 2928c2ecf20Sopenharmony_ci /*. 0x100[7:0] = 0xFF enable WMAC TRX*/}, \ 2938c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2948c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0 \ 2958c2ecf20Sopenharmony_ci /*. 0x02[1:0] = 2b'11 enable BB macro*/}, \ 2968c2ecf20Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2978c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 2988c2ecf20Sopenharmony_ci /*. 0x522 = 0*/}, 2998c2ecf20Sopenharmony_ci 3008c2ecf20Sopenharmony_ci#define RTL8812_TRANS_END \ 3018c2ecf20Sopenharmony_ci {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 3028c2ecf20Sopenharmony_ci 0, PWR_CMD_END, 0, 0}, 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_power_on_flow 3058c2ecf20Sopenharmony_ci [RTL8812_TRANS_CARDEMU_TO_ACT_STEPS + 3068c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3078c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_radio_off_flow 3088c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3098c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3108c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_card_disable_flow 3118c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3128c2ecf20Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 3138c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3148c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_card_enable_flow 3158c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3168c2ecf20Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 3178c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3188c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_suspend_flow 3198c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3208c2ecf20Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 3218c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3228c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_resume_flow 3238c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3248c2ecf20Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 3258c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3268c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_hwpdn_flow 3278c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 3288c2ecf20Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 3298c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3308c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_enter_lps_flow 3318c2ecf20Sopenharmony_ci [RTL8812_TRANS_ACT_TO_LPS_STEPS + 3328c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3338c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_leave_lps_flow 3348c2ecf20Sopenharmony_ci [RTL8812_TRANS_LPS_TO_ACT_STEPS + 3358c2ecf20Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci/* Check document WM-20130516-JackieLau-RTL8821A_Power_Architecture-R10.vsd 3388c2ecf20Sopenharmony_ci * There are 6 HW Power States: 3398c2ecf20Sopenharmony_ci * 0: POFF--Power Off 3408c2ecf20Sopenharmony_ci * 1: PDN--Power Down 3418c2ecf20Sopenharmony_ci * 2: CARDEMU--Card Emulation 3428c2ecf20Sopenharmony_ci * 3: ACT--Active Mode 3438c2ecf20Sopenharmony_ci * 4: LPS--Low Power State 3448c2ecf20Sopenharmony_ci * 5: SUS--Suspend 3458c2ecf20Sopenharmony_ci * 3468c2ecf20Sopenharmony_ci * The transision from different states are defined below 3478c2ecf20Sopenharmony_ci * TRANS_CARDEMU_TO_ACT 3488c2ecf20Sopenharmony_ci * TRANS_ACT_TO_CARDEMU 3498c2ecf20Sopenharmony_ci * TRANS_CARDEMU_TO_SUS 3508c2ecf20Sopenharmony_ci * TRANS_SUS_TO_CARDEMU 3518c2ecf20Sopenharmony_ci * TRANS_CARDEMU_TO_PDN 3528c2ecf20Sopenharmony_ci * TRANS_ACT_TO_LPS 3538c2ecf20Sopenharmony_ci * TRANS_LPS_TO_ACT 3548c2ecf20Sopenharmony_ci * 3558c2ecf20Sopenharmony_ci * TRANS_END 3568c2ecf20Sopenharmony_ci */ 3578c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 25 3588c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 15 3598c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 15 3608c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_SUS_TO_CARDEMU_STEPS 15 3618c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU_STEPS 15 3628c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 15 3638c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_PDN_TO_CARDEMU_STEPS 15 3648c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_LPS_STEPS 15 3658c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_LPS_TO_ACT_STEPS 15 3668c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_END_STEPS 1 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_ACT \ 3698c2ecf20Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 3708c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 3718c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 3728c2ecf20Sopenharmony_ci /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/}, \ 3738c2ecf20Sopenharmony_ci {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 3748c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 3758c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 3768c2ecf20Sopenharmony_ci /*0x67[0] = 0 to disable BT_GPS_SEL pins*/}, \ 3778c2ecf20Sopenharmony_ci {0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 3788c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 3798c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS \ 3808c2ecf20Sopenharmony_ci /*Delay 1ms*/}, \ 3818c2ecf20Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 3828c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 3838c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, 0 \ 3848c2ecf20Sopenharmony_ci /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/}, \ 3858c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3868c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0 \ 3878c2ecf20Sopenharmony_ci /* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[12:11]=0*/}, \ 3888c2ecf20Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 3898c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0 , BIT0 \ 3908c2ecf20Sopenharmony_ci /* Disable USB suspend */}, \ 3918c2ecf20Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3928c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, BIT1 \ 3938c2ecf20Sopenharmony_ci /* wait till 0x04[17] = 1 power ready*/}, \ 3948c2ecf20Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 3958c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0 , 0 \ 3968c2ecf20Sopenharmony_ci /* Enable USB suspend */}, \ 3978c2ecf20Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3988c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 3998c2ecf20Sopenharmony_ci /* release WLON reset 0x04[16]=1*/}, \ 4008c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4018c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 4028c2ecf20Sopenharmony_ci /* disable HWPDN 0x04[15]=0*/}, \ 4038c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4048c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT4|BIT3), 0 \ 4058c2ecf20Sopenharmony_ci /* disable WL suspend*/}, \ 4068c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4078c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 4088c2ecf20Sopenharmony_ci /* polling until return 0*/}, \ 4098c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4108c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT0, 0 \ 4118c2ecf20Sopenharmony_ci /**/}, \ 4128c2ecf20Sopenharmony_ci {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4138c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 4148c2ecf20Sopenharmony_ci /*0x4C[24] = 0x4F[0] = 1, switch DPDT_SEL_P output from WL BB */},\ 4158c2ecf20Sopenharmony_ci {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4168c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT5|BIT4), (BIT5|BIT4) \ 4178c2ecf20Sopenharmony_ci /*0x66[13] = 0x67[5] = 1, switch for PAPE_G/PAPE_A \ 4188c2ecf20Sopenharmony_ci from WL BB ; 0x66[12] = 0x67[4] = 1, switch LNAON from WL BB */},\ 4198c2ecf20Sopenharmony_ci {0x0025, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4208c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, 0 \ 4218c2ecf20Sopenharmony_ci /*anapar_mac<118> , 0x25[6]=0 by wlan single function*/},\ 4228c2ecf20Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4238c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 4248c2ecf20Sopenharmony_ci /*Enable falling edge triggering interrupt*/},\ 4258c2ecf20Sopenharmony_ci {0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4268c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 4278c2ecf20Sopenharmony_ci /*Enable GPIO9 interrupt mode*/},\ 4288c2ecf20Sopenharmony_ci {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4298c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 4308c2ecf20Sopenharmony_ci /*Enable GPIO9 input mode*/},\ 4318c2ecf20Sopenharmony_ci {0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4328c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 4338c2ecf20Sopenharmony_ci /*Enable HSISR GPIO[C:0] interrupt*/},\ 4348c2ecf20Sopenharmony_ci {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4358c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 4368c2ecf20Sopenharmony_ci /*Enable HSISR GPIO9 interrupt*/},\ 4378c2ecf20Sopenharmony_ci {0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4388c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3A \ 4398c2ecf20Sopenharmony_ci /*0x7A = 0x3A start BT*/},\ 4408c2ecf20Sopenharmony_ci {0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4418c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF , 0x82 \ 4428c2ecf20Sopenharmony_ci /* 0x2C[23:12]=0x820 ; XTAL trim */}, \ 4438c2ecf20Sopenharmony_ci {0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4448c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 \ 4458c2ecf20Sopenharmony_ci /* 0x10[6]=1 */}, 4468c2ecf20Sopenharmony_ci 4478c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_CARDEMU \ 4488c2ecf20Sopenharmony_ci {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4498c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 4508c2ecf20Sopenharmony_ci /*0x1F[7:0] = 0 turn off RF*/}, \ 4518c2ecf20Sopenharmony_ci {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4528c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 4538c2ecf20Sopenharmony_ci /*0x4C[24] = 0x4F[0] = 0, switch DPDT_SEL_P output from \ 4548c2ecf20Sopenharmony_ci register 0x65[2] */},\ 4558c2ecf20Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4568c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 4578c2ecf20Sopenharmony_ci /*Enable rising edge triggering interrupt*/}, \ 4588c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4598c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 4608c2ecf20Sopenharmony_ci /*0x04[9] = 1 turn off MAC by HW state machine*/}, \ 4618c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4628c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, 0 \ 4638c2ecf20Sopenharmony_ci /*wait till 0x04[9] = 0 polling until return 0 to disable*/}, \ 4648c2ecf20Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 4658c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 4668c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 4678c2ecf20Sopenharmony_ci /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/}, \ 4688c2ecf20Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 4698c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 4708c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 4718c2ecf20Sopenharmony_ci /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/}, 4728c2ecf20Sopenharmony_ci 4738c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_SUS \ 4748c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 4758c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3) \ 4768c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/}, \ 4778c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 4788c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 4798c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3 \ 4808c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/}, \ 4818c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 4828c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 4838c2ecf20Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 4848c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 4858c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 4868c2ecf20Sopenharmony_ci /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/}, \ 4878c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 4888c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4 \ 4898c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/}, \ 4908c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 4918c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, BIT0 \ 4928c2ecf20Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 4938c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 4948c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, 0 \ 4958c2ecf20Sopenharmony_ci /*wait power state to suspend*/}, 4968c2ecf20Sopenharmony_ci 4978c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_SUS_TO_CARDEMU \ 4988c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4998c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3 | BIT7, 0 \ 5008c2ecf20Sopenharmony_ci /*clear suspend enable and power down enable*/}, \ 5018c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5028c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, 0 \ 5038c2ecf20Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 5048c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5058c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, BIT1 \ 5068c2ecf20Sopenharmony_ci /*wait power state to suspend*/},\ 5078c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5088c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 5098c2ecf20Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/}, \ 5108c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5118c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, 0 \ 5128c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/}, 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_CARDDIS \ 5158c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5168c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 5178c2ecf20Sopenharmony_ci /*0x07=0x20 , SOP option to disable BG/MB*/}, \ 5188c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 5198c2ecf20Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 5208c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3 \ 5218c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/}, \ 5228c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 5238c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, BIT2 \ 5248c2ecf20Sopenharmony_ci /*0x04[10] = 1, enable SW LPS*/}, \ 5258c2ecf20Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 5268c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 1 \ 5278c2ecf20Sopenharmony_ci /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/}, \ 5288c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5298c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 5308c2ecf20Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 5318c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5328c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, BIT0 \ 5338c2ecf20Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 5348c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5358c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, 0 \ 5368c2ecf20Sopenharmony_ci /*wait power state to suspend*/}, 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU \ 5398c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5408c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3 | BIT7, 0 \ 5418c2ecf20Sopenharmony_ci /*clear suspend enable and power down enable*/}, \ 5428c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5438c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, 0 \ 5448c2ecf20Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 5458c2ecf20Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5468c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, BIT1 \ 5478c2ecf20Sopenharmony_ci /*wait power state to suspend*/},\ 5488c2ecf20Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 5498c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 5508c2ecf20Sopenharmony_ci /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/}, \ 5518c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5528c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, 0 \ 5538c2ecf20Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/},\ 5548c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5558c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 5568c2ecf20Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/}, \ 5578c2ecf20Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 5588c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 5598c2ecf20Sopenharmony_ci /*PCIe DMA start*/}, 5608c2ecf20Sopenharmony_ci 5618c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_PDN \ 5628c2ecf20Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 5638c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 5648c2ecf20Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 5658c2ecf20Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 5668c2ecf20Sopenharmony_ci PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,\ 5678c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 5688c2ecf20Sopenharmony_ci /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/}, \ 5698c2ecf20Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5708c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 5718c2ecf20Sopenharmony_ci /* 0x04[16] = 0*/},\ 5728c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5738c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7 \ 5748c2ecf20Sopenharmony_ci /* 0x04[15] = 1*/}, 5758c2ecf20Sopenharmony_ci 5768c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_PDN_TO_CARDEMU \ 5778c2ecf20Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5788c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 5798c2ecf20Sopenharmony_ci /* 0x04[15] = 0*/}, 5808c2ecf20Sopenharmony_ci 5818c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_LPS \ 5828c2ecf20Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 5838c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 5848c2ecf20Sopenharmony_ci /*PCIe DMA stop*/}, \ 5858c2ecf20Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5868c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 5878c2ecf20Sopenharmony_ci /*Tx Pause*/}, \ 5888c2ecf20Sopenharmony_ci {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5898c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 5908c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 5918c2ecf20Sopenharmony_ci {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5928c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 5938c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 5948c2ecf20Sopenharmony_ci {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5958c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 5968c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 5978c2ecf20Sopenharmony_ci {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5988c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 5998c2ecf20Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 6008c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6018c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 6028c2ecf20Sopenharmony_ci /*CCK and OFDM are disabled,and clock are gated*/}, \ 6038c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6048c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 6058c2ecf20Sopenharmony_ci /*Delay 1us*/}, \ 6068c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6078c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 6088c2ecf20Sopenharmony_ci /*Whole BB is reset*/}, \ 6098c2ecf20Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6108c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03 \ 6118c2ecf20Sopenharmony_ci /*Reset MAC TRX*/}, \ 6128c2ecf20Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6138c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 6148c2ecf20Sopenharmony_ci /*check if removed later*/}, \ 6158c2ecf20Sopenharmony_ci {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 6168c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 6178c2ecf20Sopenharmony_ci /*When driver enter Sus/ Disable, enable LOP for BT*/}, \ 6188c2ecf20Sopenharmony_ci {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6198c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 6208c2ecf20Sopenharmony_ci /*Respond TxOK to scheduler*/}, 6218c2ecf20Sopenharmony_ci 6228c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_LPS_TO_ACT \ 6238c2ecf20Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 6248c2ecf20Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84 \ 6258c2ecf20Sopenharmony_ci /*SDIO RPWM*/},\ 6268c2ecf20Sopenharmony_ci {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 6278c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 6288c2ecf20Sopenharmony_ci /*USB RPWM*/},\ 6298c2ecf20Sopenharmony_ci {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 6308c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 6318c2ecf20Sopenharmony_ci /*PCIe RPWM*/},\ 6328c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6338c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS \ 6348c2ecf20Sopenharmony_ci /*Delay*/},\ 6358c2ecf20Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6368c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 6378c2ecf20Sopenharmony_ci /*. 0x08[4] = 0 switch TSF to 40M*/},\ 6388c2ecf20Sopenharmony_ci {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6398c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT7, 0 \ 6408c2ecf20Sopenharmony_ci /*Polling 0x109[7]=0 TSF in 40M*/},\ 6418c2ecf20Sopenharmony_ci {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6428c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6|BIT7, 0 \ 6438c2ecf20Sopenharmony_ci /*. 0x29[7:6] = 2b'00 enable BB clock*/},\ 6448c2ecf20Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6458c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 6468c2ecf20Sopenharmony_ci /*. 0x101[1] = 1*/},\ 6478c2ecf20Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6488c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 6498c2ecf20Sopenharmony_ci /*. 0x100[7:0] = 0xFF enable WMAC TRX*/},\ 6508c2ecf20Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6518c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0 \ 6528c2ecf20Sopenharmony_ci /*. 0x02[1:0] = 2b'11 enable BB macro*/},\ 6538c2ecf20Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6548c2ecf20Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 6558c2ecf20Sopenharmony_ci /*. 0x522 = 0*/}, 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_ci#define RTL8821A_TRANS_END \ 6588c2ecf20Sopenharmony_ci {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6598c2ecf20Sopenharmony_ci 0, PWR_CMD_END, 0, 0}, 6608c2ecf20Sopenharmony_ci 6618c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_power_on_flow 6628c2ecf20Sopenharmony_ci [RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + 6638c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6648c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_radio_off_flow 6658c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6668c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6678c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_card_disable_flow 6688c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6698c2ecf20Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + 6708c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6718c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_card_enable_flow 6728c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6738c2ecf20Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + 6748c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6758c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_suspend_flow 6768c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6778c2ecf20Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + 6788c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6798c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_resume_flow 6808c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6818c2ecf20Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + 6828c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6838c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_hwpdn_flow 6848c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 6858c2ecf20Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + 6868c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6878c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_enter_lps_flow 6888c2ecf20Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_LPS_STEPS + 6898c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6908c2ecf20Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_leave_lps_flow 6918c2ecf20Sopenharmony_ci [RTL8821A_TRANS_LPS_TO_ACT_STEPS + 6928c2ecf20Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 6938c2ecf20Sopenharmony_ci 6948c2ecf20Sopenharmony_ci/*RTL8812 Power Configuration CMDs for PCIe interface*/ 6958c2ecf20Sopenharmony_ci#define RTL8812_NIC_PWR_ON_FLOW rtl8812_power_on_flow 6968c2ecf20Sopenharmony_ci#define RTL8812_NIC_RF_OFF_FLOW rtl8812_radio_off_flow 6978c2ecf20Sopenharmony_ci#define RTL8812_NIC_DISABLE_FLOW rtl8812_card_disable_flow 6988c2ecf20Sopenharmony_ci#define RTL8812_NIC_ENABLE_FLOW rtl8812_card_enable_flow 6998c2ecf20Sopenharmony_ci#define RTL8812_NIC_SUSPEND_FLOW rtl8812_suspend_flow 7008c2ecf20Sopenharmony_ci#define RTL8812_NIC_RESUME_FLOW rtl8812_resume_flow 7018c2ecf20Sopenharmony_ci#define RTL8812_NIC_PDN_FLOW rtl8812_hwpdn_flow 7028c2ecf20Sopenharmony_ci#define RTL8812_NIC_LPS_ENTER_FLOW rtl8812_enter_lps_flow 7038c2ecf20Sopenharmony_ci#define RTL8812_NIC_LPS_LEAVE_FLOW rtl8812_leave_lps_flow 7048c2ecf20Sopenharmony_ci 7058c2ecf20Sopenharmony_ci/* RTL8821 Power Configuration CMDs for PCIe interface */ 7068c2ecf20Sopenharmony_ci#define RTL8821A_NIC_PWR_ON_FLOW rtl8821A_power_on_flow 7078c2ecf20Sopenharmony_ci#define RTL8821A_NIC_RF_OFF_FLOW rtl8821A_radio_off_flow 7088c2ecf20Sopenharmony_ci#define RTL8821A_NIC_DISABLE_FLOW rtl8821A_card_disable_flow 7098c2ecf20Sopenharmony_ci#define RTL8821A_NIC_ENABLE_FLOW rtl8821A_card_enable_flow 7108c2ecf20Sopenharmony_ci#define RTL8821A_NIC_SUSPEND_FLOW rtl8821A_suspend_flow 7118c2ecf20Sopenharmony_ci#define RTL8821A_NIC_RESUME_FLOW rtl8821A_resume_flow 7128c2ecf20Sopenharmony_ci#define RTL8821A_NIC_PDN_FLOW rtl8821A_hwpdn_flow 7138c2ecf20Sopenharmony_ci#define RTL8821A_NIC_LPS_ENTER_FLOW rtl8821A_enter_lps_flow 7148c2ecf20Sopenharmony_ci#define RTL8821A_NIC_LPS_LEAVE_FLOW rtl8821A_leave_lps_flow 7158c2ecf20Sopenharmony_ci 7168c2ecf20Sopenharmony_ci#endif 717