[BACK]Return to if_ralreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / usb

Annotation of sys/dev/usb/if_ralreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: if_ralreg.h,v 1.12 2006/11/13 20:06:38 damien Exp $  */
                      2:
                      3: /*-
                      4:  * Copyright (c) 2005, 2006
                      5:  *     Damien Bergamini <damien.bergamini@free.fr>
                      6:  *
                      7:  * Permission to use, copy, modify, and distribute this software for any
                      8:  * purpose with or without fee is hereby granted, provided that the above
                      9:  * copyright notice and this permission notice appear in all copies.
                     10:  *
                     11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     18:  */
                     19:
                     20: #define RAL_RX_DESC_SIZE       (sizeof (struct ural_rx_desc))
                     21: #define RAL_TX_DESC_SIZE       (sizeof (struct ural_tx_desc))
                     22:
                     23: #define RAL_CONFIG_NO  1
                     24: #define RAL_IFACE_INDEX        0
                     25:
                     26: #define RAL_WRITE_MAC          0x02
                     27: #define RAL_READ_MAC           0x03
                     28: #define RAL_WRITE_MULTI_MAC    0x06
                     29: #define RAL_READ_MULTI_MAC     0x07
                     30: #define RAL_READ_EEPROM                0x09
                     31:
                     32: /*
                     33:  * MAC registers.
                     34:  */
                     35: #define RAL_MAC_CSR0   0x0400  /* ASIC Version */
                     36: #define RAL_MAC_CSR1   0x0402  /* System control */
                     37: #define RAL_MAC_CSR2   0x0404  /* MAC addr0 */
                     38: #define RAL_MAC_CSR3   0x0406  /* MAC addr1 */
                     39: #define RAL_MAC_CSR4   0x0408  /* MAC addr2 */
                     40: #define RAL_MAC_CSR5   0x040a  /* BSSID0 */
                     41: #define RAL_MAC_CSR6   0x040c  /* BSSID1 */
                     42: #define RAL_MAC_CSR7   0x040e  /* BSSID2 */
                     43: #define RAL_MAC_CSR8   0x0410  /* Max frame length */
                     44: #define RAL_MAC_CSR9   0x0412  /* Timer control */
                     45: #define RAL_MAC_CSR10  0x0414  /* Slot time */
                     46: #define RAL_MAC_CSR11  0x0416  /* IFS */
                     47: #define RAL_MAC_CSR12  0x0418  /* EIFS */
                     48: #define RAL_MAC_CSR13  0x041a  /* Power mode0 */
                     49: #define RAL_MAC_CSR14  0x041c  /* Power mode1 */
                     50: #define RAL_MAC_CSR15  0x041e  /* Power saving transition0 */
                     51: #define RAL_MAC_CSR16  0x0420  /* Power saving transition1 */
                     52: #define RAL_MAC_CSR17  0x0422  /* Power state control */
                     53: #define RAL_MAC_CSR18  0x0424  /* Auto wake-up control */
                     54: #define RAL_MAC_CSR19  0x0426  /* GPIO control */
                     55: #define RAL_MAC_CSR20  0x0428  /* LED control0 */
                     56: #define RAL_MAC_CSR22  0x042c  /* XXX not documented */
                     57:
                     58: /*
                     59:  * Tx/Rx Registers.
                     60:  */
                     61: #define RAL_TXRX_CSR0  0x0440  /* Security control */
                     62: #define RAL_TXRX_CSR2  0x0444  /* Rx control */
                     63: #define RAL_TXRX_CSR5  0x044a  /* CCK Tx BBP ID0 */
                     64: #define RAL_TXRX_CSR6  0x044c  /* CCK Tx BBP ID1 */
                     65: #define RAL_TXRX_CSR7  0x044e  /* OFDM Tx BBP ID0 */
                     66: #define RAL_TXRX_CSR8  0x0450  /* OFDM Tx BBP ID1 */
                     67: #define RAL_TXRX_CSR10 0x0454  /* Auto responder control */
                     68: #define RAL_TXRX_CSR11 0x0456  /* Auto responder basic rate */
                     69: #define RAL_TXRX_CSR18 0x0464  /* Beacon interval */
                     70: #define RAL_TXRX_CSR19 0x0466  /* Beacon/sync control */
                     71: #define RAL_TXRX_CSR20 0x0468  /* Beacon alignment */
                     72: #define RAL_TXRX_CSR21 0x046a  /* XXX not documented */
                     73:
                     74: /*
                     75:  * Security registers.
                     76:  */
                     77: #define RAL_SEC_CSR0   0x0480  /* Shared key 0, word 0 */
                     78:
                     79: /*
                     80:  * PHY registers.
                     81:  */
                     82: #define RAL_PHY_CSR2   0x04c4  /* Tx MAC configuration */
                     83: #define RAL_PHY_CSR4   0x04c8  /* Interface configuration */
                     84: #define RAL_PHY_CSR5   0x04ca  /* BBP Pre-Tx CCK */
                     85: #define RAL_PHY_CSR6   0x04cc  /* BBP Pre-Tx OFDM */
                     86: #define RAL_PHY_CSR7   0x04ce  /* BBP serial control */
                     87: #define RAL_PHY_CSR8   0x04d0  /* BBP serial status */
                     88: #define RAL_PHY_CSR9   0x04d2  /* RF serial control0 */
                     89: #define RAL_PHY_CSR10  0x04d4  /* RF serial control1 */
                     90:
                     91: /*
                     92:  * Statistics registers.
                     93:  */
                     94: #define RAL_STA_CSR0   0x04e0  /* FCS error */
                     95:
                     96:
                     97: #define RAL_DISABLE_RX         (1 << 0)
                     98: #define RAL_DROP_CRC_ERROR     (1 << 1)
                     99: #define RAL_DROP_PHY_ERROR     (1 << 2)
                    100: #define RAL_DROP_CTL           (1 << 3)
                    101: #define RAL_DROP_NOT_TO_ME     (1 << 4)
                    102: #define RAL_DROP_TODS          (1 << 5)
                    103: #define RAL_DROP_VERSION_ERROR (1 << 6)
                    104: #define RAL_DROP_MULTICAST     (1 << 9)
                    105: #define RAL_DROP_BROADCAST     (1 << 10)
                    106:
                    107: #define RAL_SHORT_PREAMBLE     (1 << 2)
                    108:
                    109: #define RAL_RESET_ASIC (1 << 0)
                    110: #define RAL_RESET_BBP  (1 << 1)
                    111: #define RAL_HOST_READY (1 << 2)
                    112:
                    113: #define RAL_ENABLE_TSF                 (1 << 0)
                    114: #define RAL_ENABLE_TSF_SYNC(x)         (((x) & 0x3) << 1)
                    115: #define RAL_ENABLE_TBCN                        (1 << 3)
                    116: #define RAL_ENABLE_BEACON_GENERATOR    (1 << 4)
                    117:
                    118: #define RAL_RF_AWAKE   (3 << 7)
                    119: #define RAL_BBP_AWAKE  (3 << 5)
                    120:
                    121: #define RAL_BBP_WRITE  (1 << 15)
                    122: #define RAL_BBP_BUSY   (1 << 0)
                    123:
                    124: #define RAL_RF1_AUTOTUNE       0x08000
                    125: #define RAL_RF3_AUTOTUNE       0x00040
                    126:
                    127: #define RAL_RF_2522    0x00
                    128: #define RAL_RF_2523    0x01
                    129: #define RAL_RF_2524    0x02
                    130: #define RAL_RF_2525    0x03
                    131: #define RAL_RF_2525E   0x04
                    132: #define RAL_RF_2526    0x05
                    133: /* dual-band RF */
                    134: #define RAL_RF_5222    0x10
                    135:
                    136: #define RAL_BBP_VERSION        0
                    137: #define RAL_BBP_TX     2
                    138: #define RAL_BBP_RX     14
                    139:
                    140: #define RAL_BBP_ANTA           0x00
                    141: #define RAL_BBP_DIVERSITY      0x01
                    142: #define RAL_BBP_ANTB           0x02
                    143: #define RAL_BBP_ANTMASK                0x03
                    144: #define RAL_BBP_FLIPIQ         0x04
                    145:
                    146: #define RAL_JAPAN_FILTER       0x08
                    147:
                    148: struct ural_tx_desc {
                    149:        uint32_t        flags;
                    150: #define RAL_TX_RETRY(x)                ((x) << 4)
                    151: #define RAL_TX_MORE_FRAG       (1 << 8)
                    152: #define RAL_TX_NEED_ACK                (1 << 9)
                    153: #define RAL_TX_TIMESTAMP       (1 << 10)
                    154: #define RAL_TX_OFDM            (1 << 11)
                    155: #define RAL_TX_NEWSEQ          (1 << 12)
                    156:
                    157: #define RAL_TX_IFS_MASK                0x00006000
                    158: #define RAL_TX_IFS_BACKOFF     (0 << 13)
                    159: #define RAL_TX_IFS_SIFS                (1 << 13)
                    160: #define RAL_TX_IFS_NEWBACKOFF  (2 << 13)
                    161: #define RAL_TX_IFS_NONE                (3 << 13)
                    162:
                    163:        uint16_t        wme;
                    164: #define RAL_LOGCWMAX(x)                (((x) & 0xf) << 12)
                    165: #define RAL_LOGCWMIN(x)                (((x) & 0xf) << 8)
                    166: #define RAL_AIFSN(x)           (((x) & 0x3) << 6)
                    167: #define RAL_IVOFFSET(x)                (((x) & 0x3f))
                    168:
                    169:        uint16_t        reserved;
                    170:        uint8_t         plcp_signal;
                    171:        uint8_t         plcp_service;
                    172: #define RAL_PLCP_LENGEXT       0x80
                    173:
                    174:        uint8_t         plcp_length_lo;
                    175:        uint8_t         plcp_length_hi;
                    176:        uint32_t        iv;
                    177:        uint32_t        eiv;
                    178: } __packed;
                    179:
                    180: struct ural_rx_desc {
                    181:        uint32_t        flags;
                    182: #define RAL_RX_CRC_ERROR       (1 << 5)
                    183: #define RAL_RX_OFDM            (1 << 6)
                    184: #define RAL_RX_PHY_ERROR       (1 << 7)
                    185:
                    186:        uint8_t         rate;
                    187:        uint8_t         rssi;
                    188:        uint16_t        reserved;
                    189:
                    190:        uint32_t        iv;
                    191:        uint32_t        eiv;
                    192: } __packed;
                    193:
                    194: #define RAL_RF_LOBUSY  (1 << 15)
                    195: #define RAL_RF_BUSY    (1 << 31)
                    196: #define RAL_RF_20BIT   (20 << 24)
                    197:
                    198: #define RAL_RF1        0
                    199: #define RAL_RF2        2
                    200: #define RAL_RF3        1
                    201: #define RAL_RF4        3
                    202:
                    203: #define RAL_EEPROM_MACBBP      0x0000
                    204: #define RAL_EEPROM_ADDRESS     0x0004
                    205: #define RAL_EEPROM_TXPOWER     0x003c
                    206: #define RAL_EEPROM_CONFIG0     0x0016
                    207: #define RAL_EEPROM_BBP_BASE    0x001c
                    208:
                    209: /*
                    210:  * Default values for MAC registers; values taken from the reference driver.
                    211:  */
                    212: #define RAL_DEF_MAC                    \
                    213:        { RAL_TXRX_CSR5,  0x8c8d },     \
                    214:        { RAL_TXRX_CSR6,  0x8b8a },     \
                    215:        { RAL_TXRX_CSR7,  0x8687 },     \
                    216:        { RAL_TXRX_CSR8,  0x0085 },     \
                    217:        { RAL_MAC_CSR13,  0x1111 },     \
                    218:        { RAL_MAC_CSR14,  0x1e11 },     \
                    219:        { RAL_TXRX_CSR21, 0xe78f },     \
                    220:        { RAL_MAC_CSR9,   0xff1d },     \
                    221:        { RAL_MAC_CSR11,  0x0002 },     \
                    222:        { RAL_MAC_CSR22,  0x0053 },     \
                    223:        { RAL_MAC_CSR15,  0x0000 },     \
                    224:        { RAL_MAC_CSR8,   0x0780 },     \
                    225:        { RAL_TXRX_CSR19, 0x0000 },     \
                    226:        { RAL_TXRX_CSR18, 0x005a },     \
                    227:        { RAL_PHY_CSR2,   0x0000 },     \
                    228:        { RAL_TXRX_CSR0,  0x1ec0 },     \
                    229:        { RAL_PHY_CSR4,   0x000f }
                    230:
                    231: /*
                    232:  * Default values for BBP registers; values taken from the reference driver.
                    233:  */
                    234: #define RAL_DEF_BBP    \
                    235:        {  3, 0x02 },   \
                    236:        {  4, 0x19 },   \
                    237:        { 14, 0x1c },   \
                    238:        { 15, 0x30 },   \
                    239:        { 16, 0xac },   \
                    240:        { 17, 0x48 },   \
                    241:        { 18, 0x18 },   \
                    242:        { 19, 0xff },   \
                    243:        { 20, 0x1e },   \
                    244:        { 21, 0x08 },   \
                    245:        { 22, 0x08 },   \
                    246:        { 23, 0x08 },   \
                    247:        { 24, 0x80 },   \
                    248:        { 25, 0x50 },   \
                    249:        { 26, 0x08 },   \
                    250:        { 27, 0x23 },   \
                    251:        { 30, 0x10 },   \
                    252:        { 31, 0x2b },   \
                    253:        { 32, 0xb9 },   \
                    254:        { 34, 0x12 },   \
                    255:        { 35, 0x50 },   \
                    256:        { 39, 0xc4 },   \
                    257:        { 40, 0x02 },   \
                    258:        { 41, 0x60 },   \
                    259:        { 53, 0x10 },   \
                    260:        { 54, 0x18 },   \
                    261:        { 56, 0x08 },   \
                    262:        { 57, 0x10 },   \
                    263:        { 58, 0x08 },   \
                    264:        { 61, 0x60 },   \
                    265:        { 62, 0x10 },   \
                    266:        { 75, 0xff }
                    267:
                    268: /*
                    269:  * Default values for RF register R2 indexed by channel numbers.
                    270:  */
                    271: #define RAL_RF2522_R2                                                  \
                    272: {                                                                      \
                    273:        0x307f6, 0x307fb, 0x30800, 0x30805, 0x3080a, 0x3080f, 0x30814,  \
                    274:        0x30819, 0x3081e, 0x30823, 0x30828, 0x3082d, 0x30832, 0x3083e   \
                    275: }
                    276:
                    277: #define RAL_RF2523_R2                                                  \
                    278: {                                                                      \
                    279:        0x00327, 0x00328, 0x00329, 0x0032a, 0x0032b, 0x0032c, 0x0032d,  \
                    280:        0x0032e, 0x0032f, 0x00340, 0x00341, 0x00342, 0x00343, 0x00346   \
                    281: }
                    282:
                    283: #define RAL_RF2524_R2                                                  \
                    284: {                                                                      \
                    285:        0x00327, 0x00328, 0x00329, 0x0032a, 0x0032b, 0x0032c, 0x0032d,  \
                    286:        0x0032e, 0x0032f, 0x00340, 0x00341, 0x00342, 0x00343, 0x00346   \
                    287: }
                    288:
                    289: #define RAL_RF2525_R2                                                  \
                    290: {                                                                      \
                    291:        0x20327, 0x20328, 0x20329, 0x2032a, 0x2032b, 0x2032c, 0x2032d,  \
                    292:        0x2032e, 0x2032f, 0x20340, 0x20341, 0x20342, 0x20343, 0x20346   \
                    293: }
                    294:
                    295: #define RAL_RF2525_HI_R2                                               \
                    296: {                                                                      \
                    297:        0x2032f, 0x20340, 0x20341, 0x20342, 0x20343, 0x20344, 0x20345,  \
                    298:        0x20346, 0x20347, 0x20348, 0x20349, 0x2034a, 0x2034b, 0x2034e   \
                    299: }
                    300:
                    301: #define RAL_RF2525E_R2                                                 \
                    302: {                                                                      \
                    303:        0x2044d, 0x2044e, 0x2044f, 0x20460, 0x20461, 0x20462, 0x20463,  \
                    304:        0x20464, 0x20465, 0x20466, 0x20467, 0x20468, 0x20469, 0x2046b   \
                    305: }
                    306:
                    307: #define RAL_RF2526_HI_R2                                               \
                    308: {                                                                      \
                    309:        0x0022a, 0x0022b, 0x0022b, 0x0022c, 0x0022c, 0x0022d, 0x0022d,  \
                    310:        0x0022e, 0x0022e, 0x0022f, 0x0022d, 0x00240, 0x00240, 0x00241   \
                    311: }
                    312:
                    313: #define RAL_RF2526_R2                                                  \
                    314: {                                                                      \
                    315:        0x00226, 0x00227, 0x00227, 0x00228, 0x00228, 0x00229, 0x00229,  \
                    316:        0x0022a, 0x0022a, 0x0022b, 0x0022b, 0x0022c, 0x0022c, 0x0022d   \
                    317: }

CVSweb