162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2014 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __RTL8723BE_PWRSEQ_H__ 562306a36Sopenharmony_ci#define __RTL8723BE_PWRSEQ_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "../pwrseqcmd.h" 862306a36Sopenharmony_ci/** 962306a36Sopenharmony_ci * Check document WM-20130425-JackieLau-RTL8723B_Power_Architecture v05.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#define RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS 23 3062306a36Sopenharmony_ci#define RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS 15 3162306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS 15 3262306a36Sopenharmony_ci#define RTL8723B_TRANS_SUS_TO_CARDEMU_STEPS 15 3362306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS 15 3462306a36Sopenharmony_ci#define RTL8723B_TRANS_PDN_TO_CARDEMU_STEPS 15 3562306a36Sopenharmony_ci#define RTL8723B_TRANS_ACT_TO_LPS_STEPS 15 3662306a36Sopenharmony_ci#define RTL8723B_TRANS_LPS_TO_ACT_STEPS 15 3762306a36Sopenharmony_ci#define RTL8723B_TRANS_END_STEPS 1 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_ACT \ 4062306a36Sopenharmony_ci /* format */ \ 4162306a36Sopenharmony_ci /* comments here */ \ 4262306a36Sopenharmony_ci /* {offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value}, */\ 4362306a36Sopenharmony_ci /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/ \ 4462306a36Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 4562306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ 4662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 4762306a36Sopenharmony_ci /*0x67[0] = 0 to disable BT_GPS_SEL pins*/ \ 4862306a36Sopenharmony_ci {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 4962306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ 5062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ 5162306a36Sopenharmony_ci /*Delay 1ms*/ \ 5262306a36Sopenharmony_ci {0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 5362306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ 5462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS}, \ 5562306a36Sopenharmony_ci /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/ \ 5662306a36Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 5762306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ 5862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), 0}, \ 5962306a36Sopenharmony_ci /* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[11]=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(4)|BIT(3)|BIT(2)), 0}, \ 6262306a36Sopenharmony_ci /* Disable USB suspend */ \ 6362306a36Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 6462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0) , BIT(0)}, \ 6562306a36Sopenharmony_ci /* wait till 0x04[17] = 1 power ready*/ \ 6662306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 6762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ 6862306a36Sopenharmony_ci /* Enable USB suspend */ \ 6962306a36Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 7062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0) , 0}, \ 7162306a36Sopenharmony_ci /* release WLON reset 0x04[16]=1*/ \ 7262306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 7362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 7462306a36Sopenharmony_ci /* disable HWPDN 0x04[15]=0*/ \ 7562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 7662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0}, \ 7762306a36Sopenharmony_ci /* disable WL suspend*/ \ 7862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 7962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT(4)|BIT(3)), 0}, \ 8062306a36Sopenharmony_ci /* polling until return 0*/ \ 8162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 8262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 8362306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 8462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(0), 0}, \ 8562306a36Sopenharmony_ci /* Enable WL control XTAL setting*/ \ 8662306a36Sopenharmony_ci {0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 8762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)}, \ 8862306a36Sopenharmony_ci /*Enable falling edge triggering interrupt*/ \ 8962306a36Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 9062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ 9162306a36Sopenharmony_ci /*Enable GPIO9 interrupt mode*/ \ 9262306a36Sopenharmony_ci {0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 9362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ 9462306a36Sopenharmony_ci /*Enable GPIO9 input mode*/ \ 9562306a36Sopenharmony_ci {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 9662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ 9762306a36Sopenharmony_ci /*Enable HSISR GPIO[C:0] interrupt*/ \ 9862306a36Sopenharmony_ci {0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 9962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 10062306a36Sopenharmony_ci /*Enable HSISR GPIO9 interrupt*/ \ 10162306a36Sopenharmony_ci {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 10262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ 10362306a36Sopenharmony_ci /*For GPIO9 internal pull high setting by test chip*/ \ 10462306a36Sopenharmony_ci {0x0068, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 10562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3), BIT(3)}, \ 10662306a36Sopenharmony_ci /*For GPIO9 internal pull high setting*/ \ 10762306a36Sopenharmony_ci {0x0069, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 10862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), BIT(6)}, 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci#define RTL8723B_TRANS_ACT_TO_CARDEMU \ 11162306a36Sopenharmony_ci /* format */ \ 11262306a36Sopenharmony_ci /* comments here */ \ 11362306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 11462306a36Sopenharmony_ci /*0x1F[7:0] = 0 turn off RF*/ \ 11562306a36Sopenharmony_ci {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 11662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, \ 11762306a36Sopenharmony_ci /*0x4C[24] = 0x4F[0] = 0, */ \ 11862306a36Sopenharmony_ci /*switch DPDT_SEL_P output from register 0x65[2] */ \ 11962306a36Sopenharmony_ci {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 12062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ 12162306a36Sopenharmony_ci /*Enable rising edge triggering interrupt*/ \ 12262306a36Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 12362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ 12462306a36Sopenharmony_ci /*0x04[9] = 1 turn off MAC by HW state machine*/ \ 12562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 12662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ 12762306a36Sopenharmony_ci /*wait till 0x04[9] = 0 polling until return 0 to disable*/ \ 12862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 12962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(1), 0}, \ 13062306a36Sopenharmony_ci /* Enable BT control XTAL setting*/ \ 13162306a36Sopenharmony_ci {0x0010, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 13262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6), 0}, \ 13362306a36Sopenharmony_ci /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/ \ 13462306a36Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 13562306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ 13662306a36Sopenharmony_ci PWR_CMD_WRITE, BIT(5), BIT(5)}, \ 13762306a36Sopenharmony_ci /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/ \ 13862306a36Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 13962306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ 14062306a36Sopenharmony_ci PWR_CMD_WRITE, BIT(0), 0}, 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_SUS \ 14362306a36Sopenharmony_ci /* format */ \ 14462306a36Sopenharmony_ci /* comments here */ \ 14562306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value },*/\ 14662306a36Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \ 14762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 14862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4) | BIT(3), (BIT(4) | BIT(3))}, \ 14962306a36Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/ \ 15062306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 15162306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, PWR_BASEADDR_MAC, \ 15262306a36Sopenharmony_ci PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3)}, \ 15362306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ 15462306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 15562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ 15662306a36Sopenharmony_ci /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/ \ 15762306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 15862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, \ 15962306a36Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/ \ 16062306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 16162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(4), BIT(3) | BIT(4)},\ 16262306a36Sopenharmony_ci /*Set SDIO suspend local register*/ \ 16362306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 16462306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 16562306a36Sopenharmony_ci /*wait power state to suspend*/ \ 16662306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 16762306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci#define RTL8723B_TRANS_SUS_TO_CARDEMU \ 17062306a36Sopenharmony_ci /* format */ \ 17162306a36Sopenharmony_ci /* comments here */ \ 17262306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 17362306a36Sopenharmony_ci /*clear suspend enable and power down enable*/ \ 17462306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 17562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, \ 17662306a36Sopenharmony_ci /*Set SDIO suspend local register*/ \ 17762306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 17862306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, \ 17962306a36Sopenharmony_ci /*wait power state to suspend*/ \ 18062306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 18162306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ 18262306a36Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \ 18362306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 18462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ 18562306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/ \ 18662306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 18762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_CARDDIS \ 19062306a36Sopenharmony_ci /* format */ \ 19162306a36Sopenharmony_ci /* comments here */ \ 19262306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 19362306a36Sopenharmony_ci /*0x07=0x20 , SOP option to disable BG/MB*/ \ 19462306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 19562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20}, \ 19662306a36Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/ \ 19762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 19862306a36Sopenharmony_ci PWR_INTF_USB_MSK | PWR_INTF_SDIO_MSK, \ 19962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), BIT(3)}, \ 20062306a36Sopenharmony_ci /*0x04[10] = 1, enable SW LPS*/ \ 20162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 20262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(2), BIT(2)}, \ 20362306a36Sopenharmony_ci /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/ \ 20462306a36Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ 20562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 1}, \ 20662306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ 20762306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 20862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ 20962306a36Sopenharmony_ci /*Set SDIO suspend local register*/ \ 21062306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 21162306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), BIT(0)}, \ 21262306a36Sopenharmony_ci /*wait power state to suspend*/ \ 21362306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 21462306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), 0}, 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDDIS_TO_CARDEMU \ 21762306a36Sopenharmony_ci /* format */ \ 21862306a36Sopenharmony_ci /* comments here */ \ 21962306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 22062306a36Sopenharmony_ci /*clear suspend enable and power down enable*/ \ 22162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 22262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3) | BIT(7), 0}, \ 22362306a36Sopenharmony_ci /*Set SDIO suspend local register*/ \ 22462306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 22562306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT(0), 0}, \ 22662306a36Sopenharmony_ci /*wait power state to suspend*/ \ 22762306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 22862306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT(1), BIT(1)}, \ 22962306a36Sopenharmony_ci /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/ \ 23062306a36Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ 23162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ 23262306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/ \ 23362306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 23462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(3)|BIT(4), 0}, \ 23562306a36Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/ \ 23662306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 23762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ 23862306a36Sopenharmony_ci /*PCIe DMA start*/ \ 23962306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 24062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci#define RTL8723B_TRANS_CARDEMU_TO_PDN \ 24362306a36Sopenharmony_ci /* format */ \ 24462306a36Sopenharmony_ci /* comments here */ \ 24562306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 24662306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/ \ 24762306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 24862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), BIT(4)}, \ 24962306a36Sopenharmony_ci /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/ \ 25062306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 25162306a36Sopenharmony_ci PWR_INTF_SDIO_MSK | PWR_INTF_USB_MSK, PWR_BASEADDR_MAC, \ 25262306a36Sopenharmony_ci PWR_CMD_WRITE, 0xFF, 0x20}, \ 25362306a36Sopenharmony_ci /* 0x04[16] = 0*/ \ 25462306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 25562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ 25662306a36Sopenharmony_ci /* 0x04[15] = 1*/ \ 25762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 25862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), BIT(7)}, 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci#define RTL8723B_TRANS_PDN_TO_CARDEMU \ 26162306a36Sopenharmony_ci /* format */ \ 26262306a36Sopenharmony_ci /* comments here */ \ 26362306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 26462306a36Sopenharmony_ci /* 0x04[15] = 0*/ \ 26562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 26662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(7), 0}, 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci#define RTL8723B_TRANS_ACT_TO_LPS \ 26962306a36Sopenharmony_ci /* format */ \ 27062306a36Sopenharmony_ci /* comments here */ \ 27162306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 27262306a36Sopenharmony_ci /*PCIe DMA stop*/ \ 27362306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 27462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ 27562306a36Sopenharmony_ci /*Tx Pause*/ \ 27662306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 27762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ 27862306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/ \ 27962306a36Sopenharmony_ci {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 28062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ 28162306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/ \ 28262306a36Sopenharmony_ci {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 28362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ 28462306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/ \ 28562306a36Sopenharmony_ci {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 28662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ 28762306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/ \ 28862306a36Sopenharmony_ci {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 28962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0}, \ 29062306a36Sopenharmony_ci /*CCK and OFDM are disabled,and clock are gated*/ \ 29162306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 29262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(0), 0}, \ 29362306a36Sopenharmony_ci /*Delay 1us*/ \ 29462306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 29562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US}, \ 29662306a36Sopenharmony_ci /*Whole BB is reset*/ \ 29762306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 29862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ 29962306a36Sopenharmony_ci /*Reset MAC TRX*/ \ 30062306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 30162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03}, \ 30262306a36Sopenharmony_ci /*check if removed later*/ \ 30362306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 30462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), 0}, \ 30562306a36Sopenharmony_ci /*When driver enter Sus/ Disable, enable LOP for BT*/ \ 30662306a36Sopenharmony_ci {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 30762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00}, \ 30862306a36Sopenharmony_ci /*Respond TxOK to scheduler*/ \ 30962306a36Sopenharmony_ci {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 31062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(5), BIT(5)}, 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ci#define RTL8723B_TRANS_LPS_TO_ACT \ 31362306a36Sopenharmony_ci /* format */ \ 31462306a36Sopenharmony_ci /* comments here */ \ 31562306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 31662306a36Sopenharmony_ci /*SDIO RPWM*/ \ 31762306a36Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK, \ 31862306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84}, \ 31962306a36Sopenharmony_ci /*USB RPWM*/ \ 32062306a36Sopenharmony_ci {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, \ 32162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, \ 32262306a36Sopenharmony_ci /*PCIe RPWM*/ \ 32362306a36Sopenharmony_ci {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK, \ 32462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84}, \ 32562306a36Sopenharmony_ci /*Delay*/ \ 32662306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 32762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS}, \ 32862306a36Sopenharmony_ci /*. 0x08[4] = 0 switch TSF to 40M*/ \ 32962306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 33062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(4), 0}, \ 33162306a36Sopenharmony_ci /*Polling 0x109[7]=0 TSF in 40M*/ \ 33262306a36Sopenharmony_ci {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 33362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT(7), 0}, \ 33462306a36Sopenharmony_ci /*. 0x29[7:6] = 2b'00 enable BB clock*/ \ 33562306a36Sopenharmony_ci {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 33662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(6)|BIT(7), 0}, \ 33762306a36Sopenharmony_ci /*. 0x101[1] = 1*/ \ 33862306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 33962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1), BIT(1)}, \ 34062306a36Sopenharmony_ci /*. 0x100[7:0] = 0xFF enable WMAC TRX*/ \ 34162306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 34262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF}, \ 34362306a36Sopenharmony_ci /*. 0x02[1:0] = 2b'11 enable BB macro*/ \ 34462306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 34562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT(1) | BIT(0), BIT(1) | BIT(0)}, \ 34662306a36Sopenharmony_ci /*. 0x522 = 0*/ \ 34762306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 34862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0}, 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci#define RTL8723B_TRANS_END \ 35162306a36Sopenharmony_ci /* format */ \ 35262306a36Sopenharmony_ci /* comments here */ \ 35362306a36Sopenharmony_ci /* { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value }, */\ 35462306a36Sopenharmony_ci {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, 0, \ 35562306a36Sopenharmony_ci PWR_CMD_END, 0, 0}, 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_power_on_flow 35862306a36Sopenharmony_ci [RTL8723B_TRANS_CARDEMU_TO_ACT_STEPS + 35962306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 36062306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_radio_off_flow 36162306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 36262306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 36362306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_card_disable_flow 36462306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 36562306a36Sopenharmony_ci RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + 36662306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 36762306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_card_enable_flow 36862306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 36962306a36Sopenharmony_ci RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + 37062306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 37162306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_suspend_flow 37262306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 37362306a36Sopenharmony_ci RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + 37462306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 37562306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_resume_flow 37662306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 37762306a36Sopenharmony_ci RTL8723B_TRANS_CARDEMU_TO_SUS_STEPS + 37862306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 37962306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_hwpdn_flow 38062306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_CARDEMU_STEPS + 38162306a36Sopenharmony_ci RTL8723B_TRANS_CARDEMU_TO_PDN_STEPS + 38262306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 38362306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_enter_lps_flow 38462306a36Sopenharmony_ci [RTL8723B_TRANS_ACT_TO_LPS_STEPS + 38562306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 38662306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8723B_leave_lps_flow 38762306a36Sopenharmony_ci [RTL8723B_TRANS_LPS_TO_ACT_STEPS + 38862306a36Sopenharmony_ci RTL8723B_TRANS_END_STEPS]; 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci/* RTL8723 Power Configuration CMDs for PCIe interface */ 39162306a36Sopenharmony_ci#define RTL8723_NIC_PWR_ON_FLOW rtl8723B_power_on_flow 39262306a36Sopenharmony_ci#define RTL8723_NIC_RF_OFF_FLOW rtl8723B_radio_off_flow 39362306a36Sopenharmony_ci#define RTL8723_NIC_DISABLE_FLOW rtl8723B_card_disable_flow 39462306a36Sopenharmony_ci#define RTL8723_NIC_ENABLE_FLOW rtl8723B_card_enable_flow 39562306a36Sopenharmony_ci#define RTL8723_NIC_SUSPEND_FLOW rtl8723B_suspend_flow 39662306a36Sopenharmony_ci#define RTL8723_NIC_RESUME_FLOW rtl8723B_resume_flow 39762306a36Sopenharmony_ci#define RTL8723_NIC_PDN_FLOW rtl8723B_hwpdn_flow 39862306a36Sopenharmony_ci#define RTL8723_NIC_LPS_ENTER_FLOW rtl8723B_enter_lps_flow 39962306a36Sopenharmony_ci#define RTL8723_NIC_LPS_LEAVE_FLOW rtl8723B_leave_lps_flow 40062306a36Sopenharmony_ci 40162306a36Sopenharmony_ci#endif 402