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 __RTW_RF_H_ 8554c0a3aSHans de Goede #define __RTW_RF_H_ 9554c0a3aSHans de Goede 10554c0a3aSHans de Goede 11554c0a3aSHans de Goede #define OFDM_PHY 1 12554c0a3aSHans de Goede #define MIXED_PHY 2 13554c0a3aSHans de Goede #define CCK_PHY 3 14554c0a3aSHans de Goede 15554c0a3aSHans de Goede #define NumRates 13 16554c0a3aSHans de Goede 17554c0a3aSHans de Goede /* slot time for 11g */ 18554c0a3aSHans de Goede #define SHORT_SLOT_TIME 9 19554c0a3aSHans de Goede #define NON_SHORT_SLOT_TIME 20 20554c0a3aSHans de Goede 21554c0a3aSHans de Goede #define RTL8711_RF_MAX_SENS 6 22554c0a3aSHans de Goede #define RTL8711_RF_DEF_SENS 4 23554c0a3aSHans de Goede 24554c0a3aSHans de Goede /* */ 25554c0a3aSHans de Goede /* We now define the following channels as the max channels in each channel plan. */ 26554c0a3aSHans de Goede /* 2G, total 14 chnls */ 27554c0a3aSHans de Goede /* {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14} */ 28554c0a3aSHans de Goede /* 5G, total 24 chnls */ 29554c0a3aSHans de Goede /* {36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 30554c0a3aSHans de Goede * 124, 128, 132, 136, 140, 149, 153, 157, 161, 165} */ 31554c0a3aSHans de Goede #define MAX_CHANNEL_NUM_2G 14 32554c0a3aSHans de Goede #define MAX_CHANNEL_NUM_5G 24 33554c0a3aSHans de Goede #define MAX_CHANNEL_NUM 38/* 14+24 */ 34554c0a3aSHans de Goede 35554c0a3aSHans de Goede #define NUM_REGULATORYS 1 36554c0a3aSHans de Goede 37554c0a3aSHans de Goede /* Country codes */ 38554c0a3aSHans de Goede #define USA 0x555320 39554c0a3aSHans de Goede #define EUROPE 0x1 /* temp, should be provided later */ 40554c0a3aSHans de Goede #define JAPAN 0x2 /* temp, should be provided later */ 41554c0a3aSHans de Goede 42554c0a3aSHans de Goede struct regulatory_class { 43554c0a3aSHans de Goede u32 starting_freq; /* MHz, */ 44554c0a3aSHans de Goede u8 channel_set[MAX_CHANNEL_NUM]; 45554c0a3aSHans de Goede u8 channel_cck_power[MAX_CHANNEL_NUM];/* dbm */ 46554c0a3aSHans de Goede u8 channel_ofdm_power[MAX_CHANNEL_NUM];/* dbm */ 47554c0a3aSHans de Goede u8 txpower_limit; /* dbm */ 48554c0a3aSHans de Goede u8 channel_spacing; /* MHz */ 49554c0a3aSHans de Goede u8 modem; 50554c0a3aSHans de Goede }; 51554c0a3aSHans de Goede 52*80e3e599SMarco Cesati enum capability { 53554c0a3aSHans de Goede cESS = 0x0001, 54554c0a3aSHans de Goede cIBSS = 0x0002, 55554c0a3aSHans de Goede cPollable = 0x0004, 56554c0a3aSHans de Goede cPollReq = 0x0008, 57554c0a3aSHans de Goede cPrivacy = 0x0010, 58554c0a3aSHans de Goede cShortPreamble = 0x0020, 59554c0a3aSHans de Goede cPBCC = 0x0040, 60554c0a3aSHans de Goede cChannelAgility = 0x0080, 61554c0a3aSHans de Goede cSpectrumMgnt = 0x0100, 62554c0a3aSHans de Goede cQos = 0x0200, /* For HCCA, use with CF-Pollable and CF-PollReq */ 63554c0a3aSHans de Goede cShortSlotTime = 0x0400, 64554c0a3aSHans de Goede cAPSD = 0x0800, 65554c0a3aSHans de Goede cRM = 0x1000, /* RRM (Radio Request Measurement) */ 66554c0a3aSHans de Goede cDSSS_OFDM = 0x2000, 67554c0a3aSHans de Goede cDelayedBA = 0x4000, 68554c0a3aSHans de Goede cImmediateBA = 0x8000, 69554c0a3aSHans de Goede }; 70554c0a3aSHans de Goede 71*80e3e599SMarco Cesati enum _reg_preamble_mode { 72554c0a3aSHans de Goede PREAMBLE_LONG = 1, 73554c0a3aSHans de Goede PREAMBLE_AUTO = 2, 74554c0a3aSHans de Goede PREAMBLE_SHORT = 3, 75554c0a3aSHans de Goede }; 76554c0a3aSHans de Goede 77*80e3e599SMarco Cesati enum _rtl8712_rf_mimo_config_ { 78554c0a3aSHans de Goede RTL8712_RFCONFIG_1T = 0x10, 79554c0a3aSHans de Goede RTL8712_RFCONFIG_2T = 0x20, 80554c0a3aSHans de Goede RTL8712_RFCONFIG_1R = 0x01, 81554c0a3aSHans de Goede RTL8712_RFCONFIG_2R = 0x02, 82554c0a3aSHans de Goede RTL8712_RFCONFIG_1T1R = 0x11, 83554c0a3aSHans de Goede RTL8712_RFCONFIG_1T2R = 0x12, 84554c0a3aSHans de Goede RTL8712_RFCONFIG_TURBO = 0x92, 85554c0a3aSHans de Goede RTL8712_RFCONFIG_2T2R = 0x22 86554c0a3aSHans de Goede }; 87554c0a3aSHans de Goede 88*80e3e599SMarco Cesati enum rf90_radio_path { 89554c0a3aSHans de Goede RF90_PATH_A = 0, /* Radio Path A */ 90554c0a3aSHans de Goede RF90_PATH_B = 1, /* Radio Path B */ 91554c0a3aSHans de Goede RF90_PATH_C = 2, /* Radio Path C */ 92554c0a3aSHans de Goede RF90_PATH_D = 3 /* Radio Path D */ 93554c0a3aSHans de Goede }; 94554c0a3aSHans de Goede 95554c0a3aSHans de Goede /* Bandwidth Offset */ 96554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 97554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_LOWER 1 98554c0a3aSHans de Goede #define HAL_PRIME_CHNL_OFFSET_UPPER 2 99554c0a3aSHans de Goede 100554c0a3aSHans de Goede /* Represent Channel Width in HT Capabilities */ 101*80e3e599SMarco Cesati enum channel_width { 102554c0a3aSHans de Goede CHANNEL_WIDTH_20 = 0, 103554c0a3aSHans de Goede CHANNEL_WIDTH_40 = 1, 104554c0a3aSHans de Goede CHANNEL_WIDTH_80 = 2, 105554c0a3aSHans de Goede CHANNEL_WIDTH_160 = 3, 106554c0a3aSHans de Goede CHANNEL_WIDTH_80_80 = 4, 107554c0a3aSHans de Goede CHANNEL_WIDTH_MAX = 5, 108554c0a3aSHans de Goede }; 109554c0a3aSHans de Goede 110554c0a3aSHans de Goede /* Represent Extension Channel Offset in HT Capabilities */ 111554c0a3aSHans de Goede /* This is available only in 40Mhz mode. */ 112*80e3e599SMarco Cesati enum extchnl_offset { 113554c0a3aSHans de Goede EXTCHNL_OFFSET_NO_EXT = 0, 114554c0a3aSHans de Goede EXTCHNL_OFFSET_UPPER = 1, 115554c0a3aSHans de Goede EXTCHNL_OFFSET_NO_DEF = 2, 116554c0a3aSHans de Goede EXTCHNL_OFFSET_LOWER = 3, 117554c0a3aSHans de Goede }; 118554c0a3aSHans de Goede 119*80e3e599SMarco Cesati enum vht_data_sc { 120554c0a3aSHans de Goede VHT_DATA_SC_DONOT_CARE = 0, 121554c0a3aSHans de Goede VHT_DATA_SC_20_UPPER_OF_80MHZ = 1, 122554c0a3aSHans de Goede VHT_DATA_SC_20_LOWER_OF_80MHZ = 2, 123554c0a3aSHans de Goede VHT_DATA_SC_20_UPPERST_OF_80MHZ = 3, 124554c0a3aSHans de Goede VHT_DATA_SC_20_LOWEST_OF_80MHZ = 4, 125554c0a3aSHans de Goede VHT_DATA_SC_20_RECV1 = 5, 126554c0a3aSHans de Goede VHT_DATA_SC_20_RECV2 = 6, 127554c0a3aSHans de Goede VHT_DATA_SC_20_RECV3 = 7, 128554c0a3aSHans de Goede VHT_DATA_SC_20_RECV4 = 8, 129554c0a3aSHans de Goede VHT_DATA_SC_40_UPPER_OF_80MHZ = 9, 130554c0a3aSHans de Goede VHT_DATA_SC_40_LOWER_OF_80MHZ = 10, 131554c0a3aSHans de Goede }; 132554c0a3aSHans de Goede 133*80e3e599SMarco Cesati enum protection_mode { 134554c0a3aSHans de Goede PROTECTION_MODE_AUTO = 0, 135554c0a3aSHans de Goede PROTECTION_MODE_FORCE_ENABLE = 1, 136554c0a3aSHans de Goede PROTECTION_MODE_FORCE_DISABLE = 2, 137554c0a3aSHans de Goede }; 138554c0a3aSHans de Goede 139554c0a3aSHans de Goede /* 2007/11/15 MH Define different RF type. */ 140*80e3e599SMarco Cesati enum rt_rf_type_definition { 141554c0a3aSHans de Goede RF_1T2R = 0, 142554c0a3aSHans de Goede RF_2T4R = 1, 143554c0a3aSHans de Goede RF_2T2R = 2, 144554c0a3aSHans de Goede RF_1T1R = 3, 145554c0a3aSHans de Goede RF_2T2R_GREEN = 4, 146554c0a3aSHans de Goede RF_MAX_TYPE = 5, 147554c0a3aSHans de Goede }; 148554c0a3aSHans de Goede 149554c0a3aSHans de Goede u32 rtw_ch2freq(u32 ch); 150554c0a3aSHans de Goede 151554c0a3aSHans de Goede #endif /* _RTL8711_RF_H_ */ 152