162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com> 462306a36Sopenharmony_ci <http://rt2x00.serialmonkey.com> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci Module: rt2500usb 1062306a36Sopenharmony_ci Abstract: Data structures and registers for the rt2500usb module. 1162306a36Sopenharmony_ci Supported chipsets: RT2570. 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#ifndef RT2500USB_H 1562306a36Sopenharmony_ci#define RT2500USB_H 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* 1862306a36Sopenharmony_ci * RF chip defines. 1962306a36Sopenharmony_ci */ 2062306a36Sopenharmony_ci#define RF2522 0x0000 2162306a36Sopenharmony_ci#define RF2523 0x0001 2262306a36Sopenharmony_ci#define RF2524 0x0002 2362306a36Sopenharmony_ci#define RF2525 0x0003 2462306a36Sopenharmony_ci#define RF2525E 0x0005 2562306a36Sopenharmony_ci#define RF5222 0x0010 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* 2862306a36Sopenharmony_ci * RT2570 version 2962306a36Sopenharmony_ci */ 3062306a36Sopenharmony_ci#define RT2570_VERSION_B 2 3162306a36Sopenharmony_ci#define RT2570_VERSION_C 3 3262306a36Sopenharmony_ci#define RT2570_VERSION_D 4 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* 3562306a36Sopenharmony_ci * Signal information. 3662306a36Sopenharmony_ci * Default offset is required for RSSI <-> dBm conversion. 3762306a36Sopenharmony_ci */ 3862306a36Sopenharmony_ci#define DEFAULT_RSSI_OFFSET 120 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* 4162306a36Sopenharmony_ci * Register layout information. 4262306a36Sopenharmony_ci */ 4362306a36Sopenharmony_ci#define CSR_REG_BASE 0x0400 4462306a36Sopenharmony_ci#define CSR_REG_SIZE 0x0100 4562306a36Sopenharmony_ci#define EEPROM_BASE 0x0000 4662306a36Sopenharmony_ci#define EEPROM_SIZE 0x006e 4762306a36Sopenharmony_ci#define BBP_BASE 0x0000 4862306a36Sopenharmony_ci#define BBP_SIZE 0x0060 4962306a36Sopenharmony_ci#define RF_BASE 0x0004 5062306a36Sopenharmony_ci#define RF_SIZE 0x0010 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* 5362306a36Sopenharmony_ci * Number of TX queues. 5462306a36Sopenharmony_ci */ 5562306a36Sopenharmony_ci#define NUM_TX_QUEUES 2 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci/* 5862306a36Sopenharmony_ci * Control/Status Registers(CSR). 5962306a36Sopenharmony_ci * Some values are set in TU, whereas 1 TU == 1024 us. 6062306a36Sopenharmony_ci */ 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci/* 6362306a36Sopenharmony_ci * MAC_CSR0: ASIC revision number. 6462306a36Sopenharmony_ci */ 6562306a36Sopenharmony_ci#define MAC_CSR0 0x0400 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci/* 6862306a36Sopenharmony_ci * MAC_CSR1: System control. 6962306a36Sopenharmony_ci * SOFT_RESET: Software reset, 1: reset, 0: normal. 7062306a36Sopenharmony_ci * BBP_RESET: Hardware reset, 1: reset, 0, release. 7162306a36Sopenharmony_ci * HOST_READY: Host ready after initialization. 7262306a36Sopenharmony_ci */ 7362306a36Sopenharmony_ci#define MAC_CSR1 0x0402 7462306a36Sopenharmony_ci#define MAC_CSR1_SOFT_RESET FIELD16(0x00000001) 7562306a36Sopenharmony_ci#define MAC_CSR1_BBP_RESET FIELD16(0x00000002) 7662306a36Sopenharmony_ci#define MAC_CSR1_HOST_READY FIELD16(0x00000004) 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci/* 7962306a36Sopenharmony_ci * MAC_CSR2: STA MAC register 0. 8062306a36Sopenharmony_ci */ 8162306a36Sopenharmony_ci#define MAC_CSR2 0x0404 8262306a36Sopenharmony_ci#define MAC_CSR2_BYTE0 FIELD16(0x00ff) 8362306a36Sopenharmony_ci#define MAC_CSR2_BYTE1 FIELD16(0xff00) 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci/* 8662306a36Sopenharmony_ci * MAC_CSR3: STA MAC register 1. 8762306a36Sopenharmony_ci */ 8862306a36Sopenharmony_ci#define MAC_CSR3 0x0406 8962306a36Sopenharmony_ci#define MAC_CSR3_BYTE2 FIELD16(0x00ff) 9062306a36Sopenharmony_ci#define MAC_CSR3_BYTE3 FIELD16(0xff00) 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* 9362306a36Sopenharmony_ci * MAC_CSR4: STA MAC register 2. 9462306a36Sopenharmony_ci */ 9562306a36Sopenharmony_ci#define MAC_CSR4 0X0408 9662306a36Sopenharmony_ci#define MAC_CSR4_BYTE4 FIELD16(0x00ff) 9762306a36Sopenharmony_ci#define MAC_CSR4_BYTE5 FIELD16(0xff00) 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci/* 10062306a36Sopenharmony_ci * MAC_CSR5: BSSID register 0. 10162306a36Sopenharmony_ci */ 10262306a36Sopenharmony_ci#define MAC_CSR5 0x040a 10362306a36Sopenharmony_ci#define MAC_CSR5_BYTE0 FIELD16(0x00ff) 10462306a36Sopenharmony_ci#define MAC_CSR5_BYTE1 FIELD16(0xff00) 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci/* 10762306a36Sopenharmony_ci * MAC_CSR6: BSSID register 1. 10862306a36Sopenharmony_ci */ 10962306a36Sopenharmony_ci#define MAC_CSR6 0x040c 11062306a36Sopenharmony_ci#define MAC_CSR6_BYTE2 FIELD16(0x00ff) 11162306a36Sopenharmony_ci#define MAC_CSR6_BYTE3 FIELD16(0xff00) 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci/* 11462306a36Sopenharmony_ci * MAC_CSR7: BSSID register 2. 11562306a36Sopenharmony_ci */ 11662306a36Sopenharmony_ci#define MAC_CSR7 0x040e 11762306a36Sopenharmony_ci#define MAC_CSR7_BYTE4 FIELD16(0x00ff) 11862306a36Sopenharmony_ci#define MAC_CSR7_BYTE5 FIELD16(0xff00) 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci/* 12162306a36Sopenharmony_ci * MAC_CSR8: Max frame length. 12262306a36Sopenharmony_ci */ 12362306a36Sopenharmony_ci#define MAC_CSR8 0x0410 12462306a36Sopenharmony_ci#define MAC_CSR8_MAX_FRAME_UNIT FIELD16(0x0fff) 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci/* 12762306a36Sopenharmony_ci * Misc MAC_CSR registers. 12862306a36Sopenharmony_ci * MAC_CSR9: Timer control. 12962306a36Sopenharmony_ci * MAC_CSR10: Slot time. 13062306a36Sopenharmony_ci * MAC_CSR11: SIFS. 13162306a36Sopenharmony_ci * MAC_CSR12: EIFS. 13262306a36Sopenharmony_ci * MAC_CSR13: Power mode0. 13362306a36Sopenharmony_ci * MAC_CSR14: Power mode1. 13462306a36Sopenharmony_ci * MAC_CSR15: Power saving transition0 13562306a36Sopenharmony_ci * MAC_CSR16: Power saving transition1 13662306a36Sopenharmony_ci */ 13762306a36Sopenharmony_ci#define MAC_CSR9 0x0412 13862306a36Sopenharmony_ci#define MAC_CSR10 0x0414 13962306a36Sopenharmony_ci#define MAC_CSR11 0x0416 14062306a36Sopenharmony_ci#define MAC_CSR12 0x0418 14162306a36Sopenharmony_ci#define MAC_CSR13 0x041a 14262306a36Sopenharmony_ci#define MAC_CSR14 0x041c 14362306a36Sopenharmony_ci#define MAC_CSR15 0x041e 14462306a36Sopenharmony_ci#define MAC_CSR16 0x0420 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci/* 14762306a36Sopenharmony_ci * MAC_CSR17: Manual power control / status register. 14862306a36Sopenharmony_ci * Allowed state: 0 deep_sleep, 1: sleep, 2: standby, 3: awake. 14962306a36Sopenharmony_ci * SET_STATE: Set state. Write 1 to trigger, self cleared. 15062306a36Sopenharmony_ci * BBP_DESIRE_STATE: BBP desired state. 15162306a36Sopenharmony_ci * RF_DESIRE_STATE: RF desired state. 15262306a36Sopenharmony_ci * BBP_CURRENT_STATE: BBP current state. 15362306a36Sopenharmony_ci * RF_CURRENT_STATE: RF current state. 15462306a36Sopenharmony_ci * PUT_TO_SLEEP: Put to sleep. Write 1 to trigger, self cleared. 15562306a36Sopenharmony_ci */ 15662306a36Sopenharmony_ci#define MAC_CSR17 0x0422 15762306a36Sopenharmony_ci#define MAC_CSR17_SET_STATE FIELD16(0x0001) 15862306a36Sopenharmony_ci#define MAC_CSR17_BBP_DESIRE_STATE FIELD16(0x0006) 15962306a36Sopenharmony_ci#define MAC_CSR17_RF_DESIRE_STATE FIELD16(0x0018) 16062306a36Sopenharmony_ci#define MAC_CSR17_BBP_CURR_STATE FIELD16(0x0060) 16162306a36Sopenharmony_ci#define MAC_CSR17_RF_CURR_STATE FIELD16(0x0180) 16262306a36Sopenharmony_ci#define MAC_CSR17_PUT_TO_SLEEP FIELD16(0x0200) 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci/* 16562306a36Sopenharmony_ci * MAC_CSR18: Wakeup timer register. 16662306a36Sopenharmony_ci * DELAY_AFTER_BEACON: Delay after Tbcn expired in units of 1/16 TU. 16762306a36Sopenharmony_ci * BEACONS_BEFORE_WAKEUP: Number of beacon before wakeup. 16862306a36Sopenharmony_ci * AUTO_WAKE: Enable auto wakeup / sleep mechanism. 16962306a36Sopenharmony_ci */ 17062306a36Sopenharmony_ci#define MAC_CSR18 0x0424 17162306a36Sopenharmony_ci#define MAC_CSR18_DELAY_AFTER_BEACON FIELD16(0x00ff) 17262306a36Sopenharmony_ci#define MAC_CSR18_BEACONS_BEFORE_WAKEUP FIELD16(0x7f00) 17362306a36Sopenharmony_ci#define MAC_CSR18_AUTO_WAKE FIELD16(0x8000) 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci/* 17662306a36Sopenharmony_ci * MAC_CSR19: GPIO control register. 17762306a36Sopenharmony_ci * MAC_CSR19_VALx: GPIO value 17862306a36Sopenharmony_ci * MAC_CSR19_DIRx: GPIO direction: 0 = input; 1 = output 17962306a36Sopenharmony_ci */ 18062306a36Sopenharmony_ci#define MAC_CSR19 0x0426 18162306a36Sopenharmony_ci#define MAC_CSR19_VAL0 FIELD16(0x0001) 18262306a36Sopenharmony_ci#define MAC_CSR19_VAL1 FIELD16(0x0002) 18362306a36Sopenharmony_ci#define MAC_CSR19_VAL2 FIELD16(0x0004) 18462306a36Sopenharmony_ci#define MAC_CSR19_VAL3 FIELD16(0x0008) 18562306a36Sopenharmony_ci#define MAC_CSR19_VAL4 FIELD16(0x0010) 18662306a36Sopenharmony_ci#define MAC_CSR19_VAL5 FIELD16(0x0020) 18762306a36Sopenharmony_ci#define MAC_CSR19_VAL6 FIELD16(0x0040) 18862306a36Sopenharmony_ci#define MAC_CSR19_VAL7 FIELD16(0x0080) 18962306a36Sopenharmony_ci#define MAC_CSR19_DIR0 FIELD16(0x0100) 19062306a36Sopenharmony_ci#define MAC_CSR19_DIR1 FIELD16(0x0200) 19162306a36Sopenharmony_ci#define MAC_CSR19_DIR2 FIELD16(0x0400) 19262306a36Sopenharmony_ci#define MAC_CSR19_DIR3 FIELD16(0x0800) 19362306a36Sopenharmony_ci#define MAC_CSR19_DIR4 FIELD16(0x1000) 19462306a36Sopenharmony_ci#define MAC_CSR19_DIR5 FIELD16(0x2000) 19562306a36Sopenharmony_ci#define MAC_CSR19_DIR6 FIELD16(0x4000) 19662306a36Sopenharmony_ci#define MAC_CSR19_DIR7 FIELD16(0x8000) 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci/* 19962306a36Sopenharmony_ci * MAC_CSR20: LED control register. 20062306a36Sopenharmony_ci * ACTIVITY: 0: idle, 1: active. 20162306a36Sopenharmony_ci * LINK: 0: linkoff, 1: linkup. 20262306a36Sopenharmony_ci * ACTIVITY_POLARITY: 0: active low, 1: active high. 20362306a36Sopenharmony_ci */ 20462306a36Sopenharmony_ci#define MAC_CSR20 0x0428 20562306a36Sopenharmony_ci#define MAC_CSR20_ACTIVITY FIELD16(0x0001) 20662306a36Sopenharmony_ci#define MAC_CSR20_LINK FIELD16(0x0002) 20762306a36Sopenharmony_ci#define MAC_CSR20_ACTIVITY_POLARITY FIELD16(0x0004) 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci/* 21062306a36Sopenharmony_ci * MAC_CSR21: LED control register. 21162306a36Sopenharmony_ci * ON_PERIOD: On period, default 70ms. 21262306a36Sopenharmony_ci * OFF_PERIOD: Off period, default 30ms. 21362306a36Sopenharmony_ci */ 21462306a36Sopenharmony_ci#define MAC_CSR21 0x042a 21562306a36Sopenharmony_ci#define MAC_CSR21_ON_PERIOD FIELD16(0x00ff) 21662306a36Sopenharmony_ci#define MAC_CSR21_OFF_PERIOD FIELD16(0xff00) 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* 21962306a36Sopenharmony_ci * MAC_CSR22: Collision window control register. 22062306a36Sopenharmony_ci */ 22162306a36Sopenharmony_ci#define MAC_CSR22 0x042c 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_ci/* 22462306a36Sopenharmony_ci * Transmit related CSRs. 22562306a36Sopenharmony_ci * Some values are set in TU, whereas 1 TU == 1024 us. 22662306a36Sopenharmony_ci */ 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci/* 22962306a36Sopenharmony_ci * TXRX_CSR0: Security control register. 23062306a36Sopenharmony_ci */ 23162306a36Sopenharmony_ci#define TXRX_CSR0 0x0440 23262306a36Sopenharmony_ci#define TXRX_CSR0_ALGORITHM FIELD16(0x0007) 23362306a36Sopenharmony_ci#define TXRX_CSR0_IV_OFFSET FIELD16(0x01f8) 23462306a36Sopenharmony_ci#define TXRX_CSR0_KEY_ID FIELD16(0x1e00) 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci/* 23762306a36Sopenharmony_ci * TXRX_CSR1: TX configuration. 23862306a36Sopenharmony_ci * ACK_TIMEOUT: ACK Timeout in unit of 1-us. 23962306a36Sopenharmony_ci * TSF_OFFSET: TSF offset in MAC header. 24062306a36Sopenharmony_ci * AUTO_SEQUENCE: Let ASIC control frame sequence number. 24162306a36Sopenharmony_ci */ 24262306a36Sopenharmony_ci#define TXRX_CSR1 0x0442 24362306a36Sopenharmony_ci#define TXRX_CSR1_ACK_TIMEOUT FIELD16(0x00ff) 24462306a36Sopenharmony_ci#define TXRX_CSR1_TSF_OFFSET FIELD16(0x7f00) 24562306a36Sopenharmony_ci#define TXRX_CSR1_AUTO_SEQUENCE FIELD16(0x8000) 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci/* 24862306a36Sopenharmony_ci * TXRX_CSR2: RX control. 24962306a36Sopenharmony_ci * DISABLE_RX: Disable rx engine. 25062306a36Sopenharmony_ci * DROP_CRC: Drop crc error. 25162306a36Sopenharmony_ci * DROP_PHYSICAL: Drop physical error. 25262306a36Sopenharmony_ci * DROP_CONTROL: Drop control frame. 25362306a36Sopenharmony_ci * DROP_NOT_TO_ME: Drop not to me unicast frame. 25462306a36Sopenharmony_ci * DROP_TODS: Drop frame tods bit is true. 25562306a36Sopenharmony_ci * DROP_VERSION_ERROR: Drop version error frame. 25662306a36Sopenharmony_ci * DROP_MCAST: Drop multicast frames. 25762306a36Sopenharmony_ci * DROP_BCAST: Drop broadcast frames. 25862306a36Sopenharmony_ci */ 25962306a36Sopenharmony_ci#define TXRX_CSR2 0x0444 26062306a36Sopenharmony_ci#define TXRX_CSR2_DISABLE_RX FIELD16(0x0001) 26162306a36Sopenharmony_ci#define TXRX_CSR2_DROP_CRC FIELD16(0x0002) 26262306a36Sopenharmony_ci#define TXRX_CSR2_DROP_PHYSICAL FIELD16(0x0004) 26362306a36Sopenharmony_ci#define TXRX_CSR2_DROP_CONTROL FIELD16(0x0008) 26462306a36Sopenharmony_ci#define TXRX_CSR2_DROP_NOT_TO_ME FIELD16(0x0010) 26562306a36Sopenharmony_ci#define TXRX_CSR2_DROP_TODS FIELD16(0x0020) 26662306a36Sopenharmony_ci#define TXRX_CSR2_DROP_VERSION_ERROR FIELD16(0x0040) 26762306a36Sopenharmony_ci#define TXRX_CSR2_DROP_MULTICAST FIELD16(0x0200) 26862306a36Sopenharmony_ci#define TXRX_CSR2_DROP_BROADCAST FIELD16(0x0400) 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci/* 27162306a36Sopenharmony_ci * RX BBP ID registers 27262306a36Sopenharmony_ci * TXRX_CSR3: CCK RX BBP ID. 27362306a36Sopenharmony_ci * TXRX_CSR4: OFDM RX BBP ID. 27462306a36Sopenharmony_ci */ 27562306a36Sopenharmony_ci#define TXRX_CSR3 0x0446 27662306a36Sopenharmony_ci#define TXRX_CSR4 0x0448 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci/* 27962306a36Sopenharmony_ci * TXRX_CSR5: CCK TX BBP ID0. 28062306a36Sopenharmony_ci */ 28162306a36Sopenharmony_ci#define TXRX_CSR5 0x044a 28262306a36Sopenharmony_ci#define TXRX_CSR5_BBP_ID0 FIELD16(0x007f) 28362306a36Sopenharmony_ci#define TXRX_CSR5_BBP_ID0_VALID FIELD16(0x0080) 28462306a36Sopenharmony_ci#define TXRX_CSR5_BBP_ID1 FIELD16(0x7f00) 28562306a36Sopenharmony_ci#define TXRX_CSR5_BBP_ID1_VALID FIELD16(0x8000) 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci/* 28862306a36Sopenharmony_ci * TXRX_CSR6: CCK TX BBP ID1. 28962306a36Sopenharmony_ci */ 29062306a36Sopenharmony_ci#define TXRX_CSR6 0x044c 29162306a36Sopenharmony_ci#define TXRX_CSR6_BBP_ID0 FIELD16(0x007f) 29262306a36Sopenharmony_ci#define TXRX_CSR6_BBP_ID0_VALID FIELD16(0x0080) 29362306a36Sopenharmony_ci#define TXRX_CSR6_BBP_ID1 FIELD16(0x7f00) 29462306a36Sopenharmony_ci#define TXRX_CSR6_BBP_ID1_VALID FIELD16(0x8000) 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci/* 29762306a36Sopenharmony_ci * TXRX_CSR7: OFDM TX BBP ID0. 29862306a36Sopenharmony_ci */ 29962306a36Sopenharmony_ci#define TXRX_CSR7 0x044e 30062306a36Sopenharmony_ci#define TXRX_CSR7_BBP_ID0 FIELD16(0x007f) 30162306a36Sopenharmony_ci#define TXRX_CSR7_BBP_ID0_VALID FIELD16(0x0080) 30262306a36Sopenharmony_ci#define TXRX_CSR7_BBP_ID1 FIELD16(0x7f00) 30362306a36Sopenharmony_ci#define TXRX_CSR7_BBP_ID1_VALID FIELD16(0x8000) 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci/* 30662306a36Sopenharmony_ci * TXRX_CSR8: OFDM TX BBP ID1. 30762306a36Sopenharmony_ci */ 30862306a36Sopenharmony_ci#define TXRX_CSR8 0x0450 30962306a36Sopenharmony_ci#define TXRX_CSR8_BBP_ID0 FIELD16(0x007f) 31062306a36Sopenharmony_ci#define TXRX_CSR8_BBP_ID0_VALID FIELD16(0x0080) 31162306a36Sopenharmony_ci#define TXRX_CSR8_BBP_ID1 FIELD16(0x7f00) 31262306a36Sopenharmony_ci#define TXRX_CSR8_BBP_ID1_VALID FIELD16(0x8000) 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci/* 31562306a36Sopenharmony_ci * TXRX_CSR9: TX ACK time-out. 31662306a36Sopenharmony_ci */ 31762306a36Sopenharmony_ci#define TXRX_CSR9 0x0452 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ci/* 32062306a36Sopenharmony_ci * TXRX_CSR10: Auto responder control. 32162306a36Sopenharmony_ci */ 32262306a36Sopenharmony_ci#define TXRX_CSR10 0x0454 32362306a36Sopenharmony_ci#define TXRX_CSR10_AUTORESPOND_PREAMBLE FIELD16(0x0004) 32462306a36Sopenharmony_ci 32562306a36Sopenharmony_ci/* 32662306a36Sopenharmony_ci * TXRX_CSR11: Auto responder basic rate. 32762306a36Sopenharmony_ci */ 32862306a36Sopenharmony_ci#define TXRX_CSR11 0x0456 32962306a36Sopenharmony_ci 33062306a36Sopenharmony_ci/* 33162306a36Sopenharmony_ci * ACK/CTS time registers. 33262306a36Sopenharmony_ci */ 33362306a36Sopenharmony_ci#define TXRX_CSR12 0x0458 33462306a36Sopenharmony_ci#define TXRX_CSR13 0x045a 33562306a36Sopenharmony_ci#define TXRX_CSR14 0x045c 33662306a36Sopenharmony_ci#define TXRX_CSR15 0x045e 33762306a36Sopenharmony_ci#define TXRX_CSR16 0x0460 33862306a36Sopenharmony_ci#define TXRX_CSR17 0x0462 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci/* 34162306a36Sopenharmony_ci * TXRX_CSR18: Synchronization control register. 34262306a36Sopenharmony_ci */ 34362306a36Sopenharmony_ci#define TXRX_CSR18 0x0464 34462306a36Sopenharmony_ci#define TXRX_CSR18_OFFSET FIELD16(0x000f) 34562306a36Sopenharmony_ci#define TXRX_CSR18_INTERVAL FIELD16(0xfff0) 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci/* 34862306a36Sopenharmony_ci * TXRX_CSR19: Synchronization control register. 34962306a36Sopenharmony_ci * TSF_COUNT: Enable TSF auto counting. 35062306a36Sopenharmony_ci * TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. 35162306a36Sopenharmony_ci * TBCN: Enable Tbcn with reload value. 35262306a36Sopenharmony_ci * BEACON_GEN: Enable beacon generator. 35362306a36Sopenharmony_ci */ 35462306a36Sopenharmony_ci#define TXRX_CSR19 0x0466 35562306a36Sopenharmony_ci#define TXRX_CSR19_TSF_COUNT FIELD16(0x0001) 35662306a36Sopenharmony_ci#define TXRX_CSR19_TSF_SYNC FIELD16(0x0006) 35762306a36Sopenharmony_ci#define TXRX_CSR19_TBCN FIELD16(0x0008) 35862306a36Sopenharmony_ci#define TXRX_CSR19_BEACON_GEN FIELD16(0x0010) 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ci/* 36162306a36Sopenharmony_ci * TXRX_CSR20: Tx BEACON offset time control register. 36262306a36Sopenharmony_ci * OFFSET: In units of usec. 36362306a36Sopenharmony_ci * BCN_EXPECT_WINDOW: Default: 2^CWmin 36462306a36Sopenharmony_ci */ 36562306a36Sopenharmony_ci#define TXRX_CSR20 0x0468 36662306a36Sopenharmony_ci#define TXRX_CSR20_OFFSET FIELD16(0x1fff) 36762306a36Sopenharmony_ci#define TXRX_CSR20_BCN_EXPECT_WINDOW FIELD16(0xe000) 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ci/* 37062306a36Sopenharmony_ci * TXRX_CSR21 37162306a36Sopenharmony_ci */ 37262306a36Sopenharmony_ci#define TXRX_CSR21 0x046a 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci/* 37562306a36Sopenharmony_ci * Encryption related CSRs. 37662306a36Sopenharmony_ci * 37762306a36Sopenharmony_ci */ 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_ci/* 38062306a36Sopenharmony_ci * SEC_CSR0: Shared key 0, word 0 38162306a36Sopenharmony_ci * SEC_CSR1: Shared key 0, word 1 38262306a36Sopenharmony_ci * SEC_CSR2: Shared key 0, word 2 38362306a36Sopenharmony_ci * SEC_CSR3: Shared key 0, word 3 38462306a36Sopenharmony_ci * SEC_CSR4: Shared key 0, word 4 38562306a36Sopenharmony_ci * SEC_CSR5: Shared key 0, word 5 38662306a36Sopenharmony_ci * SEC_CSR6: Shared key 0, word 6 38762306a36Sopenharmony_ci * SEC_CSR7: Shared key 0, word 7 38862306a36Sopenharmony_ci */ 38962306a36Sopenharmony_ci#define SEC_CSR0 0x0480 39062306a36Sopenharmony_ci#define SEC_CSR1 0x0482 39162306a36Sopenharmony_ci#define SEC_CSR2 0x0484 39262306a36Sopenharmony_ci#define SEC_CSR3 0x0486 39362306a36Sopenharmony_ci#define SEC_CSR4 0x0488 39462306a36Sopenharmony_ci#define SEC_CSR5 0x048a 39562306a36Sopenharmony_ci#define SEC_CSR6 0x048c 39662306a36Sopenharmony_ci#define SEC_CSR7 0x048e 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ci/* 39962306a36Sopenharmony_ci * SEC_CSR8: Shared key 1, word 0 40062306a36Sopenharmony_ci * SEC_CSR9: Shared key 1, word 1 40162306a36Sopenharmony_ci * SEC_CSR10: Shared key 1, word 2 40262306a36Sopenharmony_ci * SEC_CSR11: Shared key 1, word 3 40362306a36Sopenharmony_ci * SEC_CSR12: Shared key 1, word 4 40462306a36Sopenharmony_ci * SEC_CSR13: Shared key 1, word 5 40562306a36Sopenharmony_ci * SEC_CSR14: Shared key 1, word 6 40662306a36Sopenharmony_ci * SEC_CSR15: Shared key 1, word 7 40762306a36Sopenharmony_ci */ 40862306a36Sopenharmony_ci#define SEC_CSR8 0x0490 40962306a36Sopenharmony_ci#define SEC_CSR9 0x0492 41062306a36Sopenharmony_ci#define SEC_CSR10 0x0494 41162306a36Sopenharmony_ci#define SEC_CSR11 0x0496 41262306a36Sopenharmony_ci#define SEC_CSR12 0x0498 41362306a36Sopenharmony_ci#define SEC_CSR13 0x049a 41462306a36Sopenharmony_ci#define SEC_CSR14 0x049c 41562306a36Sopenharmony_ci#define SEC_CSR15 0x049e 41662306a36Sopenharmony_ci 41762306a36Sopenharmony_ci/* 41862306a36Sopenharmony_ci * SEC_CSR16: Shared key 2, word 0 41962306a36Sopenharmony_ci * SEC_CSR17: Shared key 2, word 1 42062306a36Sopenharmony_ci * SEC_CSR18: Shared key 2, word 2 42162306a36Sopenharmony_ci * SEC_CSR19: Shared key 2, word 3 42262306a36Sopenharmony_ci * SEC_CSR20: Shared key 2, word 4 42362306a36Sopenharmony_ci * SEC_CSR21: Shared key 2, word 5 42462306a36Sopenharmony_ci * SEC_CSR22: Shared key 2, word 6 42562306a36Sopenharmony_ci * SEC_CSR23: Shared key 2, word 7 42662306a36Sopenharmony_ci */ 42762306a36Sopenharmony_ci#define SEC_CSR16 0x04a0 42862306a36Sopenharmony_ci#define SEC_CSR17 0x04a2 42962306a36Sopenharmony_ci#define SEC_CSR18 0X04A4 43062306a36Sopenharmony_ci#define SEC_CSR19 0x04a6 43162306a36Sopenharmony_ci#define SEC_CSR20 0x04a8 43262306a36Sopenharmony_ci#define SEC_CSR21 0x04aa 43362306a36Sopenharmony_ci#define SEC_CSR22 0x04ac 43462306a36Sopenharmony_ci#define SEC_CSR23 0x04ae 43562306a36Sopenharmony_ci 43662306a36Sopenharmony_ci/* 43762306a36Sopenharmony_ci * SEC_CSR24: Shared key 3, word 0 43862306a36Sopenharmony_ci * SEC_CSR25: Shared key 3, word 1 43962306a36Sopenharmony_ci * SEC_CSR26: Shared key 3, word 2 44062306a36Sopenharmony_ci * SEC_CSR27: Shared key 3, word 3 44162306a36Sopenharmony_ci * SEC_CSR28: Shared key 3, word 4 44262306a36Sopenharmony_ci * SEC_CSR29: Shared key 3, word 5 44362306a36Sopenharmony_ci * SEC_CSR30: Shared key 3, word 6 44462306a36Sopenharmony_ci * SEC_CSR31: Shared key 3, word 7 44562306a36Sopenharmony_ci */ 44662306a36Sopenharmony_ci#define SEC_CSR24 0x04b0 44762306a36Sopenharmony_ci#define SEC_CSR25 0x04b2 44862306a36Sopenharmony_ci#define SEC_CSR26 0x04b4 44962306a36Sopenharmony_ci#define SEC_CSR27 0x04b6 45062306a36Sopenharmony_ci#define SEC_CSR28 0x04b8 45162306a36Sopenharmony_ci#define SEC_CSR29 0x04ba 45262306a36Sopenharmony_ci#define SEC_CSR30 0x04bc 45362306a36Sopenharmony_ci#define SEC_CSR31 0x04be 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ci#define KEY_ENTRY(__idx) \ 45662306a36Sopenharmony_ci ( SEC_CSR0 + ((__idx) * 16) ) 45762306a36Sopenharmony_ci 45862306a36Sopenharmony_ci/* 45962306a36Sopenharmony_ci * PHY control registers. 46062306a36Sopenharmony_ci */ 46162306a36Sopenharmony_ci 46262306a36Sopenharmony_ci/* 46362306a36Sopenharmony_ci * PHY_CSR0: RF switching timing control. 46462306a36Sopenharmony_ci */ 46562306a36Sopenharmony_ci#define PHY_CSR0 0x04c0 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci/* 46862306a36Sopenharmony_ci * PHY_CSR1: TX PA configuration. 46962306a36Sopenharmony_ci */ 47062306a36Sopenharmony_ci#define PHY_CSR1 0x04c2 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ci/* 47362306a36Sopenharmony_ci * MAC configuration registers. 47462306a36Sopenharmony_ci */ 47562306a36Sopenharmony_ci 47662306a36Sopenharmony_ci/* 47762306a36Sopenharmony_ci * PHY_CSR2: TX MAC configuration. 47862306a36Sopenharmony_ci * NOTE: Both register fields are complete dummy, 47962306a36Sopenharmony_ci * documentation and legacy drivers are unclear un 48062306a36Sopenharmony_ci * what this register means or what fields exists. 48162306a36Sopenharmony_ci */ 48262306a36Sopenharmony_ci#define PHY_CSR2 0x04c4 48362306a36Sopenharmony_ci#define PHY_CSR2_LNA FIELD16(0x0002) 48462306a36Sopenharmony_ci#define PHY_CSR2_LNA_MODE FIELD16(0x3000) 48562306a36Sopenharmony_ci 48662306a36Sopenharmony_ci/* 48762306a36Sopenharmony_ci * PHY_CSR3: RX MAC configuration. 48862306a36Sopenharmony_ci */ 48962306a36Sopenharmony_ci#define PHY_CSR3 0x04c6 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_ci/* 49262306a36Sopenharmony_ci * PHY_CSR4: Interface configuration. 49362306a36Sopenharmony_ci */ 49462306a36Sopenharmony_ci#define PHY_CSR4 0x04c8 49562306a36Sopenharmony_ci#define PHY_CSR4_LOW_RF_LE FIELD16(0x0001) 49662306a36Sopenharmony_ci 49762306a36Sopenharmony_ci/* 49862306a36Sopenharmony_ci * BBP pre-TX registers. 49962306a36Sopenharmony_ci * PHY_CSR5: BBP pre-TX CCK. 50062306a36Sopenharmony_ci */ 50162306a36Sopenharmony_ci#define PHY_CSR5 0x04ca 50262306a36Sopenharmony_ci#define PHY_CSR5_CCK FIELD16(0x0003) 50362306a36Sopenharmony_ci#define PHY_CSR5_CCK_FLIP FIELD16(0x0004) 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci/* 50662306a36Sopenharmony_ci * BBP pre-TX registers. 50762306a36Sopenharmony_ci * PHY_CSR6: BBP pre-TX OFDM. 50862306a36Sopenharmony_ci */ 50962306a36Sopenharmony_ci#define PHY_CSR6 0x04cc 51062306a36Sopenharmony_ci#define PHY_CSR6_OFDM FIELD16(0x0003) 51162306a36Sopenharmony_ci#define PHY_CSR6_OFDM_FLIP FIELD16(0x0004) 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_ci/* 51462306a36Sopenharmony_ci * PHY_CSR7: BBP access register 0. 51562306a36Sopenharmony_ci * BBP_DATA: BBP data. 51662306a36Sopenharmony_ci * BBP_REG_ID: BBP register ID. 51762306a36Sopenharmony_ci * BBP_READ_CONTROL: 0: write, 1: read. 51862306a36Sopenharmony_ci */ 51962306a36Sopenharmony_ci#define PHY_CSR7 0x04ce 52062306a36Sopenharmony_ci#define PHY_CSR7_DATA FIELD16(0x00ff) 52162306a36Sopenharmony_ci#define PHY_CSR7_REG_ID FIELD16(0x7f00) 52262306a36Sopenharmony_ci#define PHY_CSR7_READ_CONTROL FIELD16(0x8000) 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ci/* 52562306a36Sopenharmony_ci * PHY_CSR8: BBP access register 1. 52662306a36Sopenharmony_ci * BBP_BUSY: ASIC is busy execute BBP programming. 52762306a36Sopenharmony_ci */ 52862306a36Sopenharmony_ci#define PHY_CSR8 0x04d0 52962306a36Sopenharmony_ci#define PHY_CSR8_BUSY FIELD16(0x0001) 53062306a36Sopenharmony_ci 53162306a36Sopenharmony_ci/* 53262306a36Sopenharmony_ci * PHY_CSR9: RF access register. 53362306a36Sopenharmony_ci * RF_VALUE: Register value + id to program into rf/if. 53462306a36Sopenharmony_ci */ 53562306a36Sopenharmony_ci#define PHY_CSR9 0x04d2 53662306a36Sopenharmony_ci#define PHY_CSR9_RF_VALUE FIELD16(0xffff) 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_ci/* 53962306a36Sopenharmony_ci * PHY_CSR10: RF access register. 54062306a36Sopenharmony_ci * RF_VALUE: Register value + id to program into rf/if. 54162306a36Sopenharmony_ci * RF_NUMBER_OF_BITS: Number of bits used in value (i:20, rfmd:22). 54262306a36Sopenharmony_ci * RF_IF_SELECT: Chip to program: 0: rf, 1: if. 54362306a36Sopenharmony_ci * RF_PLL_LD: Rf pll_ld status. 54462306a36Sopenharmony_ci * RF_BUSY: 1: asic is busy execute rf programming. 54562306a36Sopenharmony_ci */ 54662306a36Sopenharmony_ci#define PHY_CSR10 0x04d4 54762306a36Sopenharmony_ci#define PHY_CSR10_RF_VALUE FIELD16(0x00ff) 54862306a36Sopenharmony_ci#define PHY_CSR10_RF_NUMBER_OF_BITS FIELD16(0x1f00) 54962306a36Sopenharmony_ci#define PHY_CSR10_RF_IF_SELECT FIELD16(0x2000) 55062306a36Sopenharmony_ci#define PHY_CSR10_RF_PLL_LD FIELD16(0x4000) 55162306a36Sopenharmony_ci#define PHY_CSR10_RF_BUSY FIELD16(0x8000) 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_ci/* 55462306a36Sopenharmony_ci * STA_CSR0: FCS error count. 55562306a36Sopenharmony_ci * FCS_ERROR: FCS error count, cleared when read. 55662306a36Sopenharmony_ci */ 55762306a36Sopenharmony_ci#define STA_CSR0 0x04e0 55862306a36Sopenharmony_ci#define STA_CSR0_FCS_ERROR FIELD16(0xffff) 55962306a36Sopenharmony_ci 56062306a36Sopenharmony_ci/* 56162306a36Sopenharmony_ci * STA_CSR1: PLCP error count. 56262306a36Sopenharmony_ci */ 56362306a36Sopenharmony_ci#define STA_CSR1 0x04e2 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_ci/* 56662306a36Sopenharmony_ci * STA_CSR2: LONG error count. 56762306a36Sopenharmony_ci */ 56862306a36Sopenharmony_ci#define STA_CSR2 0x04e4 56962306a36Sopenharmony_ci 57062306a36Sopenharmony_ci/* 57162306a36Sopenharmony_ci * STA_CSR3: CCA false alarm. 57262306a36Sopenharmony_ci * FALSE_CCA_ERROR: False CCA error count, cleared when read. 57362306a36Sopenharmony_ci */ 57462306a36Sopenharmony_ci#define STA_CSR3 0x04e6 57562306a36Sopenharmony_ci#define STA_CSR3_FALSE_CCA_ERROR FIELD16(0xffff) 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ci/* 57862306a36Sopenharmony_ci * STA_CSR4: RX FIFO overflow. 57962306a36Sopenharmony_ci */ 58062306a36Sopenharmony_ci#define STA_CSR4 0x04e8 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci/* 58362306a36Sopenharmony_ci * STA_CSR5: Beacon sent counter. 58462306a36Sopenharmony_ci */ 58562306a36Sopenharmony_ci#define STA_CSR5 0x04ea 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ci/* 58862306a36Sopenharmony_ci * Statistics registers 58962306a36Sopenharmony_ci */ 59062306a36Sopenharmony_ci#define STA_CSR6 0x04ec 59162306a36Sopenharmony_ci#define STA_CSR7 0x04ee 59262306a36Sopenharmony_ci#define STA_CSR8 0x04f0 59362306a36Sopenharmony_ci#define STA_CSR9 0x04f2 59462306a36Sopenharmony_ci#define STA_CSR10 0x04f4 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_ci/* 59762306a36Sopenharmony_ci * BBP registers. 59862306a36Sopenharmony_ci * The wordsize of the BBP is 8 bits. 59962306a36Sopenharmony_ci */ 60062306a36Sopenharmony_ci 60162306a36Sopenharmony_ci/* 60262306a36Sopenharmony_ci * R2: TX antenna control 60362306a36Sopenharmony_ci */ 60462306a36Sopenharmony_ci#define BBP_R2_TX_ANTENNA FIELD8(0x03) 60562306a36Sopenharmony_ci#define BBP_R2_TX_IQ_FLIP FIELD8(0x04) 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_ci/* 60862306a36Sopenharmony_ci * R14: RX antenna control 60962306a36Sopenharmony_ci */ 61062306a36Sopenharmony_ci#define BBP_R14_RX_ANTENNA FIELD8(0x03) 61162306a36Sopenharmony_ci#define BBP_R14_RX_IQ_FLIP FIELD8(0x04) 61262306a36Sopenharmony_ci 61362306a36Sopenharmony_ci/* 61462306a36Sopenharmony_ci * RF registers. 61562306a36Sopenharmony_ci */ 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_ci/* 61862306a36Sopenharmony_ci * RF 1 61962306a36Sopenharmony_ci */ 62062306a36Sopenharmony_ci#define RF1_TUNER FIELD32(0x00020000) 62162306a36Sopenharmony_ci 62262306a36Sopenharmony_ci/* 62362306a36Sopenharmony_ci * RF 3 62462306a36Sopenharmony_ci */ 62562306a36Sopenharmony_ci#define RF3_TUNER FIELD32(0x00000100) 62662306a36Sopenharmony_ci#define RF3_TXPOWER FIELD32(0x00003e00) 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_ci/* 62962306a36Sopenharmony_ci * EEPROM contents. 63062306a36Sopenharmony_ci */ 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ci/* 63362306a36Sopenharmony_ci * HW MAC address. 63462306a36Sopenharmony_ci */ 63562306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_0 0x0002 63662306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE0 FIELD16(0x00ff) 63762306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE1 FIELD16(0xff00) 63862306a36Sopenharmony_ci#define EEPROM_MAC_ADDR1 0x0003 63962306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE2 FIELD16(0x00ff) 64062306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE3 FIELD16(0xff00) 64162306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_2 0x0004 64262306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE4 FIELD16(0x00ff) 64362306a36Sopenharmony_ci#define EEPROM_MAC_ADDR_BYTE5 FIELD16(0xff00) 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ci/* 64662306a36Sopenharmony_ci * EEPROM antenna. 64762306a36Sopenharmony_ci * ANTENNA_NUM: Number of antenna's. 64862306a36Sopenharmony_ci * TX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 64962306a36Sopenharmony_ci * RX_DEFAULT: Default antenna 0: diversity, 1: A, 2: B. 65062306a36Sopenharmony_ci * LED_MODE: 0: default, 1: TX/RX activity, 2: Single (ignore link), 3: rsvd. 65162306a36Sopenharmony_ci * DYN_TXAGC: Dynamic TX AGC control. 65262306a36Sopenharmony_ci * HARDWARE_RADIO: 1: Hardware controlled radio. Read GPIO0. 65362306a36Sopenharmony_ci * RF_TYPE: Rf_type of this adapter. 65462306a36Sopenharmony_ci */ 65562306a36Sopenharmony_ci#define EEPROM_ANTENNA 0x000b 65662306a36Sopenharmony_ci#define EEPROM_ANTENNA_NUM FIELD16(0x0003) 65762306a36Sopenharmony_ci#define EEPROM_ANTENNA_TX_DEFAULT FIELD16(0x000c) 65862306a36Sopenharmony_ci#define EEPROM_ANTENNA_RX_DEFAULT FIELD16(0x0030) 65962306a36Sopenharmony_ci#define EEPROM_ANTENNA_LED_MODE FIELD16(0x01c0) 66062306a36Sopenharmony_ci#define EEPROM_ANTENNA_DYN_TXAGC FIELD16(0x0200) 66162306a36Sopenharmony_ci#define EEPROM_ANTENNA_HARDWARE_RADIO FIELD16(0x0400) 66262306a36Sopenharmony_ci#define EEPROM_ANTENNA_RF_TYPE FIELD16(0xf800) 66362306a36Sopenharmony_ci 66462306a36Sopenharmony_ci/* 66562306a36Sopenharmony_ci * EEPROM NIC config. 66662306a36Sopenharmony_ci * CARDBUS_ACCEL: 0: enable, 1: disable. 66762306a36Sopenharmony_ci * DYN_BBP_TUNE: 0: enable, 1: disable. 66862306a36Sopenharmony_ci * CCK_TX_POWER: CCK TX power compensation. 66962306a36Sopenharmony_ci */ 67062306a36Sopenharmony_ci#define EEPROM_NIC 0x000c 67162306a36Sopenharmony_ci#define EEPROM_NIC_CARDBUS_ACCEL FIELD16(0x0001) 67262306a36Sopenharmony_ci#define EEPROM_NIC_DYN_BBP_TUNE FIELD16(0x0002) 67362306a36Sopenharmony_ci#define EEPROM_NIC_CCK_TX_POWER FIELD16(0x000c) 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci/* 67662306a36Sopenharmony_ci * EEPROM geography. 67762306a36Sopenharmony_ci * GEO: Default geography setting for device. 67862306a36Sopenharmony_ci */ 67962306a36Sopenharmony_ci#define EEPROM_GEOGRAPHY 0x000d 68062306a36Sopenharmony_ci#define EEPROM_GEOGRAPHY_GEO FIELD16(0x0f00) 68162306a36Sopenharmony_ci 68262306a36Sopenharmony_ci/* 68362306a36Sopenharmony_ci * EEPROM BBP. 68462306a36Sopenharmony_ci */ 68562306a36Sopenharmony_ci#define EEPROM_BBP_START 0x000e 68662306a36Sopenharmony_ci#define EEPROM_BBP_SIZE 16 68762306a36Sopenharmony_ci#define EEPROM_BBP_VALUE FIELD16(0x00ff) 68862306a36Sopenharmony_ci#define EEPROM_BBP_REG_ID FIELD16(0xff00) 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci/* 69162306a36Sopenharmony_ci * EEPROM TXPOWER 69262306a36Sopenharmony_ci */ 69362306a36Sopenharmony_ci#define EEPROM_TXPOWER_START 0x001e 69462306a36Sopenharmony_ci#define EEPROM_TXPOWER_SIZE 7 69562306a36Sopenharmony_ci#define EEPROM_TXPOWER_1 FIELD16(0x00ff) 69662306a36Sopenharmony_ci#define EEPROM_TXPOWER_2 FIELD16(0xff00) 69762306a36Sopenharmony_ci 69862306a36Sopenharmony_ci/* 69962306a36Sopenharmony_ci * EEPROM Tuning threshold 70062306a36Sopenharmony_ci */ 70162306a36Sopenharmony_ci#define EEPROM_BBPTUNE 0x0030 70262306a36Sopenharmony_ci#define EEPROM_BBPTUNE_THRESHOLD FIELD16(0x00ff) 70362306a36Sopenharmony_ci 70462306a36Sopenharmony_ci/* 70562306a36Sopenharmony_ci * EEPROM BBP R24 Tuning. 70662306a36Sopenharmony_ci */ 70762306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R24 0x0031 70862306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R24_LOW FIELD16(0x00ff) 70962306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R24_HIGH FIELD16(0xff00) 71062306a36Sopenharmony_ci 71162306a36Sopenharmony_ci/* 71262306a36Sopenharmony_ci * EEPROM BBP R25 Tuning. 71362306a36Sopenharmony_ci */ 71462306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R25 0x0032 71562306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R25_LOW FIELD16(0x00ff) 71662306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R25_HIGH FIELD16(0xff00) 71762306a36Sopenharmony_ci 71862306a36Sopenharmony_ci/* 71962306a36Sopenharmony_ci * EEPROM BBP R24 Tuning. 72062306a36Sopenharmony_ci */ 72162306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R61 0x0033 72262306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R61_LOW FIELD16(0x00ff) 72362306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R61_HIGH FIELD16(0xff00) 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ci/* 72662306a36Sopenharmony_ci * EEPROM BBP VGC Tuning. 72762306a36Sopenharmony_ci */ 72862306a36Sopenharmony_ci#define EEPROM_BBPTUNE_VGC 0x0034 72962306a36Sopenharmony_ci#define EEPROM_BBPTUNE_VGCUPPER FIELD16(0x00ff) 73062306a36Sopenharmony_ci#define EEPROM_BBPTUNE_VGCLOWER FIELD16(0xff00) 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ci/* 73362306a36Sopenharmony_ci * EEPROM BBP R17 Tuning. 73462306a36Sopenharmony_ci */ 73562306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R17 0x0035 73662306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R17_LOW FIELD16(0x00ff) 73762306a36Sopenharmony_ci#define EEPROM_BBPTUNE_R17_HIGH FIELD16(0xff00) 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ci/* 74062306a36Sopenharmony_ci * RSSI <-> dBm offset calibration 74162306a36Sopenharmony_ci */ 74262306a36Sopenharmony_ci#define EEPROM_CALIBRATE_OFFSET 0x0036 74362306a36Sopenharmony_ci#define EEPROM_CALIBRATE_OFFSET_RSSI FIELD16(0x00ff) 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_ci/* 74662306a36Sopenharmony_ci * DMA descriptor defines. 74762306a36Sopenharmony_ci */ 74862306a36Sopenharmony_ci#define TXD_DESC_SIZE ( 5 * sizeof(__le32) ) 74962306a36Sopenharmony_ci#define RXD_DESC_SIZE ( 4 * sizeof(__le32) ) 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_ci/* 75262306a36Sopenharmony_ci * TX descriptor format for TX, PRIO, ATIM and Beacon Ring. 75362306a36Sopenharmony_ci */ 75462306a36Sopenharmony_ci 75562306a36Sopenharmony_ci/* 75662306a36Sopenharmony_ci * Word0 75762306a36Sopenharmony_ci */ 75862306a36Sopenharmony_ci#define TXD_W0_PACKET_ID FIELD32(0x0000000f) 75962306a36Sopenharmony_ci#define TXD_W0_RETRY_LIMIT FIELD32(0x000000f0) 76062306a36Sopenharmony_ci#define TXD_W0_MORE_FRAG FIELD32(0x00000100) 76162306a36Sopenharmony_ci#define TXD_W0_ACK FIELD32(0x00000200) 76262306a36Sopenharmony_ci#define TXD_W0_TIMESTAMP FIELD32(0x00000400) 76362306a36Sopenharmony_ci#define TXD_W0_OFDM FIELD32(0x00000800) 76462306a36Sopenharmony_ci#define TXD_W0_NEW_SEQ FIELD32(0x00001000) 76562306a36Sopenharmony_ci#define TXD_W0_IFS FIELD32(0x00006000) 76662306a36Sopenharmony_ci#define TXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 76762306a36Sopenharmony_ci#define TXD_W0_CIPHER FIELD32(0x20000000) 76862306a36Sopenharmony_ci#define TXD_W0_KEY_ID FIELD32(0xc0000000) 76962306a36Sopenharmony_ci 77062306a36Sopenharmony_ci/* 77162306a36Sopenharmony_ci * Word1 77262306a36Sopenharmony_ci */ 77362306a36Sopenharmony_ci#define TXD_W1_IV_OFFSET FIELD32(0x0000003f) 77462306a36Sopenharmony_ci#define TXD_W1_AIFS FIELD32(0x000000c0) 77562306a36Sopenharmony_ci#define TXD_W1_CWMIN FIELD32(0x00000f00) 77662306a36Sopenharmony_ci#define TXD_W1_CWMAX FIELD32(0x0000f000) 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_ci/* 77962306a36Sopenharmony_ci * Word2: PLCP information 78062306a36Sopenharmony_ci */ 78162306a36Sopenharmony_ci#define TXD_W2_PLCP_SIGNAL FIELD32(0x000000ff) 78262306a36Sopenharmony_ci#define TXD_W2_PLCP_SERVICE FIELD32(0x0000ff00) 78362306a36Sopenharmony_ci#define TXD_W2_PLCP_LENGTH_LOW FIELD32(0x00ff0000) 78462306a36Sopenharmony_ci#define TXD_W2_PLCP_LENGTH_HIGH FIELD32(0xff000000) 78562306a36Sopenharmony_ci 78662306a36Sopenharmony_ci/* 78762306a36Sopenharmony_ci * Word3 78862306a36Sopenharmony_ci */ 78962306a36Sopenharmony_ci#define TXD_W3_IV FIELD32(0xffffffff) 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci/* 79262306a36Sopenharmony_ci * Word4 79362306a36Sopenharmony_ci */ 79462306a36Sopenharmony_ci#define TXD_W4_EIV FIELD32(0xffffffff) 79562306a36Sopenharmony_ci 79662306a36Sopenharmony_ci/* 79762306a36Sopenharmony_ci * RX descriptor format for RX Ring. 79862306a36Sopenharmony_ci */ 79962306a36Sopenharmony_ci 80062306a36Sopenharmony_ci/* 80162306a36Sopenharmony_ci * Word0 80262306a36Sopenharmony_ci */ 80362306a36Sopenharmony_ci#define RXD_W0_UNICAST_TO_ME FIELD32(0x00000002) 80462306a36Sopenharmony_ci#define RXD_W0_MULTICAST FIELD32(0x00000004) 80562306a36Sopenharmony_ci#define RXD_W0_BROADCAST FIELD32(0x00000008) 80662306a36Sopenharmony_ci#define RXD_W0_MY_BSS FIELD32(0x00000010) 80762306a36Sopenharmony_ci#define RXD_W0_CRC_ERROR FIELD32(0x00000020) 80862306a36Sopenharmony_ci#define RXD_W0_OFDM FIELD32(0x00000040) 80962306a36Sopenharmony_ci#define RXD_W0_PHYSICAL_ERROR FIELD32(0x00000080) 81062306a36Sopenharmony_ci#define RXD_W0_CIPHER FIELD32(0x00000100) 81162306a36Sopenharmony_ci#define RXD_W0_CIPHER_ERROR FIELD32(0x00000200) 81262306a36Sopenharmony_ci#define RXD_W0_DATABYTE_COUNT FIELD32(0x0fff0000) 81362306a36Sopenharmony_ci 81462306a36Sopenharmony_ci/* 81562306a36Sopenharmony_ci * Word1 81662306a36Sopenharmony_ci */ 81762306a36Sopenharmony_ci#define RXD_W1_RSSI FIELD32(0x000000ff) 81862306a36Sopenharmony_ci#define RXD_W1_SIGNAL FIELD32(0x0000ff00) 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ci/* 82162306a36Sopenharmony_ci * Word2 82262306a36Sopenharmony_ci */ 82362306a36Sopenharmony_ci#define RXD_W2_IV FIELD32(0xffffffff) 82462306a36Sopenharmony_ci 82562306a36Sopenharmony_ci/* 82662306a36Sopenharmony_ci * Word3 82762306a36Sopenharmony_ci */ 82862306a36Sopenharmony_ci#define RXD_W3_EIV FIELD32(0xffffffff) 82962306a36Sopenharmony_ci 83062306a36Sopenharmony_ci/* 83162306a36Sopenharmony_ci * Macros for converting txpower from EEPROM to mac80211 value 83262306a36Sopenharmony_ci * and from mac80211 value to register value. 83362306a36Sopenharmony_ci */ 83462306a36Sopenharmony_ci#define MIN_TXPOWER 0 83562306a36Sopenharmony_ci#define MAX_TXPOWER 31 83662306a36Sopenharmony_ci#define DEFAULT_TXPOWER 24 83762306a36Sopenharmony_ci 83862306a36Sopenharmony_ci#define TXPOWER_FROM_DEV(__txpower) \ 83962306a36Sopenharmony_ci (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower) 84062306a36Sopenharmony_ci 84162306a36Sopenharmony_ci#define TXPOWER_TO_DEV(__txpower) \ 84262306a36Sopenharmony_ci clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER) 84362306a36Sopenharmony_ci 84462306a36Sopenharmony_ci#endif /* RT2500USB_H */ 845