11ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 233aca94dSKalle Valo /* 333aca94dSKalle Valo Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com> 433aca94dSKalle Valo <http://rt2x00.serialmonkey.com> 533aca94dSKalle Valo 633aca94dSKalle Valo */ 733aca94dSKalle Valo 833aca94dSKalle Valo /* 933aca94dSKalle Valo Module: rt61pci 1033aca94dSKalle Valo Abstract: Data structures and registers for the rt61pci module. 1133aca94dSKalle Valo Supported chipsets: RT2561, RT2561s, RT2661. 1233aca94dSKalle Valo */ 1333aca94dSKalle Valo 1433aca94dSKalle Valo #ifndef RT61PCI_H 1533aca94dSKalle Valo #define RT61PCI_H 1633aca94dSKalle Valo 1733aca94dSKalle Valo /* 1833aca94dSKalle Valo * RT chip PCI IDs. 1933aca94dSKalle Valo */ 2033aca94dSKalle Valo #define RT2561s_PCI_ID 0x0301 2133aca94dSKalle Valo #define RT2561_PCI_ID 0x0302 2233aca94dSKalle Valo #define RT2661_PCI_ID 0x0401 2333aca94dSKalle Valo 2433aca94dSKalle Valo /* 2533aca94dSKalle Valo * RF chip defines. 2633aca94dSKalle Valo */ 2733aca94dSKalle Valo #define RF5225 0x0001 2833aca94dSKalle Valo #define RF5325 0x0002 2933aca94dSKalle Valo #define RF2527 0x0003 3033aca94dSKalle Valo #define RF2529 0x0004 3133aca94dSKalle Valo 3233aca94dSKalle Valo /* 3333aca94dSKalle Valo * Signal information. 3433aca94dSKalle Valo * Default offset is required for RSSI <-> dBm conversion. 3533aca94dSKalle Valo */ 3633aca94dSKalle Valo #define DEFAULT_RSSI_OFFSET 120 3733aca94dSKalle Valo 3833aca94dSKalle Valo /* 3933aca94dSKalle Valo * Register layout information. 4033aca94dSKalle Valo */ 4133aca94dSKalle Valo #define CSR_REG_BASE 0x3000 4233aca94dSKalle Valo #define CSR_REG_SIZE 0x04b0 4333aca94dSKalle Valo #define EEPROM_BASE 0x0000 4433aca94dSKalle Valo #define EEPROM_SIZE 0x0100 4533aca94dSKalle Valo #define BBP_BASE 0x0000 4633aca94dSKalle Valo #define BBP_SIZE 0x0080 4733aca94dSKalle Valo #define RF_BASE 0x0004 4833aca94dSKalle Valo #define RF_SIZE 0x0010 4933aca94dSKalle Valo 5033aca94dSKalle Valo /* 5133aca94dSKalle Valo * Number of TX queues. 5233aca94dSKalle Valo */ 5333aca94dSKalle Valo #define NUM_TX_QUEUES 4 5433aca94dSKalle Valo 5533aca94dSKalle Valo /* 5633aca94dSKalle Valo * PCI registers. 5733aca94dSKalle Valo */ 5833aca94dSKalle Valo 5933aca94dSKalle Valo /* 6033aca94dSKalle Valo * HOST_CMD_CSR: For HOST to interrupt embedded processor 6133aca94dSKalle Valo */ 6233aca94dSKalle Valo #define HOST_CMD_CSR 0x0008 6333aca94dSKalle Valo #define HOST_CMD_CSR_HOST_COMMAND FIELD32(0x0000007f) 6433aca94dSKalle Valo #define HOST_CMD_CSR_INTERRUPT_MCU FIELD32(0x00000080) 6533aca94dSKalle Valo 6633aca94dSKalle Valo /* 6733aca94dSKalle Valo * MCU_CNTL_CSR 6833aca94dSKalle Valo * SELECT_BANK: Select 8051 program bank. 6933aca94dSKalle Valo * RESET: Enable 8051 reset state. 7033aca94dSKalle Valo * READY: Ready state for 8051. 7133aca94dSKalle Valo */ 7233aca94dSKalle Valo #define MCU_CNTL_CSR 0x000c 7333aca94dSKalle Valo #define MCU_CNTL_CSR_SELECT_BANK FIELD32(0x00000001) 7433aca94dSKalle Valo #define MCU_CNTL_CSR_RESET FIELD32(0x00000002) 7533aca94dSKalle Valo #define MCU_CNTL_CSR_READY FIELD32(0x00000004) 7633aca94dSKalle Valo 7733aca94dSKalle Valo /* 7833aca94dSKalle Valo * SOFT_RESET_CSR 7933aca94dSKalle Valo * FORCE_CLOCK_ON: Host force MAC clock ON 8033aca94dSKalle Valo */ 8133aca94dSKalle Valo #define SOFT_RESET_CSR 0x0010 8233aca94dSKalle Valo #define SOFT_RESET_CSR_FORCE_CLOCK_ON FIELD32(0x00000002) 8333aca94dSKalle Valo 8433aca94dSKalle Valo /* 8533aca94dSKalle Valo * MCU_INT_SOURCE_CSR: MCU interrupt source/mask register. 8633aca94dSKalle Valo */ 8733aca94dSKalle Valo #define MCU_INT_SOURCE_CSR 0x0014 8833aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_0 FIELD32(0x00000001) 8933aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_1 FIELD32(0x00000002) 9033aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_2 FIELD32(0x00000004) 9133aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_3 FIELD32(0x00000008) 9233aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_4 FIELD32(0x00000010) 9333aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_5 FIELD32(0x00000020) 9433aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_6 FIELD32(0x00000040) 9533aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_7 FIELD32(0x00000080) 9633aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_TWAKEUP FIELD32(0x00000100) 9733aca94dSKalle Valo #define MCU_INT_SOURCE_CSR_TBTT_EXPIRE FIELD32(0x00000200) 9833aca94dSKalle Valo 9933aca94dSKalle Valo /* 10033aca94dSKalle Valo * MCU_INT_MASK_CSR: MCU interrupt source/mask register. 10133aca94dSKalle Valo */ 10233aca94dSKalle Valo #define MCU_INT_MASK_CSR 0x0018 10333aca94dSKalle Valo #define MCU_INT_MASK_CSR_0 FIELD32(0x00000001) 10433aca94dSKalle Valo #define MCU_INT_MASK_CSR_1 FIELD32(0x00000002) 10533aca94dSKalle Valo #define MCU_INT_MASK_CSR_2 FIELD32(0x00000004) 10633aca94dSKalle Valo #define MCU_INT_MASK_CSR_3 FIELD32(0x00000008) 10733aca94dSKalle Valo #define MCU_INT_MASK_CSR_4 FIELD32(0x00000010) 10833aca94dSKalle Valo #define MCU_INT_MASK_CSR_5 FIELD32(0x00000020) 10933aca94dSKalle Valo #define MCU_INT_MASK_CSR_6 FIELD32(0x00000040) 11033aca94dSKalle Valo #define MCU_INT_MASK_CSR_7 FIELD32(0x00000080) 11133aca94dSKalle Valo #define MCU_INT_MASK_CSR_TWAKEUP FIELD32(0x00000100) 11233aca94dSKalle Valo #define MCU_INT_MASK_CSR_TBTT_EXPIRE FIELD32(0x00000200) 11333aca94dSKalle Valo 11433aca94dSKalle Valo /* 11533aca94dSKalle Valo * PCI_USEC_CSR 11633aca94dSKalle Valo */ 11733aca94dSKalle Valo #define PCI_USEC_CSR 0x001c 11833aca94dSKalle Valo 11933aca94dSKalle Valo /* 12033aca94dSKalle Valo * Security key table memory. 12133aca94dSKalle Valo * 16 entries 32-byte for shared key table 12233aca94dSKalle Valo * 64 entries 32-byte for pairwise key table 12333aca94dSKalle Valo * 64 entries 8-byte for pairwise ta key table 12433aca94dSKalle Valo */ 12533aca94dSKalle Valo #define SHARED_KEY_TABLE_BASE 0x1000 12633aca94dSKalle Valo #define PAIRWISE_KEY_TABLE_BASE 0x1200 12733aca94dSKalle Valo #define PAIRWISE_TA_TABLE_BASE 0x1a00 12833aca94dSKalle Valo 12933aca94dSKalle Valo #define SHARED_KEY_ENTRY(__idx) \ 13033aca94dSKalle Valo (SHARED_KEY_TABLE_BASE + \ 13133aca94dSKalle Valo ((__idx) * sizeof(struct hw_key_entry))) 13233aca94dSKalle Valo #define PAIRWISE_KEY_ENTRY(__idx) \ 13333aca94dSKalle Valo (PAIRWISE_KEY_TABLE_BASE + \ 13433aca94dSKalle Valo ((__idx) * sizeof(struct hw_key_entry))) 13533aca94dSKalle Valo #define PAIRWISE_TA_ENTRY(__idx) \ 13633aca94dSKalle Valo (PAIRWISE_TA_TABLE_BASE + \ 13733aca94dSKalle Valo ((__idx) * sizeof(struct hw_pairwise_ta_entry))) 13833aca94dSKalle Valo 13933aca94dSKalle Valo struct hw_key_entry { 14033aca94dSKalle Valo u8 key[16]; 14133aca94dSKalle Valo u8 tx_mic[8]; 14233aca94dSKalle Valo u8 rx_mic[8]; 14333aca94dSKalle Valo } __packed; 14433aca94dSKalle Valo 14533aca94dSKalle Valo struct hw_pairwise_ta_entry { 14633aca94dSKalle Valo u8 address[6]; 14733aca94dSKalle Valo u8 cipher; 14833aca94dSKalle Valo u8 reserved; 14933aca94dSKalle Valo } __packed; 15033aca94dSKalle Valo 15133aca94dSKalle Valo /* 15233aca94dSKalle Valo * Other on-chip shared memory space. 15333aca94dSKalle Valo */ 15433aca94dSKalle Valo #define HW_CIS_BASE 0x2000 15533aca94dSKalle Valo #define HW_NULL_BASE 0x2b00 15633aca94dSKalle Valo 15733aca94dSKalle Valo /* 15833aca94dSKalle Valo * Since NULL frame won't be that long (256 byte), 15933aca94dSKalle Valo * We steal 16 tail bytes to save debugging settings. 16033aca94dSKalle Valo */ 16133aca94dSKalle Valo #define HW_DEBUG_SETTING_BASE 0x2bf0 16233aca94dSKalle Valo 16333aca94dSKalle Valo /* 16433aca94dSKalle Valo * On-chip BEACON frame space. 16533aca94dSKalle Valo */ 16633aca94dSKalle Valo #define HW_BEACON_BASE0 0x2c00 16733aca94dSKalle Valo #define HW_BEACON_BASE1 0x2d00 16833aca94dSKalle Valo #define HW_BEACON_BASE2 0x2e00 16933aca94dSKalle Valo #define HW_BEACON_BASE3 0x2f00 17033aca94dSKalle Valo 17133aca94dSKalle Valo #define HW_BEACON_OFFSET(__index) \ 17233aca94dSKalle Valo (HW_BEACON_BASE0 + (__index * 0x0100)) 17333aca94dSKalle Valo 17433aca94dSKalle Valo /* 17533aca94dSKalle Valo * HOST-MCU shared memory. 17633aca94dSKalle Valo */ 17733aca94dSKalle Valo 17833aca94dSKalle Valo /* 17933aca94dSKalle Valo * H2M_MAILBOX_CSR: Host-to-MCU Mailbox. 18033aca94dSKalle Valo */ 18133aca94dSKalle Valo #define H2M_MAILBOX_CSR 0x2100 18233aca94dSKalle Valo #define H2M_MAILBOX_CSR_ARG0 FIELD32(0x000000ff) 18333aca94dSKalle Valo #define H2M_MAILBOX_CSR_ARG1 FIELD32(0x0000ff00) 18433aca94dSKalle Valo #define H2M_MAILBOX_CSR_CMD_TOKEN FIELD32(0x00ff0000) 18533aca94dSKalle Valo #define H2M_MAILBOX_CSR_OWNER FIELD32(0xff000000) 18633aca94dSKalle Valo 18733aca94dSKalle Valo /* 18833aca94dSKalle Valo * MCU_LEDCS: LED control for MCU Mailbox. 18933aca94dSKalle Valo */ 19033aca94dSKalle Valo #define MCU_LEDCS_LED_MODE FIELD16(0x001f) 19133aca94dSKalle Valo #define MCU_LEDCS_RADIO_STATUS FIELD16(0x0020) 19233aca94dSKalle Valo #define MCU_LEDCS_LINK_BG_STATUS FIELD16(0x0040) 19333aca94dSKalle Valo #define MCU_LEDCS_LINK_A_STATUS FIELD16(0x0080) 19433aca94dSKalle Valo #define MCU_LEDCS_POLARITY_GPIO_0 FIELD16(0x0100) 19533aca94dSKalle Valo #define MCU_LEDCS_POLARITY_GPIO_1 FIELD16(0x0200) 19633aca94dSKalle Valo #define MCU_LEDCS_POLARITY_GPIO_2 FIELD16(0x0400) 19733aca94dSKalle Valo #define MCU_LEDCS_POLARITY_GPIO_3 FIELD16(0x0800) 19833aca94dSKalle Valo #define MCU_LEDCS_POLARITY_GPIO_4 FIELD16(0x1000) 19933aca94dSKalle Valo #define MCU_LEDCS_POLARITY_ACT FIELD16(0x2000) 20033aca94dSKalle Valo #define MCU_LEDCS_POLARITY_READY_BG FIELD16(0x4000) 20133aca94dSKalle Valo #define MCU_LEDCS_POLARITY_READY_A FIELD16(0x8000) 20233aca94dSKalle Valo 20333aca94dSKalle Valo /* 20433aca94dSKalle Valo * M2H_CMD_DONE_CSR. 20533aca94dSKalle Valo */ 20633aca94dSKalle Valo #define M2H_CMD_DONE_CSR 0x2104 20733aca94dSKalle Valo 20833aca94dSKalle Valo /* 20933aca94dSKalle Valo * MCU_TXOP_ARRAY_BASE. 21033aca94dSKalle Valo */ 21133aca94dSKalle Valo #define MCU_TXOP_ARRAY_BASE 0x2110 21233aca94dSKalle Valo 21333aca94dSKalle Valo /* 21433aca94dSKalle Valo * MAC Control/Status Registers(CSR). 21533aca94dSKalle Valo * Some values are set in TU, whereas 1 TU == 1024 us. 21633aca94dSKalle Valo */ 21733aca94dSKalle Valo 21833aca94dSKalle Valo /* 21933aca94dSKalle Valo * MAC_CSR0: ASIC revision number. 22033aca94dSKalle Valo */ 22133aca94dSKalle Valo #define MAC_CSR0 0x3000 22233aca94dSKalle Valo #define MAC_CSR0_REVISION FIELD32(0x0000000f) 22333aca94dSKalle Valo #define MAC_CSR0_CHIPSET FIELD32(0x000ffff0) 22433aca94dSKalle Valo 22533aca94dSKalle Valo /* 22633aca94dSKalle Valo * MAC_CSR1: System control register. 22733aca94dSKalle Valo * SOFT_RESET: Software reset bit, 1: reset, 0: normal. 22833aca94dSKalle Valo * BBP_RESET: Hardware reset BBP. 22933aca94dSKalle Valo * HOST_READY: Host is ready after initialization, 1: ready. 23033aca94dSKalle Valo */ 23133aca94dSKalle Valo #define MAC_CSR1 0x3004 23233aca94dSKalle Valo #define MAC_CSR1_SOFT_RESET FIELD32(0x00000001) 23333aca94dSKalle Valo #define MAC_CSR1_BBP_RESET FIELD32(0x00000002) 23433aca94dSKalle Valo #define MAC_CSR1_HOST_READY FIELD32(0x00000004) 23533aca94dSKalle Valo 23633aca94dSKalle Valo /* 23733aca94dSKalle Valo * MAC_CSR2: STA MAC register 0. 23833aca94dSKalle Valo */ 23933aca94dSKalle Valo #define MAC_CSR2 0x3008 24033aca94dSKalle Valo #define MAC_CSR2_BYTE0 FIELD32(0x000000ff) 24133aca94dSKalle Valo #define MAC_CSR2_BYTE1 FIELD32(0x0000ff00) 24233aca94dSKalle Valo #define MAC_CSR2_BYTE2 FIELD32(0x00ff0000) 24333aca94dSKalle Valo #define MAC_CSR2_BYTE3 FIELD32(0xff000000) 24433aca94dSKalle Valo 24533aca94dSKalle Valo /* 24633aca94dSKalle Valo * MAC_CSR3: STA MAC register 1. 24733aca94dSKalle Valo * UNICAST_TO_ME_MASK: 24833aca94dSKalle Valo * Used to mask off bits from byte 5 of the MAC address 24933aca94dSKalle Valo * to determine the UNICAST_TO_ME bit for RX frames. 25033aca94dSKalle Valo * The full mask is complemented by BSS_ID_MASK: 25133aca94dSKalle Valo * MASK = BSS_ID_MASK & UNICAST_TO_ME_MASK 25233aca94dSKalle Valo */ 25333aca94dSKalle Valo #define MAC_CSR3 0x300c 25433aca94dSKalle Valo #define MAC_CSR3_BYTE4 FIELD32(0x000000ff) 25533aca94dSKalle Valo #define MAC_CSR3_BYTE5 FIELD32(0x0000ff00) 25633aca94dSKalle Valo #define MAC_CSR3_UNICAST_TO_ME_MASK FIELD32(0x00ff0000) 25733aca94dSKalle Valo 25833aca94dSKalle Valo /* 25933aca94dSKalle Valo * MAC_CSR4: BSSID register 0. 26033aca94dSKalle Valo */ 26133aca94dSKalle Valo #define MAC_CSR4 0x3010 26233aca94dSKalle Valo #define MAC_CSR4_BYTE0 FIELD32(0x000000ff) 26333aca94dSKalle Valo #define MAC_CSR4_BYTE1 FIELD32(0x0000ff00) 26433aca94dSKalle Valo #define MAC_CSR4_BYTE2 FIELD32(0x00ff0000) 26533aca94dSKalle Valo #define MAC_CSR4_BYTE3 FIELD32(0xff000000) 26633aca94dSKalle Valo 26733aca94dSKalle Valo /* 26833aca94dSKalle Valo * MAC_CSR5: BSSID register 1. 26933aca94dSKalle Valo * BSS_ID_MASK: 27033aca94dSKalle Valo * This mask is used to mask off bits 0 and 1 of byte 5 of the 27133aca94dSKalle Valo * BSSID. This will make sure that those bits will be ignored 27233aca94dSKalle Valo * when determining the MY_BSS of RX frames. 27333aca94dSKalle Valo * 0: 1-BSSID mode (BSS index = 0) 27433aca94dSKalle Valo * 1: 2-BSSID mode (BSS index: Byte5, bit 0) 27533aca94dSKalle Valo * 2: 2-BSSID mode (BSS index: byte5, bit 1) 27633aca94dSKalle Valo * 3: 4-BSSID mode (BSS index: byte5, bit 0 - 1) 27733aca94dSKalle Valo */ 27833aca94dSKalle Valo #define MAC_CSR5 0x3014 27933aca94dSKalle Valo #define MAC_CSR5_BYTE4 FIELD32(0x000000ff) 28033aca94dSKalle Valo #define MAC_CSR5_BYTE5 FIELD32(0x0000ff00) 28133aca94dSKalle Valo #define MAC_CSR5_BSS_ID_MASK FIELD32(0x00ff0000) 28233aca94dSKalle Valo 28333aca94dSKalle Valo /* 28433aca94dSKalle Valo * MAC_CSR6: Maximum frame length register. 28533aca94dSKalle Valo */ 28633aca94dSKalle Valo #define MAC_CSR6 0x3018 28733aca94dSKalle Valo #define MAC_CSR6_MAX_FRAME_UNIT FIELD32(0x00000fff) 28833aca94dSKalle Valo 28933aca94dSKalle Valo /* 29033aca94dSKalle Valo * MAC_CSR7: Reserved 29133aca94dSKalle Valo */ 29233aca94dSKalle Valo #define MAC_CSR7 0x301c 29333aca94dSKalle Valo 29433aca94dSKalle Valo /* 29533aca94dSKalle Valo * MAC_CSR8: SIFS/EIFS register. 29633aca94dSKalle Valo * All units are in US. 29733aca94dSKalle Valo */ 29833aca94dSKalle Valo #define MAC_CSR8 0x3020 29933aca94dSKalle Valo #define MAC_CSR8_SIFS FIELD32(0x000000ff) 30033aca94dSKalle Valo #define MAC_CSR8_SIFS_AFTER_RX_OFDM FIELD32(0x0000ff00) 30133aca94dSKalle Valo #define MAC_CSR8_EIFS FIELD32(0xffff0000) 30233aca94dSKalle Valo 30333aca94dSKalle Valo /* 30433aca94dSKalle Valo * MAC_CSR9: Back-Off control register. 30533aca94dSKalle Valo * SLOT_TIME: Slot time, default is 20us for 802.11BG. 30633aca94dSKalle Valo * CWMIN: Bit for Cwmin. default Cwmin is 31 (2^5 - 1). 30733aca94dSKalle Valo * CWMAX: Bit for Cwmax, default Cwmax is 1023 (2^10 - 1). 30833aca94dSKalle Valo * CW_SELECT: 1: CWmin/Cwmax select from register, 0:select from TxD. 30933aca94dSKalle Valo */ 31033aca94dSKalle Valo #define MAC_CSR9 0x3024 31133aca94dSKalle Valo #define MAC_CSR9_SLOT_TIME FIELD32(0x000000ff) 31233aca94dSKalle Valo #define MAC_CSR9_CWMIN FIELD32(0x00000f00) 31333aca94dSKalle Valo #define MAC_CSR9_CWMAX FIELD32(0x0000f000) 31433aca94dSKalle Valo #define MAC_CSR9_CW_SELECT FIELD32(0x00010000) 31533aca94dSKalle Valo 31633aca94dSKalle Valo /* 31733aca94dSKalle Valo * MAC_CSR10: Power state configuration. 31833aca94dSKalle Valo */ 31933aca94dSKalle Valo #define MAC_CSR10 0x3028 32033aca94dSKalle Valo 32133aca94dSKalle Valo /* 32233aca94dSKalle Valo * MAC_CSR11: Power saving transition time register. 32333aca94dSKalle Valo * DELAY_AFTER_TBCN: Delay after Tbcn expired in units of TU. 32433aca94dSKalle Valo * TBCN_BEFORE_WAKEUP: Number of beacon before wakeup. 32533aca94dSKalle Valo * WAKEUP_LATENCY: In unit of TU. 32633aca94dSKalle Valo */ 32733aca94dSKalle Valo #define MAC_CSR11 0x302c 32833aca94dSKalle Valo #define MAC_CSR11_DELAY_AFTER_TBCN FIELD32(0x000000ff) 32933aca94dSKalle Valo #define MAC_CSR11_TBCN_BEFORE_WAKEUP FIELD32(0x00007f00) 33033aca94dSKalle Valo #define MAC_CSR11_AUTOWAKE FIELD32(0x00008000) 33133aca94dSKalle Valo #define MAC_CSR11_WAKEUP_LATENCY FIELD32(0x000f0000) 33233aca94dSKalle Valo 33333aca94dSKalle Valo /* 33433aca94dSKalle Valo * MAC_CSR12: Manual power control / status register (merge CSR20 & PWRCSR1). 33533aca94dSKalle Valo * CURRENT_STATE: 0:sleep, 1:awake. 33633aca94dSKalle Valo * FORCE_WAKEUP: This has higher priority than PUT_TO_SLEEP. 33733aca94dSKalle Valo * BBP_CURRENT_STATE: 0: BBP sleep, 1: BBP awake. 33833aca94dSKalle Valo */ 33933aca94dSKalle Valo #define MAC_CSR12 0x3030 34033aca94dSKalle Valo #define MAC_CSR12_CURRENT_STATE FIELD32(0x00000001) 34133aca94dSKalle Valo #define MAC_CSR12_PUT_TO_SLEEP FIELD32(0x00000002) 34233aca94dSKalle Valo #define MAC_CSR12_FORCE_WAKEUP FIELD32(0x00000004) 34333aca94dSKalle Valo #define MAC_CSR12_BBP_CURRENT_STATE FIELD32(0x00000008) 34433aca94dSKalle Valo 34533aca94dSKalle Valo /* 34633aca94dSKalle Valo * MAC_CSR13: GPIO. 34733aca94dSKalle Valo * MAC_CSR13_VALx: GPIO value 34833aca94dSKalle Valo * MAC_CSR13_DIRx: GPIO direction: 0 = output; 1 = input 34933aca94dSKalle Valo */ 35033aca94dSKalle Valo #define MAC_CSR13 0x3034 35133aca94dSKalle Valo #define MAC_CSR13_VAL0 FIELD32(0x00000001) 35233aca94dSKalle Valo #define MAC_CSR13_VAL1 FIELD32(0x00000002) 35333aca94dSKalle Valo #define MAC_CSR13_VAL2 FIELD32(0x00000004) 35433aca94dSKalle Valo #define MAC_CSR13_VAL3 FIELD32(0x00000008) 35533aca94dSKalle Valo #define MAC_CSR13_VAL4 FIELD32(0x00000010) 35633aca94dSKalle Valo #define MAC_CSR13_VAL5 FIELD32(0x00000020) 35733aca94dSKalle Valo #define MAC_CSR13_DIR0 FIELD32(0x00000100) 35833aca94dSKalle Valo #define MAC_CSR13_DIR1 FIELD32(0x00000200) 35933aca94dSKalle Valo #define MAC_CSR13_DIR2 FIELD32(0x00000400) 36033aca94dSKalle Valo #define MAC_CSR13_DIR3 FIELD32(0x00000800) 36133aca94dSKalle Valo #define MAC_CSR13_DIR4 FIELD32(0x00001000) 36233aca94dSKalle Valo #define MAC_CSR13_DIR5 FIELD32(0x00002000) 36333aca94dSKalle Valo 36433aca94dSKalle Valo /* 36533aca94dSKalle Valo * MAC_CSR14: LED control register. 36633aca94dSKalle Valo * ON_PERIOD: On period, default 70ms. 36733aca94dSKalle Valo * OFF_PERIOD: Off period, default 30ms. 36833aca94dSKalle Valo * HW_LED: HW TX activity, 1: normal OFF, 0: normal ON. 36933aca94dSKalle Valo * SW_LED: s/w LED, 1: ON, 0: OFF. 37033aca94dSKalle Valo * HW_LED_POLARITY: 0: active low, 1: active high. 37133aca94dSKalle Valo */ 37233aca94dSKalle Valo #define MAC_CSR14 0x3038 37333aca94dSKalle Valo #define MAC_CSR14_ON_PERIOD FIELD32(0x000000ff) 37433aca94dSKalle Valo #define MAC_CSR14_OFF_PERIOD FIELD32(0x0000ff00) 37533aca94dSKalle Valo #define MAC_CSR14_HW_LED FIELD32(0x00010000) 37633aca94dSKalle Valo #define MAC_CSR14_SW_LED FIELD32(0x00020000) 37733aca94dSKalle Valo #define MAC_CSR14_HW_LED_POLARITY FIELD32(0x00040000) 37833aca94dSKalle Valo #define MAC_CSR14_SW_LED2 FIELD32(0x00080000) 37933aca94dSKalle Valo 38033aca94dSKalle Valo /* 38133aca94dSKalle Valo * MAC_CSR15: NAV control. 38233aca94dSKalle Valo */ 38333aca94dSKalle Valo #define MAC_CSR15 0x303c 38433aca94dSKalle Valo 38533aca94dSKalle Valo /* 38633aca94dSKalle Valo * TXRX control registers. 38733aca94dSKalle Valo * Some values are set in TU, whereas 1 TU == 1024 us. 38833aca94dSKalle Valo */ 38933aca94dSKalle Valo 39033aca94dSKalle Valo /* 39133aca94dSKalle Valo * TXRX_CSR0: TX/RX configuration register. 39233aca94dSKalle Valo * TSF_OFFSET: Default is 24. 39333aca94dSKalle Valo * AUTO_TX_SEQ: 1: ASIC auto replace sequence nr in outgoing frame. 39433aca94dSKalle Valo * DISABLE_RX: Disable Rx engine. 39533aca94dSKalle Valo * DROP_CRC: Drop CRC error. 39633aca94dSKalle Valo * DROP_PHYSICAL: Drop physical error. 39733aca94dSKalle Valo * DROP_CONTROL: Drop control frame. 39833aca94dSKalle Valo * DROP_NOT_TO_ME: Drop not to me unicast frame. 39933aca94dSKalle Valo * DROP_TO_DS: Drop fram ToDs bit is true. 40033aca94dSKalle Valo * DROP_VERSION_ERROR: Drop version error frame. 40133aca94dSKalle Valo * DROP_MULTICAST: Drop multicast frames. 40233aca94dSKalle Valo * DROP_BORADCAST: Drop broadcast frames. 40333aca94dSKalle Valo * DROP_ACK_CTS: Drop received ACK and CTS. 40433aca94dSKalle Valo */ 40533aca94dSKalle Valo #define TXRX_CSR0 0x3040 40633aca94dSKalle Valo #define TXRX_CSR0_RX_ACK_TIMEOUT FIELD32(0x000001ff) 40733aca94dSKalle Valo #define TXRX_CSR0_TSF_OFFSET FIELD32(0x00007e00) 40833aca94dSKalle Valo #define TXRX_CSR0_AUTO_TX_SEQ FIELD32(0x00008000) 40933aca94dSKalle Valo #define TXRX_CSR0_DISABLE_RX FIELD32(0x00010000) 41033aca94dSKalle Valo #define TXRX_CSR0_DROP_CRC FIELD32(0x00020000) 41133aca94dSKalle Valo #define TXRX_CSR0_DROP_PHYSICAL FIELD32(0x00040000) 41233aca94dSKalle Valo #define TXRX_CSR0_DROP_CONTROL FIELD32(0x00080000) 41333aca94dSKalle Valo #define TXRX_CSR0_DROP_NOT_TO_ME FIELD32(0x00100000) 41433aca94dSKalle Valo #define TXRX_CSR0_DROP_TO_DS FIELD32(0x00200000) 41533aca94dSKalle Valo #define TXRX_CSR0_DROP_VERSION_ERROR FIELD32(0x00400000) 41633aca94dSKalle Valo #define TXRX_CSR0_DROP_MULTICAST FIELD32(0x00800000) 41733aca94dSKalle Valo #define TXRX_CSR0_DROP_BROADCAST FIELD32(0x01000000) 41833aca94dSKalle Valo #define TXRX_CSR0_DROP_ACK_CTS FIELD32(0x02000000) 41933aca94dSKalle Valo #define TXRX_CSR0_TX_WITHOUT_WAITING FIELD32(0x04000000) 42033aca94dSKalle Valo 42133aca94dSKalle Valo /* 42233aca94dSKalle Valo * TXRX_CSR1 42333aca94dSKalle Valo */ 42433aca94dSKalle Valo #define TXRX_CSR1 0x3044 42533aca94dSKalle Valo #define TXRX_CSR1_BBP_ID0 FIELD32(0x0000007f) 42633aca94dSKalle Valo #define TXRX_CSR1_BBP_ID0_VALID FIELD32(0x00000080) 42733aca94dSKalle Valo #define TXRX_CSR1_BBP_ID1 FIELD32(0x00007f00) 42833aca94dSKalle Valo #define TXRX_CSR1_BBP_ID1_VALID FIELD32(0x00008000) 42933aca94dSKalle Valo #define TXRX_CSR1_BBP_ID2 FIELD32(0x007f0000) 43033aca94dSKalle Valo #define TXRX_CSR1_BBP_ID2_VALID FIELD32(0x00800000) 43133aca94dSKalle Valo #define TXRX_CSR1_BBP_ID3 FIELD32(0x7f000000) 43233aca94dSKalle Valo #define TXRX_CSR1_BBP_ID3_VALID FIELD32(0x80000000) 43333aca94dSKalle Valo 43433aca94dSKalle Valo /* 43533aca94dSKalle Valo * TXRX_CSR2 43633aca94dSKalle Valo */ 43733aca94dSKalle Valo #define TXRX_CSR2 0x3048 43833aca94dSKalle Valo #define TXRX_CSR2_BBP_ID0 FIELD32(0x0000007f) 43933aca94dSKalle Valo #define TXRX_CSR2_BBP_ID0_VALID FIELD32(0x00000080) 44033aca94dSKalle Valo #define TXRX_CSR2_BBP_ID1 FIELD32(0x00007f00) 44133aca94dSKalle Valo #define TXRX_CSR2_BBP_ID1_VALID FIELD32(0x00008000) 44233aca94dSKalle Valo #define TXRX_CSR2_BBP_ID2 FIELD32(0x007f0000) 44333aca94dSKalle Valo #define TXRX_CSR2_BBP_ID2_VALID FIELD32(0x00800000) 44433aca94dSKalle Valo #define TXRX_CSR2_BBP_ID3 FIELD32(0x7f000000) 44533aca94dSKalle Valo #define TXRX_CSR2_BBP_ID3_VALID FIELD32(0x80000000) 44633aca94dSKalle Valo 44733aca94dSKalle Valo /* 44833aca94dSKalle Valo * TXRX_CSR3 44933aca94dSKalle Valo */ 45033aca94dSKalle Valo #define TXRX_CSR3 0x304c 45133aca94dSKalle Valo #define TXRX_CSR3_BBP_ID0 FIELD32(0x0000007f) 45233aca94dSKalle Valo #define TXRX_CSR3_BBP_ID0_VALID FIELD32(0x00000080) 45333aca94dSKalle Valo #define TXRX_CSR3_BBP_ID1 FIELD32(0x00007f00) 45433aca94dSKalle Valo #define TXRX_CSR3_BBP_ID1_VALID FIELD32(0x00008000) 45533aca94dSKalle Valo #define TXRX_CSR3_BBP_ID2 FIELD32(0x007f0000) 45633aca94dSKalle Valo #define TXRX_CSR3_BBP_ID2_VALID FIELD32(0x00800000) 45733aca94dSKalle Valo #define TXRX_CSR3_BBP_ID3 FIELD32(0x7f000000) 45833aca94dSKalle Valo #define TXRX_CSR3_BBP_ID3_VALID FIELD32(0x80000000) 45933aca94dSKalle Valo 46033aca94dSKalle Valo /* 46133aca94dSKalle Valo * TXRX_CSR4: Auto-Responder/Tx-retry register. 46233aca94dSKalle Valo * AUTORESPOND_PREAMBLE: 0:long, 1:short preamble. 46333aca94dSKalle Valo * OFDM_TX_RATE_DOWN: 1:enable. 46433aca94dSKalle Valo * OFDM_TX_RATE_STEP: 0:1-step, 1: 2-step, 2:3-step, 3:4-step. 46533aca94dSKalle Valo * OFDM_TX_FALLBACK_CCK: 0: Fallback to OFDM 6M only, 1: Fallback to CCK 1M,2M. 46633aca94dSKalle Valo */ 46733aca94dSKalle Valo #define TXRX_CSR4 0x3050 46833aca94dSKalle Valo #define TXRX_CSR4_TX_ACK_TIMEOUT FIELD32(0x000000ff) 46933aca94dSKalle Valo #define TXRX_CSR4_CNTL_ACK_POLICY FIELD32(0x00000700) 47033aca94dSKalle Valo #define TXRX_CSR4_ACK_CTS_PSM FIELD32(0x00010000) 47133aca94dSKalle Valo #define TXRX_CSR4_AUTORESPOND_ENABLE FIELD32(0x00020000) 47233aca94dSKalle Valo #define TXRX_CSR4_AUTORESPOND_PREAMBLE FIELD32(0x00040000) 47333aca94dSKalle Valo #define TXRX_CSR4_OFDM_TX_RATE_DOWN FIELD32(0x00080000) 47433aca94dSKalle Valo #define TXRX_CSR4_OFDM_TX_RATE_STEP FIELD32(0x00300000) 47533aca94dSKalle Valo #define TXRX_CSR4_OFDM_TX_FALLBACK_CCK FIELD32(0x00400000) 47633aca94dSKalle Valo #define TXRX_CSR4_LONG_RETRY_LIMIT FIELD32(0x0f000000) 47733aca94dSKalle Valo #define TXRX_CSR4_SHORT_RETRY_LIMIT FIELD32(0xf0000000) 47833aca94dSKalle Valo 47933aca94dSKalle Valo /* 48033aca94dSKalle Valo * TXRX_CSR5 48133aca94dSKalle Valo */ 48233aca94dSKalle Valo #define TXRX_CSR5 0x3054 48333aca94dSKalle Valo 48433aca94dSKalle Valo /* 48533aca94dSKalle Valo * TXRX_CSR6: ACK/CTS payload consumed time 48633aca94dSKalle Valo */ 48733aca94dSKalle Valo #define TXRX_CSR6 0x3058 48833aca94dSKalle Valo 48933aca94dSKalle Valo /* 49033aca94dSKalle Valo * TXRX_CSR7: OFDM ACK/CTS payload consumed time for 6/9/12/18 mbps. 49133aca94dSKalle Valo */ 49233aca94dSKalle Valo #define TXRX_CSR7 0x305c 49333aca94dSKalle Valo #define TXRX_CSR7_ACK_CTS_6MBS FIELD32(0x000000ff) 49433aca94dSKalle Valo #define TXRX_CSR7_ACK_CTS_9MBS FIELD32(0x0000ff00) 49533aca94dSKalle Valo #define TXRX_CSR7_ACK_CTS_12MBS FIELD32(0x00ff0000) 49633aca94dSKalle Valo #define TXRX_CSR7_ACK_CTS_18MBS FIELD32(0xff000000) 49733aca94dSKalle Valo 49833aca94dSKalle Valo /* 49933aca94dSKalle Valo * TXRX_CSR8: OFDM ACK/CTS payload consumed time for 24/36/48/54 mbps. 50033aca94dSKalle Valo */ 50133aca94dSKalle Valo #define TXRX_CSR8 0x3060 50233aca94dSKalle Valo #define TXRX_CSR8_ACK_CTS_24MBS FIELD32(0x000000ff) 50333aca94dSKalle Valo #define TXRX_CSR8_ACK_CTS_36MBS FIELD32(0x0000ff00) 50433aca94dSKalle Valo #define TXRX_CSR8_ACK_CTS_48MBS FIELD32(0x00ff0000) 50533aca94dSKalle Valo #define TXRX_CSR8_ACK_CTS_54MBS FIELD32(0xff000000) 50633aca94dSKalle Valo 50733aca94dSKalle Valo /* 50833aca94dSKalle Valo * TXRX_CSR9: Synchronization control register. 50933aca94dSKalle Valo * BEACON_INTERVAL: In unit of 1/16 TU. 51033aca94dSKalle Valo * TSF_TICKING: Enable TSF auto counting. 51133aca94dSKalle Valo * TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. 51233aca94dSKalle Valo * BEACON_GEN: Enable beacon generator. 51333aca94dSKalle Valo */ 51433aca94dSKalle Valo #define TXRX_CSR9 0x3064 51533aca94dSKalle Valo #define TXRX_CSR9_BEACON_INTERVAL FIELD32(0x0000ffff) 51633aca94dSKalle Valo #define TXRX_CSR9_TSF_TICKING FIELD32(0x00010000) 51733aca94dSKalle Valo #define TXRX_CSR9_TSF_SYNC FIELD32(0x00060000) 51833aca94dSKalle Valo #define TXRX_CSR9_TBTT_ENABLE FIELD32(0x00080000) 51933aca94dSKalle Valo #define TXRX_CSR9_BEACON_GEN FIELD32(0x00100000) 52033aca94dSKalle Valo #define TXRX_CSR9_TIMESTAMP_COMPENSATE FIELD32(0xff000000) 52133aca94dSKalle Valo 52233aca94dSKalle Valo /* 52333aca94dSKalle Valo * TXRX_CSR10: BEACON alignment. 52433aca94dSKalle Valo */ 52533aca94dSKalle Valo #define TXRX_CSR10 0x3068 52633aca94dSKalle Valo 52733aca94dSKalle Valo /* 52833aca94dSKalle Valo * TXRX_CSR11: AES mask. 52933aca94dSKalle Valo */ 53033aca94dSKalle Valo #define TXRX_CSR11 0x306c 53133aca94dSKalle Valo 53233aca94dSKalle Valo /* 53333aca94dSKalle Valo * TXRX_CSR12: TSF low 32. 53433aca94dSKalle Valo */ 53533aca94dSKalle Valo #define TXRX_CSR12 0x3070 53633aca94dSKalle Valo #define TXRX_CSR12_LOW_TSFTIMER FIELD32(0xffffffff) 53733aca94dSKalle Valo 53833aca94dSKalle Valo /* 53933aca94dSKalle Valo * TXRX_CSR13: TSF high 32. 54033aca94dSKalle Valo */ 54133aca94dSKalle Valo #define TXRX_CSR13 0x3074 54233aca94dSKalle Valo #define TXRX_CSR13_HIGH_TSFTIMER FIELD32(0xffffffff) 54333aca94dSKalle Valo 54433aca94dSKalle Valo /* 54533aca94dSKalle Valo * TXRX_CSR14: TBTT timer. 54633aca94dSKalle Valo */ 54733aca94dSKalle Valo #define TXRX_CSR14 0x3078 54833aca94dSKalle Valo 54933aca94dSKalle Valo /* 55033aca94dSKalle Valo * TXRX_CSR15: TKIP MIC priority byte "AND" mask. 55133aca94dSKalle Valo */ 55233aca94dSKalle Valo #define TXRX_CSR15 0x307c 55333aca94dSKalle Valo 55433aca94dSKalle Valo /* 55533aca94dSKalle Valo * PHY control registers. 55633aca94dSKalle Valo * Some values are set in TU, whereas 1 TU == 1024 us. 55733aca94dSKalle Valo */ 55833aca94dSKalle Valo 55933aca94dSKalle Valo /* 56033aca94dSKalle Valo * PHY_CSR0: RF/PS control. 56133aca94dSKalle Valo */ 56233aca94dSKalle Valo #define PHY_CSR0 0x3080 56333aca94dSKalle Valo #define PHY_CSR0_PA_PE_BG FIELD32(0x00010000) 56433aca94dSKalle Valo #define PHY_CSR0_PA_PE_A FIELD32(0x00020000) 56533aca94dSKalle Valo 56633aca94dSKalle Valo /* 56733aca94dSKalle Valo * PHY_CSR1 56833aca94dSKalle Valo */ 56933aca94dSKalle Valo #define PHY_CSR1 0x3084 57033aca94dSKalle Valo 57133aca94dSKalle Valo /* 57233aca94dSKalle Valo * PHY_CSR2: Pre-TX BBP control. 57333aca94dSKalle Valo */ 57433aca94dSKalle Valo #define PHY_CSR2 0x3088 57533aca94dSKalle Valo 57633aca94dSKalle Valo /* 57733aca94dSKalle Valo * PHY_CSR3: BBP serial control register. 57833aca94dSKalle Valo * VALUE: Register value to program into BBP. 57933aca94dSKalle Valo * REG_NUM: Selected BBP register. 58033aca94dSKalle Valo * READ_CONTROL: 0: Write BBP, 1: Read BBP. 58133aca94dSKalle Valo * BUSY: 1: ASIC is busy execute BBP programming. 58233aca94dSKalle Valo */ 58333aca94dSKalle Valo #define PHY_CSR3 0x308c 58433aca94dSKalle Valo #define PHY_CSR3_VALUE FIELD32(0x000000ff) 58533aca94dSKalle Valo #define PHY_CSR3_REGNUM FIELD32(0x00007f00) 58633aca94dSKalle Valo #define PHY_CSR3_READ_CONTROL FIELD32(0x00008000) 58733aca94dSKalle Valo #define PHY_CSR3_BUSY FIELD32(0x00010000) 58833aca94dSKalle Valo 58933aca94dSKalle Valo /* 59033aca94dSKalle Valo * PHY_CSR4: RF serial control register 59133aca94dSKalle Valo * VALUE: Register value (include register id) serial out to RF/IF chip. 59233aca94dSKalle Valo * NUMBER_OF_BITS: Number of bits used in RFRegValue (I:20, RFMD:22). 59333aca94dSKalle Valo * IF_SELECT: 1: select IF to program, 0: select RF to program. 59433aca94dSKalle Valo * PLL_LD: RF PLL_LD status. 59533aca94dSKalle Valo * BUSY: 1: ASIC is busy execute RF programming. 59633aca94dSKalle Valo */ 59733aca94dSKalle Valo #define PHY_CSR4 0x3090 59833aca94dSKalle Valo #define PHY_CSR4_VALUE FIELD32(0x00ffffff) 59933aca94dSKalle Valo #define PHY_CSR4_NUMBER_OF_BITS FIELD32(0x1f000000) 60033aca94dSKalle Valo #define PHY_CSR4_IF_SELECT FIELD32(0x20000000) 60133aca94dSKalle Valo #define PHY_CSR4_PLL_LD FIELD32(0x40000000) 60233aca94dSKalle Valo #define PHY_CSR4_BUSY FIELD32(0x80000000) 60333aca94dSKalle Valo 60433aca94dSKalle Valo /* 60533aca94dSKalle Valo * PHY_CSR5: RX to TX signal switch timing control. 60633aca94dSKalle Valo */ 60733aca94dSKalle Valo #define PHY_CSR5 0x3094 60833aca94dSKalle Valo #define PHY_CSR5_IQ_FLIP FIELD32(0x00000004) 60933aca94dSKalle Valo 61033aca94dSKalle Valo /* 61133aca94dSKalle Valo * PHY_CSR6: TX to RX signal timing control. 61233aca94dSKalle Valo */ 61333aca94dSKalle Valo #define PHY_CSR6 0x3098 61433aca94dSKalle Valo #define PHY_CSR6_IQ_FLIP FIELD32(0x00000004) 61533aca94dSKalle Valo 61633aca94dSKalle Valo /* 61733aca94dSKalle Valo * PHY_CSR7: TX DAC switching timing control. 61833aca94dSKalle Valo */ 61933aca94dSKalle Valo #define PHY_CSR7 0x309c 62033aca94dSKalle Valo 62133aca94dSKalle Valo /* 62233aca94dSKalle Valo * Security control register. 62333aca94dSKalle Valo */ 62433aca94dSKalle Valo 62533aca94dSKalle Valo /* 62633aca94dSKalle Valo * SEC_CSR0: Shared key table control. 62733aca94dSKalle Valo */ 62833aca94dSKalle Valo #define SEC_CSR0 0x30a0 62933aca94dSKalle Valo #define SEC_CSR0_BSS0_KEY0_VALID FIELD32(0x00000001) 63033aca94dSKalle Valo #define SEC_CSR0_BSS0_KEY1_VALID FIELD32(0x00000002) 63133aca94dSKalle Valo #define SEC_CSR0_BSS0_KEY2_VALID FIELD32(0x00000004) 63233aca94dSKalle Valo #define SEC_CSR0_BSS0_KEY3_VALID FIELD32(0x00000008) 63333aca94dSKalle Valo #define SEC_CSR0_BSS1_KEY0_VALID FIELD32(0x00000010) 63433aca94dSKalle Valo #define SEC_CSR0_BSS1_KEY1_VALID FIELD32(0x00000020) 63533aca94dSKalle Valo #define SEC_CSR0_BSS1_KEY2_VALID FIELD32(0x00000040) 63633aca94dSKalle Valo #define SEC_CSR0_BSS1_KEY3_VALID FIELD32(0x00000080) 63733aca94dSKalle Valo #define SEC_CSR0_BSS2_KEY0_VALID FIELD32(0x00000100) 63833aca94dSKalle Valo #define SEC_CSR0_BSS2_KEY1_VALID FIELD32(0x00000200) 63933aca94dSKalle Valo #define SEC_CSR0_BSS2_KEY2_VALID FIELD32(0x00000400) 64033aca94dSKalle Valo #define SEC_CSR0_BSS2_KEY3_VALID FIELD32(0x00000800) 64133aca94dSKalle Valo #define SEC_CSR0_BSS3_KEY0_VALID FIELD32(0x00001000) 64233aca94dSKalle Valo #define SEC_CSR0_BSS3_KEY1_VALID FIELD32(0x00002000) 64333aca94dSKalle Valo #define SEC_CSR0_BSS3_KEY2_VALID FIELD32(0x00004000) 64433aca94dSKalle Valo #define SEC_CSR0_BSS3_KEY3_VALID FIELD32(0x00008000) 64533aca94dSKalle Valo 64633aca94dSKalle Valo /* 64733aca94dSKalle Valo * SEC_CSR1: Shared key table security mode register. 64833aca94dSKalle Valo */ 64933aca94dSKalle Valo #define SEC_CSR1 0x30a4 65033aca94dSKalle Valo #define SEC_CSR1_BSS0_KEY0_CIPHER_ALG FIELD32(0x00000007) 65133aca94dSKalle Valo #define SEC_CSR1_BSS0_KEY1_CIPHER_ALG FIELD32(0x00000070) 65233aca94dSKalle Valo #define SEC_CSR1_BSS0_KEY2_CIPHER_ALG FIELD32(0x00000700) 65333aca94dSKalle Valo #define SEC_CSR1_BSS0_KEY3_CIPHER_ALG FIELD32(0x00007000) 65433aca94dSKalle Valo #define SEC_CSR1_BSS1_KEY0_CIPHER_ALG FIELD32(0x00070000) 65533aca94dSKalle Valo #define SEC_CSR1_BSS1_KEY1_CIPHER_ALG FIELD32(0x00700000) 65633aca94dSKalle Valo #define SEC_CSR1_BSS1_KEY2_CIPHER_ALG FIELD32(0x07000000) 65733aca94dSKalle Valo #define SEC_CSR1_BSS1_KEY3_CIPHER_ALG FIELD32(0x70000000) 65833aca94dSKalle Valo 65933aca94dSKalle Valo /* 66033aca94dSKalle Valo * Pairwise key table valid bitmap registers. 66133aca94dSKalle Valo * SEC_CSR2: pairwise key table valid bitmap 0. 66233aca94dSKalle Valo * SEC_CSR3: pairwise key table valid bitmap 1. 66333aca94dSKalle Valo */ 66433aca94dSKalle Valo #define SEC_CSR2 0x30a8 66533aca94dSKalle Valo #define SEC_CSR3 0x30ac 66633aca94dSKalle Valo 66733aca94dSKalle Valo /* 66833aca94dSKalle Valo * SEC_CSR4: Pairwise key table lookup control. 66933aca94dSKalle Valo */ 67033aca94dSKalle Valo #define SEC_CSR4 0x30b0 67133aca94dSKalle Valo #define SEC_CSR4_ENABLE_BSS0 FIELD32(0x00000001) 67233aca94dSKalle Valo #define SEC_CSR4_ENABLE_BSS1 FIELD32(0x00000002) 67333aca94dSKalle Valo #define SEC_CSR4_ENABLE_BSS2 FIELD32(0x00000004) 67433aca94dSKalle Valo #define SEC_CSR4_ENABLE_BSS3 FIELD32(0x00000008) 67533aca94dSKalle Valo 67633aca94dSKalle Valo /* 67733aca94dSKalle Valo * SEC_CSR5: shared key table security mode register. 67833aca94dSKalle Valo */ 67933aca94dSKalle Valo #define SEC_CSR5 0x30b4 68033aca94dSKalle Valo #define SEC_CSR5_BSS2_KEY0_CIPHER_ALG FIELD32(0x00000007) 68133aca94dSKalle Valo #define SEC_CSR5_BSS2_KEY1_CIPHER_ALG FIELD32(0x00000070) 68233aca94dSKalle Valo #define SEC_CSR5_BSS2_KEY2_CIPHER_ALG FIELD32(0x00000700) 68333aca94dSKalle Valo #define SEC_CSR5_BSS2_KEY3_CIPHER_ALG FIELD32(0x00007000) 68433aca94dSKalle Valo #define SEC_CSR5_BSS3_KEY0_CIPHER_ALG FIELD32(0x00070000) 68533aca94dSKalle Valo #define SEC_CSR5_BSS3_KEY1_CIPHER_ALG FIELD32(0x00700000) 68633aca94dSKalle Valo #define SEC_CSR5_BSS3_KEY2_CIPHER_ALG FIELD32(0x07000000) 68733aca94dSKalle Valo #define SEC_CSR5_BSS3_KEY3_CIPHER_ALG FIELD32(0x70000000) 68833aca94dSKalle Valo 68933aca94dSKalle Valo /* 69033aca94dSKalle Valo * STA control registers. 69133aca94dSKalle Valo */ 69233aca94dSKalle Valo 69333aca94dSKalle Valo /* 69433aca94dSKalle Valo * STA_CSR0: RX PLCP error count & RX FCS error count. 69533aca94dSKalle Valo */ 69633aca94dSKalle Valo #define STA_CSR0 0x30c0 69733aca94dSKalle Valo #define STA_CSR0_FCS_ERROR FIELD32(0x0000ffff) 69833aca94dSKalle Valo #define STA_CSR0_PLCP_ERROR FIELD32(0xffff0000) 69933aca94dSKalle Valo 70033aca94dSKalle Valo /* 70133aca94dSKalle Valo * STA_CSR1: RX False CCA count & RX LONG frame count. 70233aca94dSKalle Valo */ 70333aca94dSKalle Valo #define STA_CSR1 0x30c4 70433aca94dSKalle Valo #define STA_CSR1_PHYSICAL_ERROR FIELD32(0x0000ffff) 70533aca94dSKalle Valo #define STA_CSR1_FALSE_CCA_ERROR FIELD32(0xffff0000) 70633aca94dSKalle Valo 70733aca94dSKalle Valo /* 70833aca94dSKalle Valo * STA_CSR2: TX Beacon count and RX FIFO overflow count. 70933aca94dSKalle Valo */ 71033aca94dSKalle Valo #define STA_CSR2 0x30c8 71133aca94dSKalle Valo #define STA_CSR2_RX_FIFO_OVERFLOW_COUNT FIELD32(0x0000ffff) 71233aca94dSKalle Valo #define STA_CSR2_RX_OVERFLOW_COUNT FIELD32(0xffff0000) 71333aca94dSKalle Valo 71433aca94dSKalle Valo /* 71533aca94dSKalle Valo * STA_CSR3: TX Beacon count. 71633aca94dSKalle Valo */ 71733aca94dSKalle Valo #define STA_CSR3 0x30cc 71833aca94dSKalle Valo #define STA_CSR3_TX_BEACON_COUNT FIELD32(0x0000ffff) 71933aca94dSKalle Valo 72033aca94dSKalle Valo /* 72133aca94dSKalle Valo * STA_CSR4: TX Result status register. 72233aca94dSKalle Valo * VALID: 1:This register contains a valid TX result. 72333aca94dSKalle Valo */ 72433aca94dSKalle Valo #define STA_CSR4 0x30d0 72533aca94dSKalle Valo #define STA_CSR4_VALID FIELD32(0x00000001) 72633aca94dSKalle Valo #define STA_CSR4_TX_RESULT FIELD32(0x0000000e) 72733aca94dSKalle Valo #define STA_CSR4_RETRY_COUNT FIELD32(0x000000f0) 72833aca94dSKalle Valo #define STA_CSR4_PID_SUBTYPE FIELD32(0x00001f00) 72933aca94dSKalle Valo #define STA_CSR4_PID_TYPE FIELD32(0x0000e000) 73033aca94dSKalle Valo #define STA_CSR4_TXRATE FIELD32(0x000f0000) 73133aca94dSKalle Valo 73233aca94dSKalle Valo /* 73333aca94dSKalle Valo * QOS control registers. 73433aca94dSKalle Valo */ 73533aca94dSKalle Valo 73633aca94dSKalle Valo /* 73733aca94dSKalle Valo * QOS_CSR0: TXOP holder MAC address register. 73833aca94dSKalle Valo */ 73933aca94dSKalle Valo #define QOS_CSR0 0x30e0 74033aca94dSKalle Valo #define QOS_CSR0_BYTE0 FIELD32(0x000000ff) 74133aca94dSKalle Valo #define QOS_CSR0_BYTE1 FIELD32(0x0000ff00) 74233aca94dSKalle Valo #define QOS_CSR0_BYTE2 FIELD32(0x00ff0000) 74333aca94dSKalle Valo #define QOS_CSR0_BYTE3 FIELD32(0xff000000) 74433aca94dSKalle Valo 74533aca94dSKalle Valo /* 74633aca94dSKalle Valo * QOS_CSR1: TXOP holder MAC address register. 74733aca94dSKalle Valo */ 74833aca94dSKalle Valo #define QOS_CSR1 0x30e4 74933aca94dSKalle Valo #define QOS_CSR1_BYTE4 FIELD32(0x000000ff) 75033aca94dSKalle Valo #define QOS_CSR1_BYTE5 FIELD32(0x0000ff00) 75133aca94dSKalle Valo 75233aca94dSKalle Valo /* 75333aca94dSKalle Valo * QOS_CSR2: TXOP holder timeout register. 75433aca94dSKalle Valo */ 75533aca94dSKalle Valo #define QOS_CSR2 0x30e8 75633aca94dSKalle Valo 75733aca94dSKalle Valo /* 75833aca94dSKalle Valo * RX QOS-CFPOLL MAC address register. 75933aca94dSKalle Valo * QOS_CSR3: RX QOS-CFPOLL MAC address 0. 76033aca94dSKalle Valo * QOS_CSR4: RX QOS-CFPOLL MAC address 1. 76133aca94dSKalle Valo */ 76233aca94dSKalle Valo #define QOS_CSR3 0x30ec 76333aca94dSKalle Valo #define QOS_CSR4 0x30f0 76433aca94dSKalle Valo 76533aca94dSKalle Valo /* 76633aca94dSKalle Valo * QOS_CSR5: "QosControl" field of the RX QOS-CFPOLL. 76733aca94dSKalle Valo */ 76833aca94dSKalle Valo #define QOS_CSR5 0x30f4 76933aca94dSKalle Valo 77033aca94dSKalle Valo /* 77133aca94dSKalle Valo * Host DMA registers. 77233aca94dSKalle Valo */ 77333aca94dSKalle Valo 77433aca94dSKalle Valo /* 77533aca94dSKalle Valo * AC0_BASE_CSR: AC_VO base address. 77633aca94dSKalle Valo */ 77733aca94dSKalle Valo #define AC0_BASE_CSR 0x3400 77833aca94dSKalle Valo #define AC0_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 77933aca94dSKalle Valo 78033aca94dSKalle Valo /* 78133aca94dSKalle Valo * AC1_BASE_CSR: AC_VI base address. 78233aca94dSKalle Valo */ 78333aca94dSKalle Valo #define AC1_BASE_CSR 0x3404 78433aca94dSKalle Valo #define AC1_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 78533aca94dSKalle Valo 78633aca94dSKalle Valo /* 78733aca94dSKalle Valo * AC2_BASE_CSR: AC_BE base address. 78833aca94dSKalle Valo */ 78933aca94dSKalle Valo #define AC2_BASE_CSR 0x3408 79033aca94dSKalle Valo #define AC2_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 79133aca94dSKalle Valo 79233aca94dSKalle Valo /* 79333aca94dSKalle Valo * AC3_BASE_CSR: AC_BK base address. 79433aca94dSKalle Valo */ 79533aca94dSKalle Valo #define AC3_BASE_CSR 0x340c 79633aca94dSKalle Valo #define AC3_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 79733aca94dSKalle Valo 79833aca94dSKalle Valo /* 79933aca94dSKalle Valo * MGMT_BASE_CSR: MGMT ring base address. 80033aca94dSKalle Valo */ 80133aca94dSKalle Valo #define MGMT_BASE_CSR 0x3410 80233aca94dSKalle Valo #define MGMT_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 80333aca94dSKalle Valo 80433aca94dSKalle Valo /* 80533aca94dSKalle Valo * TX_RING_CSR0: TX Ring size for AC_VO, AC_VI, AC_BE, AC_BK. 80633aca94dSKalle Valo */ 80733aca94dSKalle Valo #define TX_RING_CSR0 0x3418 80833aca94dSKalle Valo #define TX_RING_CSR0_AC0_RING_SIZE FIELD32(0x000000ff) 80933aca94dSKalle Valo #define TX_RING_CSR0_AC1_RING_SIZE FIELD32(0x0000ff00) 81033aca94dSKalle Valo #define TX_RING_CSR0_AC2_RING_SIZE FIELD32(0x00ff0000) 81133aca94dSKalle Valo #define TX_RING_CSR0_AC3_RING_SIZE FIELD32(0xff000000) 81233aca94dSKalle Valo 81333aca94dSKalle Valo /* 81433aca94dSKalle Valo * TX_RING_CSR1: TX Ring size for MGMT Ring, HCCA Ring 81533aca94dSKalle Valo * TXD_SIZE: In unit of 32-bit. 81633aca94dSKalle Valo */ 81733aca94dSKalle Valo #define TX_RING_CSR1 0x341c 81833aca94dSKalle Valo #define TX_RING_CSR1_MGMT_RING_SIZE FIELD32(0x000000ff) 81933aca94dSKalle Valo #define TX_RING_CSR1_HCCA_RING_SIZE FIELD32(0x0000ff00) 82033aca94dSKalle Valo #define TX_RING_CSR1_TXD_SIZE FIELD32(0x003f0000) 82133aca94dSKalle Valo 82233aca94dSKalle Valo /* 82333aca94dSKalle Valo * AIFSN_CSR: AIFSN for each EDCA AC. 82433aca94dSKalle Valo * AIFSN0: For AC_VO. 82533aca94dSKalle Valo * AIFSN1: For AC_VI. 82633aca94dSKalle Valo * AIFSN2: For AC_BE. 82733aca94dSKalle Valo * AIFSN3: For AC_BK. 82833aca94dSKalle Valo */ 82933aca94dSKalle Valo #define AIFSN_CSR 0x3420 83033aca94dSKalle Valo #define AIFSN_CSR_AIFSN0 FIELD32(0x0000000f) 83133aca94dSKalle Valo #define AIFSN_CSR_AIFSN1 FIELD32(0x000000f0) 83233aca94dSKalle Valo #define AIFSN_CSR_AIFSN2 FIELD32(0x00000f00) 83333aca94dSKalle Valo #define AIFSN_CSR_AIFSN3 FIELD32(0x0000f000) 83433aca94dSKalle Valo 83533aca94dSKalle Valo /* 83633aca94dSKalle Valo * CWMIN_CSR: CWmin for each EDCA AC. 83733aca94dSKalle Valo * CWMIN0: For AC_VO. 83833aca94dSKalle Valo * CWMIN1: For AC_VI. 83933aca94dSKalle Valo * CWMIN2: For AC_BE. 84033aca94dSKalle Valo * CWMIN3: For AC_BK. 84133aca94dSKalle Valo */ 84233aca94dSKalle Valo #define CWMIN_CSR 0x3424 84333aca94dSKalle Valo #define CWMIN_CSR_CWMIN0 FIELD32(0x0000000f) 84433aca94dSKalle Valo #define CWMIN_CSR_CWMIN1 FIELD32(0x000000f0) 84533aca94dSKalle Valo #define CWMIN_CSR_CWMIN2 FIELD32(0x00000f00) 84633aca94dSKalle Valo #define CWMIN_CSR_CWMIN3 FIELD32(0x0000f000) 84733aca94dSKalle Valo 84833aca94dSKalle Valo /* 84933aca94dSKalle Valo * CWMAX_CSR: CWmax for each EDCA AC. 85033aca94dSKalle Valo * CWMAX0: For AC_VO. 85133aca94dSKalle Valo * CWMAX1: For AC_VI. 85233aca94dSKalle Valo * CWMAX2: For AC_BE. 85333aca94dSKalle Valo * CWMAX3: For AC_BK. 85433aca94dSKalle Valo */ 85533aca94dSKalle Valo #define CWMAX_CSR 0x3428 85633aca94dSKalle Valo #define CWMAX_CSR_CWMAX0 FIELD32(0x0000000f) 85733aca94dSKalle Valo #define CWMAX_CSR_CWMAX1 FIELD32(0x000000f0) 85833aca94dSKalle Valo #define CWMAX_CSR_CWMAX2 FIELD32(0x00000f00) 85933aca94dSKalle Valo #define CWMAX_CSR_CWMAX3 FIELD32(0x0000f000) 86033aca94dSKalle Valo 86133aca94dSKalle Valo /* 86233aca94dSKalle Valo * TX_DMA_DST_CSR: TX DMA destination 86333aca94dSKalle Valo * 0: TX ring0, 1: TX ring1, 2: TX ring2 3: invalid 86433aca94dSKalle Valo */ 86533aca94dSKalle Valo #define TX_DMA_DST_CSR 0x342c 86633aca94dSKalle Valo #define TX_DMA_DST_CSR_DEST_AC0 FIELD32(0x00000003) 86733aca94dSKalle Valo #define TX_DMA_DST_CSR_DEST_AC1 FIELD32(0x0000000c) 86833aca94dSKalle Valo #define TX_DMA_DST_CSR_DEST_AC2 FIELD32(0x00000030) 86933aca94dSKalle Valo #define TX_DMA_DST_CSR_DEST_AC3 FIELD32(0x000000c0) 87033aca94dSKalle Valo #define TX_DMA_DST_CSR_DEST_MGMT FIELD32(0x00000300) 87133aca94dSKalle Valo 87233aca94dSKalle Valo /* 87333aca94dSKalle Valo * TX_CNTL_CSR: KICK/Abort TX. 87433aca94dSKalle Valo * KICK_TX_AC0: For AC_VO. 87533aca94dSKalle Valo * KICK_TX_AC1: For AC_VI. 87633aca94dSKalle Valo * KICK_TX_AC2: For AC_BE. 87733aca94dSKalle Valo * KICK_TX_AC3: For AC_BK. 87833aca94dSKalle Valo * ABORT_TX_AC0: For AC_VO. 87933aca94dSKalle Valo * ABORT_TX_AC1: For AC_VI. 88033aca94dSKalle Valo * ABORT_TX_AC2: For AC_BE. 88133aca94dSKalle Valo * ABORT_TX_AC3: For AC_BK. 88233aca94dSKalle Valo */ 88333aca94dSKalle Valo #define TX_CNTL_CSR 0x3430 88433aca94dSKalle Valo #define TX_CNTL_CSR_KICK_TX_AC0 FIELD32(0x00000001) 88533aca94dSKalle Valo #define TX_CNTL_CSR_KICK_TX_AC1 FIELD32(0x00000002) 88633aca94dSKalle Valo #define TX_CNTL_CSR_KICK_TX_AC2 FIELD32(0x00000004) 88733aca94dSKalle Valo #define TX_CNTL_CSR_KICK_TX_AC3 FIELD32(0x00000008) 88833aca94dSKalle Valo #define TX_CNTL_CSR_KICK_TX_MGMT FIELD32(0x00000010) 88933aca94dSKalle Valo #define TX_CNTL_CSR_ABORT_TX_AC0 FIELD32(0x00010000) 89033aca94dSKalle Valo #define TX_CNTL_CSR_ABORT_TX_AC1 FIELD32(0x00020000) 89133aca94dSKalle Valo #define TX_CNTL_CSR_ABORT_TX_AC2 FIELD32(0x00040000) 89233aca94dSKalle Valo #define TX_CNTL_CSR_ABORT_TX_AC3 FIELD32(0x00080000) 89333aca94dSKalle Valo #define TX_CNTL_CSR_ABORT_TX_MGMT FIELD32(0x00100000) 89433aca94dSKalle Valo 89533aca94dSKalle Valo /* 89633aca94dSKalle Valo * LOAD_TX_RING_CSR: Load RX desriptor 89733aca94dSKalle Valo */ 89833aca94dSKalle Valo #define LOAD_TX_RING_CSR 0x3434 89933aca94dSKalle Valo #define LOAD_TX_RING_CSR_LOAD_TXD_AC0 FIELD32(0x00000001) 90033aca94dSKalle Valo #define LOAD_TX_RING_CSR_LOAD_TXD_AC1 FIELD32(0x00000002) 90133aca94dSKalle Valo #define LOAD_TX_RING_CSR_LOAD_TXD_AC2 FIELD32(0x00000004) 90233aca94dSKalle Valo #define LOAD_TX_RING_CSR_LOAD_TXD_AC3 FIELD32(0x00000008) 90333aca94dSKalle Valo #define LOAD_TX_RING_CSR_LOAD_TXD_MGMT FIELD32(0x00000010) 90433aca94dSKalle Valo 90533aca94dSKalle Valo /* 90633aca94dSKalle Valo * Several read-only registers, for debugging. 90733aca94dSKalle Valo */ 90833aca94dSKalle Valo #define AC0_TXPTR_CSR 0x3438 90933aca94dSKalle Valo #define AC1_TXPTR_CSR 0x343c 91033aca94dSKalle Valo #define AC2_TXPTR_CSR 0x3440 91133aca94dSKalle Valo #define AC3_TXPTR_CSR 0x3444 91233aca94dSKalle Valo #define MGMT_TXPTR_CSR 0x3448 91333aca94dSKalle Valo 91433aca94dSKalle Valo /* 91533aca94dSKalle Valo * RX_BASE_CSR 91633aca94dSKalle Valo */ 91733aca94dSKalle Valo #define RX_BASE_CSR 0x3450 91833aca94dSKalle Valo #define RX_BASE_CSR_RING_REGISTER FIELD32(0xffffffff) 91933aca94dSKalle Valo 92033aca94dSKalle Valo /* 92133aca94dSKalle Valo * RX_RING_CSR. 92233aca94dSKalle Valo * RXD_SIZE: In unit of 32-bit. 92333aca94dSKalle Valo */ 92433aca94dSKalle Valo #define RX_RING_CSR 0x3454 92533aca94dSKalle Valo #define RX_RING_CSR_RING_SIZE FIELD32(0x000000ff) 92633aca94dSKalle Valo #define RX_RING_CSR_RXD_SIZE FIELD32(0x00003f00) 92733aca94dSKalle Valo #define RX_RING_CSR_RXD_WRITEBACK_SIZE FIELD32(0x00070000) 92833aca94dSKalle Valo 92933aca94dSKalle Valo /* 93033aca94dSKalle Valo * RX_CNTL_CSR 93133aca94dSKalle Valo */ 93233aca94dSKalle Valo #define RX_CNTL_CSR 0x3458 93333aca94dSKalle Valo #define RX_CNTL_CSR_ENABLE_RX_DMA FIELD32(0x00000001) 93433aca94dSKalle Valo #define RX_CNTL_CSR_LOAD_RXD FIELD32(0x00000002) 93533aca94dSKalle Valo 93633aca94dSKalle Valo /* 93733aca94dSKalle Valo * RXPTR_CSR: Read-only, for debugging. 93833aca94dSKalle Valo */ 93933aca94dSKalle Valo #define RXPTR_CSR 0x345c 94033aca94dSKalle Valo 94133aca94dSKalle Valo /* 94233aca94dSKalle Valo * PCI_CFG_CSR 94333aca94dSKalle Valo */ 94433aca94dSKalle Valo #define PCI_CFG_CSR 0x3460 94533aca94dSKalle Valo 94633aca94dSKalle Valo /* 94733aca94dSKalle Valo * BUF_FORMAT_CSR 94833aca94dSKalle Valo */ 94933aca94dSKalle Valo #define BUF_FORMAT_CSR 0x3464 95033aca94dSKalle Valo 95133aca94dSKalle Valo /* 95233aca94dSKalle Valo * INT_SOURCE_CSR: Interrupt source register. 95333aca94dSKalle Valo * Write one to clear corresponding bit. 95433aca94dSKalle Valo */ 95533aca94dSKalle Valo #define INT_SOURCE_CSR 0x3468 95633aca94dSKalle Valo #define INT_SOURCE_CSR_TXDONE FIELD32(0x00000001) 95733aca94dSKalle Valo #define INT_SOURCE_CSR_RXDONE FIELD32(0x00000002) 95833aca94dSKalle Valo #define INT_SOURCE_CSR_BEACON_DONE FIELD32(0x00000004) 95933aca94dSKalle Valo #define INT_SOURCE_CSR_TX_ABORT_DONE FIELD32(0x00000010) 96033aca94dSKalle Valo #define INT_SOURCE_CSR_AC0_DMA_DONE FIELD32(0x00010000) 96133aca94dSKalle Valo #define INT_SOURCE_CSR_AC1_DMA_DONE FIELD32(0x00020000) 96233aca94dSKalle Valo #define INT_SOURCE_CSR_AC2_DMA_DONE FIELD32(0x00040000) 96333aca94dSKalle Valo #define INT_SOURCE_CSR_AC3_DMA_DONE FIELD32(0x00080000) 96433aca94dSKalle Valo #define INT_SOURCE_CSR_MGMT_DMA_DONE FIELD32(0x00100000) 96533aca94dSKalle Valo #define INT_SOURCE_CSR_HCCA_DMA_DONE FIELD32(0x00200000) 96633aca94dSKalle Valo 96733aca94dSKalle Valo /* 96833aca94dSKalle Valo * INT_MASK_CSR: Interrupt MASK register. 1: the interrupt is mask OFF. 96933aca94dSKalle Valo * MITIGATION_PERIOD: Interrupt mitigation in unit of 32 PCI clock. 97033aca94dSKalle Valo */ 97133aca94dSKalle Valo #define INT_MASK_CSR 0x346c 97233aca94dSKalle Valo #define INT_MASK_CSR_TXDONE FIELD32(0x00000001) 97333aca94dSKalle Valo #define INT_MASK_CSR_RXDONE FIELD32(0x00000002) 97433aca94dSKalle Valo #define INT_MASK_CSR_BEACON_DONE FIELD32(0x00000004) 97533aca94dSKalle Valo #define INT_MASK_CSR_TX_ABORT_DONE FIELD32(0x00000010) 97633aca94dSKalle Valo #define INT_MASK_CSR_ENABLE_MITIGATION FIELD32(0x00000080) 97733aca94dSKalle Valo #define INT_MASK_CSR_MITIGATION_PERIOD FIELD32(0x0000ff00) 97833aca94dSKalle Valo #define INT_MASK_CSR_AC0_DMA_DONE FIELD32(0x00010000) 97933aca94dSKalle Valo #define INT_MASK_CSR_AC1_DMA_DONE FIELD32(0x00020000) 98033aca94dSKalle Valo #define INT_MASK_CSR_AC2_DMA_DONE FIELD32(0x00040000) 98133aca94dSKalle Valo #define INT_MASK_CSR_AC3_DMA_DONE FIELD32(0x00080000) 98233aca94dSKalle Valo #define INT_MASK_CSR_MGMT_DMA_DONE FIELD32(0x00100000) 98333aca94dSKalle Valo #define INT_MASK_CSR_HCCA_DMA_DONE FIELD32(0x00200000) 98433aca94dSKalle Valo 98533aca94dSKalle Valo /* 98633aca94dSKalle Valo * E2PROM_CSR: EEPROM control register. 98733aca94dSKalle Valo * RELOAD: Write 1 to reload eeprom content. 98833aca94dSKalle Valo * TYPE_93C46: 1: 93c46, 0:93c66. 98933aca94dSKalle Valo * LOAD_STATUS: 1:loading, 0:done. 99033aca94dSKalle Valo */ 99133aca94dSKalle Valo #define E2PROM_CSR 0x3470 99233aca94dSKalle Valo #define E2PROM_CSR_RELOAD FIELD32(0x00000001) 99333aca94dSKalle Valo #define E2PROM_CSR_DATA_CLOCK FIELD32(0x00000002) 99433aca94dSKalle Valo #define E2PROM_CSR_CHIP_SELECT FIELD32(0x00000004) 99533aca94dSKalle Valo #define E2PROM_CSR_DATA_IN FIELD32(0x00000008) 99633aca94dSKalle Valo #define E2PROM_CSR_DATA_OUT FIELD32(0x00000010) 99733aca94dSKalle Valo #define E2PROM_CSR_TYPE_93C46 FIELD32(0x00000020) 99833aca94dSKalle Valo #define E2PROM_CSR_LOAD_STATUS FIELD32(0x00000040) 99933aca94dSKalle Valo 100033aca94dSKalle Valo /* 100133aca94dSKalle Valo * AC_TXOP_CSR0: AC_VO/AC_VI TXOP register. 100233aca94dSKalle Valo * AC0_TX_OP: For AC_VO, in unit of 32us. 100333aca94dSKalle Valo * AC1_TX_OP: For AC_VI, in unit of 32us. 100433aca94dSKalle Valo */ 100533aca94dSKalle Valo #define AC_TXOP_CSR0 0x3474 100633aca94dSKalle Valo #define AC_TXOP_CSR0_AC0_TX_OP FIELD32(0x0000ffff) 100733aca94dSKalle Valo #define AC_TXOP_CSR0_AC1_TX_OP FIELD32(0xffff0000) 100833aca94dSKalle Valo 100933aca94dSKalle Valo /* 101033aca94dSKalle Valo * AC_TXOP_CSR1: AC_BE/AC_BK TXOP register. 101133aca94dSKalle Valo * AC2_TX_OP: For AC_BE, in unit of 32us. 101233aca94dSKalle Valo * AC3_TX_OP: For AC_BK, in unit of 32us. 101333aca94dSKalle Valo */ 101433aca94dSKalle Valo #define AC_TXOP_CSR1 0x3478 101533aca94dSKalle Valo #define AC_TXOP_CSR1_AC2_TX_OP FIELD32(0x0000ffff) 101633aca94dSKalle Valo #define AC_TXOP_CSR1_AC3_TX_OP FIELD32(0xffff0000) 101733aca94dSKalle Valo 101833aca94dSKalle Valo /* 101933aca94dSKalle Valo * DMA_STATUS_CSR 102033aca94dSKalle Valo */ 102133aca94dSKalle Valo #define DMA_STATUS_CSR 0x3480 102233aca94dSKalle Valo 102333aca94dSKalle Valo /* 102433aca94dSKalle Valo * TEST_MODE_CSR 102533aca94dSKalle Valo */ 102633aca94dSKalle Valo #define TEST_MODE_CSR 0x3484 102733aca94dSKalle Valo 102833aca94dSKalle Valo /* 102933aca94dSKalle Valo * UART0_TX_CSR 103033aca94dSKalle Valo */ 103133aca94dSKalle Valo #define UART0_TX_CSR 0x3488 103233aca94dSKalle Valo 103333aca94dSKalle Valo /* 103433aca94dSKalle Valo * UART0_RX_CSR 103533aca94dSKalle Valo */ 103633aca94dSKalle Valo #define UART0_RX_CSR 0x348c 103733aca94dSKalle Valo 103833aca94dSKalle Valo /* 103933aca94dSKalle Valo * UART0_FRAME_CSR 104033aca94dSKalle Valo */ 104133aca94dSKalle Valo #define UART0_FRAME_CSR 0x3490 104233aca94dSKalle Valo 104333aca94dSKalle Valo /* 104433aca94dSKalle Valo * UART0_BUFFER_CSR 104533aca94dSKalle Valo */ 104633aca94dSKalle Valo #define UART0_BUFFER_CSR 0x3494 104733aca94dSKalle Valo 104833aca94dSKalle Valo /* 104933aca94dSKalle Valo * IO_CNTL_CSR 105033aca94dSKalle Valo * RF_PS: Set RF interface value to power save 105133aca94dSKalle Valo */ 105233aca94dSKalle Valo #define IO_CNTL_CSR 0x3498 105333aca94dSKalle Valo #define IO_CNTL_CSR_RF_PS FIELD32(0x00000004) 105433aca94dSKalle Valo 105533aca94dSKalle Valo /* 105633aca94dSKalle Valo * UART_INT_SOURCE_CSR 105733aca94dSKalle Valo */ 105833aca94dSKalle Valo #define UART_INT_SOURCE_CSR 0x34a8 105933aca94dSKalle Valo 106033aca94dSKalle Valo /* 106133aca94dSKalle Valo * UART_INT_MASK_CSR 106233aca94dSKalle Valo */ 106333aca94dSKalle Valo #define UART_INT_MASK_CSR 0x34ac 106433aca94dSKalle Valo 106533aca94dSKalle Valo /* 106633aca94dSKalle Valo * PBF_QUEUE_CSR 106733aca94dSKalle Valo */ 106833aca94dSKalle Valo #define PBF_QUEUE_CSR 0x34b0 106933aca94dSKalle Valo 107033aca94dSKalle Valo /* 107133aca94dSKalle Valo * Firmware DMA registers. 107233aca94dSKalle Valo * Firmware DMA registers are dedicated for MCU usage 107333aca94dSKalle Valo * and should not be touched by host driver. 107433aca94dSKalle Valo * Therefore we skip the definition of these registers. 107533aca94dSKalle Valo */ 107633aca94dSKalle Valo #define FW_TX_BASE_CSR 0x34c0 107733aca94dSKalle Valo #define FW_TX_START_CSR 0x34c4 107833aca94dSKalle Valo #define FW_TX_LAST_CSR 0x34c8 107933aca94dSKalle Valo #define FW_MODE_CNTL_CSR 0x34cc 108033aca94dSKalle Valo #define FW_TXPTR_CSR 0x34d0 108133aca94dSKalle Valo 108233aca94dSKalle Valo /* 108333aca94dSKalle Valo * 8051 firmware image. 108433aca94dSKalle Valo */ 108533aca94dSKalle Valo #define FIRMWARE_RT2561 "rt2561.bin" 108633aca94dSKalle Valo #define FIRMWARE_RT2561s "rt2561s.bin" 108733aca94dSKalle Valo #define FIRMWARE_RT2661 "rt2661.bin" 108833aca94dSKalle Valo #define FIRMWARE_IMAGE_BASE 0x4000 108933aca94dSKalle Valo 109033aca94dSKalle Valo /* 109133aca94dSKalle Valo * BBP registers. 109233aca94dSKalle Valo * The wordsize of the BBP is 8 bits. 109333aca94dSKalle Valo */ 109433aca94dSKalle Valo 109533aca94dSKalle Valo /* 109633aca94dSKalle Valo * R2 109733aca94dSKalle Valo */ 109833aca94dSKalle Valo #define BBP_R2_BG_MODE FIELD8(0x20) 109933aca94dSKalle Valo 110033aca94dSKalle Valo /* 110133aca94dSKalle Valo * R3 110233aca94dSKalle Valo */ 110333aca94dSKalle Valo #define BBP_R3_SMART_MODE FIELD8(0x01) 110433aca94dSKalle Valo 110533aca94dSKalle Valo /* 110633aca94dSKalle Valo * R4: RX antenna control 110733aca94dSKalle Valo * FRAME_END: 1 - DPDT, 0 - SPDT (Only valid for 802.11G, RF2527 & RF2529) 110833aca94dSKalle Valo */ 110933aca94dSKalle Valo 111033aca94dSKalle Valo /* 111133aca94dSKalle Valo * ANTENNA_CONTROL semantics (guessed): 111233aca94dSKalle Valo * 0x1: Software controlled antenna switching (fixed or SW diversity) 111333aca94dSKalle Valo * 0x2: Hardware diversity. 111433aca94dSKalle Valo */ 111533aca94dSKalle Valo #define BBP_R4_RX_ANTENNA_CONTROL FIELD8(0x03) 111633aca94dSKalle Valo #define BBP_R4_RX_FRAME_END FIELD8(0x20) 111733aca94dSKalle Valo 111833aca94dSKalle Valo /* 111933aca94dSKalle Valo * R77 112033aca94dSKalle Valo */ 112133aca94dSKalle Valo #define BBP_R77_RX_ANTENNA FIELD8(0x03) 112233aca94dSKalle Valo 112333aca94dSKalle Valo /* 112433aca94dSKalle Valo * RF registers 112533aca94dSKalle Valo */ 112633aca94dSKalle Valo 112733aca94dSKalle Valo /* 112833aca94dSKalle Valo * RF 3 112933aca94dSKalle Valo */ 113033aca94dSKalle Valo #define RF3_TXPOWER FIELD32(0x00003e00) 113133aca94dSKalle Valo 113233aca94dSKalle Valo /* 113333aca94dSKalle Valo * RF 4 113433aca94dSKalle Valo */ 113533aca94dSKalle Valo #define RF4_FREQ_OFFSET FIELD32(0x0003f000) 113633aca94dSKalle Valo 113733aca94dSKalle Valo /* 113833aca94dSKalle Valo * EEPROM content. 113933aca94dSKalle Valo * The wordsize of the EEPROM is 16 bits. 114033aca94dSKalle Valo */ 114133aca94dSKalle Valo 114233aca94dSKalle Valo /* 114333aca94dSKalle Valo * HW MAC address. 114433aca94dSKalle Valo */ 114533aca94dSKalle Valo #define EEPROM_MAC_ADDR_0 0x0002 114633aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE0 FIELD16(0x00ff) 114733aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE1 FIELD16(0xff00) 114833aca94dSKalle Valo #define EEPROM_MAC_ADDR1 0x0003 114933aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE2 FIELD16(0x00ff) 115033aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE3 FIELD16(0xff00) 115133aca94dSKalle Valo #define EEPROM_MAC_ADDR_2 0x0004 115233aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE4 FIELD16(0x00ff) 115333aca94dSKalle Valo #define EEPROM_MAC_ADDR_BYTE5 FIELD16(0xff00) 115433aca94dSKalle Valo 115533aca94dSKalle Valo /* 115633aca94dSKalle Valo * EEPROM antenna. 115733aca94dSKalle Valo * ANTENNA_NUM: Number of antenna's. 115833aca94dSKalle Valo * TX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 115933aca94dSKalle Valo * RX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 116033aca94dSKalle Valo * FRAME_TYPE: 0: DPDT , 1: SPDT , noted this bit is valid for g only. 116133aca94dSKalle Valo * DYN_TXAGC: Dynamic TX AGC control. 116233aca94dSKalle Valo * HARDWARE_RADIO: 1: Hardware controlled radio. Read GPIO0. 116333aca94dSKalle Valo * RF_TYPE: Rf_type of this adapter. 116433aca94dSKalle Valo */ 116533aca94dSKalle Valo #define EEPROM_ANTENNA 0x0010 116633aca94dSKalle Valo #define EEPROM_ANTENNA_NUM FIELD16(0x0003) 116733aca94dSKalle Valo #define EEPROM_ANTENNA_TX_DEFAULT FIELD16(0x000c) 116833aca94dSKalle Valo #define EEPROM_ANTENNA_RX_DEFAULT FIELD16(0x0030) 116933aca94dSKalle Valo #define EEPROM_ANTENNA_FRAME_TYPE FIELD16(0x0040) 117033aca94dSKalle Valo #define EEPROM_ANTENNA_DYN_TXAGC FIELD16(0x0200) 117133aca94dSKalle Valo #define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(0x0400) 117233aca94dSKalle Valo #define EEPROM_ANTENNA_RF_TYPE FIELD16(0xf800) 117333aca94dSKalle Valo 117433aca94dSKalle Valo /* 117533aca94dSKalle Valo * EEPROM NIC config. 117633aca94dSKalle Valo * ENABLE_DIVERSITY: 1:enable, 0:disable. 117733aca94dSKalle Valo * EXTERNAL_LNA_BG: External LNA enable for 2.4G. 117833aca94dSKalle Valo * CARDBUS_ACCEL: 0:enable, 1:disable. 117933aca94dSKalle Valo * EXTERNAL_LNA_A: External LNA enable for 5G. 118033aca94dSKalle Valo */ 118133aca94dSKalle Valo #define EEPROM_NIC 0x0011 118233aca94dSKalle Valo #define EEPROM_NIC_ENABLE_DIVERSITY FIELD16(0x0001) 118333aca94dSKalle Valo #define EEPROM_NIC_TX_DIVERSITY FIELD16(0x0002) 118433aca94dSKalle Valo #define EEPROM_NIC_RX_FIXED FIELD16(0x0004) 118533aca94dSKalle Valo #define EEPROM_NIC_TX_FIXED FIELD16(0x0008) 118633aca94dSKalle Valo #define EEPROM_NIC_EXTERNAL_LNA_BG FIELD16(0x0010) 118733aca94dSKalle Valo #define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0x0020) 118833aca94dSKalle Valo #define EEPROM_NIC_EXTERNAL_LNA_A FIELD16(0x0040) 118933aca94dSKalle Valo 119033aca94dSKalle Valo /* 119133aca94dSKalle Valo * EEPROM geography. 119233aca94dSKalle Valo * GEO_A: Default geographical setting for 5GHz band 119333aca94dSKalle Valo * GEO: Default geographical setting. 119433aca94dSKalle Valo */ 119533aca94dSKalle Valo #define EEPROM_GEOGRAPHY 0x0012 119633aca94dSKalle Valo #define EEPROM_GEOGRAPHY_GEO_A FIELD16(0x00ff) 119733aca94dSKalle Valo #define EEPROM_GEOGRAPHY_GEO FIELD16(0xff00) 119833aca94dSKalle Valo 119933aca94dSKalle Valo /* 120033aca94dSKalle Valo * EEPROM BBP. 120133aca94dSKalle Valo */ 120233aca94dSKalle Valo #define EEPROM_BBP_START 0x0013 120333aca94dSKalle Valo #define EEPROM_BBP_SIZE 16 120433aca94dSKalle Valo #define EEPROM_BBP_VALUE FIELD16(0x00ff) 120533aca94dSKalle Valo #define EEPROM_BBP_REG_ID FIELD16(0xff00) 120633aca94dSKalle Valo 120733aca94dSKalle Valo /* 120833aca94dSKalle Valo * EEPROM TXPOWER 802.11G 120933aca94dSKalle Valo */ 121033aca94dSKalle Valo #define EEPROM_TXPOWER_G_START 0x0023 121133aca94dSKalle Valo #define EEPROM_TXPOWER_G_SIZE 7 121233aca94dSKalle Valo #define EEPROM_TXPOWER_G_1 FIELD16(0x00ff) 121333aca94dSKalle Valo #define EEPROM_TXPOWER_G_2 FIELD16(0xff00) 121433aca94dSKalle Valo 121533aca94dSKalle Valo /* 121633aca94dSKalle Valo * EEPROM Frequency 121733aca94dSKalle Valo */ 121833aca94dSKalle Valo #define EEPROM_FREQ 0x002f 121933aca94dSKalle Valo #define EEPROM_FREQ_OFFSET FIELD16(0x00ff) 122033aca94dSKalle Valo #define EEPROM_FREQ_SEQ_MASK FIELD16(0xff00) 122133aca94dSKalle Valo #define EEPROM_FREQ_SEQ FIELD16(0x0300) 122233aca94dSKalle Valo 122333aca94dSKalle Valo /* 122433aca94dSKalle Valo * EEPROM LED. 122533aca94dSKalle Valo * POLARITY_RDY_G: Polarity RDY_G setting. 122633aca94dSKalle Valo * POLARITY_RDY_A: Polarity RDY_A setting. 122733aca94dSKalle Valo * POLARITY_ACT: Polarity ACT setting. 122833aca94dSKalle Valo * POLARITY_GPIO_0: Polarity GPIO0 setting. 122933aca94dSKalle Valo * POLARITY_GPIO_1: Polarity GPIO1 setting. 123033aca94dSKalle Valo * POLARITY_GPIO_2: Polarity GPIO2 setting. 123133aca94dSKalle Valo * POLARITY_GPIO_3: Polarity GPIO3 setting. 123233aca94dSKalle Valo * POLARITY_GPIO_4: Polarity GPIO4 setting. 123333aca94dSKalle Valo * LED_MODE: Led mode. 123433aca94dSKalle Valo */ 123533aca94dSKalle Valo #define EEPROM_LED 0x0030 123633aca94dSKalle Valo #define EEPROM_LED_POLARITY_RDY_G FIELD16(0x0001) 123733aca94dSKalle Valo #define EEPROM_LED_POLARITY_RDY_A FIELD16(0x0002) 123833aca94dSKalle Valo #define EEPROM_LED_POLARITY_ACT FIELD16(0x0004) 123933aca94dSKalle Valo #define EEPROM_LED_POLARITY_GPIO_0 FIELD16(0x0008) 124033aca94dSKalle Valo #define EEPROM_LED_POLARITY_GPIO_1 FIELD16(0x0010) 124133aca94dSKalle Valo #define EEPROM_LED_POLARITY_GPIO_2 FIELD16(0x0020) 124233aca94dSKalle Valo #define EEPROM_LED_POLARITY_GPIO_3 FIELD16(0x0040) 124333aca94dSKalle Valo #define EEPROM_LED_POLARITY_GPIO_4 FIELD16(0x0080) 124433aca94dSKalle Valo #define EEPROM_LED_LED_MODE FIELD16(0x1f00) 124533aca94dSKalle Valo 124633aca94dSKalle Valo /* 124733aca94dSKalle Valo * EEPROM TXPOWER 802.11A 124833aca94dSKalle Valo */ 124933aca94dSKalle Valo #define EEPROM_TXPOWER_A_START 0x0031 125033aca94dSKalle Valo #define EEPROM_TXPOWER_A_SIZE 12 125133aca94dSKalle Valo #define EEPROM_TXPOWER_A_1 FIELD16(0x00ff) 125233aca94dSKalle Valo #define EEPROM_TXPOWER_A_2 FIELD16(0xff00) 125333aca94dSKalle Valo 125433aca94dSKalle Valo /* 125533aca94dSKalle Valo * EEPROM RSSI offset 802.11BG 125633aca94dSKalle Valo */ 125733aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_BG 0x004d 125833aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_BG_1 FIELD16(0x00ff) 125933aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_BG_2 FIELD16(0xff00) 126033aca94dSKalle Valo 126133aca94dSKalle Valo /* 126233aca94dSKalle Valo * EEPROM RSSI offset 802.11A 126333aca94dSKalle Valo */ 126433aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_A 0x004e 126533aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_A_1 FIELD16(0x00ff) 126633aca94dSKalle Valo #define EEPROM_RSSI_OFFSET_A_2 FIELD16(0xff00) 126733aca94dSKalle Valo 126833aca94dSKalle Valo /* 126933aca94dSKalle Valo * MCU mailbox commands. 127033aca94dSKalle Valo */ 127133aca94dSKalle Valo #define MCU_SLEEP 0x30 127233aca94dSKalle Valo #define MCU_WAKEUP 0x31 127333aca94dSKalle Valo #define MCU_LED 0x50 127433aca94dSKalle Valo #define MCU_LED_STRENGTH 0x52 127533aca94dSKalle Valo 127633aca94dSKalle Valo /* 127733aca94dSKalle Valo * DMA descriptor defines. 127833aca94dSKalle Valo */ 127933aca94dSKalle Valo #define TXD_DESC_SIZE (16 * sizeof(__le32)) 128033aca94dSKalle Valo #define TXINFO_SIZE (6 * sizeof(__le32)) 128133aca94dSKalle Valo #define RXD_DESC_SIZE (16 * sizeof(__le32)) 128233aca94dSKalle Valo 128333aca94dSKalle Valo /* 128433aca94dSKalle Valo * TX descriptor format for TX, PRIO and Beacon Ring. 128533aca94dSKalle Valo */ 128633aca94dSKalle Valo 128733aca94dSKalle Valo /* 128833aca94dSKalle Valo * Word0 128933aca94dSKalle Valo * TKIP_MIC: ASIC appends TKIP MIC if TKIP is used. 129033aca94dSKalle Valo * KEY_TABLE: Use per-client pairwise KEY table. 129133aca94dSKalle Valo * KEY_INDEX: 129233aca94dSKalle Valo * Key index (0~31) to the pairwise KEY table. 129333aca94dSKalle Valo * 0~3 to shared KEY table 0 (BSS0). 129433aca94dSKalle Valo * 4~7 to shared KEY table 1 (BSS1). 129533aca94dSKalle Valo * 8~11 to shared KEY table 2 (BSS2). 129633aca94dSKalle Valo * 12~15 to shared KEY table 3 (BSS3). 129733aca94dSKalle Valo * BURST: Next frame belongs to same "burst" event. 129833aca94dSKalle Valo */ 129933aca94dSKalle Valo #define TXD_W0_OWNER_NIC FIELD32(0x00000001) 130033aca94dSKalle Valo #define TXD_W0_VALID FIELD32(0x00000002) 130133aca94dSKalle Valo #define TXD_W0_MORE_FRAG FIELD32(0x00000004) 130233aca94dSKalle Valo #define TXD_W0_ACK FIELD32(0x00000008) 130333aca94dSKalle Valo #define TXD_W0_TIMESTAMP FIELD32(0x00000010) 130433aca94dSKalle Valo #define TXD_W0_OFDM FIELD32(0x00000020) 130533aca94dSKalle Valo #define TXD_W0_IFS FIELD32(0x00000040) 130633aca94dSKalle Valo #define TXD_W0_RETRY_MODE FIELD32(0x00000080) 130733aca94dSKalle Valo #define TXD_W0_TKIP_MIC FIELD32(0x00000100) 130833aca94dSKalle Valo #define TXD_W0_KEY_TABLE FIELD32(0x00000200) 130933aca94dSKalle Valo #define TXD_W0_KEY_INDEX FIELD32(0x0000fc00) 131033aca94dSKalle Valo #define TXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 131133aca94dSKalle Valo #define TXD_W0_BURST FIELD32(0x10000000) 131233aca94dSKalle Valo #define TXD_W0_CIPHER_ALG FIELD32(0xe0000000) 131333aca94dSKalle Valo 131433aca94dSKalle Valo /* 131533aca94dSKalle Valo * Word1 131633aca94dSKalle Valo * HOST_Q_ID: EDCA/HCCA queue ID. 131733aca94dSKalle Valo * HW_SEQUENCE: MAC overwrites the frame sequence number. 131833aca94dSKalle Valo * BUFFER_COUNT: Number of buffers in this TXD. 131933aca94dSKalle Valo */ 132033aca94dSKalle Valo #define TXD_W1_HOST_Q_ID FIELD32(0x0000000f) 132133aca94dSKalle Valo #define TXD_W1_AIFSN FIELD32(0x000000f0) 132233aca94dSKalle Valo #define TXD_W1_CWMIN FIELD32(0x00000f00) 132333aca94dSKalle Valo #define TXD_W1_CWMAX FIELD32(0x0000f000) 132433aca94dSKalle Valo #define TXD_W1_IV_OFFSET FIELD32(0x003f0000) 132533aca94dSKalle Valo #define TXD_W1_PIGGY_BACK FIELD32(0x01000000) 132633aca94dSKalle Valo #define TXD_W1_HW_SEQUENCE FIELD32(0x10000000) 132733aca94dSKalle Valo #define TXD_W1_BUFFER_COUNT FIELD32(0xe0000000) 132833aca94dSKalle Valo 132933aca94dSKalle Valo /* 133033aca94dSKalle Valo * Word2: PLCP information 133133aca94dSKalle Valo */ 133233aca94dSKalle Valo #define TXD_W2_PLCP_SIGNAL FIELD32(0x000000ff) 133333aca94dSKalle Valo #define TXD_W2_PLCP_SERVICE FIELD32(0x0000ff00) 133433aca94dSKalle Valo #define TXD_W2_PLCP_LENGTH_LOW FIELD32(0x00ff0000) 133533aca94dSKalle Valo #define TXD_W2_PLCP_LENGTH_HIGH FIELD32(0xff000000) 133633aca94dSKalle Valo 133733aca94dSKalle Valo /* 133833aca94dSKalle Valo * Word3 133933aca94dSKalle Valo */ 134033aca94dSKalle Valo #define TXD_W3_IV FIELD32(0xffffffff) 134133aca94dSKalle Valo 134233aca94dSKalle Valo /* 134333aca94dSKalle Valo * Word4 134433aca94dSKalle Valo */ 134533aca94dSKalle Valo #define TXD_W4_EIV FIELD32(0xffffffff) 134633aca94dSKalle Valo 134733aca94dSKalle Valo /* 134833aca94dSKalle Valo * Word5 134933aca94dSKalle Valo * FRAME_OFFSET: Frame start offset inside ASIC TXFIFO (after TXINFO field). 135033aca94dSKalle Valo * TXD_W5_PID_SUBTYPE: Driver assigned packet ID index for txdone handler. 135133aca94dSKalle Valo * TXD_W5_PID_TYPE: Driver assigned packet ID type for txdone handler. 135233aca94dSKalle Valo * WAITING_DMA_DONE_INT: TXD been filled with data 135333aca94dSKalle Valo * and waiting for TxDoneISR housekeeping. 135433aca94dSKalle Valo */ 135533aca94dSKalle Valo #define TXD_W5_FRAME_OFFSET FIELD32(0x000000ff) 135633aca94dSKalle Valo #define TXD_W5_PID_SUBTYPE FIELD32(0x00001f00) 135733aca94dSKalle Valo #define TXD_W5_PID_TYPE FIELD32(0x0000e000) 135833aca94dSKalle Valo #define TXD_W5_TX_POWER FIELD32(0x00ff0000) 135933aca94dSKalle Valo #define TXD_W5_WAITING_DMA_DONE_INT FIELD32(0x01000000) 136033aca94dSKalle Valo 136133aca94dSKalle Valo /* 136233aca94dSKalle Valo * the above 24-byte is called TXINFO and will be DMAed to MAC block 136333aca94dSKalle Valo * through TXFIFO. MAC block use this TXINFO to control the transmission 136433aca94dSKalle Valo * behavior of this frame. 136533aca94dSKalle Valo * The following fields are not used by MAC block. 136633aca94dSKalle Valo * They are used by DMA block and HOST driver only. 136733aca94dSKalle Valo * Once a frame has been DMA to ASIC, all the following fields are useless 136833aca94dSKalle Valo * to ASIC. 136933aca94dSKalle Valo */ 137033aca94dSKalle Valo 137133aca94dSKalle Valo /* 137233aca94dSKalle Valo * Word6-10: Buffer physical address 137333aca94dSKalle Valo */ 137433aca94dSKalle Valo #define TXD_W6_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 137533aca94dSKalle Valo #define TXD_W7_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 137633aca94dSKalle Valo #define TXD_W8_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 137733aca94dSKalle Valo #define TXD_W9_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 137833aca94dSKalle Valo #define TXD_W10_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 137933aca94dSKalle Valo 138033aca94dSKalle Valo /* 138133aca94dSKalle Valo * Word11-13: Buffer length 138233aca94dSKalle Valo */ 138333aca94dSKalle Valo #define TXD_W11_BUFFER_LENGTH0 FIELD32(0x00000fff) 138433aca94dSKalle Valo #define TXD_W11_BUFFER_LENGTH1 FIELD32(0x0fff0000) 138533aca94dSKalle Valo #define TXD_W12_BUFFER_LENGTH2 FIELD32(0x00000fff) 138633aca94dSKalle Valo #define TXD_W12_BUFFER_LENGTH3 FIELD32(0x0fff0000) 138733aca94dSKalle Valo #define TXD_W13_BUFFER_LENGTH4 FIELD32(0x00000fff) 138833aca94dSKalle Valo 138933aca94dSKalle Valo /* 139033aca94dSKalle Valo * Word14 139133aca94dSKalle Valo */ 139233aca94dSKalle Valo #define TXD_W14_SK_BUFFER FIELD32(0xffffffff) 139333aca94dSKalle Valo 139433aca94dSKalle Valo /* 139533aca94dSKalle Valo * Word15 139633aca94dSKalle Valo */ 139733aca94dSKalle Valo #define TXD_W15_NEXT_SK_BUFFER FIELD32(0xffffffff) 139833aca94dSKalle Valo 139933aca94dSKalle Valo /* 140033aca94dSKalle Valo * RX descriptor format for RX Ring. 140133aca94dSKalle Valo */ 140233aca94dSKalle Valo 140333aca94dSKalle Valo /* 140433aca94dSKalle Valo * Word0 140533aca94dSKalle Valo * CIPHER_ERROR: 1:ICV error, 2:MIC error, 3:invalid key. 140633aca94dSKalle Valo * KEY_INDEX: Decryption key actually used. 140733aca94dSKalle Valo */ 140833aca94dSKalle Valo #define RXD_W0_OWNER_NIC FIELD32(0x00000001) 140933aca94dSKalle Valo #define RXD_W0_DROP FIELD32(0x00000002) 141033aca94dSKalle Valo #define RXD_W0_UNICAST_TO_ME FIELD32(0x00000004) 141133aca94dSKalle Valo #define RXD_W0_MULTICAST FIELD32(0x00000008) 141233aca94dSKalle Valo #define RXD_W0_BROADCAST FIELD32(0x00000010) 141333aca94dSKalle Valo #define RXD_W0_MY_BSS FIELD32(0x00000020) 141433aca94dSKalle Valo #define RXD_W0_CRC_ERROR FIELD32(0x00000040) 141533aca94dSKalle Valo #define RXD_W0_OFDM FIELD32(0x00000080) 141633aca94dSKalle Valo #define RXD_W0_CIPHER_ERROR FIELD32(0x00000300) 141733aca94dSKalle Valo #define RXD_W0_KEY_INDEX FIELD32(0x0000fc00) 141833aca94dSKalle Valo #define RXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 141933aca94dSKalle Valo #define RXD_W0_CIPHER_ALG FIELD32(0xe0000000) 142033aca94dSKalle Valo 142133aca94dSKalle Valo /* 142233aca94dSKalle Valo * Word1 142333aca94dSKalle Valo * SIGNAL: RX raw data rate reported by BBP. 142433aca94dSKalle Valo */ 142533aca94dSKalle Valo #define RXD_W1_SIGNAL FIELD32(0x000000ff) 142633aca94dSKalle Valo #define RXD_W1_RSSI_AGC FIELD32(0x00001f00) 142733aca94dSKalle Valo #define RXD_W1_RSSI_LNA FIELD32(0x00006000) 142833aca94dSKalle Valo #define RXD_W1_FRAME_OFFSET FIELD32(0x7f000000) 142933aca94dSKalle Valo 143033aca94dSKalle Valo /* 143133aca94dSKalle Valo * Word2 143233aca94dSKalle Valo * IV: Received IV of originally encrypted. 143333aca94dSKalle Valo */ 143433aca94dSKalle Valo #define RXD_W2_IV FIELD32(0xffffffff) 143533aca94dSKalle Valo 143633aca94dSKalle Valo /* 143733aca94dSKalle Valo * Word3 143833aca94dSKalle Valo * EIV: Received EIV of originally encrypted. 143933aca94dSKalle Valo */ 144033aca94dSKalle Valo #define RXD_W3_EIV FIELD32(0xffffffff) 144133aca94dSKalle Valo 144233aca94dSKalle Valo /* 144333aca94dSKalle Valo * Word4 144433aca94dSKalle Valo * ICV: Received ICV of originally encrypted. 144533aca94dSKalle Valo * NOTE: This is a guess, the official definition is "reserved" 144633aca94dSKalle Valo */ 144733aca94dSKalle Valo #define RXD_W4_ICV FIELD32(0xffffffff) 144833aca94dSKalle Valo 144933aca94dSKalle Valo /* 145033aca94dSKalle Valo * the above 20-byte is called RXINFO and will be DMAed to MAC RX block 145133aca94dSKalle Valo * and passed to the HOST driver. 145233aca94dSKalle Valo * The following fields are for DMA block and HOST usage only. 145333aca94dSKalle Valo * Can't be touched by ASIC MAC block. 145433aca94dSKalle Valo */ 145533aca94dSKalle Valo 145633aca94dSKalle Valo /* 145733aca94dSKalle Valo * Word5 145833aca94dSKalle Valo */ 145933aca94dSKalle Valo #define RXD_W5_BUFFER_PHYSICAL_ADDRESS FIELD32(0xffffffff) 146033aca94dSKalle Valo 146133aca94dSKalle Valo /* 146233aca94dSKalle Valo * Word6-15: Reserved 146333aca94dSKalle Valo */ 146433aca94dSKalle Valo #define RXD_W6_RESERVED FIELD32(0xffffffff) 146533aca94dSKalle Valo #define RXD_W7_RESERVED FIELD32(0xffffffff) 146633aca94dSKalle Valo #define RXD_W8_RESERVED FIELD32(0xffffffff) 146733aca94dSKalle Valo #define RXD_W9_RESERVED FIELD32(0xffffffff) 146833aca94dSKalle Valo #define RXD_W10_RESERVED FIELD32(0xffffffff) 146933aca94dSKalle Valo #define RXD_W11_RESERVED FIELD32(0xffffffff) 147033aca94dSKalle Valo #define RXD_W12_RESERVED FIELD32(0xffffffff) 147133aca94dSKalle Valo #define RXD_W13_RESERVED FIELD32(0xffffffff) 147233aca94dSKalle Valo #define RXD_W14_RESERVED FIELD32(0xffffffff) 147333aca94dSKalle Valo #define RXD_W15_RESERVED FIELD32(0xffffffff) 147433aca94dSKalle Valo 147533aca94dSKalle Valo /* 147633aca94dSKalle Valo * Macros for converting txpower from EEPROM to mac80211 value 147733aca94dSKalle Valo * and from mac80211 value to register value. 147833aca94dSKalle Valo */ 147933aca94dSKalle Valo #define MIN_TXPOWER 0 148033aca94dSKalle Valo #define MAX_TXPOWER 31 148133aca94dSKalle Valo #define DEFAULT_TXPOWER 24 148233aca94dSKalle Valo 148333aca94dSKalle Valo #define TXPOWER_FROM_DEV(__txpower) \ 148433aca94dSKalle Valo (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) 148533aca94dSKalle Valo 148633aca94dSKalle Valo #define TXPOWER_TO_DEV(__txpower) \ 1487*66063033SJason A. Donenfeld clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) 148833aca94dSKalle Valo 148933aca94dSKalle Valo #endif /* RT61PCI_H */ 1490