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