0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 #ifndef __CARL9170_SHARED_HW_H
0040 #define __CARL9170_SHARED_HW_H
0041
0042
0043 #define AR9170_UART_REG_BASE 0x1c0000
0044
0045
0046 #define AR9170_UART_REG_RX_BUFFER (AR9170_UART_REG_BASE + 0x000)
0047 #define AR9170_UART_REG_TX_HOLDING (AR9170_UART_REG_BASE + 0x004)
0048 #define AR9170_UART_REG_FIFO_CONTROL (AR9170_UART_REG_BASE + 0x010)
0049 #define AR9170_UART_FIFO_CTRL_RESET_RX_FIFO 0x02
0050 #define AR9170_UART_FIFO_CTRL_RESET_TX_FIFO 0x04
0051
0052 #define AR9170_UART_REG_LINE_CONTROL (AR9170_UART_REG_BASE + 0x014)
0053 #define AR9170_UART_REG_MODEM_CONTROL (AR9170_UART_REG_BASE + 0x018)
0054 #define AR9170_UART_MODEM_CTRL_DTR_BIT 0x01
0055 #define AR9170_UART_MODEM_CTRL_RTS_BIT 0x02
0056 #define AR9170_UART_MODEM_CTRL_INTERNAL_LOOP_BACK 0x10
0057 #define AR9170_UART_MODEM_CTRL_AUTO_RTS 0x20
0058 #define AR9170_UART_MODEM_CTRL_AUTO_CTR 0x40
0059
0060 #define AR9170_UART_REG_LINE_STATUS (AR9170_UART_REG_BASE + 0x01c)
0061 #define AR9170_UART_LINE_STS_RX_DATA_READY 0x01
0062 #define AR9170_UART_LINE_STS_RX_BUFFER_OVERRUN 0x02
0063 #define AR9170_UART_LINE_STS_RX_BREAK_IND 0x10
0064 #define AR9170_UART_LINE_STS_TX_FIFO_NEAR_EMPTY 0x20
0065 #define AR9170_UART_LINE_STS_TRANSMITTER_EMPTY 0x40
0066
0067 #define AR9170_UART_REG_MODEM_STATUS (AR9170_UART_REG_BASE + 0x020)
0068 #define AR9170_UART_MODEM_STS_CTS_CHANGE 0x01
0069 #define AR9170_UART_MODEM_STS_DSR_CHANGE 0x02
0070 #define AR9170_UART_MODEM_STS_DCD_CHANGE 0x08
0071 #define AR9170_UART_MODEM_STS_CTS_COMPL 0x10
0072 #define AR9170_UART_MODEM_STS_DSR_COMPL 0x20
0073 #define AR9170_UART_MODEM_STS_DCD_COMPL 0x80
0074
0075 #define AR9170_UART_REG_SCRATCH (AR9170_UART_REG_BASE + 0x024)
0076 #define AR9170_UART_REG_DIVISOR_LSB (AR9170_UART_REG_BASE + 0x028)
0077 #define AR9170_UART_REG_DIVISOR_MSB (AR9170_UART_REG_BASE + 0x02c)
0078 #define AR9170_UART_REG_WORD_RX_BUFFER (AR9170_UART_REG_BASE + 0x034)
0079 #define AR9170_UART_REG_WORD_TX_HOLDING (AR9170_UART_REG_BASE + 0x038)
0080 #define AR9170_UART_REG_FIFO_COUNT (AR9170_UART_REG_BASE + 0x03c)
0081 #define AR9170_UART_REG_REMAINDER (AR9170_UART_REG_BASE + 0x04c)
0082
0083
0084 #define AR9170_TIMER_REG_BASE 0x1c1000
0085
0086 #define AR9170_TIMER_REG_WATCH_DOG (AR9170_TIMER_REG_BASE + 0x000)
0087 #define AR9170_TIMER_REG_TIMER0 (AR9170_TIMER_REG_BASE + 0x010)
0088 #define AR9170_TIMER_REG_TIMER1 (AR9170_TIMER_REG_BASE + 0x014)
0089 #define AR9170_TIMER_REG_TIMER2 (AR9170_TIMER_REG_BASE + 0x018)
0090 #define AR9170_TIMER_REG_TIMER3 (AR9170_TIMER_REG_BASE + 0x01c)
0091 #define AR9170_TIMER_REG_TIMER4 (AR9170_TIMER_REG_BASE + 0x020)
0092 #define AR9170_TIMER_REG_CONTROL (AR9170_TIMER_REG_BASE + 0x024)
0093 #define AR9170_TIMER_CTRL_DISABLE_CLOCK 0x100
0094
0095 #define AR9170_TIMER_REG_INTERRUPT (AR9170_TIMER_REG_BASE + 0x028)
0096 #define AR9170_TIMER_INT_TIMER0 0x001
0097 #define AR9170_TIMER_INT_TIMER1 0x002
0098 #define AR9170_TIMER_INT_TIMER2 0x004
0099 #define AR9170_TIMER_INT_TIMER3 0x008
0100 #define AR9170_TIMER_INT_TIMER4 0x010
0101 #define AR9170_TIMER_INT_TICK_TIMER 0x100
0102
0103 #define AR9170_TIMER_REG_TICK_TIMER (AR9170_TIMER_REG_BASE + 0x030)
0104 #define AR9170_TIMER_REG_CLOCK_LOW (AR9170_TIMER_REG_BASE + 0x040)
0105 #define AR9170_TIMER_REG_CLOCK_HIGH (AR9170_TIMER_REG_BASE + 0x044)
0106
0107 #define AR9170_MAC_REG_BASE 0x1c3000
0108
0109 #define AR9170_MAC_REG_POWER_STATE_CTRL (AR9170_MAC_REG_BASE + 0x500)
0110 #define AR9170_MAC_POWER_STATE_CTRL_RESET 0x20
0111
0112 #define AR9170_MAC_REG_MAC_POWER_STATE_CTRL (AR9170_MAC_REG_BASE + 0x50c)
0113
0114 #define AR9170_MAC_REG_INT_CTRL (AR9170_MAC_REG_BASE + 0x510)
0115 #define AR9170_MAC_INT_TXC BIT(0)
0116 #define AR9170_MAC_INT_RXC BIT(1)
0117 #define AR9170_MAC_INT_RETRY_FAIL BIT(2)
0118 #define AR9170_MAC_INT_WAKEUP BIT(3)
0119 #define AR9170_MAC_INT_ATIM BIT(4)
0120 #define AR9170_MAC_INT_DTIM BIT(5)
0121 #define AR9170_MAC_INT_CFG_BCN BIT(6)
0122 #define AR9170_MAC_INT_ABORT BIT(7)
0123 #define AR9170_MAC_INT_QOS BIT(8)
0124 #define AR9170_MAC_INT_MIMO_PS BIT(9)
0125 #define AR9170_MAC_INT_KEY_GEN BIT(10)
0126 #define AR9170_MAC_INT_DECRY_NOUSER BIT(11)
0127 #define AR9170_MAC_INT_RADAR BIT(12)
0128 #define AR9170_MAC_INT_QUIET_FRAME BIT(13)
0129 #define AR9170_MAC_INT_PRETBTT BIT(14)
0130
0131 #define AR9170_MAC_REG_TSF_L (AR9170_MAC_REG_BASE + 0x514)
0132 #define AR9170_MAC_REG_TSF_H (AR9170_MAC_REG_BASE + 0x518)
0133
0134 #define AR9170_MAC_REG_ATIM_WINDOW (AR9170_MAC_REG_BASE + 0x51c)
0135 #define AR9170_MAC_ATIM_PERIOD_S 0
0136 #define AR9170_MAC_ATIM_PERIOD 0x0000ffff
0137
0138 #define AR9170_MAC_REG_BCN_PERIOD (AR9170_MAC_REG_BASE + 0x520)
0139 #define AR9170_MAC_BCN_PERIOD_S 0
0140 #define AR9170_MAC_BCN_PERIOD 0x0000ffff
0141 #define AR9170_MAC_BCN_DTIM_S 16
0142 #define AR9170_MAC_BCN_DTIM 0x00ff0000
0143 #define AR9170_MAC_BCN_AP_MODE BIT(24)
0144 #define AR9170_MAC_BCN_IBSS_MODE BIT(25)
0145 #define AR9170_MAC_BCN_PWR_MGT BIT(26)
0146 #define AR9170_MAC_BCN_STA_PS BIT(27)
0147
0148 #define AR9170_MAC_REG_PRETBTT (AR9170_MAC_REG_BASE + 0x524)
0149 #define AR9170_MAC_PRETBTT_S 0
0150 #define AR9170_MAC_PRETBTT 0x0000ffff
0151 #define AR9170_MAC_PRETBTT2_S 16
0152 #define AR9170_MAC_PRETBTT2 0xffff0000
0153
0154 #define AR9170_MAC_REG_MAC_ADDR_L (AR9170_MAC_REG_BASE + 0x610)
0155 #define AR9170_MAC_REG_MAC_ADDR_H (AR9170_MAC_REG_BASE + 0x614)
0156 #define AR9170_MAC_REG_BSSID_L (AR9170_MAC_REG_BASE + 0x618)
0157 #define AR9170_MAC_REG_BSSID_H (AR9170_MAC_REG_BASE + 0x61c)
0158
0159 #define AR9170_MAC_REG_GROUP_HASH_TBL_L (AR9170_MAC_REG_BASE + 0x624)
0160 #define AR9170_MAC_REG_GROUP_HASH_TBL_H (AR9170_MAC_REG_BASE + 0x628)
0161
0162 #define AR9170_MAC_REG_RX_TIMEOUT (AR9170_MAC_REG_BASE + 0x62c)
0163
0164 #define AR9170_MAC_REG_BASIC_RATE (AR9170_MAC_REG_BASE + 0x630)
0165 #define AR9170_MAC_REG_MANDATORY_RATE (AR9170_MAC_REG_BASE + 0x634)
0166 #define AR9170_MAC_REG_RTS_CTS_RATE (AR9170_MAC_REG_BASE + 0x638)
0167 #define AR9170_MAC_REG_BACKOFF_PROTECT (AR9170_MAC_REG_BASE + 0x63c)
0168 #define AR9170_MAC_REG_RX_THRESHOLD (AR9170_MAC_REG_BASE + 0x640)
0169 #define AR9170_MAC_REG_AFTER_PNP (AR9170_MAC_REG_BASE + 0x648)
0170 #define AR9170_MAC_REG_RX_PE_DELAY (AR9170_MAC_REG_BASE + 0x64c)
0171
0172 #define AR9170_MAC_REG_DYNAMIC_SIFS_ACK (AR9170_MAC_REG_BASE + 0x658)
0173 #define AR9170_MAC_REG_SNIFFER (AR9170_MAC_REG_BASE + 0x674)
0174 #define AR9170_MAC_SNIFFER_ENABLE_PROMISC BIT(0)
0175 #define AR9170_MAC_SNIFFER_DEFAULTS 0x02000000
0176 #define AR9170_MAC_REG_ENCRYPTION (AR9170_MAC_REG_BASE + 0x678)
0177 #define AR9170_MAC_ENCRYPTION_MGMT_RX_SOFTWARE BIT(2)
0178 #define AR9170_MAC_ENCRYPTION_RX_SOFTWARE BIT(3)
0179 #define AR9170_MAC_ENCRYPTION_DEFAULTS 0x70
0180
0181 #define AR9170_MAC_REG_MISC_680 (AR9170_MAC_REG_BASE + 0x680)
0182 #define AR9170_MAC_REG_MISC_684 (AR9170_MAC_REG_BASE + 0x684)
0183 #define AR9170_MAC_REG_TX_UNDERRUN (AR9170_MAC_REG_BASE + 0x688)
0184
0185 #define AR9170_MAC_REG_FRAMETYPE_FILTER (AR9170_MAC_REG_BASE + 0x68c)
0186 #define AR9170_MAC_FTF_ASSOC_REQ BIT(0)
0187 #define AR9170_MAC_FTF_ASSOC_RESP BIT(1)
0188 #define AR9170_MAC_FTF_REASSOC_REQ BIT(2)
0189 #define AR9170_MAC_FTF_REASSOC_RESP BIT(3)
0190 #define AR9170_MAC_FTF_PRB_REQ BIT(4)
0191 #define AR9170_MAC_FTF_PRB_RESP BIT(5)
0192 #define AR9170_MAC_FTF_BIT6 BIT(6)
0193 #define AR9170_MAC_FTF_BIT7 BIT(7)
0194 #define AR9170_MAC_FTF_BEACON BIT(8)
0195 #define AR9170_MAC_FTF_ATIM BIT(9)
0196 #define AR9170_MAC_FTF_DEASSOC BIT(10)
0197 #define AR9170_MAC_FTF_AUTH BIT(11)
0198 #define AR9170_MAC_FTF_DEAUTH BIT(12)
0199 #define AR9170_MAC_FTF_BIT13 BIT(13)
0200 #define AR9170_MAC_FTF_BIT14 BIT(14)
0201 #define AR9170_MAC_FTF_BIT15 BIT(15)
0202 #define AR9170_MAC_FTF_BAR BIT(24)
0203 #define AR9170_MAC_FTF_BA BIT(25)
0204 #define AR9170_MAC_FTF_PSPOLL BIT(26)
0205 #define AR9170_MAC_FTF_RTS BIT(27)
0206 #define AR9170_MAC_FTF_CTS BIT(28)
0207 #define AR9170_MAC_FTF_ACK BIT(29)
0208 #define AR9170_MAC_FTF_CFE BIT(30)
0209 #define AR9170_MAC_FTF_CFE_ACK BIT(31)
0210 #define AR9170_MAC_FTF_DEFAULTS 0x0500ffff
0211 #define AR9170_MAC_FTF_MONITOR 0xff00ffff
0212
0213 #define AR9170_MAC_REG_ACK_EXTENSION (AR9170_MAC_REG_BASE + 0x690)
0214 #define AR9170_MAC_REG_ACK_TPC (AR9170_MAC_REG_BASE + 0x694)
0215 #define AR9170_MAC_REG_EIFS_AND_SIFS (AR9170_MAC_REG_BASE + 0x698)
0216 #define AR9170_MAC_REG_RX_TIMEOUT_COUNT (AR9170_MAC_REG_BASE + 0x69c)
0217 #define AR9170_MAC_REG_RX_TOTAL (AR9170_MAC_REG_BASE + 0x6a0)
0218 #define AR9170_MAC_REG_RX_CRC32 (AR9170_MAC_REG_BASE + 0x6a4)
0219 #define AR9170_MAC_REG_RX_CRC16 (AR9170_MAC_REG_BASE + 0x6a8)
0220 #define AR9170_MAC_REG_RX_ERR_DECRYPTION_UNI (AR9170_MAC_REG_BASE + 0x6ac)
0221 #define AR9170_MAC_REG_RX_OVERRUN (AR9170_MAC_REG_BASE + 0x6b0)
0222 #define AR9170_MAC_REG_RX_ERR_DECRYPTION_MUL (AR9170_MAC_REG_BASE + 0x6bc)
0223 #define AR9170_MAC_REG_TX_BLOCKACKS (AR9170_MAC_REG_BASE + 0x6c0)
0224 #define AR9170_MAC_REG_NAV_COUNT (AR9170_MAC_REG_BASE + 0x6c4)
0225 #define AR9170_MAC_REG_BACKOFF_STATUS (AR9170_MAC_REG_BASE + 0x6c8)
0226 #define AR9170_MAC_BACKOFF_CCA BIT(24)
0227 #define AR9170_MAC_BACKOFF_TX_PEX BIT(25)
0228 #define AR9170_MAC_BACKOFF_RX_PE BIT(26)
0229 #define AR9170_MAC_BACKOFF_MD_READY BIT(27)
0230 #define AR9170_MAC_BACKOFF_TX_PE BIT(28)
0231
0232 #define AR9170_MAC_REG_TX_RETRY (AR9170_MAC_REG_BASE + 0x6cc)
0233
0234 #define AR9170_MAC_REG_TX_COMPLETE (AR9170_MAC_REG_BASE + 0x6d4)
0235
0236 #define AR9170_MAC_REG_CHANNEL_BUSY (AR9170_MAC_REG_BASE + 0x6e8)
0237 #define AR9170_MAC_REG_EXT_BUSY (AR9170_MAC_REG_BASE + 0x6ec)
0238
0239 #define AR9170_MAC_REG_SLOT_TIME (AR9170_MAC_REG_BASE + 0x6f0)
0240 #define AR9170_MAC_REG_TX_TOTAL (AR9170_MAC_REG_BASE + 0x6f4)
0241 #define AR9170_MAC_REG_ACK_FC (AR9170_MAC_REG_BASE + 0x6f8)
0242
0243 #define AR9170_MAC_REG_CAM_MODE (AR9170_MAC_REG_BASE + 0x700)
0244 #define AR9170_MAC_CAM_IBSS 0xe0
0245 #define AR9170_MAC_CAM_AP 0xa1
0246 #define AR9170_MAC_CAM_STA 0x2
0247 #define AR9170_MAC_CAM_AP_WDS 0x3
0248 #define AR9170_MAC_CAM_DEFAULTS (0xf << 24)
0249 #define AR9170_MAC_CAM_HOST_PENDING 0x80000000
0250
0251 #define AR9170_MAC_REG_CAM_ROLL_CALL_TBL_L (AR9170_MAC_REG_BASE + 0x704)
0252 #define AR9170_MAC_REG_CAM_ROLL_CALL_TBL_H (AR9170_MAC_REG_BASE + 0x708)
0253
0254 #define AR9170_MAC_REG_CAM_ADDR (AR9170_MAC_REG_BASE + 0x70c)
0255 #define AR9170_MAC_CAM_ADDR_WRITE 0x80000000
0256 #define AR9170_MAC_REG_CAM_DATA0 (AR9170_MAC_REG_BASE + 0x720)
0257 #define AR9170_MAC_REG_CAM_DATA1 (AR9170_MAC_REG_BASE + 0x724)
0258 #define AR9170_MAC_REG_CAM_DATA2 (AR9170_MAC_REG_BASE + 0x728)
0259 #define AR9170_MAC_REG_CAM_DATA3 (AR9170_MAC_REG_BASE + 0x72c)
0260
0261 #define AR9170_MAC_REG_CAM_DBG0 (AR9170_MAC_REG_BASE + 0x730)
0262 #define AR9170_MAC_REG_CAM_DBG1 (AR9170_MAC_REG_BASE + 0x734)
0263 #define AR9170_MAC_REG_CAM_DBG2 (AR9170_MAC_REG_BASE + 0x738)
0264 #define AR9170_MAC_REG_CAM_STATE (AR9170_MAC_REG_BASE + 0x73c)
0265 #define AR9170_MAC_CAM_STATE_READ_PENDING 0x40000000
0266 #define AR9170_MAC_CAM_STATE_WRITE_PENDING 0x80000000
0267
0268 #define AR9170_MAC_REG_CAM_TXKEY (AR9170_MAC_REG_BASE + 0x740)
0269 #define AR9170_MAC_REG_CAM_RXKEY (AR9170_MAC_REG_BASE + 0x750)
0270
0271 #define AR9170_MAC_REG_CAM_TX_ENC_TYPE (AR9170_MAC_REG_BASE + 0x760)
0272 #define AR9170_MAC_REG_CAM_RX_ENC_TYPE (AR9170_MAC_REG_BASE + 0x770)
0273 #define AR9170_MAC_REG_CAM_TX_SERACH_HIT (AR9170_MAC_REG_BASE + 0x780)
0274 #define AR9170_MAC_REG_CAM_RX_SERACH_HIT (AR9170_MAC_REG_BASE + 0x790)
0275
0276 #define AR9170_MAC_REG_AC0_CW (AR9170_MAC_REG_BASE + 0xb00)
0277 #define AR9170_MAC_REG_AC1_CW (AR9170_MAC_REG_BASE + 0xb04)
0278 #define AR9170_MAC_REG_AC2_CW (AR9170_MAC_REG_BASE + 0xb08)
0279 #define AR9170_MAC_REG_AC3_CW (AR9170_MAC_REG_BASE + 0xb0c)
0280 #define AR9170_MAC_REG_AC4_CW (AR9170_MAC_REG_BASE + 0xb10)
0281 #define AR9170_MAC_REG_AC2_AC1_AC0_AIFS (AR9170_MAC_REG_BASE + 0xb14)
0282 #define AR9170_MAC_REG_AC4_AC3_AC2_AIFS (AR9170_MAC_REG_BASE + 0xb18)
0283 #define AR9170_MAC_REG_TXOP_ACK_EXTENSION (AR9170_MAC_REG_BASE + 0xb1c)
0284 #define AR9170_MAC_REG_TXOP_ACK_INTERVAL (AR9170_MAC_REG_BASE + 0xb20)
0285 #define AR9170_MAC_REG_CONTENTION_POINT (AR9170_MAC_REG_BASE + 0xb24)
0286 #define AR9170_MAC_REG_RETRY_MAX (AR9170_MAC_REG_BASE + 0xb28)
0287 #define AR9170_MAC_REG_TID_CFACK_CFEND_RATE (AR9170_MAC_REG_BASE + 0xb2c)
0288 #define AR9170_MAC_REG_TXOP_NOT_ENOUGH_IND (AR9170_MAC_REG_BASE + 0xb30)
0289 #define AR9170_MAC_REG_TKIP_TSC (AR9170_MAC_REG_BASE + 0xb34)
0290 #define AR9170_MAC_REG_TXOP_DURATION (AR9170_MAC_REG_BASE + 0xb38)
0291 #define AR9170_MAC_REG_TX_QOS_THRESHOLD (AR9170_MAC_REG_BASE + 0xb3c)
0292 #define AR9170_MAC_REG_QOS_PRIORITY_VIRTUAL_CCA (AR9170_MAC_REG_BASE + 0xb40)
0293 #define AR9170_MAC_VIRTUAL_CCA_Q0 BIT(15)
0294 #define AR9170_MAC_VIRTUAL_CCA_Q1 BIT(16)
0295 #define AR9170_MAC_VIRTUAL_CCA_Q2 BIT(17)
0296 #define AR9170_MAC_VIRTUAL_CCA_Q3 BIT(18)
0297 #define AR9170_MAC_VIRTUAL_CCA_Q4 BIT(19)
0298 #define AR9170_MAC_VIRTUAL_CCA_ALL (0xf8000)
0299
0300 #define AR9170_MAC_REG_AC1_AC0_TXOP (AR9170_MAC_REG_BASE + 0xb44)
0301 #define AR9170_MAC_REG_AC3_AC2_TXOP (AR9170_MAC_REG_BASE + 0xb48)
0302
0303 #define AR9170_MAC_REG_AMPDU_COUNT (AR9170_MAC_REG_BASE + 0xb88)
0304 #define AR9170_MAC_REG_MPDU_COUNT (AR9170_MAC_REG_BASE + 0xb8c)
0305
0306 #define AR9170_MAC_REG_AMPDU_FACTOR (AR9170_MAC_REG_BASE + 0xb9c)
0307 #define AR9170_MAC_AMPDU_FACTOR 0x7f0000
0308 #define AR9170_MAC_AMPDU_FACTOR_S 16
0309 #define AR9170_MAC_REG_AMPDU_DENSITY (AR9170_MAC_REG_BASE + 0xba0)
0310 #define AR9170_MAC_AMPDU_DENSITY 0x7
0311 #define AR9170_MAC_AMPDU_DENSITY_S 0
0312
0313 #define AR9170_MAC_REG_FCS_SELECT (AR9170_MAC_REG_BASE + 0xbb0)
0314 #define AR9170_MAC_FCS_SWFCS 0x1
0315 #define AR9170_MAC_FCS_FIFO_PROT 0x4
0316
0317 #define AR9170_MAC_REG_RTS_CTS_TPC (AR9170_MAC_REG_BASE + 0xbb4)
0318 #define AR9170_MAC_REG_CFEND_QOSNULL_TPC (AR9170_MAC_REG_BASE + 0xbb8)
0319
0320 #define AR9170_MAC_REG_ACK_TABLE (AR9170_MAC_REG_BASE + 0xc00)
0321 #define AR9170_MAC_REG_RX_CONTROL (AR9170_MAC_REG_BASE + 0xc40)
0322 #define AR9170_MAC_RX_CTRL_DEAGG 0x1
0323 #define AR9170_MAC_RX_CTRL_SHORT_FILTER 0x2
0324 #define AR9170_MAC_RX_CTRL_SA_DA_SEARCH 0x20
0325 #define AR9170_MAC_RX_CTRL_PASS_TO_HOST BIT(28)
0326 #define AR9170_MAC_RX_CTRL_ACK_IN_SNIFFER BIT(30)
0327
0328 #define AR9170_MAC_REG_RX_CONTROL_1 (AR9170_MAC_REG_BASE + 0xc44)
0329
0330 #define AR9170_MAC_REG_AMPDU_RX_THRESH (AR9170_MAC_REG_BASE + 0xc50)
0331
0332 #define AR9170_MAC_REG_RX_MPDU (AR9170_MAC_REG_BASE + 0xca0)
0333 #define AR9170_MAC_REG_RX_DROPPED_MPDU (AR9170_MAC_REG_BASE + 0xca4)
0334 #define AR9170_MAC_REG_RX_DEL_MPDU (AR9170_MAC_REG_BASE + 0xca8)
0335 #define AR9170_MAC_REG_RX_PHY_MISC_ERROR (AR9170_MAC_REG_BASE + 0xcac)
0336 #define AR9170_MAC_REG_RX_PHY_XR_ERROR (AR9170_MAC_REG_BASE + 0xcb0)
0337 #define AR9170_MAC_REG_RX_PHY_OFDM_ERROR (AR9170_MAC_REG_BASE + 0xcb4)
0338 #define AR9170_MAC_REG_RX_PHY_CCK_ERROR (AR9170_MAC_REG_BASE + 0xcb8)
0339 #define AR9170_MAC_REG_RX_PHY_HT_ERROR (AR9170_MAC_REG_BASE + 0xcbc)
0340 #define AR9170_MAC_REG_RX_PHY_TOTAL (AR9170_MAC_REG_BASE + 0xcc0)
0341
0342 #define AR9170_MAC_REG_DMA_TXQ_ADDR (AR9170_MAC_REG_BASE + 0xd00)
0343 #define AR9170_MAC_REG_DMA_TXQ_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd04)
0344 #define AR9170_MAC_REG_DMA_TXQ0_ADDR (AR9170_MAC_REG_BASE + 0xd00)
0345 #define AR9170_MAC_REG_DMA_TXQ0_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd04)
0346 #define AR9170_MAC_REG_DMA_TXQ1_ADDR (AR9170_MAC_REG_BASE + 0xd08)
0347 #define AR9170_MAC_REG_DMA_TXQ1_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd0c)
0348 #define AR9170_MAC_REG_DMA_TXQ2_ADDR (AR9170_MAC_REG_BASE + 0xd10)
0349 #define AR9170_MAC_REG_DMA_TXQ2_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd14)
0350 #define AR9170_MAC_REG_DMA_TXQ3_ADDR (AR9170_MAC_REG_BASE + 0xd18)
0351 #define AR9170_MAC_REG_DMA_TXQ3_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd1c)
0352 #define AR9170_MAC_REG_DMA_TXQ4_ADDR (AR9170_MAC_REG_BASE + 0xd20)
0353 #define AR9170_MAC_REG_DMA_TXQ4_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd24)
0354 #define AR9170_MAC_REG_DMA_RXQ_ADDR (AR9170_MAC_REG_BASE + 0xd28)
0355 #define AR9170_MAC_REG_DMA_RXQ_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd2c)
0356
0357 #define AR9170_MAC_REG_DMA_TRIGGER (AR9170_MAC_REG_BASE + 0xd30)
0358 #define AR9170_DMA_TRIGGER_TXQ0 BIT(0)
0359 #define AR9170_DMA_TRIGGER_TXQ1 BIT(1)
0360 #define AR9170_DMA_TRIGGER_TXQ2 BIT(2)
0361 #define AR9170_DMA_TRIGGER_TXQ3 BIT(3)
0362 #define AR9170_DMA_TRIGGER_TXQ4 BIT(4)
0363 #define AR9170_DMA_TRIGGER_RXQ BIT(8)
0364
0365 #define AR9170_MAC_REG_DMA_WLAN_STATUS (AR9170_MAC_REG_BASE + 0xd38)
0366 #define AR9170_MAC_REG_DMA_STATUS (AR9170_MAC_REG_BASE + 0xd3c)
0367 #define AR9170_MAC_REG_DMA_TXQ_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
0368 #define AR9170_MAC_REG_DMA_TXQ0_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
0369 #define AR9170_MAC_REG_DMA_TXQ1_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd44)
0370 #define AR9170_MAC_REG_DMA_TXQ2_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd48)
0371 #define AR9170_MAC_REG_DMA_TXQ3_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd4c)
0372 #define AR9170_MAC_REG_DMA_TXQ4_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd50)
0373 #define AR9170_MAC_REG_DMA_TXQ0Q1_LEN (AR9170_MAC_REG_BASE + 0xd54)
0374 #define AR9170_MAC_REG_DMA_TXQ2Q3_LEN (AR9170_MAC_REG_BASE + 0xd58)
0375 #define AR9170_MAC_REG_DMA_TXQ4_LEN (AR9170_MAC_REG_BASE + 0xd5c)
0376
0377 #define AR9170_MAC_REG_DMA_TXQX_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd74)
0378 #define AR9170_MAC_REG_DMA_TXQX_FAIL_ADDR (AR9170_MAC_REG_BASE + 0xd78)
0379 #define AR9170_MAC_REG_TXRX_MPI (AR9170_MAC_REG_BASE + 0xd7c)
0380 #define AR9170_MAC_TXRX_MPI_TX_MPI_MASK 0x0000000f
0381 #define AR9170_MAC_TXRX_MPI_TX_TO_MASK 0x0000fff0
0382 #define AR9170_MAC_TXRX_MPI_RX_MPI_MASK 0x000f0000
0383 #define AR9170_MAC_TXRX_MPI_RX_TO_MASK 0xfff00000
0384
0385 #define AR9170_MAC_REG_BCN_ADDR (AR9170_MAC_REG_BASE + 0xd84)
0386 #define AR9170_MAC_REG_BCN_LENGTH (AR9170_MAC_REG_BASE + 0xd88)
0387 #define AR9170_MAC_BCN_LENGTH_MAX (512 - 32)
0388
0389 #define AR9170_MAC_REG_BCN_STATUS (AR9170_MAC_REG_BASE + 0xd8c)
0390
0391 #define AR9170_MAC_REG_BCN_PLCP (AR9170_MAC_REG_BASE + 0xd90)
0392 #define AR9170_MAC_REG_BCN_CTRL (AR9170_MAC_REG_BASE + 0xd94)
0393 #define AR9170_BCN_CTRL_READY 0x01
0394 #define AR9170_BCN_CTRL_LOCK 0x02
0395
0396 #define AR9170_MAC_REG_BCN_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd98)
0397 #define AR9170_MAC_REG_BCN_COUNT (AR9170_MAC_REG_BASE + 0xd9c)
0398 #define AR9170_MAC_REG_BCN_HT1 (AR9170_MAC_REG_BASE + 0xda0)
0399 #define AR9170_MAC_BCN_HT1_HT_EN BIT(0)
0400 #define AR9170_MAC_BCN_HT1_GF_PMB BIT(1)
0401 #define AR9170_MAC_BCN_HT1_SP_EXP BIT(2)
0402 #define AR9170_MAC_BCN_HT1_TX_BF BIT(3)
0403 #define AR9170_MAC_BCN_HT1_PWR_CTRL_S 4
0404 #define AR9170_MAC_BCN_HT1_PWR_CTRL 0x70
0405 #define AR9170_MAC_BCN_HT1_TX_ANT1 BIT(7)
0406 #define AR9170_MAC_BCN_HT1_TX_ANT0 BIT(8)
0407 #define AR9170_MAC_BCN_HT1_NUM_LFT_S 9
0408 #define AR9170_MAC_BCN_HT1_NUM_LFT 0x600
0409 #define AR9170_MAC_BCN_HT1_BWC_20M_EXT BIT(16)
0410 #define AR9170_MAC_BCN_HT1_BWC_40M_SHARED BIT(17)
0411 #define AR9170_MAC_BCN_HT1_BWC_40M_DUP (BIT(16) | BIT(17))
0412 #define AR9170_MAC_BCN_HT1_BF_MCS_S 18
0413 #define AR9170_MAC_BCN_HT1_BF_MCS 0x1c0000
0414 #define AR9170_MAC_BCN_HT1_TPC_S 21
0415 #define AR9170_MAC_BCN_HT1_TPC 0x7e00000
0416 #define AR9170_MAC_BCN_HT1_CHAIN_MASK_S 27
0417 #define AR9170_MAC_BCN_HT1_CHAIN_MASK 0x38000000
0418
0419 #define AR9170_MAC_REG_BCN_HT2 (AR9170_MAC_REG_BASE + 0xda4)
0420 #define AR9170_MAC_BCN_HT2_MCS_S 0
0421 #define AR9170_MAC_BCN_HT2_MCS 0x7f
0422 #define AR9170_MAC_BCN_HT2_BW40 BIT(8)
0423 #define AR9170_MAC_BCN_HT2_SMOOTHING BIT(9)
0424 #define AR9170_MAC_BCN_HT2_SS BIT(10)
0425 #define AR9170_MAC_BCN_HT2_NSS BIT(11)
0426 #define AR9170_MAC_BCN_HT2_STBC_S 12
0427 #define AR9170_MAC_BCN_HT2_STBC 0x3000
0428 #define AR9170_MAC_BCN_HT2_ADV_COD BIT(14)
0429 #define AR9170_MAC_BCN_HT2_SGI BIT(15)
0430 #define AR9170_MAC_BCN_HT2_LEN_S 16
0431 #define AR9170_MAC_BCN_HT2_LEN 0xffff0000
0432
0433 #define AR9170_MAC_REG_DMA_TXQX_ADDR_CURR (AR9170_MAC_REG_BASE + 0xdc0)
0434
0435
0436 #define AR9170_RAND_REG_BASE 0x1d0000
0437
0438 #define AR9170_RAND_REG_NUM (AR9170_RAND_REG_BASE + 0x000)
0439 #define AR9170_RAND_REG_MODE (AR9170_RAND_REG_BASE + 0x004)
0440 #define AR9170_RAND_MODE_MANUAL 0x000
0441 #define AR9170_RAND_MODE_FREE 0x001
0442
0443
0444 #define AR9170_GPIO_REG_BASE 0x1d0100
0445 #define AR9170_GPIO_REG_PORT_TYPE (AR9170_GPIO_REG_BASE + 0x000)
0446 #define AR9170_GPIO_REG_PORT_DATA (AR9170_GPIO_REG_BASE + 0x004)
0447 #define AR9170_GPIO_PORT_LED_0 1
0448 #define AR9170_GPIO_PORT_LED_1 2
0449
0450 #define AR9170_GPIO_PORT_WPS_BUTTON_PRESSED 4
0451
0452
0453 #define AR9170_MC_REG_BASE 0x1d1000
0454
0455 #define AR9170_MC_REG_FLASH_WAIT_STATE (AR9170_MC_REG_BASE + 0x000)
0456
0457 #define AR9170_SPI_REG_BASE (AR9170_MC_REG_BASE + 0x200)
0458 #define AR9170_SPI_REG_CONTROL0 (AR9170_SPI_REG_BASE + 0x000)
0459 #define AR9170_SPI_CONTROL0_BUSY BIT(0)
0460 #define AR9170_SPI_CONTROL0_CMD_GO BIT(1)
0461 #define AR9170_SPI_CONTROL0_PAGE_WR BIT(2)
0462 #define AR9170_SPI_CONTROL0_SEQ_RD BIT(3)
0463 #define AR9170_SPI_CONTROL0_CMD_ABORT BIT(4)
0464 #define AR9170_SPI_CONTROL0_CMD_LEN_S 8
0465 #define AR9170_SPI_CONTROL0_CMD_LEN 0x00000f00
0466 #define AR9170_SPI_CONTROL0_RD_LEN_S 12
0467 #define AR9170_SPI_CONTROL0_RD_LEN 0x00007000
0468
0469 #define AR9170_SPI_REG_CONTROL1 (AR9170_SPI_REG_BASE + 0x004)
0470 #define AR9170_SPI_CONTROL1_SCK_RATE BIT(0)
0471 #define AR9170_SPI_CONTROL1_DRIVE_SDO BIT(1)
0472 #define AR9170_SPI_CONTROL1_MODE_SEL_S 2
0473 #define AR9170_SPI_CONTROL1_MODE_SEL 0x000000c0
0474 #define AR9170_SPI_CONTROL1_WRITE_PROTECT BIT(4)
0475
0476 #define AR9170_SPI_REG_COMMAND_PORT0 (AR9170_SPI_REG_BASE + 0x008)
0477 #define AR9170_SPI_COMMAND_PORT0_CMD0_S 0
0478 #define AR9170_SPI_COMMAND_PORT0_CMD0 0x000000ff
0479 #define AR9170_SPI_COMMAND_PORT0_CMD1_S 8
0480 #define AR9170_SPI_COMMAND_PORT0_CMD1 0x0000ff00
0481 #define AR9170_SPI_COMMAND_PORT0_CMD2_S 16
0482 #define AR9170_SPI_COMMAND_PORT0_CMD2 0x00ff0000
0483 #define AR9170_SPI_COMMAND_PORT0_CMD3_S 24
0484 #define AR9170_SPI_COMMAND_PORT0_CMD3 0xff000000
0485
0486 #define AR9170_SPI_REG_COMMAND_PORT1 (AR9170_SPI_REG_BASE + 0x00C)
0487 #define AR9170_SPI_COMMAND_PORT1_CMD4_S 0
0488 #define AR9170_SPI_COMMAND_PORT1_CMD4 0x000000ff
0489 #define AR9170_SPI_COMMAND_PORT1_CMD5_S 8
0490 #define AR9170_SPI_COMMAND_PORT1_CMD5 0x0000ff00
0491 #define AR9170_SPI_COMMAND_PORT1_CMD6_S 16
0492 #define AR9170_SPI_COMMAND_PORT1_CMD6 0x00ff0000
0493 #define AR9170_SPI_COMMAND_PORT1_CMD7_S 24
0494 #define AR9170_SPI_COMMAND_PORT1_CMD7 0xff000000
0495
0496 #define AR9170_SPI_REG_DATA_PORT (AR9170_SPI_REG_BASE + 0x010)
0497 #define AR9170_SPI_REG_PAGE_WRITE_LEN (AR9170_SPI_REG_BASE + 0x014)
0498
0499 #define AR9170_EEPROM_REG_BASE (AR9170_MC_REG_BASE + 0x400)
0500 #define AR9170_EEPROM_REG_WP_MAGIC1 (AR9170_EEPROM_REG_BASE + 0x000)
0501 #define AR9170_EEPROM_WP_MAGIC1 0x12345678
0502
0503 #define AR9170_EEPROM_REG_WP_MAGIC2 (AR9170_EEPROM_REG_BASE + 0x004)
0504 #define AR9170_EEPROM_WP_MAGIC2 0x55aa00ff
0505
0506 #define AR9170_EEPROM_REG_WP_MAGIC3 (AR9170_EEPROM_REG_BASE + 0x008)
0507 #define AR9170_EEPROM_WP_MAGIC3 0x13579ace
0508
0509 #define AR9170_EEPROM_REG_CLOCK_DIV (AR9170_EEPROM_REG_BASE + 0x00C)
0510 #define AR9170_EEPROM_CLOCK_DIV_FAC_S 0
0511 #define AR9170_EEPROM_CLOCK_DIV_FAC 0x000001ff
0512 #define AR9170_EEPROM_CLOCK_DIV_FAC_39KHZ 0xff
0513 #define AR9170_EEPROM_CLOCK_DIV_FAC_78KHZ 0x7f
0514 #define AR9170_EEPROM_CLOCK_DIV_FAC_312KHZ 0x1f
0515 #define AR9170_EEPROM_CLOCK_DIV_FAC_10MHZ 0x0
0516 #define AR9170_EEPROM_CLOCK_DIV_SOFT_RST BIT(9)
0517
0518 #define AR9170_EEPROM_REG_MODE (AR9170_EEPROM_REG_BASE + 0x010)
0519 #define AR9170_EEPROM_MODE_EEPROM_SIZE_16K_PLUS BIT(31)
0520
0521 #define AR9170_EEPROM_REG_WRITE_PROTECT (AR9170_EEPROM_REG_BASE + 0x014)
0522 #define AR9170_EEPROM_WRITE_PROTECT_WP_STATUS BIT(0)
0523 #define AR9170_EEPROM_WRITE_PROTECT_WP_SET BIT(8)
0524
0525
0526 #define AR9170_MAX_INT_SRC 9
0527 #define AR9170_INT_REG_BASE 0x1d2000
0528
0529 #define AR9170_INT_REG_FLAG (AR9170_INT_REG_BASE + 0x000)
0530 #define AR9170_INT_REG_FIQ_MASK (AR9170_INT_REG_BASE + 0x004)
0531 #define AR9170_INT_REG_IRQ_MASK (AR9170_INT_REG_BASE + 0x008)
0532
0533 #define AR9170_INT_FLAG_WLAN 0x001
0534 #define AR9170_INT_FLAG_PTAB_BIT 0x002
0535 #define AR9170_INT_FLAG_SE_BIT 0x004
0536 #define AR9170_INT_FLAG_UART_BIT 0x008
0537 #define AR9170_INT_FLAG_TIMER_BIT 0x010
0538 #define AR9170_INT_FLAG_EXT_BIT 0x020
0539 #define AR9170_INT_FLAG_SW_BIT 0x040
0540 #define AR9170_INT_FLAG_USB_BIT 0x080
0541 #define AR9170_INT_FLAG_ETHERNET_BIT 0x100
0542
0543 #define AR9170_INT_REG_PRIORITY1 (AR9170_INT_REG_BASE + 0x00c)
0544 #define AR9170_INT_REG_PRIORITY2 (AR9170_INT_REG_BASE + 0x010)
0545 #define AR9170_INT_REG_PRIORITY3 (AR9170_INT_REG_BASE + 0x014)
0546 #define AR9170_INT_REG_EXT_INT_CONTROL (AR9170_INT_REG_BASE + 0x018)
0547 #define AR9170_INT_REG_SW_INT_CONTROL (AR9170_INT_REG_BASE + 0x01c)
0548 #define AR9170_INT_SW_INT_ENABLE 0x1
0549
0550 #define AR9170_INT_REG_FIQ_ENCODE (AR9170_INT_REG_BASE + 0x020)
0551 #define AR9170_INT_INT_IRQ_ENCODE (AR9170_INT_REG_BASE + 0x024)
0552
0553
0554 #define AR9170_PWR_REG_BASE 0x1d4000
0555
0556 #define AR9170_PWR_REG_POWER_STATE (AR9170_PWR_REG_BASE + 0x000)
0557
0558 #define AR9170_PWR_REG_RESET (AR9170_PWR_REG_BASE + 0x004)
0559 #define AR9170_PWR_RESET_COMMIT_RESET_MASK BIT(0)
0560 #define AR9170_PWR_RESET_WLAN_MASK BIT(1)
0561 #define AR9170_PWR_RESET_DMA_MASK BIT(2)
0562 #define AR9170_PWR_RESET_BRIDGE_MASK BIT(3)
0563 #define AR9170_PWR_RESET_AHB_MASK BIT(9)
0564 #define AR9170_PWR_RESET_BB_WARM_RESET BIT(10)
0565 #define AR9170_PWR_RESET_BB_COLD_RESET BIT(11)
0566 #define AR9170_PWR_RESET_ADDA_CLK_COLD_RESET BIT(12)
0567 #define AR9170_PWR_RESET_PLL BIT(13)
0568 #define AR9170_PWR_RESET_USB_PLL BIT(14)
0569
0570 #define AR9170_PWR_REG_CLOCK_SEL (AR9170_PWR_REG_BASE + 0x008)
0571 #define AR9170_PWR_CLK_AHB_40MHZ 0
0572 #define AR9170_PWR_CLK_AHB_20_22MHZ 1
0573 #define AR9170_PWR_CLK_AHB_40_44MHZ 2
0574 #define AR9170_PWR_CLK_AHB_80_88MHZ 3
0575 #define AR9170_PWR_CLK_DAC_160_INV_DLY 0x70
0576
0577 #define AR9170_PWR_REG_CHIP_REVISION (AR9170_PWR_REG_BASE + 0x010)
0578 #define AR9170_PWR_REG_PLL_ADDAC (AR9170_PWR_REG_BASE + 0x014)
0579 #define AR9170_PWR_PLL_ADDAC_DIV_S 2
0580 #define AR9170_PWR_PLL_ADDAC_DIV 0xffc
0581 #define AR9170_PWR_REG_WATCH_DOG_MAGIC (AR9170_PWR_REG_BASE + 0x020)
0582
0583
0584 #define AR9170_USB_REG_BASE 0x1e1000
0585
0586 #define AR9170_USB_REG_MAIN_CTRL (AR9170_USB_REG_BASE + 0x000)
0587 #define AR9170_USB_MAIN_CTRL_REMOTE_WAKEUP BIT(0)
0588 #define AR9170_USB_MAIN_CTRL_ENABLE_GLOBAL_INT BIT(2)
0589 #define AR9170_USB_MAIN_CTRL_GO_TO_SUSPEND BIT(3)
0590 #define AR9170_USB_MAIN_CTRL_RESET BIT(4)
0591 #define AR9170_USB_MAIN_CTRL_CHIP_ENABLE BIT(5)
0592 #define AR9170_USB_MAIN_CTRL_HIGHSPEED BIT(6)
0593
0594 #define AR9170_USB_REG_DEVICE_ADDRESS (AR9170_USB_REG_BASE + 0x001)
0595 #define AR9170_USB_DEVICE_ADDRESS_CONFIGURE BIT(7)
0596
0597 #define AR9170_USB_REG_TEST (AR9170_USB_REG_BASE + 0x002)
0598 #define AR9170_USB_REG_PHY_TEST_SELECT (AR9170_USB_REG_BASE + 0x008)
0599 #define AR9170_USB_REG_CX_CONFIG_STATUS (AR9170_USB_REG_BASE + 0x00b)
0600 #define AR9170_USB_REG_EP0_DATA (AR9170_USB_REG_BASE + 0x00c)
0601 #define AR9170_USB_REG_EP0_DATA1 (AR9170_USB_REG_BASE + 0x00c)
0602 #define AR9170_USB_REG_EP0_DATA2 (AR9170_USB_REG_BASE + 0x00d)
0603
0604 #define AR9170_USB_REG_INTR_MASK_BYTE_0 (AR9170_USB_REG_BASE + 0x011)
0605 #define AR9170_USB_REG_INTR_MASK_BYTE_1 (AR9170_USB_REG_BASE + 0x012)
0606 #define AR9170_USB_REG_INTR_MASK_BYTE_2 (AR9170_USB_REG_BASE + 0x013)
0607 #define AR9170_USB_REG_INTR_MASK_BYTE_3 (AR9170_USB_REG_BASE + 0x014)
0608 #define AR9170_USB_REG_INTR_MASK_BYTE_4 (AR9170_USB_REG_BASE + 0x015)
0609 #define AR9170_USB_INTR_DISABLE_OUT_INT (BIT(7) | BIT(6))
0610
0611 #define AR9170_USB_REG_INTR_MASK_BYTE_5 (AR9170_USB_REG_BASE + 0x016)
0612 #define AR9170_USB_REG_INTR_MASK_BYTE_6 (AR9170_USB_REG_BASE + 0x017)
0613 #define AR9170_USB_INTR_DISABLE_IN_INT BIT(6)
0614
0615 #define AR9170_USB_REG_INTR_MASK_BYTE_7 (AR9170_USB_REG_BASE + 0x018)
0616
0617 #define AR9170_USB_REG_INTR_GROUP (AR9170_USB_REG_BASE + 0x020)
0618
0619 #define AR9170_USB_REG_INTR_SOURCE_0 (AR9170_USB_REG_BASE + 0x021)
0620 #define AR9170_USB_INTR_SRC0_SETUP BIT(0)
0621 #define AR9170_USB_INTR_SRC0_IN BIT(1)
0622 #define AR9170_USB_INTR_SRC0_OUT BIT(2)
0623 #define AR9170_USB_INTR_SRC0_FAIL BIT(3)
0624 #define AR9170_USB_INTR_SRC0_END BIT(4)
0625 #define AR9170_USB_INTR_SRC0_ABORT BIT(7)
0626
0627 #define AR9170_USB_REG_INTR_SOURCE_1 (AR9170_USB_REG_BASE + 0x022)
0628 #define AR9170_USB_REG_INTR_SOURCE_2 (AR9170_USB_REG_BASE + 0x023)
0629 #define AR9170_USB_REG_INTR_SOURCE_3 (AR9170_USB_REG_BASE + 0x024)
0630 #define AR9170_USB_REG_INTR_SOURCE_4 (AR9170_USB_REG_BASE + 0x025)
0631 #define AR9170_USB_REG_INTR_SOURCE_5 (AR9170_USB_REG_BASE + 0x026)
0632 #define AR9170_USB_REG_INTR_SOURCE_6 (AR9170_USB_REG_BASE + 0x027)
0633 #define AR9170_USB_REG_INTR_SOURCE_7 (AR9170_USB_REG_BASE + 0x028)
0634 #define AR9170_USB_INTR_SRC7_USB_RESET BIT(1)
0635 #define AR9170_USB_INTR_SRC7_USB_SUSPEND BIT(2)
0636 #define AR9170_USB_INTR_SRC7_USB_RESUME BIT(3)
0637 #define AR9170_USB_INTR_SRC7_ISO_SEQ_ERR BIT(4)
0638 #define AR9170_USB_INTR_SRC7_ISO_SEQ_ABORT BIT(5)
0639 #define AR9170_USB_INTR_SRC7_TX0BYTE BIT(6)
0640 #define AR9170_USB_INTR_SRC7_RX0BYTE BIT(7)
0641
0642 #define AR9170_USB_REG_IDLE_COUNT (AR9170_USB_REG_BASE + 0x02f)
0643
0644 #define AR9170_USB_REG_EP_MAP (AR9170_USB_REG_BASE + 0x030)
0645 #define AR9170_USB_REG_EP1_MAP (AR9170_USB_REG_BASE + 0x030)
0646 #define AR9170_USB_REG_EP2_MAP (AR9170_USB_REG_BASE + 0x031)
0647 #define AR9170_USB_REG_EP3_MAP (AR9170_USB_REG_BASE + 0x032)
0648 #define AR9170_USB_REG_EP4_MAP (AR9170_USB_REG_BASE + 0x033)
0649 #define AR9170_USB_REG_EP5_MAP (AR9170_USB_REG_BASE + 0x034)
0650 #define AR9170_USB_REG_EP6_MAP (AR9170_USB_REG_BASE + 0x035)
0651 #define AR9170_USB_REG_EP7_MAP (AR9170_USB_REG_BASE + 0x036)
0652 #define AR9170_USB_REG_EP8_MAP (AR9170_USB_REG_BASE + 0x037)
0653 #define AR9170_USB_REG_EP9_MAP (AR9170_USB_REG_BASE + 0x038)
0654 #define AR9170_USB_REG_EP10_MAP (AR9170_USB_REG_BASE + 0x039)
0655
0656 #define AR9170_USB_REG_EP_IN_MAX_SIZE_HIGH (AR9170_USB_REG_BASE + 0x03f)
0657 #define AR9170_USB_EP_IN_STALL 0x8
0658 #define AR9170_USB_EP_IN_TOGGLE 0x10
0659
0660 #define AR9170_USB_REG_EP_IN_MAX_SIZE_LOW (AR9170_USB_REG_BASE + 0x03e)
0661
0662 #define AR9170_USB_REG_EP_OUT_MAX_SIZE_HIGH (AR9170_USB_REG_BASE + 0x05f)
0663 #define AR9170_USB_EP_OUT_STALL 0x8
0664 #define AR9170_USB_EP_OUT_TOGGLE 0x10
0665
0666 #define AR9170_USB_REG_EP_OUT_MAX_SIZE_LOW (AR9170_USB_REG_BASE + 0x05e)
0667
0668 #define AR9170_USB_REG_EP3_BYTE_COUNT_HIGH (AR9170_USB_REG_BASE + 0x0ae)
0669 #define AR9170_USB_REG_EP3_BYTE_COUNT_LOW (AR9170_USB_REG_BASE + 0x0be)
0670 #define AR9170_USB_REG_EP4_BYTE_COUNT_HIGH (AR9170_USB_REG_BASE + 0x0af)
0671 #define AR9170_USB_REG_EP4_BYTE_COUNT_LOW (AR9170_USB_REG_BASE + 0x0bf)
0672
0673 #define AR9170_USB_REG_FIFO_MAP (AR9170_USB_REG_BASE + 0x080)
0674 #define AR9170_USB_REG_FIFO0_MAP (AR9170_USB_REG_BASE + 0x080)
0675 #define AR9170_USB_REG_FIFO1_MAP (AR9170_USB_REG_BASE + 0x081)
0676 #define AR9170_USB_REG_FIFO2_MAP (AR9170_USB_REG_BASE + 0x082)
0677 #define AR9170_USB_REG_FIFO3_MAP (AR9170_USB_REG_BASE + 0x083)
0678 #define AR9170_USB_REG_FIFO4_MAP (AR9170_USB_REG_BASE + 0x084)
0679 #define AR9170_USB_REG_FIFO5_MAP (AR9170_USB_REG_BASE + 0x085)
0680 #define AR9170_USB_REG_FIFO6_MAP (AR9170_USB_REG_BASE + 0x086)
0681 #define AR9170_USB_REG_FIFO7_MAP (AR9170_USB_REG_BASE + 0x087)
0682 #define AR9170_USB_REG_FIFO8_MAP (AR9170_USB_REG_BASE + 0x088)
0683 #define AR9170_USB_REG_FIFO9_MAP (AR9170_USB_REG_BASE + 0x089)
0684
0685 #define AR9170_USB_REG_FIFO_CONFIG (AR9170_USB_REG_BASE + 0x090)
0686 #define AR9170_USB_REG_FIFO0_CONFIG (AR9170_USB_REG_BASE + 0x090)
0687 #define AR9170_USB_REG_FIFO1_CONFIG (AR9170_USB_REG_BASE + 0x091)
0688 #define AR9170_USB_REG_FIFO2_CONFIG (AR9170_USB_REG_BASE + 0x092)
0689 #define AR9170_USB_REG_FIFO3_CONFIG (AR9170_USB_REG_BASE + 0x093)
0690 #define AR9170_USB_REG_FIFO4_CONFIG (AR9170_USB_REG_BASE + 0x094)
0691 #define AR9170_USB_REG_FIFO5_CONFIG (AR9170_USB_REG_BASE + 0x095)
0692 #define AR9170_USB_REG_FIFO6_CONFIG (AR9170_USB_REG_BASE + 0x096)
0693 #define AR9170_USB_REG_FIFO7_CONFIG (AR9170_USB_REG_BASE + 0x097)
0694 #define AR9170_USB_REG_FIFO8_CONFIG (AR9170_USB_REG_BASE + 0x098)
0695 #define AR9170_USB_REG_FIFO9_CONFIG (AR9170_USB_REG_BASE + 0x099)
0696
0697 #define AR9170_USB_REG_EP3_DATA (AR9170_USB_REG_BASE + 0x0f8)
0698 #define AR9170_USB_REG_EP4_DATA (AR9170_USB_REG_BASE + 0x0fc)
0699
0700 #define AR9170_USB_REG_FIFO_SIZE (AR9170_USB_REG_BASE + 0x100)
0701 #define AR9170_USB_REG_DMA_CTL (AR9170_USB_REG_BASE + 0x108)
0702 #define AR9170_USB_DMA_CTL_ENABLE_TO_DEVICE BIT(0)
0703 #define AR9170_USB_DMA_CTL_ENABLE_FROM_DEVICE BIT(1)
0704 #define AR9170_USB_DMA_CTL_HIGH_SPEED BIT(2)
0705 #define AR9170_USB_DMA_CTL_UP_PACKET_MODE BIT(3)
0706 #define AR9170_USB_DMA_CTL_UP_STREAM_S 4
0707 #define AR9170_USB_DMA_CTL_UP_STREAM (BIT(4) | BIT(5))
0708 #define AR9170_USB_DMA_CTL_UP_STREAM_4K (0)
0709 #define AR9170_USB_DMA_CTL_UP_STREAM_8K BIT(4)
0710 #define AR9170_USB_DMA_CTL_UP_STREAM_16K BIT(5)
0711 #define AR9170_USB_DMA_CTL_UP_STREAM_32K (BIT(4) | BIT(5))
0712 #define AR9170_USB_DMA_CTL_DOWN_STREAM BIT(6)
0713
0714 #define AR9170_USB_REG_DMA_STATUS (AR9170_USB_REG_BASE + 0x10c)
0715 #define AR9170_USB_DMA_STATUS_UP_IDLE BIT(8)
0716 #define AR9170_USB_DMA_STATUS_DN_IDLE BIT(16)
0717
0718 #define AR9170_USB_REG_MAX_AGG_UPLOAD (AR9170_USB_REG_BASE + 0x110)
0719 #define AR9170_USB_REG_UPLOAD_TIME_CTL (AR9170_USB_REG_BASE + 0x114)
0720
0721 #define AR9170_USB_REG_WAKE_UP (AR9170_USB_REG_BASE + 0x120)
0722 #define AR9170_USB_WAKE_UP_WAKE BIT(0)
0723
0724 #define AR9170_USB_REG_CBUS_CTRL (AR9170_USB_REG_BASE + 0x1f0)
0725 #define AR9170_USB_CBUS_CTRL_BUFFER_END (BIT(1))
0726
0727
0728 #define AR9170_PTA_REG_BASE 0x1e2000
0729
0730 #define AR9170_PTA_REG_CMD (AR9170_PTA_REG_BASE + 0x000)
0731 #define AR9170_PTA_REG_PARAM1 (AR9170_PTA_REG_BASE + 0x004)
0732 #define AR9170_PTA_REG_PARAM2 (AR9170_PTA_REG_BASE + 0x008)
0733 #define AR9170_PTA_REG_PARAM3 (AR9170_PTA_REG_BASE + 0x00c)
0734 #define AR9170_PTA_REG_RSP (AR9170_PTA_REG_BASE + 0x010)
0735 #define AR9170_PTA_REG_STATUS1 (AR9170_PTA_REG_BASE + 0x014)
0736 #define AR9170_PTA_REG_STATUS2 (AR9170_PTA_REG_BASE + 0x018)
0737 #define AR9170_PTA_REG_STATUS3 (AR9170_PTA_REG_BASE + 0x01c)
0738 #define AR9170_PTA_REG_AHB_INT_FLAG (AR9170_PTA_REG_BASE + 0x020)
0739 #define AR9170_PTA_REG_AHB_INT_MASK (AR9170_PTA_REG_BASE + 0x024)
0740 #define AR9170_PTA_REG_AHB_INT_ACK (AR9170_PTA_REG_BASE + 0x028)
0741 #define AR9170_PTA_REG_AHB_SCRATCH1 (AR9170_PTA_REG_BASE + 0x030)
0742 #define AR9170_PTA_REG_AHB_SCRATCH2 (AR9170_PTA_REG_BASE + 0x034)
0743 #define AR9170_PTA_REG_AHB_SCRATCH3 (AR9170_PTA_REG_BASE + 0x038)
0744 #define AR9170_PTA_REG_AHB_SCRATCH4 (AR9170_PTA_REG_BASE + 0x03c)
0745
0746 #define AR9170_PTA_REG_SHARE_MEM_CTRL (AR9170_PTA_REG_BASE + 0x124)
0747
0748
0749
0750
0751
0752 #define AR9170_PTA_REG_INT_FLAG (AR9170_PTA_REG_BASE + 0x100)
0753 #define AR9170_PTA_INT_FLAG_DN 0x01
0754 #define AR9170_PTA_INT_FLAG_UP 0x02
0755 #define AR9170_PTA_INT_FLAG_CMD 0x04
0756
0757 #define AR9170_PTA_REG_INT_MASK (AR9170_PTA_REG_BASE + 0x104)
0758 #define AR9170_PTA_REG_DN_DMA_ADDRL (AR9170_PTA_REG_BASE + 0x108)
0759 #define AR9170_PTA_REG_DN_DMA_ADDRH (AR9170_PTA_REG_BASE + 0x10c)
0760 #define AR9170_PTA_REG_UP_DMA_ADDRL (AR9170_PTA_REG_BASE + 0x110)
0761 #define AR9170_PTA_REG_UP_DMA_ADDRH (AR9170_PTA_REG_BASE + 0x114)
0762 #define AR9170_PTA_REG_DN_PEND_TIME (AR9170_PTA_REG_BASE + 0x118)
0763 #define AR9170_PTA_REG_UP_PEND_TIME (AR9170_PTA_REG_BASE + 0x11c)
0764 #define AR9170_PTA_REG_CONTROL (AR9170_PTA_REG_BASE + 0x120)
0765 #define AR9170_PTA_CTRL_4_BEAT_BURST 0x00
0766 #define AR9170_PTA_CTRL_8_BEAT_BURST 0x01
0767 #define AR9170_PTA_CTRL_16_BEAT_BURST 0x02
0768 #define AR9170_PTA_CTRL_LOOPBACK_MODE 0x10
0769
0770 #define AR9170_PTA_REG_MEM_CTRL (AR9170_PTA_REG_BASE + 0x124)
0771 #define AR9170_PTA_REG_MEM_ADDR (AR9170_PTA_REG_BASE + 0x128)
0772 #define AR9170_PTA_REG_DN_DMA_TRIGGER (AR9170_PTA_REG_BASE + 0x12c)
0773 #define AR9170_PTA_REG_UP_DMA_TRIGGER (AR9170_PTA_REG_BASE + 0x130)
0774 #define AR9170_PTA_REG_DMA_STATUS (AR9170_PTA_REG_BASE + 0x134)
0775 #define AR9170_PTA_REG_DN_CURR_ADDRL (AR9170_PTA_REG_BASE + 0x138)
0776 #define AR9170_PTA_REG_DN_CURR_ADDRH (AR9170_PTA_REG_BASE + 0x13c)
0777 #define AR9170_PTA_REG_UP_CURR_ADDRL (AR9170_PTA_REG_BASE + 0x140)
0778 #define AR9170_PTA_REG_UP_CURR_ADDRH (AR9170_PTA_REG_BASE + 0x144)
0779 #define AR9170_PTA_REG_DMA_MODE_CTRL (AR9170_PTA_REG_BASE + 0x148)
0780 #define AR9170_PTA_DMA_MODE_CTRL_RESET BIT(0)
0781 #define AR9170_PTA_DMA_MODE_CTRL_DISABLE_USB BIT(1)
0782
0783
0784 #define AR9170_MAC_REG_PC_REG_BASE (AR9170_MAC_REG_BASE + 0xe00)
0785
0786
0787 #define AR9170_NUM_LEDS 2
0788
0789
0790 #define AR9170_CAM_MAX_USER 64
0791 #define AR9170_CAM_MAX_KEY_LENGTH 16
0792
0793 #define AR9170_SRAM_OFFSET 0x100000
0794 #define AR9170_SRAM_SIZE 0x18000
0795
0796 #define AR9170_PRAM_OFFSET 0x200000
0797 #define AR9170_PRAM_SIZE 0x8000
0798
0799 enum cpu_clock {
0800 AHB_STATIC_40MHZ = 0,
0801 AHB_GMODE_22MHZ = 1,
0802 AHB_AMODE_20MHZ = 1,
0803 AHB_GMODE_44MHZ = 2,
0804 AHB_AMODE_40MHZ = 2,
0805 AHB_GMODE_88MHZ = 3,
0806 AHB_AMODE_80MHZ = 3
0807 };
0808
0809
0810 enum ar9170_usb_ep {
0811
0812
0813
0814
0815
0816
0817
0818 AR9170_USB_EP_CTRL = 0,
0819
0820 AR9170_USB_EP_TX,
0821 AR9170_USB_EP_RX,
0822 AR9170_USB_EP_IRQ,
0823 AR9170_USB_EP_CMD,
0824 AR9170_USB_NUM_EXTRA_EP = 4,
0825
0826 __AR9170_USB_NUM_EP,
0827
0828 __AR9170_USB_NUM_MAX_EP = 10
0829 };
0830
0831 enum ar9170_usb_fifo {
0832 __AR9170_USB_NUM_MAX_FIFO = 10
0833 };
0834
0835 enum ar9170_tx_queues {
0836 AR9170_TXQ0 = 0,
0837 AR9170_TXQ1,
0838 AR9170_TXQ2,
0839 AR9170_TXQ3,
0840 AR9170_TXQ_SPECIAL,
0841
0842
0843 __AR9170_NUM_TX_QUEUES = 5
0844 };
0845
0846 #define AR9170_TX_STREAM_TAG 0x697e
0847 #define AR9170_RX_STREAM_TAG 0x4e00
0848 #define AR9170_RX_STREAM_MAX_SIZE 0xffff
0849
0850 struct ar9170_stream {
0851 __le16 length;
0852 __le16 tag;
0853
0854 u8 payload[];
0855 } __packed __aligned(4);
0856 #define AR9170_STREAM_LEN 4
0857
0858 #define AR9170_MAX_ACKTABLE_ENTRIES 8
0859 #define AR9170_MAX_VIRTUAL_MAC 7
0860
0861 #define AR9170_USB_EP_CTRL_MAX 64
0862 #define AR9170_USB_EP_TX_MAX 512
0863 #define AR9170_USB_EP_RX_MAX 512
0864 #define AR9170_USB_EP_IRQ_MAX 64
0865 #define AR9170_USB_EP_CMD_MAX 64
0866
0867
0868 #define CARL9170_PRETBTT_KUS 6
0869
0870 #define AR5416_MAX_RATE_POWER 63
0871
0872 #define SET_VAL(reg, value, newvalue) \
0873 (value = ((value) & ~reg) | (((newvalue) << reg##_S) & reg))
0874
0875 #define SET_CONSTVAL(reg, newvalue) \
0876 (((newvalue) << reg##_S) & reg)
0877
0878 #define MOD_VAL(reg, value, newvalue) \
0879 (((value) & ~reg) | (((newvalue) << reg##_S) & reg))
0880
0881 #define GET_VAL(reg, value) \
0882 (((value) & reg) >> reg##_S)
0883
0884 #endif