1250008Sadrian#ifndef __AR9300_FREEBSD_INC_H__ 2250008Sadrian#define __AR9300_FREEBSD_INC_H__ 3250008Sadrian 4250008Sadrian/* 5250008Sadrian * Define some configuration entries for the AR9300 HAL, so #if entries 6250008Sadrian * don't have to be removed. 7250008Sadrian */ 8250008Sadrian#define ATH_DRIVER_SIM 0 /* SIM */ 9250008Sadrian#define ATH_WOW 0 /* Wake on Wireless */ 10250008Sadrian#define ATH_SUPPORT_MCI 1 /* MCI btcoex */ 11250008Sadrian#define ATH_SUPPORT_AIC 0 /* XXX to do with btcoex? */ 12250008Sadrian#define AH_NEED_TX_DATA_SWAP 0 /* TX descriptor swap? */ 13250008Sadrian#define AH_NEED_RX_DATA_SWAP 0 /* TX descriptor swap? */ 14250008Sadrian#define ATH_SUPPORT_WIRESHARK 0 /* Radiotap HAL code */ 15250008Sadrian#define AH_SUPPORT_WRITE_EEPROM 0 /* EEPROM write support */ 16250008Sadrian#define ATH_SUPPORT_WAPI 0 /* China WAPI support */ 17250008Sadrian#define ATH_ANT_DIV_COMB 1 /* Antenna combining */ 18250008Sadrian#define ATH_SUPPORT_RAW_ADC_CAPTURE 0 /* Raw ADC capture support */ 19250008Sadrian#define ATH_TRAFFIC_FAST_RECOVER 0 /* XXX not sure yet */ 20291642Sadrian#define ATH_SUPPORT_SPECTRAL 1 /* Spectral scan support */ 21250008Sadrian#define ATH_BT_COEX 1 /* Enable BT Coex code */ 22250008Sadrian#define ATH_PCIE_ERROR_MONITOR 0 /* ??? */ 23250008Sadrian#define ATH_SUPPORT_CRDC 0 /* ??? */ 24250008Sadrian#define ATH_LOW_POWER_ENABLE 0 /* ??? */ 25250008Sadrian#define ATH_SUPPORT_VOW_DCS 0 /* Video over wireless dynamic channel select */ 26250008Sadrian#define REMOVE_PKT_LOG 1 27250008Sadrian#define ATH_VC_MODE_PROXY_STA 0 /* Azimuth + proxysta? */ 28250008Sadrian#define ATH_GEN_RANDOMNESS 0 29250008Sadrian#define __PKT_SERIOUS_ERRORS__ 0 30250008Sadrian#define HAL_INTR_REFCOUNT_DISABLE 1 /* XXX wha? And atomics in the HAL!? */ 31250008Sadrian#define UMAC_SUPPORT_SMARTANTENNA 0 /* sigh.. */ 32250008Sadrian#define ATH_SMARTANTENNA_DISABLE_JTAG 0 33250008Sadrian#define ATH_SUPPORT_WIRESHARK 0 34250008Sadrian#define ATH_SUPPORT_WIFIPOS 0 35250008Sadrian#define ATH_SUPPORT_PAPRD 1 36250008Sadrian#define ATH_SUPPORT_TxBF 0 37251740Sadrian#define AH_PRIVATE_DIAG 1 38278741Sadrian#define ATH_SUPPORT_KEYPLUMB_WAR 0 39250008Sadrian 40250008Sadrian/* XXX need to reverify these; they came in with qcamain */ 41250008Sadrian#define ATH_SUPPORT_FAST_CC 0 42250008Sadrian#define ATH_SUPPORT_RADIO_RETENTION 0 43250008Sadrian#define ATH_SUPPORT_CAL_REUSE 0 44250008Sadrian 45250008Sadrian#define ATH_WOW_OFFLOAD 0 46250008Sadrian 47250008Sadrian#define HAL_NO_INTERSPERSED_READS 48250008Sadrian 49250008Sadrian/* Required or things will probe/attach, but not work right */ 50250008Sadrian#define AH_SUPPORT_OSPREY 1 51250008Sadrian#define AH_SUPPORT_POSEIDON 1 52250008Sadrian#define AH_SUPPORT_AR9300 1 53250008Sadrian 54291567Sadrian/* These are the embedded boards */ 55252235Sadrian#ifdef AH_SUPPORT_AR9330 56252235Sadrian#define AH_SUPPORT_HORNET 1 57252235Sadrian#endif /* AH_SUPPORT_AR9330 */ 58252235Sadrian#ifdef AH_SUPPORT_AR9340 59252235Sadrian#define AH_SUPPORT_WASP 1 60252235Sadrian#endif /* AH_SUPPORT_AR9340 */ 61276743Sadrian#ifdef AH_SUPPORT_QCA9550 62276743Sadrian#define AH_SUPPORT_SCORPION 1 63276743Sadrian#endif /* AH_SUPPORT_QCA9550 */ 64291437Sadrian#ifdef AH_SUPPORT_QCA9530 65291437Sadrian#define AH_SUPPORT_HONEYBEE 1 66291437Sadrian#endif /* AH_SUPPORT_QCA9530 */ 67250008Sadrian#define FIX_NOISE_FLOOR 1 68250008Sadrian 69250008Sadrian/* XXX this needs to be removed! No atomics in the HAL! */ 70250008Sadriantypedef int os_atomic_t; /* XXX shouldn't do atomics here! */ 71250008Sadrian#define OS_ATOMIC_INC(a) (*a)++ 72250008Sadrian#define OS_ATOMIC_DEC(a) (*a)-- 73250008Sadrian 74250008Sadrian/* 75250008Sadrian * HAL definitions which aren't necessarily for public consumption (yet). 76250008Sadrian */ 77250008Sadrian 78250008Sadrianenum { 79250008Sadrian HAL_TRUE_CHIP = 1, 80250008Sadrian HAL_MAC_TO_MAC_EMU, 81250008Sadrian HAL_MAC_BB_EMU, 82250008Sadrian}; 83250008Sadrian 84250008Sadrian/* HAL_KEY_TYPE */ 85250008Sadrianenum { 86250008Sadrian HAL_KEY_PROXY_STA_MASK = 0x10, 87250008Sadrian}; 88250008Sadrian 89250008Sadriantypedef enum { 90250008Sadrian HAL_SMPS_DEFAULT = 0, 91250008Sadrian HAL_SMPS_SW_CTRL_LOW_PWR, /* Software control, low power setting */ 92250008Sadrian HAL_SMPS_SW_CTRL_HIGH_PWR, /* Software control, high power setting */ 93250008Sadrian HAL_SMPS_HW_CTRL /* Hardware Control */ 94250008Sadrian} HAL_SMPS_MODE; 95250008Sadrian 96250008Sadrian/* 97250008Sadrian * Green Tx, Based on different RSSI of Received Beacon thresholds, 98250008Sadrian * using different tx power by modified register tx power related values. 99250008Sadrian * The thresholds are decided by system team. 100250008Sadrian */ 101250008Sadrian#define GreenTX_thres1 56 /* in dB */ 102250008Sadrian#define GreenTX_thres2 36 /* in dB */ 103250008Sadrian 104250008Sadriantypedef enum { 105250008Sadrian HAL_RSSI_TX_POWER_NONE = 0, 106250008Sadrian HAL_RSSI_TX_POWER_SHORT = 1, /* short range, reduce OB/DB bias current and disable PAL */ 107250008Sadrian HAL_RSSI_TX_POWER_MIDDLE = 2, /* middle range, reduce OB/DB bias current and PAL is enabled */ 108250008Sadrian HAL_RSSI_TX_POWER_LONG = 3, /* long range, orig. OB/DB bias current and PAL is enabled */ 109250008Sadrian} HAL_RSSI_TX_POWER; 110250008Sadrian 111250008Sadrianstruct dfs_pulse { 112250008Sadrian u_int32_t rp_numpulses ; /* Num of pulses in radar burst */ 113250008Sadrian u_int32_t rp_pulsedur; /* Duration of each pulse in usecs */ 114250008Sadrian u_int32_t rp_pulsefreq; /* Frequency of pulses in burst */ 115250008Sadrian u_int32_t rp_max_pulsefreq; /* Frequency of pulses in burst */ 116250008Sadrian u_int32_t rp_patterntype; /* fixed or variable pattern type*/ 117250008Sadrian u_int32_t rp_pulsevar; /* Time variation of pulse duration for 118250008Sadrian matched filter (single-sided) in usecs */ 119250008Sadrian u_int32_t rp_threshold; /* Threshold for MF output to indicate 120250008Sadrian radar match */ 121250008Sadrian u_int32_t rp_mindur; /* Min pulse duration to be considered for 122250008Sadrian this pulse type */ 123250008Sadrian u_int32_t rp_maxdur; /* Max pusle duration to be considered for 124250008Sadrian this pulse type */ 125250008Sadrian u_int32_t rp_rssithresh; /* Minimum rssi to be considered a radar pulse */ 126250008Sadrian u_int32_t rp_meanoffset; /* Offset for timing adjustment */ 127250008Sadrian int32_t rp_rssimargin; /* rssi threshold margin. In Turbo Mode HW reports rssi 3dBm */ 128250008Sadrian /* lower than in non TURBO mode. 129250008Sadrian This will be used to offset that diff.*/ 130250008Sadrian u_int32_t rp_ignore_pri_window; 131250008Sadrian u_int32_t rp_pulseid; /* Unique ID for identifying filter */ 132250008Sadrian}; 133250008Sadrian 134250008Sadrianstruct dfs_staggered_pulse { 135250008Sadrian u_int32_t rp_numpulses; /* Num of pulses in radar burst */ 136250008Sadrian u_int32_t rp_pulsedur; /* Duration of each pulse in usecs */ 137250008Sadrian u_int32_t rp_min_pulsefreq; /* Frequency of pulses in burst */ 138250008Sadrian u_int32_t rp_max_pulsefreq; /* Frequency of pulses in burst */ 139250008Sadrian u_int32_t rp_patterntype; /* fixed or variable pattern type*/ 140250008Sadrian u_int32_t rp_pulsevar; /* Time variation of pulse duration for 141250008Sadrian matched filter (single-sided) in usecs */ 142250008Sadrian u_int32_t rp_threshold; /* Thershold for MF output to indicateC 143250008Sadrian radar match */ 144250008Sadrian u_int32_t rp_mindur; /* Min pulse duration to be considered for 145250008Sadrian this pulse type */ 146250008Sadrian u_int32_t rp_maxdur; /* Max pusle duration to be considered for 147250008Sadrian this pulse type */ 148250008Sadrian u_int32_t rp_rssithresh; /* Minimum rssi to be considered a radar pulse */ 149250008Sadrian u_int32_t rp_meanoffset; /* Offset for timing adjustment */ 150250008Sadrian int32_t rp_rssimargin; /* rssi threshold margin. In Turbo Mode HW reports rssi 3dBm */ 151250008Sadrian /* lower than in non TURBO mode. This will be used to offset that diff.*/ 152250008Sadrian u_int32_t rp_pulseid; /* Unique ID for identifying filter */ 153250008Sadrian }; 154250008Sadrian 155250008Sadrianstruct dfs_bin5pulse { 156250008Sadrian u_int32_t b5_threshold; /* Number of bin5 pulses to indicate detection */ 157250008Sadrian u_int32_t b5_mindur; /* Min duration for a bin5 pulse */ 158250008Sadrian u_int32_t b5_maxdur; /* Max duration for a bin5 pulse */ 159250008Sadrian u_int32_t b5_timewindow; /* Window over which to count bin5 pulses */ 160250008Sadrian u_int32_t b5_rssithresh; /* Min rssi to be considered a pulse */ 161250008Sadrian u_int32_t b5_rssimargin; /* rssi threshold margin. In Turbo Mode HW reports rssi 3dB */ 162250008Sadrian}; 163250008Sadrian 164250008Sadrian/* 165250008Sadrian * Noise power data definitions 166250008Sadrian * units are: 4 x dBm - NOISE_PWR_DATA_OFFSET (e.g. -25 = (-25/4 - 90) = -96.25 dBm) 167250008Sadrian * range (for 6 signed bits) is (-32 to 31) + offset => -122dBm to -59dBm 168250008Sadrian * resolution (2 bits) is 0.25dBm 169250008Sadrian */ 170250008Sadrian#define NOISE_PWR_DATA_OFFSET -90 /* dbm - all pwr report data is represented offset by this */ 171250008Sadrian#define INT_2_NOISE_PWR_DBM(_p) (((_p) - NOISE_PWR_DATA_OFFSET) << 2) 172250008Sadrian#define NOISE_PWR_DBM_2_INT(_p) ((((_p) + 3) >> 2) + NOISE_PWR_DATA_OFFSET) 173250008Sadrian#define NOISE_PWR_DBM_2_DEC(_p) (((-(_p)) & 3) * 25) 174250008Sadrian#define N2DBM(_x,_y) ((((_x) - NOISE_PWR_DATA_OFFSET) << 2) - (_y)/25) 175250008Sadrian/* SPECTRAL SCAN defines end */ 176250008Sadrian 177250008Sadriantypedef struct halvowstats { 178250008Sadrian u_int32_t tx_frame_count; 179250008Sadrian u_int32_t rx_frame_count; 180250008Sadrian u_int32_t rx_clear_count; 181250008Sadrian u_int32_t cycle_count; 182250008Sadrian u_int32_t ext_cycle_count; 183250008Sadrian} HAL_VOWSTATS; 184250008Sadrian 185250008Sadrian/* 186250008Sadrian * Weight table configurations. 187250008Sadrian */ 188250008Sadrian#define AR9300_BT_WGHT 0xcccc4444 189250008Sadrian#define AR9300_STOMP_ALL_WLAN_WGHT0 0xfffffff0 190250008Sadrian#define AR9300_STOMP_ALL_WLAN_WGHT1 0xfffffff0 191250008Sadrian#define AR9300_STOMP_LOW_WLAN_WGHT0 0x88888880 192250008Sadrian#define AR9300_STOMP_LOW_WLAN_WGHT1 0x88888880 193250008Sadrian#define AR9300_STOMP_NONE_WLAN_WGHT0 0x00000000 194250008Sadrian#define AR9300_STOMP_NONE_WLAN_WGHT1 0x00000000 195250008Sadrian#define AR9300_STOMP_ALL_FORCE_WLAN_WGHT0 0xffffffff // Stomp BT even when WLAN is idle 196250008Sadrian#define AR9300_STOMP_ALL_FORCE_WLAN_WGHT1 0xffffffff 197250008Sadrian#define AR9300_STOMP_LOW_FORCE_WLAN_WGHT0 0x88888888 // Stomp BT even when WLAN is idle 198250008Sadrian#define AR9300_STOMP_LOW_FORCE_WLAN_WGHT1 0x88888888 199250008Sadrian 200250008Sadrian#define JUPITER_STOMP_ALL_WLAN_WGHT0 0x01017d01 201250008Sadrian#define JUPITER_STOMP_ALL_WLAN_WGHT1 0x41414101 202250008Sadrian#define JUPITER_STOMP_ALL_WLAN_WGHT2 0x41414101 203250008Sadrian#define JUPITER_STOMP_ALL_WLAN_WGHT3 0x41414141 204250008Sadrian#define JUPITER_STOMP_LOW_WLAN_WGHT0 0x01017d01 205250008Sadrian#define JUPITER_STOMP_LOW_WLAN_WGHT1 0x3b3b3b01 206250008Sadrian#define JUPITER_STOMP_LOW_WLAN_WGHT2 0x3b3b3b01 207250008Sadrian#define JUPITER_STOMP_LOW_WLAN_WGHT3 0x3b3b3b3b 208250008Sadrian#define JUPITER_STOMP_LOW_FTP_WLAN_WGHT0 0x01017d01 209250008Sadrian#define JUPITER_STOMP_LOW_FTP_WLAN_WGHT1 0x013b0101 210250008Sadrian#define JUPITER_STOMP_LOW_FTP_WLAN_WGHT2 0x3b3b0101 211250008Sadrian#define JUPITER_STOMP_LOW_FTP_WLAN_WGHT3 0x3b3b013b 212250008Sadrian#define JUPITER_STOMP_NONE_WLAN_WGHT0 0x01017d01 213250008Sadrian#define JUPITER_STOMP_NONE_WLAN_WGHT1 0x01010101 214250008Sadrian#define JUPITER_STOMP_NONE_WLAN_WGHT2 0x01010101 215250008Sadrian#define JUPITER_STOMP_NONE_WLAN_WGHT3 0x01010101 216250008Sadrian#define JUPITER_STOMP_ALL_FORCE_WLAN_WGHT0 0x01017d7d 217250008Sadrian#define JUPITER_STOMP_ALL_FORCE_WLAN_WGHT1 0x7d7d7d01 218250008Sadrian#define JUPITER_STOMP_ALL_FORCE_WLAN_WGHT2 0x7d7d7d7d 219250008Sadrian#define JUPITER_STOMP_ALL_FORCE_WLAN_WGHT3 0x7d7d7d7d 220250008Sadrian#define JUPITER_STOMP_LOW_FORCE_WLAN_WGHT0 0x01013b3b 221250008Sadrian#define JUPITER_STOMP_LOW_FORCE_WLAN_WGHT1 0x3b3b3b01 222250008Sadrian#define JUPITER_STOMP_LOW_FORCE_WLAN_WGHT2 0x3b3b3b3b 223250008Sadrian#define JUPITER_STOMP_LOW_FORCE_WLAN_WGHT3 0x3b3b3b3b 224250008Sadrian 225250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT1_MASK 0xff000000 226250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT1_MASK_S 24 227250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT2_MASK 0x00ff0000 228250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT2_MASK_S 16 229250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT3_MASK 0x000000ff 230250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT3_MASK_S 0 231250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT3_MASK2 0x00ff0000 232250008Sadrian#define MCI_CONCUR_TX_WLAN_WGHT3_MASK2_S 16 233250008Sadrian 234250008Sadrian#define MCI_QUERY_BT_VERSION_VERBOSE 0 235250008Sadrian#define MCI_LINKID_INDEX_MGMT_PENDING 1 236250008Sadrian 237250008Sadrian#define HAL_MCI_FLAG_DISABLE_TIMESTAMP 0x00000001 /* Disable time stamp */ 238250008Sadrian 239250008Sadrian/* 240250008Sadrian * The values below come from the system team test result. 241250008Sadrian * For Jupiter, BT tx power level is from 0(-20dBm) to 6(4dBm). 242250008Sadrian * Lowest WLAN tx power would be in bit[23:16] of dword 1. 243250008Sadrian */ 244250008Sadrianstatic const u_int32_t mci_concur_tx_max_pwr[4][8] = 245250008Sadrian { /* No limit */ 246250008Sadrian {0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 247250008Sadrian 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f}, 248250008Sadrian /* 11G */ 249250008Sadrian {0x16161616, 0x12121516, 0x12121212, 0x12121212, 250250008Sadrian 0x12121212, 0x12121212, 0x12121212, 0x7f121212}, 251250008Sadrian /* HT20 */ 252250008Sadrian {0x15151515, 0x14141515, 0x14141414, 0x14141414, 253250008Sadrian 0x14141414, 0x14141414, 0x14141414, 0x7f141414}, 254250008Sadrian /* HT40 */ 255250008Sadrian {0x10101010, 0x10101010, 0x10101010, 0x10101010, 256250008Sadrian 0x10101010, 0x10101010, 0x10101010, 0x7f101010}}; 257250008Sadrian#define ATH_MCI_CONCUR_TX_LOWEST_PWR_MASK 0x00ff0000 258250008Sadrian#define ATH_MCI_CONCUR_TX_LOWEST_PWR_MASK_S 16 259250008Sadrian 260250008Sadrian#endif /* __AR9300_FREEBSD_INC_H__ */ 261