162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2010 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __RTL8821AE_DEF_H__ 562306a36Sopenharmony_ci#define __RTL8821AE_DEF_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci/*--------------------------Define -------------------------------------------*/ 862306a36Sopenharmony_ci#define USE_SPECIFIC_FW_TO_SUPPORT_WOWLAN 1 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci/* BIT 7 HT Rate*/ 1162306a36Sopenharmony_ci/*TxHT = 0*/ 1262306a36Sopenharmony_ci#define MGN_1M 0x02 1362306a36Sopenharmony_ci#define MGN_2M 0x04 1462306a36Sopenharmony_ci#define MGN_5_5M 0x0b 1562306a36Sopenharmony_ci#define MGN_11M 0x16 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define MGN_6M 0x0c 1862306a36Sopenharmony_ci#define MGN_9M 0x12 1962306a36Sopenharmony_ci#define MGN_12M 0x18 2062306a36Sopenharmony_ci#define MGN_18M 0x24 2162306a36Sopenharmony_ci#define MGN_24M 0x30 2262306a36Sopenharmony_ci#define MGN_36M 0x48 2362306a36Sopenharmony_ci#define MGN_48M 0x60 2462306a36Sopenharmony_ci#define MGN_54M 0x6c 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci/* TxHT = 1 */ 2762306a36Sopenharmony_ci#define MGN_MCS0 0x80 2862306a36Sopenharmony_ci#define MGN_MCS1 0x81 2962306a36Sopenharmony_ci#define MGN_MCS2 0x82 3062306a36Sopenharmony_ci#define MGN_MCS3 0x83 3162306a36Sopenharmony_ci#define MGN_MCS4 0x84 3262306a36Sopenharmony_ci#define MGN_MCS5 0x85 3362306a36Sopenharmony_ci#define MGN_MCS6 0x86 3462306a36Sopenharmony_ci#define MGN_MCS7 0x87 3562306a36Sopenharmony_ci#define MGN_MCS8 0x88 3662306a36Sopenharmony_ci#define MGN_MCS9 0x89 3762306a36Sopenharmony_ci#define MGN_MCS10 0x8a 3862306a36Sopenharmony_ci#define MGN_MCS11 0x8b 3962306a36Sopenharmony_ci#define MGN_MCS12 0x8c 4062306a36Sopenharmony_ci#define MGN_MCS13 0x8d 4162306a36Sopenharmony_ci#define MGN_MCS14 0x8e 4262306a36Sopenharmony_ci#define MGN_MCS15 0x8f 4362306a36Sopenharmony_ci/* VHT rate */ 4462306a36Sopenharmony_ci#define MGN_VHT1SS_MCS0 0x90 4562306a36Sopenharmony_ci#define MGN_VHT1SS_MCS1 0x91 4662306a36Sopenharmony_ci#define MGN_VHT1SS_MCS2 0x92 4762306a36Sopenharmony_ci#define MGN_VHT1SS_MCS3 0x93 4862306a36Sopenharmony_ci#define MGN_VHT1SS_MCS4 0x94 4962306a36Sopenharmony_ci#define MGN_VHT1SS_MCS5 0x95 5062306a36Sopenharmony_ci#define MGN_VHT1SS_MCS6 0x96 5162306a36Sopenharmony_ci#define MGN_VHT1SS_MCS7 0x97 5262306a36Sopenharmony_ci#define MGN_VHT1SS_MCS8 0x98 5362306a36Sopenharmony_ci#define MGN_VHT1SS_MCS9 0x99 5462306a36Sopenharmony_ci#define MGN_VHT2SS_MCS0 0x9a 5562306a36Sopenharmony_ci#define MGN_VHT2SS_MCS1 0x9b 5662306a36Sopenharmony_ci#define MGN_VHT2SS_MCS2 0x9c 5762306a36Sopenharmony_ci#define MGN_VHT2SS_MCS3 0x9d 5862306a36Sopenharmony_ci#define MGN_VHT2SS_MCS4 0x9e 5962306a36Sopenharmony_ci#define MGN_VHT2SS_MCS5 0x9f 6062306a36Sopenharmony_ci#define MGN_VHT2SS_MCS6 0xa0 6162306a36Sopenharmony_ci#define MGN_VHT2SS_MCS7 0xa1 6262306a36Sopenharmony_ci#define MGN_VHT2SS_MCS8 0xa2 6362306a36Sopenharmony_ci#define MGN_VHT2SS_MCS9 0xa3 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define MGN_VHT3SS_MCS0 0xa4 6662306a36Sopenharmony_ci#define MGN_VHT3SS_MCS1 0xa5 6762306a36Sopenharmony_ci#define MGN_VHT3SS_MCS2 0xa6 6862306a36Sopenharmony_ci#define MGN_VHT3SS_MCS3 0xa7 6962306a36Sopenharmony_ci#define MGN_VHT3SS_MCS4 0xa8 7062306a36Sopenharmony_ci#define MGN_VHT3SS_MCS5 0xa9 7162306a36Sopenharmony_ci#define MGN_VHT3SS_MCS6 0xaa 7262306a36Sopenharmony_ci#define MGN_VHT3SS_MCS7 0xab 7362306a36Sopenharmony_ci#define MGN_VHT3SS_MCS8 0xac 7462306a36Sopenharmony_ci#define MGN_VHT3SS_MCS9 0xad 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci#define MGN_MCS0_SG 0xc0 7762306a36Sopenharmony_ci#define MGN_MCS1_SG 0xc1 7862306a36Sopenharmony_ci#define MGN_MCS2_SG 0xc2 7962306a36Sopenharmony_ci#define MGN_MCS3_SG 0xc3 8062306a36Sopenharmony_ci#define MGN_MCS4_SG 0xc4 8162306a36Sopenharmony_ci#define MGN_MCS5_SG 0xc5 8262306a36Sopenharmony_ci#define MGN_MCS6_SG 0xc6 8362306a36Sopenharmony_ci#define MGN_MCS7_SG 0xc7 8462306a36Sopenharmony_ci#define MGN_MCS8_SG 0xc8 8562306a36Sopenharmony_ci#define MGN_MCS9_SG 0xc9 8662306a36Sopenharmony_ci#define MGN_MCS10_SG 0xca 8762306a36Sopenharmony_ci#define MGN_MCS11_SG 0xcb 8862306a36Sopenharmony_ci#define MGN_MCS12_SG 0xcc 8962306a36Sopenharmony_ci#define MGN_MCS13_SG 0xcd 9062306a36Sopenharmony_ci#define MGN_MCS14_SG 0xce 9162306a36Sopenharmony_ci#define MGN_MCS15_SG 0xcf 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci#define MGN_UNKNOWN 0xff 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci/* 30 ms */ 9662306a36Sopenharmony_ci#define WIFI_NAV_UPPER_US 30000 9762306a36Sopenharmony_ci#define HAL_92C_NAV_UPPER_UNIT 128 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci#define MAX_RX_DMA_BUFFER_SIZE 0x3E80 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci#define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 10262306a36Sopenharmony_ci#define HAL_PRIME_CHNL_OFFSET_LOWER 1 10362306a36Sopenharmony_ci#define HAL_PRIME_CHNL_OFFSET_UPPER 2 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci#define RX_MPDU_QUEUE 0 10662306a36Sopenharmony_ci#define RX_CMD_QUEUE 1 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci#define MAX_RX_DMA_BUFFER_SIZE_8812 0x3E80 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci#define CHIP_BONDING_IDENTIFIER(_value) (((_value)>>22)&0x3) 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci#define CHIP_8812 BIT(2) 11362306a36Sopenharmony_ci#define CHIP_8821 (BIT(0)|BIT(2)) 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci#define CHIP_8821A (BIT(0)|BIT(2)) 11662306a36Sopenharmony_ci#define NORMAL_CHIP BIT(3) 11762306a36Sopenharmony_ci#define RF_TYPE_1T1R (~(BIT(4)|BIT(5)|BIT(6))) 11862306a36Sopenharmony_ci#define RF_TYPE_1T2R BIT(4) 11962306a36Sopenharmony_ci#define RF_TYPE_2T2R BIT(5) 12062306a36Sopenharmony_ci#define CHIP_VENDOR_UMC BIT(7) 12162306a36Sopenharmony_ci#define B_CUT_VERSION BIT(12) 12262306a36Sopenharmony_ci#define C_CUT_VERSION BIT(13) 12362306a36Sopenharmony_ci#define D_CUT_VERSION ((BIT(12)|BIT(13))) 12462306a36Sopenharmony_ci#define E_CUT_VERSION BIT(14) 12562306a36Sopenharmony_ci#define RF_RL_ID (BIT(31)|BIT(30)|BIT(29)|BIT(28)) 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_cienum version_8821ae { 12862306a36Sopenharmony_ci VERSION_TEST_CHIP_1T1R_8812 = 0x0004, 12962306a36Sopenharmony_ci VERSION_TEST_CHIP_2T2R_8812 = 0x0024, 13062306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_1T1R_8812 = 0x100c, 13162306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_2T2R_8812 = 0x102c, 13262306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_1T1R_8812_C_CUT = 0x200c, 13362306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_2T2R_8812_C_CUT = 0x202c, 13462306a36Sopenharmony_ci VERSION_TEST_CHIP_8821 = 0x0005, 13562306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_8821 = 0x000d, 13662306a36Sopenharmony_ci VERSION_NORMAL_TSMC_CHIP_8821_B_CUT = 0x100d, 13762306a36Sopenharmony_ci VERSION_UNKNOWN = 0xFF, 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cienum vht_data_sc { 14162306a36Sopenharmony_ci VHT_DATA_SC_DONOT_CARE = 0, 14262306a36Sopenharmony_ci VHT_DATA_SC_20_UPPER_OF_80MHZ = 1, 14362306a36Sopenharmony_ci VHT_DATA_SC_20_LOWER_OF_80MHZ = 2, 14462306a36Sopenharmony_ci VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3, 14562306a36Sopenharmony_ci VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4, 14662306a36Sopenharmony_ci VHT_DATA_SC_20_RECV1 = 5, 14762306a36Sopenharmony_ci VHT_DATA_SC_20_RECV2 = 6, 14862306a36Sopenharmony_ci VHT_DATA_SC_20_RECV3 = 7, 14962306a36Sopenharmony_ci VHT_DATA_SC_20_RECV4 = 8, 15062306a36Sopenharmony_ci VHT_DATA_SC_40_UPPER_OF_80MHZ = 9, 15162306a36Sopenharmony_ci VHT_DATA_SC_40_LOWER_OF_80MHZ = 10, 15262306a36Sopenharmony_ci}; 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci/* MASK */ 15562306a36Sopenharmony_ci#define IC_TYPE_MASK (BIT(0)|BIT(1)|BIT(2)) 15662306a36Sopenharmony_ci#define CHIP_TYPE_MASK BIT(3) 15762306a36Sopenharmony_ci#define RF_TYPE_MASK (BIT(4)|BIT(5)|BIT(6)) 15862306a36Sopenharmony_ci#define MANUFACTUER_MASK BIT(7) 15962306a36Sopenharmony_ci#define ROM_VERSION_MASK (BIT(11)|BIT(10)|BIT(9)|BIT(8)) 16062306a36Sopenharmony_ci#define CUT_VERSION_MASK (BIT(15)|BIT(14)|BIT(13)|BIT(12)) 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci/* Get element */ 16362306a36Sopenharmony_ci#define GET_CVID_IC_TYPE(version) ((version) & IC_TYPE_MASK) 16462306a36Sopenharmony_ci#define GET_CVID_CHIP_TYPE(version) ((version) & CHIP_TYPE_MASK) 16562306a36Sopenharmony_ci#define GET_CVID_RF_TYPE(version) ((version) & RF_TYPE_MASK) 16662306a36Sopenharmony_ci#define GET_CVID_MANUFACTUER(version) ((version) & MANUFACTUER_MASK) 16762306a36Sopenharmony_ci#define GET_CVID_ROM_VERSION(version) ((version) & ROM_VERSION_MASK) 16862306a36Sopenharmony_ci#define GET_CVID_CUT_VERSION(version) ((version) & CUT_VERSION_MASK) 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_ci#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version)) ? false : true) 17162306a36Sopenharmony_ci#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)\ 17262306a36Sopenharmony_ci ? true : false) 17362306a36Sopenharmony_ci#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)\ 17462306a36Sopenharmony_ci ? true : false) 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#define IS_8812_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8812) ? \ 17762306a36Sopenharmony_ci true : false) 17862306a36Sopenharmony_ci#define IS_8821_SERIES(version) ((GET_CVID_IC_TYPE(version) == CHIP_8821) ? \ 17962306a36Sopenharmony_ci true : false) 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci#define IS_VENDOR_8812A_TEST_CHIP(version) ((IS_8812_SERIES(version)) ? \ 18262306a36Sopenharmony_ci ((IS_NORMAL_CHIP(version)) ? \ 18362306a36Sopenharmony_ci false : true) : false) 18462306a36Sopenharmony_ci#define IS_VENDOR_8812A_MP_CHIP(version) ((IS_8812_SERIES(version)) ? \ 18562306a36Sopenharmony_ci ((IS_NORMAL_CHIP(version)) ? \ 18662306a36Sopenharmony_ci true : false) : false) 18762306a36Sopenharmony_ci#define IS_VENDOR_8812A_C_CUT(version) ((IS_8812_SERIES(version)) ? \ 18862306a36Sopenharmony_ci ((GET_CVID_CUT_VERSION(version) == \ 18962306a36Sopenharmony_ci C_CUT_VERSION) ? \ 19062306a36Sopenharmony_ci true : false) : false) 19162306a36Sopenharmony_ci 19262306a36Sopenharmony_ci#define IS_VENDOR_8821A_TEST_CHIP(version) ((IS_8821_SERIES(version)) ? \ 19362306a36Sopenharmony_ci ((IS_NORMAL_CHIP(version)) ? \ 19462306a36Sopenharmony_ci false : true) : false) 19562306a36Sopenharmony_ci#define IS_VENDOR_8821A_MP_CHIP(version) ((IS_8821_SERIES(version)) ? \ 19662306a36Sopenharmony_ci ((IS_NORMAL_CHIP(version)) ? \ 19762306a36Sopenharmony_ci true : false) : false) 19862306a36Sopenharmony_ci#define IS_VENDOR_8821A_B_CUT(version) ((IS_8821_SERIES(version)) ? \ 19962306a36Sopenharmony_ci ((GET_CVID_CUT_VERSION(version) == \ 20062306a36Sopenharmony_ci B_CUT_VERSION) ? \ 20162306a36Sopenharmony_ci true : false) : false) 20262306a36Sopenharmony_cienum board_type { 20362306a36Sopenharmony_ci ODM_BOARD_DEFAULT = 0, /* The DEFAULT case. */ 20462306a36Sopenharmony_ci ODM_BOARD_MINICARD = BIT(0), /* 0 = non-mini card, 1 = mini card. */ 20562306a36Sopenharmony_ci ODM_BOARD_SLIM = BIT(1), /* 0 = non-slim card, 1 = slim card */ 20662306a36Sopenharmony_ci ODM_BOARD_BT = BIT(2), /* 0 = without BT card, 1 = with BT */ 20762306a36Sopenharmony_ci ODM_BOARD_EXT_PA = BIT(3), /* 1 = existing 2G ext-PA */ 20862306a36Sopenharmony_ci ODM_BOARD_EXT_LNA = BIT(4), /* 1 = existing 2G ext-LNA */ 20962306a36Sopenharmony_ci ODM_BOARD_EXT_TRSW = BIT(5), /* 1 = existing ext-TRSW */ 21062306a36Sopenharmony_ci ODM_BOARD_EXT_PA_5G = BIT(6), /* 1 = existing 5G ext-PA */ 21162306a36Sopenharmony_ci ODM_BOARD_EXT_LNA_5G = BIT(7), /* 1 = existing 5G ext-LNA */ 21262306a36Sopenharmony_ci}; 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_cienum rf_optype { 21562306a36Sopenharmony_ci RF_OP_BY_SW_3WIRE = 0, 21662306a36Sopenharmony_ci RF_OP_BY_FW, 21762306a36Sopenharmony_ci RF_OP_MAX 21862306a36Sopenharmony_ci}; 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_cienum rf_power_state { 22162306a36Sopenharmony_ci RF_ON, 22262306a36Sopenharmony_ci RF_OFF, 22362306a36Sopenharmony_ci RF_SLEEP, 22462306a36Sopenharmony_ci RF_SHUT_DOWN, 22562306a36Sopenharmony_ci}; 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_cienum power_save_mode { 22862306a36Sopenharmony_ci POWER_SAVE_MODE_ACTIVE, 22962306a36Sopenharmony_ci POWER_SAVE_MODE_SAVE, 23062306a36Sopenharmony_ci}; 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_cienum power_polocy_config { 23362306a36Sopenharmony_ci POWERCFG_MAX_POWER_SAVINGS, 23462306a36Sopenharmony_ci POWERCFG_GLOBAL_POWER_SAVINGS, 23562306a36Sopenharmony_ci POWERCFG_LOCAL_POWER_SAVINGS, 23662306a36Sopenharmony_ci POWERCFG_LENOVO, 23762306a36Sopenharmony_ci}; 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_cienum interface_select_pci { 24062306a36Sopenharmony_ci INTF_SEL1_MINICARD = 0, 24162306a36Sopenharmony_ci INTF_SEL0_PCIE = 1, 24262306a36Sopenharmony_ci INTF_SEL2_RSV = 2, 24362306a36Sopenharmony_ci INTF_SEL3_RSV = 3, 24462306a36Sopenharmony_ci}; 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_cienum rtl_desc_qsel { 24762306a36Sopenharmony_ci QSLT_BK = 0x2, 24862306a36Sopenharmony_ci QSLT_BE = 0x0, 24962306a36Sopenharmony_ci QSLT_VI = 0x5, 25062306a36Sopenharmony_ci QSLT_VO = 0x7, 25162306a36Sopenharmony_ci QSLT_BEACON = 0x10, 25262306a36Sopenharmony_ci QSLT_HIGH = 0x11, 25362306a36Sopenharmony_ci QSLT_MGNT = 0x12, 25462306a36Sopenharmony_ci QSLT_CMD = 0x13, 25562306a36Sopenharmony_ci}; 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_cistruct phy_sts_cck_8821ae_t { 25862306a36Sopenharmony_ci u8 adc_pwdb_X[4]; 25962306a36Sopenharmony_ci u8 sq_rpt; 26062306a36Sopenharmony_ci u8 cck_agc_rpt; 26162306a36Sopenharmony_ci}; 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_cistruct h2c_cmd_8821ae { 26462306a36Sopenharmony_ci u8 element_id; 26562306a36Sopenharmony_ci u32 cmd_len; 26662306a36Sopenharmony_ci u8 *p_cmdbuffer; 26762306a36Sopenharmony_ci}; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci#endif 270