[kismac] [binaervarianz] r173 - branches/usb-drivers/Sources/Driver/USBJack
- From: svn@xxxxxxxxxxxxxxxx
- To: kismac@xxxxxxxxxxxxx
- Date: Sun, 27 Aug 2006 08:58:37 +0200
Author: gkruse
Date: 2006-08-27 08:58:35 +0200 (Sun, 27 Aug 2006)
New Revision: 173
Added:
branches/usb-drivers/Sources/Driver/USBJack/rt2570.h
Log:
Forgot a very important file
Added: branches/usb-drivers/Sources/Driver/USBJack/rt2570.h
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/rt2570.h 2006-08-27
06:55:07 UTC (rev 172)
+++ branches/usb-drivers/Sources/Driver/USBJack/rt2570.h 2006-08-27
06:58:35 UTC (rev 173)
@@ -0,0 +1,1066 @@
+/***************************************************************************
+ * RT2x00 SourceForge Project - http://rt2x00.sourceforge.net *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * *
+ * Licensed under the GNU GPL *
+ * Original code supplied under license from RaLink Inc, 2004. *
+ ***************************************************************************/
+
+/***************************************************************************
+ * Module Name: rt2570.h
+ *
+ * Abstract:
+ *
+ * Revision History:
+ * Who When What
+ * -------- ---------- -----------------------------
+ * Name Date Modification logs
+ * Jan Lee 2005-06-01 Release
+ ***************************************************************************/
+#define ULONG unsigned long
+#define UCHAR unsigned char
+#define USHORT unsigned short
+
+#define RETRY_LIMIT 3
+
+#ifndef __RT2570_H__
+#define __RT2570_H__
+
+//
+// Control/Status Registers (CSR)
+//
+#define MAC_CSR0 0x00 // ASIC version
+#define MAC_CSR1 0x02 // system control
+#define MAC_CSR2 0x04 // MAC addr0
+#define MAC_CSR3 0x06 // MAC addr1
+#define MAC_CSR4 0x08 // MAC addr2
+#define MAC_CSR5 0x0A // BSSID0
+#define MAC_CSR6 0x0C // BSSID1
+#define MAC_CSR7 0x0E // BSSID2
+#define MAC_CSR8 0x10 // max frame length
+#define MAC_CSR9 0x12 // timer control
+#define MAC_CSR10 0x14 // slot time
+#define MAC_CSR11 0x16 // IFS
+#define MAC_CSR12 0x18 // EIFS
+#define MAC_CSR13 0x1A // power mode0
+#define MAC_CSR14 0x1C // power mode1
+#define MAC_CSR15 0x1E // power saving transition0
+#define MAC_CSR16 0x20 // power saving transition1
+#define MAC_CSR17 0x22 // power state control
+#define MAC_CSR18 0x24 // auto wake-up control
+#define MAC_CSR19 0x26 // GPIO control
+#define MAC_CSR20 0x28 // LED control0
+#define MAC_CSR21 0x2A // LED control1
+#define MAC_CSR22 0x2C // LED control1
+
+#define TXRX_CSR0 0x40 // security control
+#define TXRX_CSR1 0x42 // TX configuration
+#define TXRX_CSR2 0x44 // RX control
+#define TXRX_CSR3 0x46 // CCK RX BBP ID
+#define TXRX_CSR4 0x48 // OFDM RX BBP ID
+#define TXRX_CSR5 0x4A // CCK TX BBP ID0
+#define TXRX_CSR6 0x4C // CCK TX BBP ID1
+#define TXRX_CSR7 0x4E // OFDM TX BBP ID0
+#define TXRX_CSR8 0x50 // OFDM TX BBP ID1
+#define TXRX_CSR9 0x52 // TX ACK time-out
+#define TXRX_CSR10 0x54 // auto responder
control
+#define TXRX_CSR11 0x56 // auto responder basic
rate
+#define TXRX_CSR12 0x58 // ACK/CTS time0
+#define TXRX_CSR13 0x5A // ACK/CTS time1
+#define TXRX_CSR14 0x5C // ACK/CTS time2
+#define TXRX_CSR15 0x5E // ACK/CTS time3
+#define TXRX_CSR16 0x60 // ACK/CTS time4
+#define TXRX_CSR17 0x62 // ACK/CTS time5
+#define TXRX_CSR18 0x64 // Beacon interval
+#define TXRX_CSR19 0x66 // Beacon/sync control
+#define TXRX_CSR20 0x68 // Beacon alignment
+#define TXRX_CSR21 0x6A // blue
+
+//WEP key registers
+#define SEC_CSR0 0x80 // shared key 0, word 0
+#define SEC_CSR1 0x82 // shared key 0, word 1
+#define SEC_CSR2 0x84 // shared key 0, word 2
+#define SEC_CSR3 0x86 // shared key 0, word 3
+#define SEC_CSR4 0x88 // shared key 0, word 4
+#define SEC_CSR5 0x8A // shared key 0, word 5
+#define SEC_CSR6 0x8C // shared key 0, word 6
+#define SEC_CSR7 0x8E // shared key 0, word 7
+#define SEC_CSR8 0x90 // shared key 1, word 0
+#define SEC_CSR9 0x92 // shared key 1, word 1
+#define SEC_CSR10 0x94 // shared key 1, word 2
+#define SEC_CSR11 0x96 // shared key 1, word 3
+#define SEC_CSR12 0x98 // shared key 1, word 4
+#define SEC_CSR13 0x9A // shared key 1, word 5
+#define SEC_CSR14 0x9C // shared key 1, word 6
+#define SEC_CSR15 0x9E // shared key 1, word 7
+#define SEC_CSR16 0xA0 // shared key 2, word 0
+#define SEC_CSR17 0xA2 // shared key 2, word 1
+#define SEC_CSR18 0xA4 // shared key 2, word 2
+#define SEC_CSR19 0xA6 // shared key 2, word 3
+#define SEC_CSR20 0xA8 // shared key 2, word 4
+#define SEC_CSR21 0xAA // shared key 2, word 5
+#define SEC_CSR22 0xAC // shared key 2, word 6
+#define SEC_CSR23 0xAE // shared key 2, word 7
+#define SEC_CSR24 0xB0 // shared key 3, word 0
+#define SEC_CSR25 0xB2 // shared key 3, word 1
+#define SEC_CSR26 0xB4 // shared key 3, word 2
+#define SEC_CSR27 0xB6 // shared key 3, word 3
+#define SEC_CSR28 0xB8 // shared key 3, word 4
+#define SEC_CSR29 0xBA // shared key 3, word 5
+#define SEC_CSR30 0xBC // shared key 3, word 6
+#define SEC_CSR31 0xBE // shared key 3, word 7
+
+//PHY control registers
+#define PHY_CSR0 0xC0 // RF switching timing control
+#define PHY_CSR1 0xC2 // TX PA configuration
+#define PHY_CSR2 0xC4 // TX MAC configuration
+#define PHY_CSR3 0xC6 // RX MAC configuration
+#define PHY_CSR4 0xC8 // interface configuration
+#define PHY_CSR5 0xCA // BBP pre-TX CCK
+#define PHY_CSR6 0xCC // BBP pre-TX OFDM
+#define PHY_CSR7 0xCE // BBP serial control
+#define PHY_CSR8 0xD0 // BBP serial status
+#define PHY_CSR9 0xD2 // RF serial control0
+#define PHY_CSR10 0xD4 // RF serial control1
+
+
+// Statistic Register
+#define STA_CSR0 0xE0 // FCS error
+#define STA_CSR1 0xE2 // PLCP error
+#define STA_CSR2 0xE4 // LONG error
+#define STA_CSR3 0xE6 // CCA false alarm
+#define STA_CSR4 0xE8 // RX FIFO overflow
+#define STA_CSR5 0xEA // Beacon sent counter
+#define STA_CSR6 0xEC
+#define STA_CSR7 0xEE
+#define STA_CSR8 0xF0
+#define STA_CSR9 0xF2
+#define STA_CSR10 0xF4
+
+//
+// BBP & RF definition
+//
+#define BUSY 1
+#define IDLE 0
+
+#define BBP_Version 0x00
+#define BBP_Tx_Configure 2 // R2
+#define BBP_Tx_Tssi 1 // R1,blue
+#define BBP_Rx_Configure 14 // R14
+
+#define PHY_TR_SWITCH_TIME 5 // usec
+
+#define BBP_R17_LOW_SENSIBILITY 0x48
+#define BBP_R17_MID_SENSIBILITY 0x41
+#define BBP_R17_DYNAMIC_UP_BOUND 0x40
+#define RSSI_FOR_LOW_SENSIBILITY -58
+#define RSSI_FOR_MID_SENSIBILITY -74
+//#define RSSI_HIGH_WATERMARK -53
+//#define RSSI_LOW_WATERMARK -58
+
+//-------------------------------------------------------------------------
+// EEPROM definition
+//-------------------------------------------------------------------------
+#define EEDO 0x10
+#define EEDI 0x08
+#define EECS 0x04
+#define EESK 0x02
+#define EERL 0x01
+
+#define EEPROM_WRITE_OPCODE 0x05
+#define EEPROM_READ_OPCODE 0x06
+#define EEPROM_EWDS_OPCODE 0x10
+#define EEPROM_EWEN_OPCODE 0x13
+
+
+
+#define NUM_EEPROM_BBP_PARMS 19
+#define NUM_EEPROM_TX_PARMS 7
+#define NUM_EEPROM_BBP_TUNING_PARMS 7
+#define EEPROM_VERSION_OFFSET 0x2
+#define EEPROM_MAC_ADDRESS_BASE_OFFSET 0x4
+#define EEPROM_BBP_BASE_OFFSET 0x16
+#define EEPROM_TX_PWR_OFFSET 0x3C
+#define EEPROM_TSSI_REF_OFFSET 0x4A
+#define EEPROM_TSSI_DELTA_OFFSET 0x1A
+#define EEPROM_BBP_TUNING_OFFSET 0x60
+#define EEPROM_MAC_STATUS_OFFSET 0x7E
+
+
+//
=================================================================================
+// TX / RX ring descriptor format
+//
=================================================================================
+
+//
+// TX descriptor format
+//
+typedef struct _TXD_STRUC
+{
+ // Word 0
+ ULONG PacketID:4;// PacketID - write by MAC
about Frame translate status
+ ULONG RetryLimit:4;// Retry limit
+ ULONG MoreFrag:1;// More fragment
following this tx ring
+ ULONG ACK:1;// ACK
+ ULONG Timestamp:1;// ins_TSF
+ ULONG Ofdm:1;// OFDM
+ ULONG newseq:1;// new_seq
+ ULONG IFS:2;// IFS
+ ULONG Rsv0:1;// Rev0
+
+ ULONG DataByteCnt:12;// Data byte count
+ ULONG Rsv1:1;// Rev1
+ ULONG Cipher:1;// cliper
+ ULONG KeyID:2;// KeyID
+
+
+
+ // Word 1
+ ULONG IvOffset:6;// IV offset
+ ULONG Aifs:2;// AIFS
+ ULONG CWmin:4;// CWmin
+ ULONG CWmax:4;// CWmax
+ ULONG Rsv2:16;// Rev2
+
+
+
+ // Word 2
+ ULONG PlcpSignal:8;// BBP R0 - PLCP Singal
+ ULONG PlcpService:8;// BBP R1 - PLCP Service
+ ULONG PlcpLengthLow:8;// BBP R2 - PLCP
length_Low
+ ULONG PlcpLengthHigh:8;// BBP R3 - PLCP
length_high
+
+
+
+ // Word 3
+ ULONG Iv;// IV
+
+
+
+ // Word 4
+ ULONG Eiv;// EIV
+}
+TXD_STRUC, *PTXD_STRUC;
+
+//
+// Rx descriptor format
+//
+typedef struct _RXD_STRUC
+{
+ // Word 0
+ ULONG Rev0:1;// Rev0
+ ULONG U2M:1;// u2me
+ ULONG Mcast:1;// mcast
+ ULONG Bcast:1;// bcast
+ ULONG MyBss:1;// my bss
+ ULONG Crc:1;// crc error
+ ULONG Ofdm:1;// OFDM
+ ULONG PhyErr:1;// phy err
+ ULONG Cipher:1;// cipher
+ ULONG CiErr:1;// ci error
+ ULONG Rsv1:6;// Rev1
+
+ ULONG DataByteCnt:12;// data byte count
+ ULONG Rsv2:4;// Rev2
+
+
+
+ // Word 1
+ UCHAR BBR1;// BBP R0 - SIGNAL / rate
+ UCHAR BBR0;// BBP R1 - RSSI
+ UCHAR Rev3[2];// Rev3
+
+
+
+ // Word 2
+ ULONG Iv;// IV
+
+
+
+ // Word 3
+ ULONG Eiv;// EIV
+}
+RXD_STRUC, *PRXD_STRUC;
+
+
+//
=================================================================================
+// CSR Registers
+//
=================================================================================
+
+//
+// CSR1: System control register
+//
+typedef union _CSR1_STRUC {
+ struct {
+ ULONG SoftReset:1; // Software reset bit,
1: reset, 0: normal
+ ULONG Rsvd0:1;
+ ULONG HostReady:1; // Host is ready after
initialization, 1: ready
+ ULONG Rsvd1:29;
+ } field;
+ ULONG word;
+} CSR1_STRUC, *PCSR1_STRUC;
+
+// MAC_CSR2: STA MAC register 0
+typedef union _MAC_CSR2_STRUC {
+ struct {
+ UCHAR Byte0; // MAC address byte 0
+ UCHAR Byte1; // MAC address byte 1
+ } field;
+ USHORT value;
+} MAC_CSR2_STRUC, *PMAC_CSR2_STRUC;
+
+// MAC_CSR3: STA MAC register 1
+typedef union _MAC_CSR3_STRUC {
+ struct {
+ UCHAR Byte2; // MAC address byte 2
+ UCHAR Byte3; // MAC address byte 3
+ } field;
+ USHORT value;
+} MAC_CSR3_STRUC, *PMAC_CSR3_STRUC;
+
+// MAC_CSR4: STA MAC register 2
+typedef union _MAC_CSR4_STRUC {
+ struct {
+ UCHAR Byte4; // MAC address byte 4
+ UCHAR Byte5; // MAC address byte 5
+ } field;
+ USHORT value;
+} MAC_CSR4_STRUC, *PMAC_CSR4_STRUC;
+#if 0//rt2460
+//
+// CSR3: STA MAC register 0
+//
+typedef union _CSR3_STRUC {
+ struct {
+ UCHAR Byte0; // MAC address byte 0
+ UCHAR Byte1; // MAC address byte 1
+ UCHAR Byte2; // MAC address byte 2
+ UCHAR Byte3; // MAC address byte 3
+ } field;
+ ULONG word;
+} CSR3_STRUC, *PCSR3_STRUC;
+
+//
+// CSR4: STA MAC register 1
+//
+typedef union _CSR4_STRUC {
+ struct {
+ UCHAR Byte4; // MAC address byte 4
+ UCHAR Byte5; // MAC address byte 5
+ UCHAR Rsvd0;
+ UCHAR Rsvd1;
+ } field;
+ ULONG word;
+} CSR4_STRUC, *PCSR4_STRUC;
+#endif
+
+//
+// CSR5: BSSID register 0
+//
+typedef union _CSR5_STRUC {
+ struct {
+ UCHAR Byte0; // BSSID byte 0
+ UCHAR Byte1; // BSSID byte 1
+ UCHAR Byte2; // BSSID byte 2
+ UCHAR Byte3; // BSSID byte 3
+ } field;
+ ULONG word;
+} CSR5_STRUC, *PCSR5_STRUC;
+
+//
+// CSR6: BSSID register 1
+//
+typedef union _CSR6_STRUC {
+ struct {
+ UCHAR Byte4; // BSSID byte 4
+ UCHAR Byte5; // BSSID byte 5
+ UCHAR Rsvd0;
+ UCHAR Rsvd1;
+ } field;
+ ULONG word;
+} CSR6_STRUC, *PCSR6_STRUC;
+
+//
+// CSR7: Interrupt source register
+// Write one to clear corresponding bit
+//
+typedef union _CSR7_STRUC {
+ struct {
+ ULONG TbcnExpire:1; // Beacon timer expired
interrupt
+ ULONG TwakeExpire:1; // Wakeup timer expired
interrupt
+ ULONG TatimwExpire:1; // Timer of atim window
expired interrupt
+ ULONG TxRingTxDone:1; // Tx ring transmit
done interrupt
+ ULONG AtimRingTxDone:1; // Atim ring transmit
done interrupt
+ ULONG PrioRingTxDone:1; // Priority ring
transmit done interrupt
+ ULONG RxDone:1; // Receive done
interrupt
+ ULONG Rsvd:25;
+ } field;
+ ULONG word;
+} CSR7_STRUC, *PCSR7_STRUC, INTSRC_STRUC, *PINTSRC_STRUC;
+
+//
+// CSR8: Interrupt Mask register
+// Write one to mask off interrupt
+//
+typedef union _CSR8_STRUC {
+ struct {
+ ULONG TbcnExpire:1; // Beacon timer expired
interrupt mask
+ ULONG TwakeExpire:1; // Wakeup timer expired
interrupt mask
+ ULONG TatimwExpire:1; // Timer of atim window
expired interrupt mask
+ ULONG TxRingTxDone:1; // Tx ring transmit
done interrupt mask
+ ULONG AtimRingTxDone:1; // Atim ring transmit
done interrupt mask
+ ULONG PrioRingTxDone:1; // Priority ring
transmit done interrupt mask
+ ULONG RxDone:1; // Receive done
interrupt mask
+ ULONG Rsvd:25;
+ } field;
+ ULONG word;
+} CSR8_STRUC, *PCSR8_STRUC, INTMSK_STRUC, *PINTMSK_STRUC;
+
+//
+// CSR9: Maximum frame length register
+//
+typedef union _CSR9_STRUC {
+ struct {
+ ULONG Rsvd0:7;
+ ULONG MaxFrameUnit:5; // Maximum frame legth
in 128B unit, default is 12 = 0xC.
+ ULONG Rsvd1:20;
+ } field;
+ ULONG word;
+} CSR9_STRUC, *PCSR9_STRUC;
+
+//
+// CSR11: Back-Off control register
+//
+typedef union _CSR11_STRUC {
+ struct {
+ ULONG CWMin:4; // Bit for Cwmin.
default Cwmin is 31 (2^5 - 1).
+ ULONG CWMax:4; // Bit for Cwmax,
default Cwmax is 1023 (2^10 - 1).
+ ULONG SlotTime:5; // Slot time, default
is 20us for 802.11B
+ ULONG Rsvd:3;
+ ULONG LongRetry:8; // Long retry count
+ ULONG ShortRetry:8; // Short retry count
+ } field;
+ ULONG word;
+} CSR11_STRUC, *PCSR11_STRUC;
+
+#if 0
+//
+// CSR12: Synchronization configuration register 0
+// All uint in 1/16 TU
+//
+typedef union _CSR12_STRUC {
+ struct {
+ ULONG BeaconInterval:16; // CFP maximum
duration, default is 100 TU
+ ULONG CfpMaxDuration:16; // Beacon interval,
default is 100 TU
+ } field;
+ ULONG word;
+} CSR12_STRUC, *PCSR12_STRUC;
+
+//
+// CSR13: Synchronization configuration register 1
+// All uint in 1/16 TU
+//
+typedef union _CSR13_STRUC {
+ struct {
+ ULONG AtimwDuration:16; // ATIM window
duration, default is 10 TU
+ ULONG CfpPeriod:8; // CFP period, default
is 0 TU
+ ULONG Rsvd:8;
+ } field;
+ ULONG word;
+} CSR13_STRUC, *PCSR13_STRUC;
+#endif
+
+//
+// TXRX_CSR18: Synchronization control register
+//
+typedef union _TXRX_CSR18_STRUC {
+ struct {
+ USHORT Offset:4; // Enable TSF
auto counting
+ USHORT Interval:12; // Enable TSF
sync, 00: disable, 01: infra mode, 10: ad-hoc mode
+ } field;
+ USHORT value;
+} TXRX_CSR18_STRUC, *PTXRX_CSR18_STRUC;
+
+//
+// TXRX_CSR19: Synchronization control register
+//
+typedef union _TXRX_CSR19_STRUC {
+ struct {
+ USHORT TsfCount:1; // Enable TSF
auto counting
+ USHORT TsfSync:2; // Enable TSF
sync, 00: disable, 01: infra mode, 10: ad-hoc mode
+ USHORT Tbcn:1; // Enable Tbcn
with reload value
+// ULONG Tcfp:1; // Enable Tcfp
& CFP / CP switching
+// ULONG Tatimw:1; // Enable
Tatimw & ATIM window switching
+ USHORT BeaconGen:1; // Enable beacon
generator
+ USHORT Rsvd:11;
+// ULONG CfpCntPreload:8; // Cfp count preload
value
+// ULONG TbcnPreload:16; // Tbcn preload value
+ } field;
+ USHORT value;
+} TXRX_CSR19_STRUC, *PTXRX_CSR19_STRUC;
+#if 0
+//
+// CSR14: Synchronization control register
+//
+typedef union _CSR14_STRUC {
+ struct {
+ ULONG TsfCount:1; // Enable TSF
auto counting
+ ULONG TsfSync:2; // Enable TSF
sync, 00: disable, 01: infra mode, 10: ad-hoc mode
+ ULONG Tbcn:1; // Enable Tbcn
with reload value
+ ULONG Tcfp:1; // Enable Tcfp
& CFP / CP switching
+ ULONG Tatimw:1; // Enable
Tatimw & ATIM window switching
+ ULONG BeaconGen:1; // Enable beacon
generator
+ ULONG Rsvd:1;
+ ULONG CfpCntPreload:8; // Cfp count preload
value
+ ULONG TbcnPreload:16; // Tbcn preload value
+ } field;
+ ULONG word;
+} CSR14_STRUC, *PCSR14_STRUC;
+#endif
+
+//
+// CSR15: Synchronization status register
+//
+typedef union _CSR15_STRUC {
+ struct {
+ ULONG Cfp:1; // CFP period
+ ULONG Atimw:1; // Atim window period
+ ULONG BeaconSent:1; // Beacon sent
+ ULONG Rsvd:29;
+ } field;
+ ULONG word;
+} CSR15_STRUC, *PCSR15_STRUC;
+
+//
+// CSR18: IFS Timer register 0
+//
+typedef union _CSR18_STRUC {
+ struct {
+ ULONG SIFS:16; // SIFS, default is 10 TU
+ ULONG PIFS:16; // PIFS, default is 30 TU
+ } field;
+ ULONG word;
+} CSR18_STRUC, *PCSR18_STRUC;
+
+//
+// CSR19: IFS Timer register 1
+//
+typedef union _CSR19_STRUC {
+ struct {
+ ULONG DIFS:16; // DIFS, default is 50 TU
+ ULONG EIFS:16; // EIFS, default is 364 TU
+ } field;
+ ULONG word;
+} CSR19_STRUC, *PCSR19_STRUC;
+
+//
+// MAC_CSR18: Wakeup timer register
+//
+typedef union _MAC_CSR18_STRUC {
+ struct {
+ USHORT DelayAfterBcn:8; // Delay after
Tbcn expired in units of 1/16 TU
+ USHORT NumBcnBeforeWakeup:7; // Number of beacon
before wakeup
+ USHORT AutoWake:1; //
Enable auto wakeup / sleep mechanism
+ } field;
+ USHORT value;
+} MAC_CSR18_STRUC, *PMAC_CSR18_STRUC;
+#if 0//RT2560
+//
+// CSR20: Wakeup timer register
+//
+typedef union _CSR20_STRUC {
+ struct {
+ ULONG DelayAfterBcn:16; // Delay after
Tbcn expired in units of 1/16 TU
+ ULONG NumBcnBeforeWakeup:8; // Number of beacon
before wakeup
+ ULONG AutoWake:1; //
Enable auto wakeup / sleep mechanism
+ ULONG Rsvd:7;
+ } field;
+ ULONG word;
+} CSR20_STRUC, *PCSR20_STRUC;
+#endif
+
+//
+// CSR21: EEPROM control register
+//
+typedef union _CSR21_STRUC {
+ struct {
+ ULONG Reload:1; // Reload EEPROM
content, write one to reload, self-cleared.
+ ULONG EepromSK:1;
+ ULONG EepromCS:1;
+ ULONG EepromDI:1;
+ ULONG EepromDO:1;
+ ULONG Type:1; // 1: 93C46, 0:93C66
+ ULONG Rsvd:26;
+ } field;
+ ULONG word;
+} CSR21_STRUC, *PCSR21_STRUC;
+
+//
+// CSR22: CFP control register
+//
+typedef union _CSR22_STRUC {
+ struct {
+ ULONG CfpDurRemain:16; // CFP duration
remain, in units of TU
+ ULONG ReloadCfpDurRemain:1; // Reload CFP duration
remain, write one to reload, self-cleared
+ ULONG Rsvd:15;
+ } field;
+ ULONG word;
+} CSR22_STRUC, *PCSR22_STRUC;
+
+//
=================================================================================
+// TX / RX Registers
+//
=================================================================================
+
+//
+// TXCSR0 <0x0060> : TX Control Register
+//
+typedef union _TXCSR0_STRUC {
+ struct {
+ ULONG KickTx:1; // Kick Tx ring
+ ULONG KickAtim:1; // Kick ATIM ring
+ ULONG KickPrio:1; // Kick priority ring
+ ULONG Abort:1; // Abort all transmit
related ring operation
+ ULONG Rsvd:28;
+ } field;
+ ULONG word;
+} TXCSR0_STRUC, *PTXCSR0_STRUC;
+
+
+//
+// TXRX_CSR0: Security control register
+//
+typedef union _TXRX_CSR0_STRUC {
+ struct {
+ USHORT Algorithm:3;
+ USHORT IVOffset:6;
+ USHORT KeyID:4;
+ USHORT Rsvd:3;
+ } field;
+ USHORT value;
+} TXRX_CSR0_STRUC, *PTXRX_CSR0_STRUC;
+//
+// TXCSR1 <0x0064> : TX Configuration Register
+//
+typedef union _TXCSR1_STRUC {
+ struct {
+ ULONG AckTimeOut:9; // Ack timeout, default
= SIFS + 2*SLOT_ACKtime @ 1Mbps
+ ULONG AckConsumeTime:9; // ACK consume time,
default = SIFS + ACKtime @ 1Mbps
+ ULONG TsFOffset:6; // Insert Tsf offset
+ ULONG AutoResponder:1; // enable auto
responder which include ACK & CTS
+ ULONG Reserved:7;
+ } field;
+ ULONG word;
+} TXCSR1_STRUC, *PTXCSR1_STRUC;
+
+//
+// TXCSR2: Tx descriptor configuration register
+//
+typedef union _TXCSR2_STRUC {
+ struct {
+ ULONG TxDSize:8; // Tx descriptor size,
default is 32
+ ULONG NumTxD:8; // Number of TxD in ring
+ ULONG NumAtimD:8; // Number of AtimD in
ring
+ ULONG NumPrioD:8; // Number of PriorityD
in ring
+ } field;
+ ULONG word;
+} TXCSR2_STRUC, *PTXCSR2_STRUC;
+
+//
+// TXCSR7: Auto responder control register
+//
+typedef union _TXCSR7_STRUC {
+ struct {
+ ULONG ARPowerManage:1; // Auto responder power
management bit
+ ULONG Rsvd:31;
+ } field;
+ ULONG word;
+} TXCSR7_STRUC, *PTXCSR7_STRUC;
+
+//
+// RXCSR0 <0x0080> : RX Control Register
+//
+typedef union _RXCSR0_STRUC {
+ struct {
+ ULONG DisableRx:1; // Disable Rx engine
+ ULONG DropCRC:1; // Drop CRC
error
+ ULONG DropPhysical:1; // Drop physical error
+ ULONG DropControl:1; // Drop control frame
+ ULONG DropNotToMe:1; // Drop not to me
unicast frame
+ ULONG DropToDs:1; // Drop fram
ToDs bit is true
+ ULONG DropVersionErr:1; // Drop version error
frame
+ ULONG PassCRC:1; // Pass all
receive packet to host with CRC attached
+ ULONG Reserved:24;
+ } field;
+ ULONG word;
+} RXCSR0_STRUC, *PRXCSR0_STRUC;
+
+//
+// RXCSR1: RX descriptor configuration register
+//
+typedef union _RXCSR1_STRUC {
+ struct {
+ ULONG RxDSize:8; // Rx descriptor size,
default is 32B.
+ ULONG NumRxD:8; // Number of RxD in
ring.
+ ULONG Rsvd:16;
+ } field;
+ ULONG word;
+} RXCSR1_STRUC, *PRXCSR1_STRUC;
+
+//
+// RXCSR3: BBP ID register for Rx operation
+//
+typedef union _RXCSR3_STRUC {
+ struct {
+ ULONG IdBbp0:7; // BBP register
0 ID
+ ULONG ValidBbp0:1; // BBP register 0 ID is
valid or not
+ ULONG IdBbp1:7; // BBP register
1 ID
+ ULONG ValidBbp1:1; // BBP register 1 ID is
valid or not
+ ULONG IdBbp2:7; // BBP register
2 ID
+ ULONG ValidBbp2:1; // BBP register 2 ID is
valid or not
+ ULONG IdBbp3:7; // BBP register
3 ID
+ ULONG ValidBbp3:1; // BBP register 3 ID is
valid or not
+ } field;
+ ULONG word;
+} RXCSR3_STRUC, *PRXCSR3_STRUC;
+
+//
+// RXCSR4: BBP ID register for Rx operation
+//
+typedef union _RXCSR4_STRUC {
+ struct {
+ ULONG IdBbp4:7; // BBP register
4 ID
+ ULONG ValidBbp4:1; // BBP register 4 ID is
valid or not
+ ULONG IdBbp5:7; // BBP register
5 ID
+ ULONG ValidBbp5:1; // BBP register 5 ID is
valid or not
+ ULONG Rsvd:16;
+ } field;
+ ULONG word;
+} RXCSR4_STRUC, *PRXCSR4_STRUC;
+
+//
+// ARCSR0: Auto Responder PLCP value register 0
+//
+typedef union _ARCSR0_STRUC {
+ struct {
+ ULONG ArBbpData0:8; // Auto responder BBP
register 0 data
+ ULONG ArBbpId0:8; // Auto
responder BBP register 0 Id
+ ULONG ArBbpData1:8; // Auto responder BBP
register 1 data
+ ULONG ArBbpId1:8; // Auto
responder BBP register 1 Id
+ } field;
+ ULONG word;
+} ARCSR0_STRUC, *PARCSR0_STRUC;
+
+//
+// ARCSR0: Auto Responder PLCP value register 1
+//
+typedef union _ARCSR1_STRUC {
+ struct {
+ ULONG ArBbpData2:8; // Auto responder BBP
register 2 data
+ ULONG ArBbpId2:8; // Auto
responder BBP register 2 Id
+ ULONG ArBbpData3:8; // Auto responder BBP
register 3 data
+ ULONG ArBbpId3:8; // Auto
responder BBP register 3 Id
+ } field;
+ ULONG word;
+} ARCSR1_STRUC, *PARCSR1_STRUC;
+
+//
=================================================================================
+// Miscellaneous Registers
+//
=================================================================================
+
+//
+// PCISR: PCI control register
+//
+typedef union _PCICSR_STRUC {
+ struct {
+ ULONG BigEndian:1; // 1: big endian, 0:
little endian
+ ULONG RxThreshold:2; // Rx threshold in DW
to start PCI access
+
// 01: 8DW, 10: 4DW, 11: 32DW, default 00: 16DW
+ ULONG TxThreshold:2; // Tx threshold in DW
to start PCI access
+
// 01: 1DW, 10: 4DW, 11: store & forward, default 00: 0DW
+ ULONG BurstLength:2; // PCI burst length
+
// 01: 8DW, 10: 16DW, 11:32DW, default 00: 4DW
+ ULONG EnableClk:1; // Enable CLK_RUN, PCI
clock can't going down to non-operational
+ ULONG Rsvd:24;
+ } field;
+ ULONG word;
+} PCICSR_STRUC, *PPCICSR_STRUC;
+
+//
+// PWRCSR0: Power mode configuration register
+//
+
+//
+// PSCSR0: Power saving delay time register 0
+//
+
+//
+// PSCSR1: Power saving delay time register 1
+//
+
+//
+// PSCSR2: Power saving delay time register 2
+//
+
+//
+// PSCSR3: Power saving delay time register 3
+//
+
+//
+// MAC_CSR17: Manual power control / status register
+//
+typedef union _MAC_CSR17_STRUC {
+ struct {
+ USHORT SetState:1;
+ USHORT BbpDesireState:2;
+ USHORT RfDesireState:2;
+ USHORT BbpCurrState:2;
+ USHORT RfCurrState:2;
+ USHORT PutToSleep:1;
+ USHORT Rsvd:6;
+ } field;
+ USHORT value;
+} MAC_CSR17_STRUC, *PMAC_CSR17_STRUC;
+#if 0//RT2560
+//
+// PWRCSR1: Manual power control / status register
+//
+typedef union _PWRCSR1_STRUC {
+ struct {
+ ULONG SetState:1;
+ ULONG BbpDesireState:2;
+ ULONG RfDesireState:2;
+ ULONG BbpCurrState:2;
+ ULONG RfCurrState:2;
+ ULONG PutToSleep:1;
+ ULONG Rsvd:22;
+ } field;
+ ULONG word;
+} PWRCSR1_STRUC, *PPWRCSR1_STRUC;
+#endif
+
+//
+// TIMECSR: Timer control register
+//
+
+//
+// MACCSR0: MAC configuration register 0
+//
+
+//
+// MACCSR1: MAC configuration register 1
+//
+typedef union _MACCSR1_STRUC {
+ struct {
+ ULONG KickRx:1; // Kick
one-shot Rx in one-shot Rx mode
+ ULONG OneShotRxMode:1; // Enable one-shot Rx
mode for debugging
+ ULONG BbpRxResetMode:1; // Ralink BBP RX reset
mode
+ ULONG AutoTxBbp:1; // Auto Tx logic access
BBP control register
+ ULONG AutoRxBbp:1; // Auto Rx logic access
BBP control register
+ ULONG LoopBack:2; // Loopback
mode. 00: normal, 01: internal, 10: external, 11:rsvd.
+ ULONG IntersilIF:1; // Intersil IF
calibration pin
+ ULONG Rsvd:24;
+ } field;
+ ULONG word;
+} MACCSR1_STRUC, *PMACCSR1_STRUC;
+
+//
+// RALINKCSR: Ralink Rx auto-reset BBCR
+//
+typedef union _RALINKCSR_STRUC {
+ struct {
+ ULONG ArBbpData0:8; // Auto reset BBP
register 0 data
+ ULONG ArBbpId0:7; // Auto reset
BBP register 0 Id
+ ULONG ArBbpValid0:1; // Auto reset BBP
register 0 is valid
+ ULONG ArBbpData1:8; // Auto reset BBP
register 1 data
+ ULONG ArBbpId1:7; // Auto reset
BBP register 1 Id
+ ULONG ArBbpValid1:1; // Auto reset BBP
register 1 is valid
+ } field;
+ ULONG word;
+} RALINKCSR_STRUC, *PRALINKCSR_STRUC;
+
+//
+// BCNCSR: Beacon interval control register
+//
+typedef union _BCNCSR_STRUC {
+ struct {
+ ULONG Change:1; // Write one to change
beacon interval
+ ULONG DeltaTime:4; // The delta time value
+ ULONG NumBcn:8; // Delta time value or
number of beacon according to mode
+ ULONG Mode:2; // please refer to ASIC
specs.
+ ULONG Plus:1; // plus or minus delta
time value
+ ULONG Rsvd:16;
+ } field;
+ ULONG word;
+} BCNCSR_STRUC, *PBCNCSR_STRUC;
+
+typedef union _PHY_CSR7_STRUC {
+ struct {
+ USHORT Data:8; // BBP data
+ USHORT RegID:7; // BBP register
ID
+ USHORT WriteControl:1; // 1: Write, 0: Read
+ } field;
+ USHORT value;
+} PHY_CSR7_STRUC, *PPHY_CSR7_STRUC;
+
+typedef union _PHY_CSR8_STRUC {
+ struct {
+ USHORT Busy:1; // 1: ASIC is
busy execute BBP programming.
+ USHORT Rsvd:15;
+ } field;
+ USHORT value;
+} PHY_CSR8_STRUC, *PPHY_CSR8_STRUC;
+
+typedef union _PHY_CSR10_STRUC {
+ struct {
+ USHORT RFRegValue:8; // Register value
(include register id) serial out to RF/IF chip.
+ USHORT NumberOfBits:5; // Number of bits used
in RFRegValue (I:20, RFMD:22)
+ USHORT IFSelect:1; // 1: select IF
to program, 0: select RF to program
+ USHORT PLL_LD:1; // RF PLL_LD
status
+ USHORT Busy:1; // 1: ASIC is
busy execute RF programming.
+ } field;
+ USHORT value;
+} PHY_CSR10_STRUC, *PPHY_CSR10_STRUC;
+#if 0//rt2460
+//
+// BBPCSR: BBP serial control register
+//
+typedef union _BBPCSR_STRUC {
+ struct {
+ ULONG Value:8; // Register
value to program into BBP
+ ULONG RegNum:7; // Selected
BBP register
+ ULONG Busy:1; // 1: ASIC is
busy execute BBP programming.
+ ULONG WriteControl:1; // 1: Write BBP, 0:
Read BBP
+ ULONG Rsvd:15;
+ } field;
+ ULONG word;
+} BBPCSR_STRUC, *PBBPCSR_STRUC;
+
+//
+// RFCSR: RF serial control register
+//
+typedef union _RFCSR_STRUC {
+ struct {
+ ULONG RFRegValue:24; // Register value
(include register id) serial out to RF/IF chip.
+ ULONG NumberOfBits:5; // Number of bits used
in RFRegValue (I:20, RFMD:22)
+ ULONG IFSelect:1; // 1: select IF
to program, 0: select RF to program
+ ULONG PLL_LD:1; // RF PLL_LD
status
+ ULONG Busy:1; // 1: ASIC is
busy execute RF programming.
+ } field;
+ ULONG word;
+} RFCSR_STRUC, *PRFCSR_STRUC;
+#endif
+
+//
+// LEDCSR: LED control register
+//
+typedef union _LEDCSR_STRUC {
+ struct {
+ ULONG OnPeriod:8; // On period,
default 70ms
+ ULONG OffPeriod:8; // Off period, default
30ms
+ ULONG Link:1; // 1: linkup,
0: linkoff
+ ULONG Activity:1; // 1: active,
0: idle
+ ULONG Rsvd:14;
+ } field;
+ ULONG word;
+} LEDCSR_STRUC, *PLEDCSR_STRUC;
+
+//
+// GPIOCSR: GPIO control register
+//
+typedef union _GPIOCSR_STRUC {
+ struct {
+ ULONG Bit0:1;
+ ULONG Bit1:1;
+ ULONG Bit2:1;
+ ULONG Bit3:1;
+ ULONG Bit4:1;
+ ULONG Bit5:1;
+ ULONG Bit6:1;
+ ULONG Bit7:1;
+ ULONG Rsvd:24;
+ } field;
+ ULONG word;
+} GPIOCSR_STRUC, *PGPIOCSR_STRUC;
+
+//
+// TXRX_CSR20: Tx BEACON offset time control register
+//
+typedef union _TXRX_CSR20_STRUC {
+ struct {
+ USHORT Offset:13; // in units of usec
+ USHORT BeaconExpectWindow:3; // 2^CwMin
+ } field;
+ USHORT value;
+} TXRX_CSR20_STRUC, *PTXRX_CSR20_STRUC;
+#if 0
+//
+// BCNCSR1: Tx BEACON offset time control register
+//
+typedef union _BCNCSR1_STRUC {
+ struct {
+ USHORT Preload; // in units of usec
+ USHORT Rsvd;
+ } field;
+ ULONG word;
+} BCNCSR1_STRUC, *PBCNCSR1_STRUC;
+#endif
+
+//
+// MACCSR2: TX_PE to RX_PE turn-around time control register
+//
+typedef union _MACCSR2_STRUC {
+ struct {
+ ULONG Delay:8; // in units of PCI clock cycle
+ ULONG Rsvd:24;
+ } field;
+ ULONG word;
+} MACCSR2_STRUC, *PMACCSR2_STRUC;
+
+//
+// EEPROM antenna select format
+//
+typedef union _EEPROM_ANTENNA_STRUC {
+ struct {
+ USHORT NumOfAntenna:2; // Number of
antenna
+ USHORT TxDefaultAntenna:2; // default of
antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0)
+ USHORT RxDefaultAntenna:2; // default of
antenna, 0: diversity, 1:antenna-A, 2:antenna-B reserved (default = 0)
+ USHORT LedMode:3; // 0-default mode, 1:TX/RX
activity mode, 2: Single LED (didn't care about link), 3: reserved
+ USHORT DynamicTxAgcControl:1;
+ USHORT HardwareRadioControl:1; // 1: Hardware
controlled radio enabled, Read GPIO0 required.
+ USHORT RfType:5; // see E2PROM document
+ } field;
+ USHORT word;
+} EEPROM_ANTENNA_STRUC, *PEEPROM_ANTENNA_STRUC;
+
+typedef union _EEPROM_NIC_CINFIG2_STRUC {
+ struct {
+ USHORT CardbusAcceleration:1; // !!! NOTE: 0 -
enable, 1 - disable
+ USHORT DynamicBbpTuning:1; // !!! NOTE: 0
- enable, 1 - disable
+ USHORT CckTxPower:2; // CCK TX power
compensation
+ USHORT Rsv:12; // must be 0
+ } field;
+ USHORT word;
+} EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC;
+
+typedef union _EEPROM_TX_PWR_STRUC {
+ struct {
+ UCHAR Byte0; // Low Byte
+ UCHAR Byte1; // High Byte
+ } field;
+ USHORT word;
+} EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC;
+
+#endif // __RT2570_H__
Other related posts:
- » [kismac] [binaervarianz] r173 - branches/usb-drivers/Sources/Driver/USBJack