162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright(c) 2009-2012  Realtek Corporation.*/
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __RTL8723E_PWRSEQ_H__
562306a36Sopenharmony_ci#define __RTL8723E_PWRSEQ_H__
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include "../pwrseqcmd.h"
862306a36Sopenharmony_ci/*
962306a36Sopenharmony_ci *	Check document WM-20110607-Paul-RTL8723A_Power_Architecture-R02.vsd
1062306a36Sopenharmony_ci *	There are 6 HW Power States:
1162306a36Sopenharmony_ci *	0: POFF--Power Off
1262306a36Sopenharmony_ci *	1: PDN--Power Down
1362306a36Sopenharmony_ci *	2: CARDEMU--Card Emulation
1462306a36Sopenharmony_ci *	3: ACT--Active Mode
1562306a36Sopenharmony_ci *	4: LPS--Low Power State
1662306a36Sopenharmony_ci *	5: SUS--Suspend
1762306a36Sopenharmony_ci *
1862306a36Sopenharmony_ci *	The transision from different states are defined below
1962306a36Sopenharmony_ci *	TRANS_CARDEMU_TO_ACT
2062306a36Sopenharmony_ci *	TRANS_ACT_TO_CARDEMU
2162306a36Sopenharmony_ci *	TRANS_CARDEMU_TO_SUS
2262306a36Sopenharmony_ci *	TRANS_SUS_TO_CARDEMU
2362306a36Sopenharmony_ci *	TRANS_CARDEMU_TO_PDN
2462306a36Sopenharmony_ci *	TRANS_ACT_TO_LPS
2562306a36Sopenharmony_ci *	TRANS_LPS_TO_ACT
2662306a36Sopenharmony_ci *
2762306a36Sopenharmony_ci *	TRANS_END
2862306a36Sopenharmony_ci */
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci#define	RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS	10
3162306a36Sopenharmony_ci#define	RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS	10
3262306a36Sopenharmony_ci#define	RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS	10
3362306a36Sopenharmony_ci#define	RTL8723A_TRANS_SUS_TO_CARDEMU_STEPS	10
3462306a36Sopenharmony_ci#define	RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS	10
3562306a36Sopenharmony_ci#define	RTL8723A_TRANS_PDN_TO_CARDEMU_STEPS	10
3662306a36Sopenharmony_ci#define	RTL8723A_TRANS_ACT_TO_LPS_STEPS		15
3762306a36Sopenharmony_ci#define	RTL8723A_TRANS_LPS_TO_ACT_STEPS		15
3862306a36Sopenharmony_ci#define	RTL8723A_TRANS_END_STEPS		1
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci/* format */
4162306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }*/
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci#define RTL8723A_TRANS_CARDEMU_TO_ACT	\
4462306a36Sopenharmony_ci	/* disable SW LPS 0x04[10]=0*/	\
4562306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
4662306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), 0},\
4762306a36Sopenharmony_ci	/* wait till 0x04[17] = 1    power ready*/	\
4862306a36Sopenharmony_ci	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
4962306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)},\
5062306a36Sopenharmony_ci	/* release WLON reset  0x04[16]=1*/	\
5162306a36Sopenharmony_ci	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
5262306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},\
5362306a36Sopenharmony_ci	/* disable HWPDN 0x04[15]=0*/ \
5462306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
5562306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},\
5662306a36Sopenharmony_ci	/* disable WL suspend*/ \
5762306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
5862306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0},\
5962306a36Sopenharmony_ci	/* polling until return 0*/ \
6062306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
6162306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)},\
6262306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
6362306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0},
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci/* format */
6662306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#define RTL8723A_TRANS_ACT_TO_CARDEMU	\
6962306a36Sopenharmony_ci	/*0x1F[7:0] = 0 turn off RF*/ \
7062306a36Sopenharmony_ci	{0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
7162306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0},	\
7262306a36Sopenharmony_ci	{0x004E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
7362306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0},\
7462306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
7562306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \
7662306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
7762306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), 0},
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci/* format */
8062306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/
8162306a36Sopenharmony_ci#define RTL8723A_TRANS_CARDEMU_TO_SUS			\
8262306a36Sopenharmony_ci		/*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/	\
8362306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\
8462306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, \
8562306a36Sopenharmony_ci		BIT(4)|BIT(3), (BIT(4)|BIT(3))},\
8662306a36Sopenharmony_ci/*0x04[12:11] = 2b'01 enable WL suspend*/	\
8762306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK| \
8862306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK,\
8962306a36Sopenharmony_ci		PWR_BASEADDR_MAC, \
9062306a36Sopenharmony_ci		PWR_CMD_WRITE, \
9162306a36Sopenharmony_ci		BIT(3)|BIT(4), BIT(3)}, \
9262306a36Sopenharmony_ci/*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \
9362306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
9462306a36Sopenharmony_ci		PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC, \
9562306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(3)|BIT(4), \
9662306a36Sopenharmony_ci		BIT(3)|BIT(4)}, \
9762306a36Sopenharmony_ci/*Set SDIO suspend local register*/	\
9862306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
9962306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
10062306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(0), BIT(0)}, \
10162306a36Sopenharmony_ci/*wait power state to suspend*/ \
10262306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
10362306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
10462306a36Sopenharmony_ci		PWR_CMD_POLLING, BIT(1), 0},
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci/* format */
10762306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci#define RTL8723A_TRANS_SUS_TO_CARDEMU	\
11062306a36Sopenharmony_ci /*Set SDIO suspend local register*/	\
11162306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\
11262306a36Sopenharmony_ci		PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0},\
11362306a36Sopenharmony_ci /*wait power state to suspend*/ \
11462306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\
11562306a36Sopenharmony_ci		PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)},\
11662306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/ \
11762306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
11862306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0},
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci/* format */
12162306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci#define RTL8723A_TRANS_CARDEMU_TO_CARDDIS \
12462306a36Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/	 \
12562306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
12662306a36Sopenharmony_ci		PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK, \
12762306a36Sopenharmony_ci		PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \
12862306a36Sopenharmony_ci/*0x04[10] = 1, enable SW LPS*/	\
12962306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
13062306a36Sopenharmony_ci		PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC,\
13162306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(2), BIT(2)}, \
13262306a36Sopenharmony_ci/*Set SDIO suspend local register*/ \
13362306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
13462306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
13562306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(0), BIT(0)}, \
13662306a36Sopenharmony_ci /*wait power state to suspend*/ \
13762306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
13862306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
13962306a36Sopenharmony_ci		PWR_CMD_POLLING, BIT(1), 0},
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci/* format */
14262306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci#define RTL8723A_TRANS_CARDDIS_TO_CARDEMU\
14562306a36Sopenharmony_ci/*Set SDIO suspend local register*/	\
14662306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
14762306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
14862306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(0), 0}, \
14962306a36Sopenharmony_ci /*wait power state to suspend*/ \
15062306a36Sopenharmony_ci	{0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
15162306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
15262306a36Sopenharmony_ci		PWR_CMD_POLLING, BIT(1), BIT(1)},\
15362306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/ \
15462306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
15562306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
15662306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(3)|BIT(4), 0},\
15762306a36Sopenharmony_ci/*PCIe DMA start*/ \
15862306a36Sopenharmony_ci	{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
15962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
16062306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0},
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci/* format */
16362306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
16462306a36Sopenharmony_ci#define RTL8723A_TRANS_CARDEMU_TO_PDN	\
16562306a36Sopenharmony_ci	{0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
16662306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
16762306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(0), 0},/* 0x04[16] = 0*/\
16862306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
16962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
17062306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(7), BIT(7)},/* 0x04[15] = 1*/
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci/* format */
17362306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
17462306a36Sopenharmony_ci#define RTL8723A_TRANS_PDN_TO_CARDEMU	\
17562306a36Sopenharmony_ci	{0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
17662306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
17762306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(7), 0},/* 0x04[15] = 0*/
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci/* format */
18062306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci#define RTL8723A_TRANS_ACT_TO_LPS	\
18362306a36Sopenharmony_ci	{0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
18462306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
18562306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0xFF},/*PCIe DMA stop*/	\
18662306a36Sopenharmony_ci	{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
18762306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
18862306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0x7F},/*Tx Pause*/	\
18962306a36Sopenharmony_ci	/*Should be zero if no packet is transmitting*/	\
19062306a36Sopenharmony_ci	{0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
19162306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
19262306a36Sopenharmony_ci		PWR_CMD_POLLING, 0xFF, 0},\
19362306a36Sopenharmony_ci	/*Should be zero if no packet is transmitting*/	\
19462306a36Sopenharmony_ci	{0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
19562306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
19662306a36Sopenharmony_ci		PWR_CMD_POLLING, 0xFF, 0},\
19762306a36Sopenharmony_ci	/*Should be zero if no packet is transmitting*/	\
19862306a36Sopenharmony_ci	{0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
19962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
20062306a36Sopenharmony_ci		PWR_CMD_POLLING, 0xFF, 0},\
20162306a36Sopenharmony_ci	/*Should be zero if no packet is transmitting*/	\
20262306a36Sopenharmony_ci	{0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
20362306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
20462306a36Sopenharmony_ci		PWR_CMD_POLLING, 0xFF, 0},\
20562306a36Sopenharmony_ci	/*CCK and OFDM are disabled,and clock are gated*/ \
20662306a36Sopenharmony_ci	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
20762306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
20862306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(0), 0},\
20962306a36Sopenharmony_ci	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
21062306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
21162306a36Sopenharmony_ci		PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US},/*Delay 1us*/\
21262306a36Sopenharmony_ci	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
21362306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
21462306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(1), 0},/*Whole BB is reset*/	\
21562306a36Sopenharmony_ci	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
21662306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
21762306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0x3F},/*Reset MAC TRX*/	\
21862306a36Sopenharmony_ci	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
21962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
22062306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(1), 0},/*check if removed later*/	\
22162306a36Sopenharmony_ci	/*Respond TxOK to scheduler*/	\
22262306a36Sopenharmony_ci	{0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
22362306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
22462306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(5), BIT(5)},\
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci#define RTL8723A_TRANS_LPS_TO_ACT\
22762306a36Sopenharmony_ci/* format */	\
22862306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */	\
22962306a36Sopenharmony_ci	{0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
23062306a36Sopenharmony_ci		PWR_INTF_SDIO_MSK, PWR_BASEADDR_SDIO,\
23162306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0x84}, /*SDIO RPWM*/\
23262306a36Sopenharmony_ci	{0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
23362306a36Sopenharmony_ci		PWR_INTF_USB_MSK, PWR_BASEADDR_MAC,\
23462306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0x84}, /*USB RPWM*/\
23562306a36Sopenharmony_ci	{0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
23662306a36Sopenharmony_ci		PWR_INTF_PCI_MSK, PWR_BASEADDR_MAC,\
23762306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0x84}, /*PCIe RPWM*/\
23862306a36Sopenharmony_ci	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
23962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
24062306a36Sopenharmony_ci		PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, /*Delay*/\
24162306a36Sopenharmony_ci	/*.	0x08[4] = 0		 switch TSF to 40M*/\
24262306a36Sopenharmony_ci	{0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
24362306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
24462306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(4), 0},  \
24562306a36Sopenharmony_ci	/*Polling 0x109[7]=0  TSF in 40M*/\
24662306a36Sopenharmony_ci	{0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
24762306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
24862306a36Sopenharmony_ci		PWR_CMD_POLLING, BIT(7), 0}, \
24962306a36Sopenharmony_ci	/*.	0x29[7:6] = 2b'00	 enable BB clock*/\
25062306a36Sopenharmony_ci	{0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
25162306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
25262306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(6)|BIT(7), 0},\
25362306a36Sopenharmony_ci	 /*.	0x101[1] = 1*/\
25462306a36Sopenharmony_ci	{0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
25562306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
25662306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(1), BIT(1)},\
25762306a36Sopenharmony_ci	 /*.	0x100[7:0] = 0xFF	 enable WMAC TRX*/\
25862306a36Sopenharmony_ci	{0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
25962306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
26062306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0xFF},\
26162306a36Sopenharmony_ci	 /*.	0x02[1:0] = 2b'11	 enable BB macro*/\
26262306a36Sopenharmony_ci	{0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
26362306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
26462306a36Sopenharmony_ci		PWR_CMD_WRITE, BIT(1)|BIT(0), BIT(1)|BIT(0)},\
26562306a36Sopenharmony_ci	{0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \
26662306a36Sopenharmony_ci		PWR_INTF_ALL_MSK, PWR_BASEADDR_MAC,\
26762306a36Sopenharmony_ci		PWR_CMD_WRITE, 0xFF, 0}, /*.	0x522 = 0*/
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci/* format */
27062306a36Sopenharmony_ci/* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci#define RTL8723A_TRANS_END \
27362306a36Sopenharmony_ci	{0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\
27462306a36Sopenharmony_ci	0, PWR_CMD_END, 0, 0}
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_power_on_flow
27762306a36Sopenharmony_ci		[RTL8723A_TRANS_CARDEMU_TO_ACT_STEPS +
27862306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
27962306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_radio_off_flow
28062306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
28162306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
28262306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_card_disable_flow
28362306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
28462306a36Sopenharmony_ci		 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
28562306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
28662306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_card_enable_flow
28762306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
28862306a36Sopenharmony_ci		 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
28962306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
29062306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_suspend_flow
29162306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
29262306a36Sopenharmony_ci		 RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS +
29362306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
29462306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_resume_flow
29562306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
29662306a36Sopenharmony_ci		 RTL8723A_TRANS_CARDEMU_TO_SUS_STEPS +
29762306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
29862306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_hwpdn_flow
29962306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_CARDEMU_STEPS +
30062306a36Sopenharmony_ci		 RTL8723A_TRANS_CARDEMU_TO_PDN_STEPS +
30162306a36Sopenharmony_ci		 RTL8723A_TRANS_END_STEPS];
30262306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_enter_lps_flow
30362306a36Sopenharmony_ci		[RTL8723A_TRANS_ACT_TO_LPS_STEPS + RTL8723A_TRANS_END_STEPS];
30462306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723A_leave_lps_flow
30562306a36Sopenharmony_ci		[RTL8723A_TRANS_LPS_TO_ACT_STEPS + RTL8723A_TRANS_END_STEPS];
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci/* RTL8723 Power Configuration CMDs for PCIe interface */
30862306a36Sopenharmony_ci#define RTL8723_NIC_PWR_ON_FLOW		rtl8723A_power_on_flow
30962306a36Sopenharmony_ci#define RTL8723_NIC_RF_OFF_FLOW		rtl8723A_radio_off_flow
31062306a36Sopenharmony_ci#define RTL8723_NIC_DISABLE_FLOW	rtl8723A_card_disable_flow
31162306a36Sopenharmony_ci#define RTL8723_NIC_ENABLE_FLOW		rtl8723A_card_enable_flow
31262306a36Sopenharmony_ci#define RTL8723_NIC_SUSPEND_FLOW	rtl8723A_suspend_flow
31362306a36Sopenharmony_ci#define RTL8723_NIC_RESUME_FLOW		rtl8723A_resume_flow
31462306a36Sopenharmony_ci#define RTL8723_NIC_PDN_FLOW		rtl8723A_hwpdn_flow
31562306a36Sopenharmony_ci#define RTL8723_NIC_LPS_ENTER_FLOW	rtl8723A_enter_lps_flow
31662306a36Sopenharmony_ci#define RTL8723_NIC_LPS_LEAVE_FLOW	rtl8723A_leave_lps_flow
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci#endif
319