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