#ifndef _BIT_TWIDDLE
#define _BIT_TWIDDLE
#define LOWEST_SET_BIT(x) ((((x) - 1) & (x)) ^ (x))
#define GTEQ_POWER(x, p) (((u_long)(x) >> (p)) != 0)
#define MASK_TO_SHIFT2(m) (GTEQ_POWER(LOWEST_SET_BIT((m)), 1) ? 1 : 0)
#define MASK_TO_SHIFT4(m) \
(GTEQ_POWER(LOWEST_SET_BIT((m)), 2) \
? 2 + MASK_TO_SHIFT2((m) >> 2) \
: MASK_TO_SHIFT2((m)))
#define MASK_TO_SHIFT8(m) \
(GTEQ_POWER(LOWEST_SET_BIT((m)), 4) \
? 4 + MASK_TO_SHIFT4((m) >> 4) \
: MASK_TO_SHIFT4((m)))
#define MASK_TO_SHIFT16(m) \
(GTEQ_POWER(LOWEST_SET_BIT((m)), 8) \
? 8 + MASK_TO_SHIFT8((m) >> 8) \
: MASK_TO_SHIFT8((m)))
#define MASK_TO_SHIFT(m) \
(GTEQ_POWER(LOWEST_SET_BIT((m)), 16) \
? 16 + MASK_TO_SHIFT16((m) >> 16) \
: MASK_TO_SHIFT16((m)))
#define MASK_AND_RSHIFT(x, mask) (((x) & (mask)) >> MASK_TO_SHIFT(mask))
#define LSHIFT(x, mask) ((x) << MASK_TO_SHIFT(mask))
#define MASK_AND_REPLACE(reg, val, mask) ((reg & ~mask) | LSHIFT(val, mask))
#define PRESHIFT(m) MASK_AND_RSHIFT((m), (m))
#endif
#define ATW_PAR 0x00
#define ATW_FRCTL 0x04
#define ATW_TDR 0x08
#define ATW_WTDP 0x0C
#define ATW_RDR 0x10
#define ATW_WRDP 0x14
#define ATW_RDB 0x18
#define ATW_CSR3A 0x1C
#define ATW_C_TDBH 0x1C
#define ATW_TDBD 0x20
#define ATW_TDBP 0x24
#define ATW_STSR 0x28
#define ATW_CSR5A 0x2C
#define ATW_C_TDBB 0x2C
#define ATW_NAR 0x30
#define ATW_CSR6A 0x34
#define ATW_IER 0x38
#define ATW_CSR7A 0x3C
#define ATW_LPC 0x40
#define ATW_TEST1 0x44
#define ATW_SPR 0x48
#define ATW_TEST0 0x4C
#define ATW_WCSR 0x50
#define ATW_WPDR 0x54
#define ATW_GPTMR 0x58
#define ATW_GPIO 0x5C
#define ATW_BBPCTL 0x60
#define ATW_SYNCTL 0x64
#define ATW_PLCPHD 0x68
#define ATW_MMIWADDR 0x6C
#define ATW_MMIRADDR1 0x70
#define ATW_MMIRADDR2 0x74
#define ATW_TXBR 0x78
#define ATW_CSR15A 0x7C
#define ATW_ALCSTAT 0x80
#define ATW_TOFS2 0x84
#define ATW_CMDR 0x88
#define ATW_PCIC 0x8C
#define ATW_PMCSR 0x90
#define ATW_PAR0 0x94
#define ATW_PAR1 0x98
#define ATW_MAR0 0x9C
#define ATW_MAR1 0xA0
#define ATW_ATIMDA0 0xA4
#define ATW_ABDA1 0xA8
#define ATW_BSSID0 0xAC
#define ATW_TXLMT 0xB0
#define ATW_MIBCNT 0xB4
#define ATW_BCNT 0xB8
#define ATW_TSFTH 0xBC
#define ATW_TSC 0xC0
#define ATW_SYNRF 0xC4
#define ATW_BPLI 0xC8
#define ATW_CAP0 0xCC
#define ATW_CAP1 0xD0
#define ATW_RMD 0xD4
#define ATW_CFPP 0xD8
#define ATW_TOFS0 0xDC
#define ATW_TOFS1 0xE0
#define ATW_IFST 0xE4
#define ATW_RSPT 0xE8
#define ATW_TSFTL 0xEC
#define ATW_WEPCTL 0xF0
#define ATW_WESK 0xF4
#define ATW_WEPCNT 0xF8
#define ATW_MACTEST 0xFC
#define ATW_FER 0x100
#define ATW_FEMR 0x104
#define ATW_FPSR 0x108
#define ATW_FFER 0x10C
#define ATW_PAR_MWIE (1<<24)
#define ATW_PAR_MRLE (1<<23)
#define ATW_PAR_MRME (1<<21)
#define ATW_PAR_RAP_MASK 0x60000
#define ATW_PAR_CAL_MASK 0xc000
#define ATW_PAR_CAL_PBL 0x0
#define ATW_PAR_CAL_8DW LSHIFT(0x1, ATW_PAR_CAL_MASK)
#define ATW_PAR_CAL_16DW LSHIFT(0x2, ATW_PAR_CAL_MASK)
#define ATW_PAR_CAL_32DW LSHIFT(0x3, ATW_PAR_CAL_MASK)
#define ATW_PAR_PBL_MASK 0x3f00
#define ATW_PAR_PBL_UNLIMITED 0x0
#define ATW_PAR_PBL_1DW LSHIFT(0x1, ATW_PAR_PBL_MASK)
#define ATW_PAR_PBL_2DW LSHIFT(0x2, ATW_PAR_PBL_MASK)
#define ATW_PAR_PBL_4DW LSHIFT(0x4, ATW_PAR_PBL_MASK)
#define ATW_PAR_PBL_8DW LSHIFT(0x8, ATW_PAR_PBL_MASK)
#define ATW_PAR_PBL_16DW LSHIFT(0x16, ATW_PAR_PBL_MASK)
#define ATW_PAR_PBL_32DW LSHIFT(0x32, ATW_PAR_PBL_MASK)
#define ATW_PAR_BLE (1<<7)
#define ATW_PAR_DSL_MASK 0x7c
#define ATW_PAR_BAR (1<<1)
#define ATW_PAR_SWR (1<<0)
#define ATW_FRCTL_PWRMGMT (1<<31)
#define ATW_FRCTL_VER_MASK 0x60000000
#define ATW_FRCTL_ORDER (1<<28)
#define ATW_FRCTL_MAXPSP (1<<27)
#define ATW_C_FRCTL_PRSP (1<<26)
#define ATW_C_FRCTL_DRVBCON (1<<25)
#define ATW_C_FRCTL_DRVLINKCTRL (1<<24)
#define ATW_C_FRCTL_DRVLINKON (1<<23)
#define ATW_C_FRCTL_CTX_DATA (1<<22)
#define ATW_C_FRCTL_RSVFRM (1<<21)
#define ATW_C_FRCTL_CFEND (1<<19)
#define ATW_FRCTL_DOZEFRM (1<<18)
#define ATW_FRCTL_PSAWAKE (1<<17)
#define ATW_FRCTL_PSMODE (1<<16)
#define ATW_FRCTL_AID_MASK 0xffff
#define ATW_INTR_PCF (1<<31)
#define ATW_INTR_BCNTC (1<<30)
#define ATW_INTR_GPINT (1<<29)
#define ATW_INTR_LINKOFF (1<<28)
#define ATW_INTR_ATIMTC (1<<27)
#define ATW_INTR_TSFTF (1<<26)
#define ATW_INTR_TSCZ (1<<25)
#define ATW_INTR_LINKON (1<<24)
#define ATW_INTR_SQL (1<<23)
#define ATW_INTR_WEPTD (1<<22)
#define ATW_INTR_ATIME (1<<21)
#define ATW_INTR_TBTT (1<<20)
#define ATW_INTR_NISS (1<<16)
#define ATW_INTR_AISS (1<<15)
#define ATW_INTR_TEIS (1<<14)
#define ATW_INTR_FBE (1<<13)
#define ATW_INTR_REIS (1<<12)
#define ATW_INTR_GPTT (1<<11)
#define ATW_INTR_RPS (1<<8)
#define ATW_INTR_RDU (1<<7)
#define ATW_INTR_RCI (1<<6)
#define ATW_INTR_TUF (1<<5)
#define ATW_INTR_TRT (1<<4)
#define ATW_INTR_TLT (1<<3)
#define ATW_INTR_TDU (1<<2)
#define ATW_INTR_TPS (1<<1)
#define ATW_INTR_TCI (1<<0)
#define ATW_NAR_TXCF (1<<31)
#define ATW_NAR_HF (1<<30)
#define ATW_NAR_UTR (1<<29)
#define ATW_NAR_PCF (1<<28)
#define ATW_NAR_CFP (1<<27)
#define ATW_C_NAR_APSTA (1<<26)
#define ATW_C_NAR_TDBBE (1<<25)
#define ATW_C_NAR_TDBHE (1<<24)
#define ATW_C_NAR_TDBHT (1<<23)
#define ATW_NAR_SF (1<<21)
#define ATW_NAR_TR_MASK 0xc000
#define ATW_NAR_TR_L64 LSHIFT(0x0, ATW_NAR_TR_MASK)
#define ATW_NAR_TR_L160 LSHIFT(0x2, ATW_NAR_TR_MASK)
#define ATW_NAR_TR_L192 LSHIFT(0x3, ATW_NAR_TR_MASK)
#define ATW_NAR_TR_H96 LSHIFT(0x0, ATW_NAR_TR_MASK)
#define ATW_NAR_TR_H288 LSHIFT(0x2, ATW_NAR_TR_MASK)
#define ATW_NAR_TR_H544 LSHIFT(0x3, ATW_NAR_TR_MASK)
#define ATW_NAR_ST (1<<13)
#define ATW_NAR_OM_MASK 0xc00
#define ATW_NAR_OM_NORMAL 0x0
#define ATW_NAR_OM_LOOPBACK LSHIFT(0x1, ATW_NAR_OM_MASK)
#define ATW_NAR_MM (1<<7)
#define ATW_NAR_PR (1<<6)
#define ATW_NAR_EA (1<<5)
#define ATW_NAR_DISPCF (1<<4)
#define ATW_NAR_PB (1<<3)
#define ATW_NAR_STPDMA (1<<2)
#define ATW_NAR_SR (1<<1)
#define ATW_NAR_CTX (1<<0)
#if 0
#define ATW_IER_NIE (1<<16)
#define ATW_IER_AIE (1<<15)
#define ATW_IER_PCFIE (1<<31)
#define ATW_IER_BCNTCIE (1<<30)
#define ATW_IER_ATIMTCIE (1<<27)
#define ATW_IER_LINKONIE (1<<24)
#define ATW_IER_ATIMIE (1<<21)
#define ATW_IER_TBTTIE (1<<20)
#define ATW_IER_TEIE (1<<14)
#define ATW_IER_REIE (1<<12)
#define ATW_IER_RCIE (1<<6)
#define ATW_IER_TDUIE (1<<2)
#define ATW_IER_TCIE (1<<0)
#define ATW_IER_GPIE (1<<29)
#define ATW_IER_LINKOFFIE (1<<28)
#define ATW_IER_TSFTFIE (1<<26)
#define ATW_IER_TSCIE (1<<25)
#define ATW_IER_SQLIE (1<<23)
#define ATW_IER_WEPIE (1<<22)
#define ATW_IER_FBEIE (1<<13)
#define ATW_IER_GPTIE (1<<11)
#define ATW_IER_RPSIE (1<<8)
#define ATW_IER_RUIE (1<<7)
#define ATW_IER_TUIE (1<<5)
#define ATW_IER_TRTIE (1<<4)
#define ATW_IER_TLTTIE (1<<3)
#define ATW_IER_TPSIE (1<<1)
#endif
#define ATW_LPC_LPCO (1<<16)
#define ATW_LPC_LPC_MASK 0xffff
#define ATW_TEST1_CONTROL (1<<31)
#define ATW_TEST1_DBGREAD_MASK 0x70000000
#define ATW_TEST1_TXWP_MASK 0xe000000
#define ATW_TEST1_TXWP_TDBD LSHIFT(0x0, ATW_TEST1_TXWP_MASK)
#define ATW_TEST1_TXWP_TDBH LSHIFT(0x1, ATW_TEST1_TXWP_MASK)
#define ATW_TEST1_TXWP_TDBB LSHIFT(0x2, ATW_TEST1_TXWP_MASK)
#define ATW_TEST1_TXWP_TDBP LSHIFT(0x3, ATW_TEST1_TXWP_MASK)
#define ATW_TEST1_RSVD0_MASK 0x1ffffc0
#define ATW_TEST1_TESTMODE_MASK 0x30
#define ATW_TEST1_TESTMODE_NORMAL LSHIFT(0x0, ATW_TEST1_TESTMODE_MASK)
#define ATW_TEST1_TESTMODE_MACONLY LSHIFT(0x1, ATW_TEST1_TESTMODE_MASK)
#define ATW_TEST1_TESTMODE_NORMAL2 LSHIFT(0x2, ATW_TEST1_TESTMODE_MASK)
#define ATW_TEST1_TESTMODE_MONITOR LSHIFT(0x3, ATW_TEST1_TESTMODE_MASK)
#define ATW_TEST1_DUMP_MASK 0xf
#define ATW_SPR_SRS (1<<11)
#define ATW_SPR_SDO (1<<3)
#define ATW_SPR_SDI (1<<2)
#define ATW_SPR_SCLK (1<<1)
#define ATW_SPR_SCS (1<<0)
#define ATW_TEST0_BE_MASK 0xe0000000
#define ATW_TEST0_TS_MASK 0x1c000000
#define ATW_TEST0_TS_STOPPED LSHIFT(0, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_FETCH LSHIFT(1, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_WAIT LSHIFT(2, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_READING LSHIFT(3, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_RESERVED1 LSHIFT(4, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_RESERVED2 LSHIFT(5, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_SUSPENDED LSHIFT(6, ATW_TEST0_TS_MASK)
#define ATW_TEST0_TS_CLOSE LSHIFT(7, ATW_TEST0_TS_MASK)
#define ATW_C_TEST0_TS_SUSPENDED LSHIFT(4, ATW_TEST0_TS_MASK)
#define ATW_C_TEST0_TS_CLOSE LSHIFT(5, ATW_TEST0_TS_MASK)
#define ATW_C_TEST0_TS_CLOSELAST LSHIFT(6, ATW_TEST0_TS_MASK)
#define ATW_C_TEST0_TS_FIFOFULL LSHIFT(7, ATW_TEST0_TS_MASK)
#define ATW_TEST0_RS_MASK 0x3800000
#define ATW_TEST0_RS_STOPPED LSHIFT(0, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_FETCH LSHIFT(1, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_CHECK LSHIFT(2, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_WAIT LSHIFT(3, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_SUSPENDED LSHIFT(4, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_CLOSE LSHIFT(5, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_FLUSH LSHIFT(6, ATW_TEST0_RS_MASK)
#define ATW_TEST0_RS_QUEUE LSHIFT(7, ATW_TEST0_RS_MASK)
#define ATW_TEST0_EPNE (1<<18)
#define ATW_TEST0_EPSNM (1<<17)
#define ATW_TEST0_EPTYP_MASK (1<<16)
#define ATW_TEST0_EPTYP_93c66 ATW_TEST0_EPTYP_MASK
#define ATW_TEST0_EPTYP_93c46 0
#define ATW_TEST0_EPRLD (1<<15)
#define ATW_WCSR_CRCT (1<<30)
#define ATW_WCSR_WP1E (1<<29)
#define ATW_WCSR_WP2E (1<<28)
#define ATW_WCSR_WP3E (1<<27)
#define ATW_WCSR_WP4E (1<<26)
#define ATW_WCSR_WP5E (1<<25)
#define ATW_WCSR_BLN_MASK 0xe00000
#define ATW_WCSR_TSFTWE (1<<20)
#define ATW_WCSR_TIMWE (1<<19)
#define ATW_WCSR_ATIMWE (1<<18)
#define ATW_WCSR_KEYWE (1<<17)
#define ATW_WCSR_WFRE (1<<10)
#define ATW_WCSR_MPRE (1<<9)
#define ATW_WCSR_LSOE (1<<8)
#define ATW_WCSR_KEYUP (1<<6)
#define ATW_WCSR_TSFTW (1<<5)
#define ATW_WCSR_TIMW (1<<4)
#define ATW_WCSR_ATIMW (1<<3)
#define ATW_WCSR_WFR (1<<2)
#define ATW_WCSR_MPR (1<<1)
#define ATW_WCSR_LSO (1<<0)
#define ATW_GPTMR_COM_MASK (1<<16)
#define ATW_GPTMR_GTV_MASK 0xffff
#define ATW_GPIO_EC1_MASK 0x3000000
#define ATW_GPIO_LAT_MASK 0x300000
#define ATW_GPIO_INTEN_MASK 0xc0000
#define ATW_GPIO_EN_MASK 0x3f000
#define ATW_GPIO_O_MASK 0xfc0
#define ATW_GPIO_I_MASK 0x3f
#define ATW_BBPCTL_TWI (1<<31)
#define ATW_BBPCTL_RF3KADDR_MASK 0x7f000000
#define ATW_BBPCTL_RF3KADDR_ADDR LSHIFT(0x20, ATW_BBPCTL_RF3KADDR_MASK)
#define ATW_BBPCTL_NEGEDGE_DO (1<<23)
#define ATW_BBPCTL_NEGEDGE_DI (1<<22)
#define ATW_BBPCTL_CCA_ACTLO (1<<21)
#define ATW_BBPCTL_TYPE_MASK 0x1c0000
#define ATW_BBPCTL_WR (1<<17)
#define ATW_BBPCTL_RD (1<<16)
#define ATW_BBPCTL_ADDR_MASK 0xff00
#define ATW_BBPCTL_DATA_MASK 0xff
#define ATW_SYNCTL_WR (1<<31)
#define ATW_SYNCTL_RD (1<<30)
#define ATW_SYNCTL_CS0 (1<<29)
#define ATW_SYNCTL_CS1 (1<<28)
#define ATW_SYNCTL_CAL (1<<27)
#define ATW_SYNCTL_SELCAL (1<<26)
#define ATW_C_SYNCTL_MMICE (1<<25)
#define ATW_SYNCTL_RFTYPE_MASK 0x1c00000
#define ATW_SYNCTL_DATA_MASK 0x3fffff
#define ATW_PLCPHD_SIGNAL_MASK 0xff000000
#define ATW_PLCPHD_SERVICE_MASK 0xff0000
#define ATW_PLCPHD_PMBL (1<<15)
#define ATW_MMIWADDR_LENLO_MASK 0xff000000
#define ATW_MMIWADDR_LENHI_MASK 0xff0000
#define ATW_MMIWADDR_GAIN_MASK 0xff00
#define ATW_MMIWADDR_RATE_MASK 0xff
#define ATW_MMIWADDR_INTERSIL \
(LSHIFT(0x0c, ATW_MMIWADDR_GAIN_MASK) | \
LSHIFT(0x0a, ATW_MMIWADDR_RATE_MASK) | \
LSHIFT(0x0e, ATW_MMIWADDR_LENHI_MASK) | \
LSHIFT(0x10, ATW_MMIWADDR_LENLO_MASK))
#define ATW_MMIWADDR_RFMD \
(LSHIFT(RF3000_TWI_AI|RF3000_GAINCTL, ATW_MMIWADDR_GAIN_MASK) | \
LSHIFT(RF3000_CTL, ATW_MMIWADDR_RATE_MASK))
#define ATW_MMIRADDR1_RSVD_MASK 0xff000000
#define ATW_MMIRADDR1_PWRLVL_MASK 0xff0000
#define ATW_MMIRADDR1_RSSI_MASK 0xff00
#define ATW_MMIRADDR1_RXSTAT_MASK 0xff
#define ATW_MMIRADDR1_INTERSIL \
(LSHIFT(0x7c, ATW_MMIRADDR1_RSSI_MASK) | \
LSHIFT(0x7e, ATW_MMIRADDR1_RXSTAT_MASK))
#define ATW_MMIRADDR1_RFMD \
(LSHIFT(RF3000_RSSI, ATW_MMIRADDR1_RSSI_MASK) | \
LSHIFT(RF3000_RXSTAT, ATW_MMIRADDR1_RXSTAT_MASK))
#define ATW_MMIRADDR2_INTERSIL \
(LSHIFT(0x0, ATW_MMIRADDR2_ID_MASK) | \
LSHIFT(0x10, ATW_MMIRADDR2_RXPECNT_MASK))
#define ATW_MMIRADDR2_RFMD \
(LSHIFT(0x7e, ATW_MMIRADDR2_ID_MASK) | \
LSHIFT(0x10, ATW_MMIRADDR2_RXPECNT_MASK))
#define ATW_MMIRADDR2_ID_MASK 0xff000000
#define ATW_MMIRADDR2_RXPECNT_MASK 0xff0000
#define ATW_MMIRADDR2_PROREXT (1<<15)
#define ATW_MMIRADDR2_PRORLEN_MASK 0x7fff
#define ATW_TXBR_ALCUPDATE_MASK (1<<31)
#define ATW_TXBR_TBCNT_MASK 0x1f0000
#define ATW_TXBR_ALCSET_MASK 0xff00
#define ATW_TXBR_ALCREF_MASK 0xff
#define ATW_ALCSTAT_MCOV_MASK (1<<27)
#define ATW_ALCSTAT_ESOV_MASK (1<<26)
#define ATW_ALCSTAT_MCNT_MASK 0x3ff0000
#define ATW_ALCSTAT_ERSUM_MASK 0xffff
#define ATW_TOFS2_PWR1UP_MASK 0xf0000000
#define ATW_TOFS2_PWR0PAPE_MASK 0xf000000
#define ATW_TOFS2_PWR1PAPE_MASK 0xf00000
#define ATW_TOFS2_PWR0TRSW_MASK 0xf0000
#define ATW_TOFS2_PWR1TRSW_MASK 0xf000
#define ATW_TOFS2_PWR0PE2_MASK 0xf00
#define ATW_TOFS2_PWR1PE2_MASK 0xf0
#define ATW_TOFS2_PWR0TXPE_MASK 0xf
#define ATW_CMDR_PM (1<<19)
#define ATW_CMDR_APM (1<<18)
#define ATW_CMDR_RTE (1<<4)
#define ATW_CMDR_DRT_MASK 0xc
#define ATW_CMDR_DRT_8DW LSHIFT(0x0, ATW_CMDR_DRT_MASK)
#define ATW_CMDR_DRT_16DW LSHIFT(0x1, ATW_CMDR_DRT_MASK)
#define ATW_CMDR_DRT_SF LSHIFT(0x2, ATW_CMDR_DRT_MASK)
#define ATW_CMDR_DRT_RSVD LSHIFT(0x3, ATW_CMDR_DRT_MASK)
#define ATW_CMDR_SINT_MASK (1<<1)
#define ATW_PAR0_PAB0_MASK 0xff
#define ATW_PAR0_PAB1_MASK 0xff00
#define ATW_PAR0_PAB2_MASK 0xff0000
#define ATW_PAR0_PAB3_MASK 0xff000000
#define ATW_C_PAR1_CTD 0xffff0000
#define ATW_PAR1_PAB5_MASK 0xff00
#define ATW_PAR1_PAB4_MASK 0xff
#define ATW_MAR0_MAB3_MASK 0xff000000
#define ATW_MAR0_MAB2_MASK 0xff0000
#define ATW_MAR0_MAB1_MASK 0xff00
#define ATW_MAR0_MAB0_MASK 0xff
#define ATW_MAR1_MAB7_MASK 0xff000000
#define ATW_MAR1_MAB6_MASK 0xff0000
#define ATW_MAR1_MAB5_MASK 0xff00
#define ATW_MAR1_MAB4_MASK 0xff
#define ATW_ATIMDA0_ATIMB3_MASK 0xff000000
#define ATW_ATIMDA0_ATIMB2_MASK 0xff0000
#define ATW_ATIMDA0_ATIMB1_MASK 0xff00
#define ATW_ATIMDA0_ATIMB0_MASK 0xff
#define ATW_ABDA1_BSSIDB5_MASK 0xff000000
#define ATW_ABDA1_BSSIDB4_MASK 0xff0000
#define ATW_ABDA1_ATIMB5_MASK 0xff00
#define ATW_ABDA1_ATIMB4_MASK 0xff
#define ATW_BSSID0_BSSIDB3_MASK 0xff000000
#define ATW_BSSID0_BSSIDB2_MASK 0xff0000
#define ATW_BSSID0_BSSIDB1_MASK 0xff00
#define ATW_BSSID0_BSSIDB0_MASK 0xff
#define ATW_TXLMT_MTMLT_MASK 0xffff0000
#define ATW_TXLMT_SRTYLIM_MASK 0xff
#define ATW_MIBCNT_FFCNT_MASK 0xff000000
#define ATW_MIBCNT_AFCNT_MASK 0xff0000
#define ATW_MIBCNT_RSCNT_MASK 0xff00
#define ATW_MIBCNT_RFCNT_MASK 0xff
#define ATW_BCNT_PLCPH_MASK 0xff0000
#define ATW_BCNT_PLCPL_MASK 0xff00
#define ATW_BCNT_BCNT_MASK 0xff
#define ATW_C_BCNT_EXTEN1 (1<<31)
#define ATW_C_BCNT_BEANLEN1 0x7fff0000
#define ATW_C_BCNT_EXTEN0 (1<<15)
#define ATW_C_BCNT_BEANLEN0 BIT(14,0)
#define ATW_C_TSC_TIMOFS 0xff000000
#define ATW_C_TSC_TIMLEN 0x3ff000
#define ATW_C_TSC_TIMTABSEL (1<<4)
#define ATW_TSC_TSC_MASK 0xf
#define ATW_SYNRF_SELSYN (1<<31)
#define ATW_SYNRF_SELRF (1<<30)
#define ATW_SYNRF_LERF (1<<29)
#define ATW_SYNRF_LEIF (1<<28)
#define ATW_SYNRF_SYNCLK (1<<27)
#define ATW_SYNRF_SYNDATA (1<<26)
#define ATW_SYNRF_PE1 (1<<25)
#define ATW_SYNRF_PE2 (1<<24)
#define ATW_SYNRF_PAPE (1<<23)
#define ATW_C_SYNRF_TRSW (1<<22)
#define ATW_C_SYNRF_TRSWN (1<<21)
#define ATW_SYNRF_INTERSIL_EN (1<<20)
#define ATW_SYNRF_PHYRST (1<<18)
#define ATW_C_SYNRF_RF2958PD ATW_SYNRF_PHYRST
#define ATW_BPLI_BP_MASK 0xffff0000
#define ATW_BPLI_LI_MASK 0xffff
#define ATW_C_CAP0_TIMLEN1 0xff000000
#define ATW_C_CAP0_TIMLEN0 0xff0000
#define ATW_C_CAP0_CWMAX 0xf00
#define ATW_CAP0_RCVDTIM (1<<4)
#define ATW_CAP0_CHN_MASK 0xf
#define ATW_CAP1_CAPI_MASK 0xffff0000
#define ATW_CAP1_ATIMW_MASK 0xffff
#define ATW_RMD_ATIMST (1<<31)
#define ATW_RMD_CFP (1<<30)
#define ATW_RMD_PCNT 0xfff0000
#define ATW_RMD_RMRD_MASK 0xffff
#define ATW_CFPP_CFPP 0xff000000
#define ATW_CFPP_CFPMD 0xffff00
#define ATW_CFPP_DTIMP 0xff
#define ATW_TOFS0_USCNT_MASK 0x3f000000
#define ATW_C_TOFS0_TUCNT_MASK 0x7c00
#define ATW_TOFS0_TUCNT_MASK 0x3ff
#define ATW_TOFS1_TSFTOFSR_MASK 0xff000000
#define ATW_TOFS1_TBTTPRE_MASK 0xffff00
#define ATW_TBTTPRE_MASK 0x3fffc00
#define ATW_TOFS1_TBTTOFS_MASK 0xff
#define ATW_IFST_SLOT_MASK 0xf800000
#define ATW_IFST_SIFS_MASK 0x7f8000
#define ATW_IFST_DIFS_MASK 0x7e00
#define ATW_IFST_EIFS_MASK 0x1ff
#define ATW_RSPT_MART_MASK 0xffff0000
#define ATW_RSPT_MIRT_MASK 0xff00
#define ATW_RSPT_TSFTOFST_MASK 0xff
#define ATW_WEPCTL_WEPENABLE (1<<31)
#define ATW_WEPCTL_AUTOSWITCH (1<<30)
#define ATW_WEPCTL_CURTBL (1<<29)
#define ATW_WEPCTL_WR (1<<28)
#define ATW_WEPCTL_RD (1<<27)
#define ATW_WEPCTL_WEPRXBYP (1<<25)
#define ATW_WEPCTL_SHKEY (1<<24)
#define ATW_WEPCTL_UNKNOWN0 (1<<23)
#define ATW_WEPCTL_TBLADD_MASK 0x1ff
#define ATW_WEP_ENABLED (1<<7)
#define ATW_WEP_104BIT (1<<6)
#define ATW_WESK_DATA_MASK 0xffff
#define ATW_WEPCNT_WIEC_MASK 0xffff
#define ATW_MACTEST_FORCE_IV (1<<23)
#define ATW_MACTEST_FORCE_KEYID (1<<22)
#define ATW_MACTEST_KEYID_MASK 0x300000
#define ATW_MACTEST_MMI_USETXCLK (1<<11)
#define ATW_FER_INTR (1<<15)
#define ATW_FER_GWAKE (1<<4)
#define ATW_FEMR_INTR_EN (1<<15)
#define ATW_FEMR_WAKEUP_EN (1<<14)
#define ATW_FEMR_GWAKE_EN (1<<4)
#define ATW_FPSR_INTR_STATUS (1<<15)
#define ATW_FPSR_WAKEUP_STATUS (1<<4)
#define ATW_FFER_INTA_FORCE (1<<15)
#define ATW_FFER_GWAKE_FORCE (1<<4)
#define ATW_SR_CLASS_CODE (0x00/2)
#define ATW_SR_FORMAT_VERSION (0x02/2)
#define ATW_SR_MAJOR_MASK 0xff
#define ATW_SR_MINOR_MASK 0xff00
#define ATW_SR_MAC00 (0x08/2)
#define ATW_SR_MAC01 (0x0A/2)
#define ATW_SR_MAC10 (0x0C/2)
#define ATW_SR_CSR20 (0x16/2)
#define ATW_SR_ANT_MASK 0x1c00
#define ATW_SR_PWRSCALE_MASK 0x300
#define ATW_SR_CLKSAVE_MASK 0xc0
#define ATW_SR_RFTYPE_MASK 0x38
#define ATW_SR_BBPTYPE_MASK 0x7
#define ATW_SR_CR28_CR03 (0x18/2)
#define ATW_SR_CR28_MASK 0xff00
#define ATW_SR_CR03_MASK 0xff
#define ATW_SR_CTRY_CR29 (0x1A/2)
#define ATW_SR_CTRY_MASK 0xff00
#define COUNTRY_FCC 0
#define COUNTRY_IC 1
#define COUNTRY_ETSI 2
#define COUNTRY_SPAIN 3
#define COUNTRY_FRANCE 4
#define COUNTRY_MMK 5
#define COUNTRY_MMK2 6
#define ATW_SR_CR29_MASK 0xff
#define ATW_SR_PCI_DEVICE (0x20/2)
#define ATW_SR_PCI_VENDOR (0x22/2)
#define ATW_SR_SUB_DEVICE (0x24/2)
#define ATW_SR_SUB_VENDOR (0x26/2)
#define ATW_SR_CR15 (0x28/2)
#define ATW_SR_LOCISPTR (0x2A/2)
#define ATW_SR_HICISPTR (0x2C/2)
#define ATW_SR_CSR18 (0x2E/2)
#define ATW_SR_D0_D1_PWR (0x40/2)
#define ATW_SR_D2_D3_PWR (0x42/2)
#define ATW_SR_CIS_WORDS (0x52/2)
#define ATW_SR_TXPOWER(chnl) (0x54/2 + ((chnl) - 1)/2)
#define ATW_SR_LPF_CUTOFF(chnl) (0x62/2 + ((chnl) - 1)/2)
#define ATW_SR_LNA_GS_THRESH(chnl) (0x70/2 + ((chnl) - 1)/2)
#define ATW_SR_CHECKSUM (0x7e/2)
#define ATW_SR_CIS (0x80/2)
struct atw_txdesc {
u_int32_t at_ctl;
#define at_stat at_ctl
u_int32_t at_flags;
u_int32_t at_buf1;
u_int32_t at_buf2;
};
#define ATW_TXCTL_OWN (1<<31)
#define ATW_TXCTL_DONE (1<<30)
#define ATW_TXCTL_TXDR_MASK 0xff00000
#define ATW_TXCTL_TL_MASK 0xfffff
#define ATW_TXSTAT_OWN ATW_TXCTL_OWN
#define ATW_TXSTAT_DONE ATW_TXCTL_DONE
#define ATW_TXSTAT_ES (1<<29)
#define ATW_TXSTAT_TLT (1<<28)
#define ATW_TXSTAT_TRT (1<<27)
#define ATW_TXSTAT_TUF (1<<26)
#define ATW_TXSTAT_TRO (1<<25)
#define ATW_TXSTAT_SOFBR (1<<24)
#define ATW_TXSTAT_ARC_MASK 0xfff
#define ATW_TXFLAG_IC (1<<31)
#define ATW_TXFLAG_LS (1<<30)
#define ATW_TXFLAG_FS (1<<29)
#define ATW_TXFLAG_TER (1<<25)
#define ATW_TXFLAG_TCH (1<<24)
#define ATW_TXFLAG_TBS2_MASK 0xfff000
#define ATW_TXFLAG_TBS1_MASK 0xfff
struct atw_rxdesc {
u_int32_t ar_stat;
u_int32_t ar_ctl;
u_int32_t ar_buf1;
u_int32_t ar_buf2;
};
#define ar_rssi ar_ctl
#define ATW_RXCTL_RER (1<<25)
#define ATW_RXCTL_RCH (1<<24)
#define ATW_RXCTL_RBS2_MASK 0xfff000
#define ATW_RXCTL_RBS1_MASK 0xfff
#define ATW_RXSTAT_OWN (1<<31)
#define ATW_RXSTAT_ES (1<<30)
#define ATW_RXSTAT_SQL (1<<29)
#define ATW_RXSTAT_DE (1<<28)
#define ATW_RXSTAT_FS (1<<27)
#define ATW_RXSTAT_LS (1<<26)
#define ATW_RXSTAT_PCF (1<<25)
#define ATW_RXSTAT_SFDE (1<<24)
#define ATW_RXSTAT_SIGE (1<<23)
#define ATW_RXSTAT_CRC16E (1<<22)
#define ATW_RXSTAT_RXTOE (1<<21)
#define ATW_RXSTAT_CRC32E (1<<20)
#define ATW_RXSTAT_ICVE (1<<19)
#define ATW_RXSTAT_DA1 (1<<17)
#define ATW_RXSTAT_DA0 (1<<16)
#define ATW_RXSTAT_RXDR_MASK 0xf000
#define ATW_RXSTAT_FL_MASK 0xfff
#define ATW_SRAM_ADDR_INDIVL_KEY 0x0
#define ATW_SRAM_ADDR_SHARED_KEY (0x160 * 2)
#define ATW_SRAM_ADDR_SSID (0x180 * 2)
#define ATW_SRAM_ADDR_SUPRATES (0x191 * 2)
#define ATW_SRAM_MAXSIZE (0x200 * 2)
#define ATW_SRAM_A_SIZE ATW_SRAM_MAXSIZE
#define ATW_SRAM_B_SIZE (0x1c0 * 2)