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