158391efdSNathan Chancellor /* SPDX-License-Identifier: GPL-2.0 */ 2554c0a3aSHans de Goede /****************************************************************************** 3554c0a3aSHans de Goede * 4554c0a3aSHans de Goede * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 5554c0a3aSHans de Goede * 6554c0a3aSHans de Goede ******************************************************************************/ 7554c0a3aSHans de Goede #ifndef __HAL_PHY_H__ 8554c0a3aSHans de Goede #define __HAL_PHY_H__ 9554c0a3aSHans de Goede 10554c0a3aSHans de Goede 11554c0a3aSHans de Goede #if DISABLE_BB_RF 12554c0a3aSHans de Goede #define HAL_FW_ENABLE 0 13554c0a3aSHans de Goede #define HAL_MAC_ENABLE 0 14554c0a3aSHans de Goede #define HAL_BB_ENABLE 0 15554c0a3aSHans de Goede #define HAL_RF_ENABLE 0 16554c0a3aSHans de Goede #else /* FPGA_PHY and ASIC */ 17554c0a3aSHans de Goede #define HAL_FW_ENABLE 1 18554c0a3aSHans de Goede #define HAL_MAC_ENABLE 1 19554c0a3aSHans de Goede #define HAL_BB_ENABLE 1 20554c0a3aSHans de Goede #define HAL_RF_ENABLE 1 21554c0a3aSHans de Goede #endif 22554c0a3aSHans de Goede 23554c0a3aSHans de Goede #define RF6052_MAX_TX_PWR 0x3F 24554c0a3aSHans de Goede #define RF6052_MAX_REG_88E 0xFF 25554c0a3aSHans de Goede #define RF6052_MAX_REG_92C 0x7F 26554c0a3aSHans de Goede 27554c0a3aSHans de Goede #define RF6052_MAX_REG \ 28554c0a3aSHans de Goede (RF6052_MAX_REG_88E > RF6052_MAX_REG_92C) ? RF6052_MAX_REG_88E: RF6052_MAX_REG_92C 29554c0a3aSHans de Goede 30554c0a3aSHans de Goede #define GET_RF6052_REAL_MAX_REG(_Adapter) RF6052_MAX_REG_92C 31554c0a3aSHans de Goede 32554c0a3aSHans de Goede #define RF6052_MAX_PATH 2 33554c0a3aSHans de Goede 34554c0a3aSHans de Goede /* */ 35554c0a3aSHans de Goede /* Antenna detection method, i.e., using single tone detection or RSSI reported from each antenna detected. */ 36554c0a3aSHans de Goede /* Added by Roger, 2013.05.22. */ 37554c0a3aSHans de Goede /* */ 38554c0a3aSHans de Goede #define ANT_DETECT_BY_SINGLE_TONE BIT0 39554c0a3aSHans de Goede #define ANT_DETECT_BY_RSSI BIT1 40554c0a3aSHans de Goede #define IS_ANT_DETECT_SUPPORT_SINGLE_TONE(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_SINGLE_TONE) 41554c0a3aSHans de Goede #define IS_ANT_DETECT_SUPPORT_RSSI(__Adapter) ((GET_HAL_DATA(__Adapter)->AntDetection) & ANT_DETECT_BY_RSSI) 42554c0a3aSHans de Goede 43554c0a3aSHans de Goede 44554c0a3aSHans de Goede /*--------------------------Define Parameters-------------------------------*/ 45554c0a3aSHans de Goede enum BAND_TYPE { 46554c0a3aSHans de Goede BAND_ON_2_4G = 0, 47554c0a3aSHans de Goede BAND_ON_5G, 48554c0a3aSHans de Goede BAND_ON_BOTH, 49554c0a3aSHans de Goede BANDMAX 50554c0a3aSHans de Goede }; 51554c0a3aSHans de Goede 52554c0a3aSHans de Goede enum RF_TYPE { 53554c0a3aSHans de Goede RF_TYPE_MIN = 0, /* 0 */ 54554c0a3aSHans de Goede RF_8225 = 1, /* 1 11b/g RF for verification only */ 55554c0a3aSHans de Goede RF_8256 = 2, /* 2 11b/g/n */ 56554c0a3aSHans de Goede RF_8258 = 3, /* 3 11a/b/g/n RF */ 57554c0a3aSHans de Goede RF_6052 = 4, /* 4 11b/g/n RF */ 58554c0a3aSHans de Goede RF_PSEUDO_11N = 5, /* 5, It is a temporality RF. */ 59554c0a3aSHans de Goede RF_TYPE_MAX 60554c0a3aSHans de Goede }; 61554c0a3aSHans de Goede 62554c0a3aSHans de Goede enum RF_PATH { 63554c0a3aSHans de Goede RF_PATH_A = 0, 64554c0a3aSHans de Goede RF_PATH_B, 65554c0a3aSHans de Goede RF_PATH_C, 66554c0a3aSHans de Goede RF_PATH_D 67554c0a3aSHans de Goede }; 68554c0a3aSHans de Goede 69554c0a3aSHans de Goede #define TX_1S 0 70554c0a3aSHans de Goede #define TX_2S 1 71554c0a3aSHans de Goede #define TX_3S 2 72554c0a3aSHans de Goede #define TX_4S 3 73554c0a3aSHans de Goede 74554c0a3aSHans de Goede #define RF_PATH_MAX_92C_88E 2 75554c0a3aSHans de Goede #define RF_PATH_MAX_90_8812 4 /* Max RF number 90 support */ 76554c0a3aSHans de Goede 77554c0a3aSHans de Goede enum ANTENNA_PATH { 78554c0a3aSHans de Goede ANTENNA_NONE = 0, 79554c0a3aSHans de Goede ANTENNA_D = 1, 80554c0a3aSHans de Goede ANTENNA_C = 2, 81554c0a3aSHans de Goede ANTENNA_CD = 3, 82554c0a3aSHans de Goede ANTENNA_B = 4, 83554c0a3aSHans de Goede ANTENNA_BD = 5, 84554c0a3aSHans de Goede ANTENNA_BC = 6, 85554c0a3aSHans de Goede ANTENNA_BCD = 7, 86554c0a3aSHans de Goede ANTENNA_A = 8, 87554c0a3aSHans de Goede ANTENNA_AD = 9, 88554c0a3aSHans de Goede ANTENNA_AC = 10, 89554c0a3aSHans de Goede ANTENNA_ACD = 11, 90554c0a3aSHans de Goede ANTENNA_AB = 12, 91554c0a3aSHans de Goede ANTENNA_ABD = 13, 92554c0a3aSHans de Goede ANTENNA_ABC = 14, 93554c0a3aSHans de Goede ANTENNA_ABCD = 15 94554c0a3aSHans de Goede }; 95554c0a3aSHans de Goede 96554c0a3aSHans de Goede enum RF_CONTENT { 97554c0a3aSHans de Goede radioa_txt = 0x1000, 98554c0a3aSHans de Goede radiob_txt = 0x1001, 99554c0a3aSHans de Goede radioc_txt = 0x1002, 100554c0a3aSHans de Goede radiod_txt = 0x1003 101554c0a3aSHans de Goede }; 102554c0a3aSHans de Goede 103554c0a3aSHans de Goede enum BaseBand_Config_Type { 104554c0a3aSHans de Goede BaseBand_Config_PHY_REG = 0, /* Radio Path A */ 105554c0a3aSHans de Goede BaseBand_Config_AGC_TAB = 1, /* Radio Path B */ 106554c0a3aSHans de Goede BaseBand_Config_AGC_TAB_2G = 2, 107554c0a3aSHans de Goede BaseBand_Config_AGC_TAB_5G = 3, 108554c0a3aSHans de Goede BaseBand_Config_PHY_REG_PG 109554c0a3aSHans de Goede }; 110554c0a3aSHans de Goede 111554c0a3aSHans de Goede enum HW_BLOCK { 112554c0a3aSHans de Goede HW_BLOCK_MAC = 0, 113554c0a3aSHans de Goede HW_BLOCK_PHY0 = 1, 114554c0a3aSHans de Goede HW_BLOCK_PHY1 = 2, 115554c0a3aSHans de Goede HW_BLOCK_RF = 3, 116554c0a3aSHans de Goede HW_BLOCK_MAXIMUM = 4, /* Never use this */ 117554c0a3aSHans de Goede }; 118554c0a3aSHans de Goede 119554c0a3aSHans de Goede enum WIRELESS_MODE { 120554c0a3aSHans de Goede WIRELESS_MODE_UNKNOWN = 0x00, 121554c0a3aSHans de Goede WIRELESS_MODE_A = 0x01, 122554c0a3aSHans de Goede WIRELESS_MODE_B = 0x02, 123554c0a3aSHans de Goede WIRELESS_MODE_G = 0x04, 124554c0a3aSHans de Goede WIRELESS_MODE_AUTO = 0x08, 125554c0a3aSHans de Goede WIRELESS_MODE_N_24G = 0x10, 126554c0a3aSHans de Goede WIRELESS_MODE_N_5G = 0x20, 127554c0a3aSHans de Goede WIRELESS_MODE_AC_5G = 0x40, 128554c0a3aSHans de Goede WIRELESS_MODE_AC_24G = 0x80, 129554c0a3aSHans de Goede WIRELESS_MODE_AC_ONLY = 0x100, 130554c0a3aSHans de Goede }; 131554c0a3aSHans de Goede 132554c0a3aSHans de Goede enum SwChnlCmdID { 133554c0a3aSHans de Goede CmdID_End, 134554c0a3aSHans de Goede CmdID_SetTxPowerLevel, 135554c0a3aSHans de Goede CmdID_BBRegWrite10, 136554c0a3aSHans de Goede CmdID_WritePortUlong, 137554c0a3aSHans de Goede CmdID_WritePortUshort, 138554c0a3aSHans de Goede CmdID_WritePortUchar, 139554c0a3aSHans de Goede CmdID_RF_WriteReg, 140554c0a3aSHans de Goede }; 141554c0a3aSHans de Goede 142554c0a3aSHans de Goede struct SwChnlCmd { 143554c0a3aSHans de Goede enum SwChnlCmdID CmdID; 144554c0a3aSHans de Goede u32 Para1; 145554c0a3aSHans de Goede u32 Para2; 146554c0a3aSHans de Goede u32 msDelay; 147554c0a3aSHans de Goede }; 148554c0a3aSHans de Goede 149554c0a3aSHans de Goede struct R_ANTENNA_SELECT_OFDM { 150554c0a3aSHans de Goede #ifdef __LITTLE_ENDIAN 151554c0a3aSHans de Goede u32 r_tx_antenna:4; 152554c0a3aSHans de Goede u32 r_ant_l:4; 153554c0a3aSHans de Goede u32 r_ant_non_ht:4; 154554c0a3aSHans de Goede u32 r_ant_ht1:4; 155554c0a3aSHans de Goede u32 r_ant_ht2:4; 156554c0a3aSHans de Goede u32 r_ant_ht_s1:4; 157554c0a3aSHans de Goede u32 r_ant_non_ht_s1:4; 158554c0a3aSHans de Goede u32 OFDM_TXSC:2; 159554c0a3aSHans de Goede u32 Reserved:2; 160554c0a3aSHans de Goede #else 161554c0a3aSHans de Goede u32 Reserved:2; 162554c0a3aSHans de Goede u32 OFDM_TXSC:2; 163554c0a3aSHans de Goede u32 r_ant_non_ht_s1:4; 164554c0a3aSHans de Goede u32 r_ant_ht_s1:4; 165554c0a3aSHans de Goede u32 r_ant_ht2:4; 166554c0a3aSHans de Goede u32 r_ant_ht1:4; 167554c0a3aSHans de Goede u32 r_ant_non_ht:4; 168554c0a3aSHans de Goede u32 r_ant_l:4; 169554c0a3aSHans de Goede u32 r_tx_antenna:4; 170554c0a3aSHans de Goede #endif 171554c0a3aSHans de Goede }; 172554c0a3aSHans de Goede 173554c0a3aSHans de Goede /*--------------------------Exported Function prototype---------------------*/ 174554c0a3aSHans de Goede 175554c0a3aSHans de Goede #endif /* __HAL_COMMON_H__ */ 176