162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2010 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __RTL8821AE_PWRSEQ_H__ 562306a36Sopenharmony_ci#define __RTL8821AE_PWRSEQ_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "../pwrseqcmd.h" 862306a36Sopenharmony_ci#include "../btcoexist/halbt_precomp.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_ACT_STEPS 15 1162306a36Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_CARDEMU_STEPS 15 1262306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_SUS_STEPS 15 1362306a36Sopenharmony_ci#define RTL8812_TRANS_SUS_TO_CARDEMU_STEPS 15 1462306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_PDN_STEPS 25 1562306a36Sopenharmony_ci#define RTL8812_TRANS_PDN_TO_CARDEMU_STEPS 15 1662306a36Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_LPS_STEPS 15 1762306a36Sopenharmony_ci#define RTL8812_TRANS_LPS_TO_ACT_STEPS 15 1862306a36Sopenharmony_ci#define RTL8812_TRANS_END_STEPS 1 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* The following macros have the following format: 2162306a36Sopenharmony_ci * { offset, cut_msk, fab_msk|interface_msk, base|cmd, msk, value 2262306a36Sopenharmony_ci * comments }, 2362306a36Sopenharmony_ci */ 2462306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_ACT \ 2562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 2762306a36Sopenharmony_ci /* disable SW LPS 0x04[10]=0*/}, \ 2862306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 2962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, BIT1 \ 3062306a36Sopenharmony_ci /* wait till 0x04[17] = 1 power ready*/}, \ 3162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 3362306a36Sopenharmony_ci /* disable HWPDN 0x04[15]=0*/}, \ 3462306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 3662306a36Sopenharmony_ci /* disable WL suspend*/}, \ 3762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 3862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 3962306a36Sopenharmony_ci /* polling until return 0*/}, \ 4062306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT0, 0}, 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_CARDEMU \ 4462306a36Sopenharmony_ci {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 4662306a36Sopenharmony_ci /* 0xc00[7:0] = 4 turn off 3-wire */}, \ 4762306a36Sopenharmony_ci {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 4862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 4962306a36Sopenharmony_ci /* 0xe00[7:0] = 4 turn off 3-wire */}, \ 5062306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 5262306a36Sopenharmony_ci /* 0x2[0] = 0 RESET BB, CLOSE RF */}, \ 5362306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 5462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 5562306a36Sopenharmony_ci /*Delay 1us*/}, \ 5662306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 5762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 5862306a36Sopenharmony_ci /* Whole BB is reset*/}, \ 5962306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x2A \ 6162306a36Sopenharmony_ci /* 0x07[7:0] = 0x28 sps pwm mode 0x2a for BT coex*/}, \ 6262306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 6362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 6462306a36Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 6562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 6762306a36Sopenharmony_ci /*0x04[9] = 1 turn off MAC by HW state machine*/}, \ 6862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 6962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, 0 \ 7062306a36Sopenharmony_ci /*wait till 0x04[9] = 0 polling until return 0 to disable*/}, 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_SUS \ 7362306a36Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 7462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xc0}, \ 7562306a36Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 7662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xE0}, \ 7762306a36Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 7862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ 7962306a36Sopenharmony_ci /* gpio11 input mode, gpio10~8 output mode */}, \ 8062306a36Sopenharmony_ci {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 8162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 8262306a36Sopenharmony_ci /* gpio 0~7 output same value as input ?? */}, \ 8362306a36Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 8462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff \ 8562306a36Sopenharmony_ci /* gpio0~7 output mode */}, \ 8662306a36Sopenharmony_ci {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 8762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 8862306a36Sopenharmony_ci /* 0x47[7:0] = 00 gpio mode */}, \ 8962306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 9062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 9162306a36Sopenharmony_ci /* suspend option all off */}, \ 9262306a36Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 9362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, BIT7 \ 9462306a36Sopenharmony_ci /*0x14[7] = 1 turn on ZCD */}, \ 9562306a36Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 9662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, BIT0 \ 9762306a36Sopenharmony_ci /* 0x15[0] =1 trun on ZCD */}, \ 9862306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 9962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, BIT4 \ 10062306a36Sopenharmony_ci /*0x23[4] = 1 hpon LDO sleep mode */}, \ 10162306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 10262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 10362306a36Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 10462306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 10562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3 \ 10662306a36Sopenharmony_ci /*0x04[11] = 2b'11 enable WL suspend for PCIe*/}, 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#define RTL8812_TRANS_SUS_TO_CARDEMU \ 10962306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 11062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 11162306a36Sopenharmony_ci /*0x04[11] = 2b'01enable WL suspend*/}, \ 11262306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 11362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, 0 \ 11462306a36Sopenharmony_ci /*0x23[4] = 0 hpon LDO sleep mode leave */}, \ 11562306a36Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 11662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 11762306a36Sopenharmony_ci /* 0x15[0] =0 trun off ZCD */}, \ 11862306a36Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 11962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, 0 \ 12062306a36Sopenharmony_ci /*0x14[7] = 0 turn off ZCD */}, \ 12162306a36Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 12262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 12362306a36Sopenharmony_ci /* gpio0~7 input mode */}, \ 12462306a36Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 12562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 12662306a36Sopenharmony_ci /* gpio11 input mode, gpio10~8 input mode */}, 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_CARDDIS \ 12962306a36Sopenharmony_ci {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 13062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 13162306a36Sopenharmony_ci /*0x03[2] = 0, reset 8051*/}, \ 13262306a36Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 13362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x05 \ 13462306a36Sopenharmony_ci /*0x80=05h if reload fw, fill the default value of host_CPU handshake field*/}, \ 13562306a36Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 13662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xcc}, \ 13762306a36Sopenharmony_ci {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 13862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xEC}, \ 13962306a36Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 14062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ 14162306a36Sopenharmony_ci /* gpio11 input mode, gpio10~8 output mode */}, \ 14262306a36Sopenharmony_ci {0x0045, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 14362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 14462306a36Sopenharmony_ci /* gpio 0~7 output same value as input ?? */}, \ 14562306a36Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 14662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xff \ 14762306a36Sopenharmony_ci /* gpio0~7 output mode */}, \ 14862306a36Sopenharmony_ci {0x0047, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 14962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 15062306a36Sopenharmony_ci /* 0x47[7:0] = 00 gpio mode */}, \ 15162306a36Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 15262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, BIT7 \ 15362306a36Sopenharmony_ci /*0x14[7] = 1 turn on ZCD */}, \ 15462306a36Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 15562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, BIT0 \ 15662306a36Sopenharmony_ci /* 0x15[0] =1 trun on ZCD */}, \ 15762306a36Sopenharmony_ci {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 15862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 15962306a36Sopenharmony_ci /*0x12[0] = 0 force PFM mode */}, \ 16062306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 16162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, BIT4 \ 16262306a36Sopenharmony_ci /*0x23[4] = 1 hpon LDO sleep mode */}, \ 16362306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 16462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x02, 0 \ 16562306a36Sopenharmony_ci /*0x8[1] = 0 ANA clk =500k */}, \ 16662306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 16762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 16862306a36Sopenharmony_ci /*0x07=0x20 , SOP option to disable BG/MB*/}, \ 16962306a36Sopenharmony_ci {0x001f, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 17062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 17162306a36Sopenharmony_ci /*0x01f[1]=0 , disable RFC_0 control REG_RF_CTRL_8812 */}, \ 17262306a36Sopenharmony_ci {0x0076, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 17362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 17462306a36Sopenharmony_ci /*0x076[1]=0 , disable RFC_1 control REG_OPT_CTRL_8812 +2 */}, \ 17562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 17662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, BIT3 \ 17762306a36Sopenharmony_ci /*0x04[11] = 2b'01 enable WL suspend*/}, 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci#define RTL8812_TRANS_CARDDIS_TO_CARDEMU \ 18062306a36Sopenharmony_ci {0x0012, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 18162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 18262306a36Sopenharmony_ci /*0x12[0] = 1 force PWM mode */}, \ 18362306a36Sopenharmony_ci {0x0014, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 18462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x80, 0 \ 18562306a36Sopenharmony_ci /*0x14[7] = 0 turn off ZCD */}, \ 18662306a36Sopenharmony_ci {0x0015, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 18762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x01, 0 \ 18862306a36Sopenharmony_ci /* 0x15[0] =0 trun off ZCD */}, \ 18962306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 19062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0x10, 0 \ 19162306a36Sopenharmony_ci /*0x23[4] = 0 hpon LDO leave sleep mode */}, \ 19262306a36Sopenharmony_ci {0x0046, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 19362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 19462306a36Sopenharmony_ci /* gpio0~7 input mode */}, \ 19562306a36Sopenharmony_ci {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 19662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 19762306a36Sopenharmony_ci /* gpio11 input mode, gpio10~8 input mode */}, \ 19862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 19962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, 0 \ 20062306a36Sopenharmony_ci /*0x04[10] = 0, enable SW LPS PCIE only*/}, \ 20162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 20262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3, 0 \ 20362306a36Sopenharmony_ci /*0x04[11] = 2b'01enable WL suspend*/}, \ 20462306a36Sopenharmony_ci {0x0003, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 20562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, BIT2 \ 20662306a36Sopenharmony_ci /*0x03[2] = 1, enable 8051*/}, \ 20762306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 20862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 20962306a36Sopenharmony_ci /*PCIe DMA start*/}, 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci#define RTL8812_TRANS_CARDEMU_TO_PDN \ 21262306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 21362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7 \ 21462306a36Sopenharmony_ci /* 0x04[15] = 1*/}, 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci#define RTL8812_TRANS_PDN_TO_CARDEMU \ 21762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 21862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 21962306a36Sopenharmony_ci /* 0x04[15] = 0*/}, 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci#define RTL8812_TRANS_ACT_TO_LPS \ 22262306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 22362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 22462306a36Sopenharmony_ci /*PCIe DMA stop*/}, \ 22562306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 22662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x7F \ 22762306a36Sopenharmony_ci /*Tx Pause*/}, \ 22862306a36Sopenharmony_ci {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 22962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 23062306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 23162306a36Sopenharmony_ci {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 23262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 23362306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 23462306a36Sopenharmony_ci {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 23562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 23662306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 23762306a36Sopenharmony_ci {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 23862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 23962306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 24062306a36Sopenharmony_ci {0x0c00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 24162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 24262306a36Sopenharmony_ci /* 0xc00[7:0] = 4 turn off 3-wire */}, \ 24362306a36Sopenharmony_ci {0x0e00, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 24462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x04 \ 24562306a36Sopenharmony_ci /* 0xe00[7:0] = 4 turn off 3-wire */}, \ 24662306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 24762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 24862306a36Sopenharmony_ci /*CCK and OFDM are disabled,and clock are gated,and RF closed*/}, \ 24962306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 25062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 25162306a36Sopenharmony_ci /*Delay 1us*/}, \ 25262306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 25362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 25462306a36Sopenharmony_ci /* Whole BB is reset*/}, \ 25562306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 25662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03 \ 25762306a36Sopenharmony_ci /*Reset MAC TRX*/}, \ 25862306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 25962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 26062306a36Sopenharmony_ci /*check if removed later*/}, \ 26162306a36Sopenharmony_ci {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 26262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 26362306a36Sopenharmony_ci /*Respond TxOK to scheduler*/}, 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci#define RTL8812_TRANS_LPS_TO_ACT \ 26662306a36Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 26762306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84 \ 26862306a36Sopenharmony_ci /*SDIO RPWM*/}, \ 26962306a36Sopenharmony_ci {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 27062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 27162306a36Sopenharmony_ci /*USB RPWM*/}, \ 27262306a36Sopenharmony_ci {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 27362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 27462306a36Sopenharmony_ci /*PCIe RPWM*/}, \ 27562306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 27662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS \ 27762306a36Sopenharmony_ci /*Delay*/}, \ 27862306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 27962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 28062306a36Sopenharmony_ci /*. 0x08[4] = 0 switch TSF to 40M*/}, \ 28162306a36Sopenharmony_ci {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 28262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT7, 0 \ 28362306a36Sopenharmony_ci /*Polling 0x109[7]=0 TSF in 40M*/}, \ 28462306a36Sopenharmony_ci {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 28562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6|BIT7, 0 \ 28662306a36Sopenharmony_ci /*. 0x29[7:6] = 2b'00 enable BB clock*/}, \ 28762306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 28862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 28962306a36Sopenharmony_ci /*. 0x101[1] = 1*/}, \ 29062306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 29162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 29262306a36Sopenharmony_ci /*. 0x100[7:0] = 0xFF enable WMAC TRX*/}, \ 29362306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 29462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0 \ 29562306a36Sopenharmony_ci /*. 0x02[1:0] = 2b'11 enable BB macro*/}, \ 29662306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 29762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 29862306a36Sopenharmony_ci /*. 0x522 = 0*/}, 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci#define RTL8812_TRANS_END \ 30162306a36Sopenharmony_ci {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK, \ 30262306a36Sopenharmony_ci 0, PWR_CMD_END, 0, 0}, 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_power_on_flow 30562306a36Sopenharmony_ci [RTL8812_TRANS_CARDEMU_TO_ACT_STEPS + 30662306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 30762306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_radio_off_flow 30862306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 30962306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 31062306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_card_disable_flow 31162306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 31262306a36Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 31362306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 31462306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_card_enable_flow 31562306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 31662306a36Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 31762306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 31862306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_suspend_flow 31962306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 32062306a36Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 32162306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 32262306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_resume_flow 32362306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 32462306a36Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_SUS_STEPS + 32562306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 32662306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_hwpdn_flow 32762306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_CARDEMU_STEPS + 32862306a36Sopenharmony_ci RTL8812_TRANS_CARDEMU_TO_PDN_STEPS + 32962306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 33062306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_enter_lps_flow 33162306a36Sopenharmony_ci [RTL8812_TRANS_ACT_TO_LPS_STEPS + 33262306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 33362306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8812_leave_lps_flow 33462306a36Sopenharmony_ci [RTL8812_TRANS_LPS_TO_ACT_STEPS + 33562306a36Sopenharmony_ci RTL8812_TRANS_END_STEPS]; 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci/* Check document WM-20130516-JackieLau-RTL8821A_Power_Architecture-R10.vsd 33862306a36Sopenharmony_ci * There are 6 HW Power States: 33962306a36Sopenharmony_ci * 0: POFF--Power Off 34062306a36Sopenharmony_ci * 1: PDN--Power Down 34162306a36Sopenharmony_ci * 2: CARDEMU--Card Emulation 34262306a36Sopenharmony_ci * 3: ACT--Active Mode 34362306a36Sopenharmony_ci * 4: LPS--Low Power State 34462306a36Sopenharmony_ci * 5: SUS--Suspend 34562306a36Sopenharmony_ci * 34662306a36Sopenharmony_ci * The transision from different states are defined below 34762306a36Sopenharmony_ci * TRANS_CARDEMU_TO_ACT 34862306a36Sopenharmony_ci * TRANS_ACT_TO_CARDEMU 34962306a36Sopenharmony_ci * TRANS_CARDEMU_TO_SUS 35062306a36Sopenharmony_ci * TRANS_SUS_TO_CARDEMU 35162306a36Sopenharmony_ci * TRANS_CARDEMU_TO_PDN 35262306a36Sopenharmony_ci * TRANS_ACT_TO_LPS 35362306a36Sopenharmony_ci * TRANS_LPS_TO_ACT 35462306a36Sopenharmony_ci * 35562306a36Sopenharmony_ci * TRANS_END 35662306a36Sopenharmony_ci */ 35762306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS 25 35862306a36Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS 15 35962306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS 15 36062306a36Sopenharmony_ci#define RTL8821A_TRANS_SUS_TO_CARDEMU_STEPS 15 36162306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU_STEPS 15 36262306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS 15 36362306a36Sopenharmony_ci#define RTL8821A_TRANS_PDN_TO_CARDEMU_STEPS 15 36462306a36Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_LPS_STEPS 15 36562306a36Sopenharmony_ci#define RTL8821A_TRANS_LPS_TO_ACT_STEPS 15 36662306a36Sopenharmony_ci#define RTL8821A_TRANS_END_STEPS 1 36762306a36Sopenharmony_ci 36862306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_ACT \ 36962306a36Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 37062306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 37162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 37262306a36Sopenharmony_ci /*0x20[0] = 1b'1 enable LDOA12 MACRO block for all interface*/}, \ 37362306a36Sopenharmony_ci {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 37462306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 37562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 37662306a36Sopenharmony_ci /*0x67[0] = 0 to disable BT_GPS_SEL pins*/}, \ 37762306a36Sopenharmony_ci {0x0001, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 37862306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 37962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 1, PWRSEQ_DELAY_MS \ 38062306a36Sopenharmony_ci /*Delay 1ms*/}, \ 38162306a36Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 38262306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 38362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, 0 \ 38462306a36Sopenharmony_ci /*0x00[5] = 1b'0 release analog Ips to digital ,1:isolation*/}, \ 38562306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 38662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT4|BIT3|BIT2), 0 \ 38762306a36Sopenharmony_ci /* disable SW LPS 0x04[10]=0 and WLSUS_EN 0x04[12:11]=0*/}, \ 38862306a36Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 38962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0 , BIT0 \ 39062306a36Sopenharmony_ci /* Disable USB suspend */}, \ 39162306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 39262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, BIT1 \ 39362306a36Sopenharmony_ci /* wait till 0x04[17] = 1 power ready*/}, \ 39462306a36Sopenharmony_ci {0x0075, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 39562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0 , 0 \ 39662306a36Sopenharmony_ci /* Enable USB suspend */}, \ 39762306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 39862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 39962306a36Sopenharmony_ci /* release WLON reset 0x04[16]=1*/}, \ 40062306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 40162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 40262306a36Sopenharmony_ci /* disable HWPDN 0x04[15]=0*/}, \ 40362306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 40462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT4|BIT3), 0 \ 40562306a36Sopenharmony_ci /* disable WL suspend*/}, \ 40662306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 40762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 40862306a36Sopenharmony_ci /* polling until return 0*/}, \ 40962306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 41062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT0, 0 \ 41162306a36Sopenharmony_ci /**/}, \ 41262306a36Sopenharmony_ci {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 41362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 41462306a36Sopenharmony_ci /*0x4C[24] = 0x4F[0] = 1, switch DPDT_SEL_P output from WL BB */},\ 41562306a36Sopenharmony_ci {0x0067, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 41662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, (BIT5|BIT4), (BIT5|BIT4) \ 41762306a36Sopenharmony_ci /*0x66[13] = 0x67[5] = 1, switch for PAPE_G/PAPE_A \ 41862306a36Sopenharmony_ci from WL BB ; 0x66[12] = 0x67[4] = 1, switch LNAON from WL BB */},\ 41962306a36Sopenharmony_ci {0x0025, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 42062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6, 0 \ 42162306a36Sopenharmony_ci /*anapar_mac<118> , 0x25[6]=0 by wlan single function*/},\ 42262306a36Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 42362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 42462306a36Sopenharmony_ci /*Enable falling edge triggering interrupt*/},\ 42562306a36Sopenharmony_ci {0x0063, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 42662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 42762306a36Sopenharmony_ci /*Enable GPIO9 interrupt mode*/},\ 42862306a36Sopenharmony_ci {0x0062, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 42962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 43062306a36Sopenharmony_ci /*Enable GPIO9 input mode*/},\ 43162306a36Sopenharmony_ci {0x0058, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 43262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, BIT0 \ 43362306a36Sopenharmony_ci /*Enable HSISR GPIO[C:0] interrupt*/},\ 43462306a36Sopenharmony_ci {0x005A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 43562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 43662306a36Sopenharmony_ci /*Enable HSISR GPIO9 interrupt*/},\ 43762306a36Sopenharmony_ci {0x007A, PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 43862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x3A \ 43962306a36Sopenharmony_ci /*0x7A = 0x3A start BT*/},\ 44062306a36Sopenharmony_ci {0x002E, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 44162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF , 0x82 \ 44262306a36Sopenharmony_ci /* 0x2C[23:12]=0x820 ; XTAL trim */}, \ 44362306a36Sopenharmony_ci {0x0010, PWR_CUT_A_MSK , PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 44462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6 , BIT6 \ 44562306a36Sopenharmony_ci /* 0x10[6]=1 */}, 44662306a36Sopenharmony_ci 44762306a36Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_CARDEMU \ 44862306a36Sopenharmony_ci {0x001F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 44962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 45062306a36Sopenharmony_ci /*0x1F[7:0] = 0 turn off RF*/}, \ 45162306a36Sopenharmony_ci {0x004F, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 45262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 45362306a36Sopenharmony_ci /*0x4C[24] = 0x4F[0] = 0, switch DPDT_SEL_P output from \ 45462306a36Sopenharmony_ci register 0x65[2] */},\ 45562306a36Sopenharmony_ci {0x0049, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 45662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 45762306a36Sopenharmony_ci /*Enable rising edge triggering interrupt*/}, \ 45862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 45962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 46062306a36Sopenharmony_ci /*0x04[9] = 1 turn off MAC by HW state machine*/}, \ 46162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 46262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT1, 0 \ 46362306a36Sopenharmony_ci /*wait till 0x04[9] = 0 polling until return 0 to disable*/}, \ 46462306a36Sopenharmony_ci {0x0000, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 46562306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 46662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 46762306a36Sopenharmony_ci /*0x00[5] = 1b'1 analog Ips to digital ,1:isolation*/}, \ 46862306a36Sopenharmony_ci {0x0020, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 46962306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 47062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 47162306a36Sopenharmony_ci /*0x20[0] = 1b'0 disable LDOA12 MACRO block*/}, 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_SUS \ 47462306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 47562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4|BIT3, (BIT4|BIT3) \ 47662306a36Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/}, \ 47762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 47862306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 47962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3 \ 48062306a36Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/}, \ 48162306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 48262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 48362306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 48462306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 48562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 48662306a36Sopenharmony_ci /*0x07[7:0] = 0x20 SDIO SOP option to disable BG/MB/ACK/SWR*/}, \ 48762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 48862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3|BIT4 \ 48962306a36Sopenharmony_ci /*0x04[12:11] = 2b'11 enable WL suspend for PCIe*/}, \ 49062306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 49162306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, BIT0 \ 49262306a36Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 49362306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 49462306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, 0 \ 49562306a36Sopenharmony_ci /*wait power state to suspend*/}, 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci#define RTL8821A_TRANS_SUS_TO_CARDEMU \ 49862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 49962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3 | BIT7, 0 \ 50062306a36Sopenharmony_ci /*clear suspend enable and power down enable*/}, \ 50162306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 50262306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, 0 \ 50362306a36Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 50462306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 50562306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, BIT1 \ 50662306a36Sopenharmony_ci /*wait power state to suspend*/},\ 50762306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 50862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 50962306a36Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/}, \ 51062306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 51162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, 0 \ 51262306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/}, 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_CARDDIS \ 51562306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 51662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 51762306a36Sopenharmony_ci /*0x07=0x20 , SOP option to disable BG/MB*/}, \ 51862306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 51962306a36Sopenharmony_ci PWR_INTF_USB_MSK|PWR_INTF_SDIO_MSK,\ 52062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, BIT3 \ 52162306a36Sopenharmony_ci /*0x04[12:11] = 2b'01 enable WL suspend*/}, \ 52262306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 52362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT2, BIT2 \ 52462306a36Sopenharmony_ci /*0x04[10] = 1, enable SW LPS*/}, \ 52562306a36Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 52662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 1 \ 52762306a36Sopenharmony_ci /*0x48[16] = 1 to enable GPIO9 as EXT WAKEUP*/}, \ 52862306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 52962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 53062306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 53162306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 53262306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, BIT0 \ 53362306a36Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 53462306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 53562306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, 0 \ 53662306a36Sopenharmony_ci /*wait power state to suspend*/}, 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDDIS_TO_CARDEMU \ 53962306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 54062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3 | BIT7, 0 \ 54162306a36Sopenharmony_ci /*clear suspend enable and power down enable*/}, \ 54262306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 54362306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, BIT0, 0 \ 54462306a36Sopenharmony_ci /*Set SDIO suspend local register*/}, \ 54562306a36Sopenharmony_ci {0x0086, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 54662306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_POLLING, BIT1, BIT1 \ 54762306a36Sopenharmony_ci /*wait power state to suspend*/},\ 54862306a36Sopenharmony_ci {0x004A, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 54962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 55062306a36Sopenharmony_ci /*0x48[16] = 0 to disable GPIO9 as EXT WAKEUP*/}, \ 55162306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 55262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT3|BIT4, 0 \ 55362306a36Sopenharmony_ci /*0x04[12:11] = 2b'00 disable WL suspend*/},\ 55462306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 55562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 55662306a36Sopenharmony_ci /*0x23[4] = 1b'0 12H LDO enter normal mode*/}, \ 55762306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 55862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 55962306a36Sopenharmony_ci /*PCIe DMA start*/}, 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ci#define RTL8821A_TRANS_CARDEMU_TO_PDN \ 56262306a36Sopenharmony_ci {0x0023, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 56362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, BIT4 \ 56462306a36Sopenharmony_ci /*0x23[4] = 1b'1 12H LDO enter sleep mode*/}, \ 56562306a36Sopenharmony_ci {0x0007, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, \ 56662306a36Sopenharmony_ci PWR_INTF_SDIO_MSK|PWR_INTF_USB_MSK,\ 56762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x20 \ 56862306a36Sopenharmony_ci /*0x07[7:0] = 0x20 SOP option to disable BG/MB/ACK/SWR*/}, \ 56962306a36Sopenharmony_ci {0x0006, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 57062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 57162306a36Sopenharmony_ci /* 0x04[16] = 0*/},\ 57262306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 57362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, BIT7 \ 57462306a36Sopenharmony_ci /* 0x04[15] = 1*/}, 57562306a36Sopenharmony_ci 57662306a36Sopenharmony_ci#define RTL8821A_TRANS_PDN_TO_CARDEMU \ 57762306a36Sopenharmony_ci {0x0005, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 57862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT7, 0 \ 57962306a36Sopenharmony_ci /* 0x04[15] = 0*/}, 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ci#define RTL8821A_TRANS_ACT_TO_LPS \ 58262306a36Sopenharmony_ci {0x0301, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 58362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 58462306a36Sopenharmony_ci /*PCIe DMA stop*/}, \ 58562306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 58662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 58762306a36Sopenharmony_ci /*Tx Pause*/}, \ 58862306a36Sopenharmony_ci {0x05F8, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 58962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 59062306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 59162306a36Sopenharmony_ci {0x05F9, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 59262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 59362306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 59462306a36Sopenharmony_ci {0x05FA, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 59562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 59662306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 59762306a36Sopenharmony_ci {0x05FB, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 59862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, 0xFF, 0 \ 59962306a36Sopenharmony_ci /*Should be zero if no packet is transmitting*/}, \ 60062306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 60162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT0, 0 \ 60262306a36Sopenharmony_ci /*CCK and OFDM are disabled,and clock are gated*/}, \ 60362306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 60462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_US \ 60562306a36Sopenharmony_ci /*Delay 1us*/}, \ 60662306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 60762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 60862306a36Sopenharmony_ci /*Whole BB is reset*/}, \ 60962306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 61062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x03 \ 61162306a36Sopenharmony_ci /*Reset MAC TRX*/}, \ 61262306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 61362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, 0 \ 61462306a36Sopenharmony_ci /*check if removed later*/}, \ 61562306a36Sopenharmony_ci {0x0093, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 61662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x00 \ 61762306a36Sopenharmony_ci /*When driver enter Sus/ Disable, enable LOP for BT*/}, \ 61862306a36Sopenharmony_ci {0x0553, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 61962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT5, BIT5 \ 62062306a36Sopenharmony_ci /*Respond TxOK to scheduler*/}, 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci#define RTL8821A_TRANS_LPS_TO_ACT \ 62362306a36Sopenharmony_ci {0x0080, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_SDIO_MSK,\ 62462306a36Sopenharmony_ci PWR_BASEADDR_SDIO, PWR_CMD_WRITE, 0xFF, 0x84 \ 62562306a36Sopenharmony_ci /*SDIO RPWM*/},\ 62662306a36Sopenharmony_ci {0xFE58, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ 62762306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 62862306a36Sopenharmony_ci /*USB RPWM*/},\ 62962306a36Sopenharmony_ci {0x0361, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ 63062306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x84 \ 63162306a36Sopenharmony_ci /*PCIe RPWM*/},\ 63262306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 63362306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_DELAY, 0, PWRSEQ_DELAY_MS \ 63462306a36Sopenharmony_ci /*Delay*/},\ 63562306a36Sopenharmony_ci {0x0008, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 63662306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT4, 0 \ 63762306a36Sopenharmony_ci /*. 0x08[4] = 0 switch TSF to 40M*/},\ 63862306a36Sopenharmony_ci {0x0109, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 63962306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_POLLING, BIT7, 0 \ 64062306a36Sopenharmony_ci /*Polling 0x109[7]=0 TSF in 40M*/},\ 64162306a36Sopenharmony_ci {0x0029, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 64262306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT6|BIT7, 0 \ 64362306a36Sopenharmony_ci /*. 0x29[7:6] = 2b'00 enable BB clock*/},\ 64462306a36Sopenharmony_ci {0x0101, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 64562306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1, BIT1 \ 64662306a36Sopenharmony_ci /*. 0x101[1] = 1*/},\ 64762306a36Sopenharmony_ci {0x0100, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 64862306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0xFF \ 64962306a36Sopenharmony_ci /*. 0x100[7:0] = 0xFF enable WMAC TRX*/},\ 65062306a36Sopenharmony_ci {0x0002, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 65162306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, BIT1|BIT0, BIT1|BIT0 \ 65262306a36Sopenharmony_ci /*. 0x02[1:0] = 2b'11 enable BB macro*/},\ 65362306a36Sopenharmony_ci {0x0522, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 65462306a36Sopenharmony_ci PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0 \ 65562306a36Sopenharmony_ci /*. 0x522 = 0*/}, 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci#define RTL8821A_TRANS_END \ 65862306a36Sopenharmony_ci {0xFFFF, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ 65962306a36Sopenharmony_ci 0, PWR_CMD_END, 0, 0}, 66062306a36Sopenharmony_ci 66162306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_power_on_flow 66262306a36Sopenharmony_ci [RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + 66362306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 66462306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_radio_off_flow 66562306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 66662306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 66762306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_card_disable_flow 66862306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 66962306a36Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + 67062306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 67162306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_card_enable_flow 67262306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 67362306a36Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_ACT_STEPS + 67462306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 67562306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_suspend_flow 67662306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 67762306a36Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + 67862306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 67962306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_resume_flow 68062306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 68162306a36Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_SUS_STEPS + 68262306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 68362306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_hwpdn_flow 68462306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_CARDEMU_STEPS + 68562306a36Sopenharmony_ci RTL8821A_TRANS_CARDEMU_TO_PDN_STEPS + 68662306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 68762306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_enter_lps_flow 68862306a36Sopenharmony_ci [RTL8821A_TRANS_ACT_TO_LPS_STEPS + 68962306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 69062306a36Sopenharmony_ciextern struct wlan_pwr_cfg rtl8821A_leave_lps_flow 69162306a36Sopenharmony_ci [RTL8821A_TRANS_LPS_TO_ACT_STEPS + 69262306a36Sopenharmony_ci RTL8821A_TRANS_END_STEPS]; 69362306a36Sopenharmony_ci 69462306a36Sopenharmony_ci/*RTL8812 Power Configuration CMDs for PCIe interface*/ 69562306a36Sopenharmony_ci#define RTL8812_NIC_PWR_ON_FLOW rtl8812_power_on_flow 69662306a36Sopenharmony_ci#define RTL8812_NIC_RF_OFF_FLOW rtl8812_radio_off_flow 69762306a36Sopenharmony_ci#define RTL8812_NIC_DISABLE_FLOW rtl8812_card_disable_flow 69862306a36Sopenharmony_ci#define RTL8812_NIC_ENABLE_FLOW rtl8812_card_enable_flow 69962306a36Sopenharmony_ci#define RTL8812_NIC_SUSPEND_FLOW rtl8812_suspend_flow 70062306a36Sopenharmony_ci#define RTL8812_NIC_RESUME_FLOW rtl8812_resume_flow 70162306a36Sopenharmony_ci#define RTL8812_NIC_PDN_FLOW rtl8812_hwpdn_flow 70262306a36Sopenharmony_ci#define RTL8812_NIC_LPS_ENTER_FLOW rtl8812_enter_lps_flow 70362306a36Sopenharmony_ci#define RTL8812_NIC_LPS_LEAVE_FLOW rtl8812_leave_lps_flow 70462306a36Sopenharmony_ci 70562306a36Sopenharmony_ci/* RTL8821 Power Configuration CMDs for PCIe interface */ 70662306a36Sopenharmony_ci#define RTL8821A_NIC_PWR_ON_FLOW rtl8821A_power_on_flow 70762306a36Sopenharmony_ci#define RTL8821A_NIC_RF_OFF_FLOW rtl8821A_radio_off_flow 70862306a36Sopenharmony_ci#define RTL8821A_NIC_DISABLE_FLOW rtl8821A_card_disable_flow 70962306a36Sopenharmony_ci#define RTL8821A_NIC_ENABLE_FLOW rtl8821A_card_enable_flow 71062306a36Sopenharmony_ci#define RTL8821A_NIC_SUSPEND_FLOW rtl8821A_suspend_flow 71162306a36Sopenharmony_ci#define RTL8821A_NIC_RESUME_FLOW rtl8821A_resume_flow 71262306a36Sopenharmony_ci#define RTL8821A_NIC_PDN_FLOW rtl8821A_hwpdn_flow 71362306a36Sopenharmony_ci#define RTL8821A_NIC_LPS_ENTER_FLOW rtl8821A_enter_lps_flow 71462306a36Sopenharmony_ci#define RTL8821A_NIC_LPS_LEAVE_FLOW rtl8821A_leave_lps_flow 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci#endif 717