Main Page | Data Structures | Directories | File List | Data Fields | Globals

ar5210var.h

Go to the documentation of this file.
00001 /*      $OpenBSD: ar5210var.h,v 1.10 2005/04/18 18:42:55 reyk Exp $     */
00002 
00003 /*
00004  * Copyright (c) 2004, 2005 Reyk Floeter <reyk@vantronix.net>
00005  *
00006  * Permission to use, copy, modify, and distribute this software for any
00007  * purpose with or without fee is hereby granted, provided that the above
00008  * copyright notice and this permission notice appear in all copies.
00009  *
00010  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
00011  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00012  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
00013  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00014  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00015  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
00016  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00017  */
00018 
00019 /*
00020  * Specific definitions for the Atheros AR5000 Wireless LAN chipset
00021  * (AR5210 + AR5110).
00022  */
00023 
00024 #ifndef _AR5K_AR5210_VAR_H
00025 #define _AR5K_AR5210_VAR_H
00026 
00027 #include <dev/ic/ar5xxx.h>
00028 
00029 /*
00030  * Define a "magic" code for the AR5210 (the HAL layer wants it)
00031  */
00032 
00033 #define AR5K_AR5210_MAGIC               0x0000145a /* 5210 */
00034 #define AR5K_AR5210_TX_NUM_QUEUES       2
00035 
00036 #if BYTE_ORDER == BIG_ENDIAN
00037 #define AR5K_AR5210_INIT_CFG    (                                       \
00038         AR5K_AR5210_CFG_SWTD | AR5K_AR5210_CFG_SWRD                     \
00039 )
00040 #else
00041 #define AR5K_AR5210_INIT_CFG    0x00000000
00042 #endif
00043 
00044 /*
00045  * Internal RX/TX descriptor structures
00046  * (rX: reserved fields possibily used by future versions of the ar5k chipset)
00047  */
00048 
00049 struct ar5k_ar5210_rx_desc {
00050         /*
00051          * RX control word 0
00052          */
00053         u_int32_t       rx_control_0;
00054 
00055 #define AR5K_AR5210_DESC_RX_CTL0                        0x00000000
00056 
00057         /*
00058          * RX control word 1
00059          */
00060         u_int32_t       rx_control_1;
00061 
00062 #define AR5K_AR5210_DESC_RX_CTL1_BUF_LEN                0x00000fff
00063 #define AR5K_AR5210_DESC_RX_CTL1_INTREQ                 0x00002000
00064 }  __attribute__((__packed__));
00065 
00066 struct ar5k_ar5210_rx_status {
00067         /*
00068          * RX status word 0
00069          */
00070         u_int32_t       rx_status_0;
00071 
00072 #define AR5K_AR5210_DESC_RX_STATUS0_DATA_LEN            0x00000fff
00073 #define AR5K_AR5210_DESC_RX_STATUS0_MORE                0x00001000
00074 #define AR5K_AR5210_DESC_RX_STATUS0_RECEIVE_ANTENNA     0x00004000
00075 #define AR5K_AR5210_DESC_RX_STATUS0_RECEIVE_RATE        0x00078000
00076 #define AR5K_AR5210_DESC_RX_STATUS0_RECEIVE_RATE_S      15
00077 #define AR5K_AR5210_DESC_RX_STATUS0_RECEIVE_SIGNAL      0x07f80000
00078 #define AR5K_AR5210_DESC_RX_STATUS0_RECEIVE_SIGNAL_S    19
00079 
00080         /*
00081          * RX status word 1
00082          */
00083         u_int32_t       rx_status_1;
00084 
00085 #define AR5K_AR5210_DESC_RX_STATUS1_DONE                0x00000001
00086 #define AR5K_AR5210_DESC_RX_STATUS1_FRAME_RECEIVE_OK    0x00000002
00087 #define AR5K_AR5210_DESC_RX_STATUS1_CRC_ERROR           0x00000004
00088 #define AR5K_AR5210_DESC_RX_STATUS1_FIFO_OVERRUN        0x00000008
00089 #define AR5K_AR5210_DESC_RX_STATUS1_DECRYPT_CRC_ERROR   0x00000010
00090 #define AR5K_AR5210_DESC_RX_STATUS1_PHY_ERROR           0x000000e0
00091 #define AR5K_AR5210_DESC_RX_STATUS1_PHY_ERROR_S         5
00092 #define AR5K_AR5210_DESC_RX_STATUS1_KEY_INDEX_VALID     0x00000100
00093 #define AR5K_AR5210_DESC_RX_STATUS1_KEY_INDEX           0x00007e00
00094 #define AR5K_AR5210_DESC_RX_STATUS1_KEY_INDEX_S         9
00095 #define AR5K_AR5210_DESC_RX_STATUS1_RECEIVE_TIMESTAMP   0x0fff8000
00096 #define AR5K_AR5210_DESC_RX_STATUS1_RECEIVE_TIMESTAMP_S 15
00097 #define AR5K_AR5210_DESC_RX_STATUS1_KEY_CACHE_MISS      0x10000000
00098 }  __attribute__((__packed__));
00099 
00100 #define AR5K_AR5210_DESC_RX_PHY_ERROR_NONE              0x00
00101 #define AR5K_AR5210_DESC_RX_PHY_ERROR_TIMING            0x20
00102 #define AR5K_AR5210_DESC_RX_PHY_ERROR_PARITY            0x40
00103 #define AR5K_AR5210_DESC_RX_PHY_ERROR_RATE              0x60
00104 #define AR5K_AR5210_DESC_RX_PHY_ERROR_LENGTH            0x80
00105 #define AR5K_AR5210_DESC_RX_PHY_ERROR_64QAM             0xa0
00106 #define AR5K_AR5210_DESC_RX_PHY_ERROR_SERVICE           0xc0
00107 #define AR5K_AR5210_DESC_RX_PHY_ERROR_TRANSMITOVR       0xe0
00108 
00109 struct ar5k_ar5210_tx_desc {
00110         /*
00111          * TX control word 0
00112          */
00113         u_int32_t       tx_control_0;
00114 
00115 #define AR5K_AR5210_DESC_TX_CTL0_FRAME_LEN              0x00000fff
00116 #define AR5K_AR5210_DESC_TX_CTL0_HEADER_LEN             0x0003f000
00117 #define AR5K_AR5210_DESC_TX_CTL0_HEADER_LEN_S           12
00118 #define AR5K_AR5210_DESC_TX_CTL0_XMIT_RATE              0x003c0000
00119 #define AR5K_AR5210_DESC_TX_CTL0_XMIT_RATE_S            18
00120 #define AR5K_AR5210_DESC_TX_CTL0_RTSENA                 0x00400000
00121 #define AR5K_AR5210_DESC_TX_CTL0_LONG_PACKET            0x00800000
00122 #define AR5K_AR5210_DESC_TX_CTL0_CLRDMASK               0x01000000
00123 #define AR5K_AR5210_DESC_TX_CTL0_ANT_MODE_XMIT          0x02000000
00124 #define AR5K_AR5210_DESC_TX_CTL0_FRAME_TYPE             0x1c000000
00125 #define AR5K_AR5210_DESC_TX_CTL0_FRAME_TYPE_S           26
00126 #define AR5K_AR5210_DESC_TX_CTL0_INTREQ                 0x20000000
00127 #define AR5K_AR5210_DESC_TX_CTL0_ENCRYPT_KEY_VALID      0x40000000
00128 
00129         /*
00130          * TX control word 1
00131          */
00132         u_int32_t       tx_control_1;
00133 
00134 #define AR5K_AR5210_DESC_TX_CTL1_BUF_LEN                0x00000fff
00135 #define AR5K_AR5210_DESC_TX_CTL1_MORE                   0x00001000
00136 #define AR5K_AR5210_DESC_TX_CTL1_ENCRYPT_KEY_INDEX      0x0007e000
00137 #define AR5K_AR5210_DESC_TX_CTL1_ENCRYPT_KEY_INDEX_S    13
00138 #define AR5K_AR5210_DESC_TX_CTL1_RTS_DURATION           0xfff80000
00139 }  __attribute__((__packed__));
00140 
00141 #define AR5K_AR5210_DESC_TX_FRAME_TYPE_NORMAL   0x00
00142 #define AR5K_AR5210_DESC_TX_FRAME_TYPE_ATIM     0x04
00143 #define AR5K_AR5210_DESC_TX_FRAME_TYPE_PSPOLL   0x08
00144 #define AR5K_AR5210_DESC_TX_FRAME_TYPE_NO_DELAY 0x0c
00145 #define AR5K_AR5210_DESC_TX_FRAME_TYPE_PIFS     0x10
00146 
00147 struct ar5k_ar5210_tx_status {
00148         /*
00149          * TX status word 0
00150          */
00151         u_int32_t       tx_status_0;
00152 
00153 #define AR5K_AR5210_DESC_TX_STATUS0_FRAME_XMIT_OK       0x00000001
00154 #define AR5K_AR5210_DESC_TX_STATUS0_EXCESSIVE_RETRIES   0x00000002
00155 #define AR5K_AR5210_DESC_TX_STATUS0_FIFO_UNDERRUN       0x00000004
00156 #define AR5K_AR5210_DESC_TX_STATUS0_FILTERED            0x00000008
00157 #define AR5K_AR5210_DESC_TX_STATUS0_SHORT_RETRY_COUNT   0x000000f0
00158 #define AR5K_AR5210_DESC_TX_STATUS0_SHORT_RETRY_COUNT_S 4
00159 #define AR5K_AR5210_DESC_TX_STATUS0_LONG_RETRY_COUNT    0x00000f00
00160 #define AR5K_AR5210_DESC_TX_STATUS0_LONG_RETRY_COUNT_S  8
00161 #define AR5K_AR5210_DESC_TX_STATUS0_SEND_TIMESTAMP      0xffff0000
00162 #define AR5K_AR5210_DESC_TX_STATUS0_SEND_TIMESTAMP_S    16
00163 
00164         /*
00165          * TX status word 1
00166          */
00167         u_int32_t       tx_status_1;
00168 
00169 #define AR5K_AR5210_DESC_TX_STATUS1_DONE                0x00000001
00170 #define AR5K_AR5210_DESC_TX_STATUS1_SEQ_NUM             0x00001ffe
00171 #define AR5K_AR5210_DESC_TX_STATUS1_SEQ_NUM_S           1
00172 #define AR5K_AR5210_DESC_TX_STATUS1_ACK_SIG_STRENGTH    0x001fe000
00173 #define AR5K_AR5210_DESC_TX_STATUS1_ACK_SIG_STRENGTH_S  13
00174 }  __attribute__((__packed__));
00175 
00176 /*
00177  * Public function prototypes
00178  */
00179 extern ar5k_attach_t ar5k_ar5210_attach;
00180 
00181 /*
00182  * Initial mode settings ("Base Mode" or "Turbo Mode")
00183  */
00184 
00185 #define AR5K_AR5210_INI_MODE(_aifs) {                                   \
00186         { AR5K_AR5210_SLOT_TIME,                                        \
00187             AR5K_INIT_SLOT_TIME,                                        \
00188             AR5K_INIT_SLOT_TIME_TURBO },                                \
00189         { AR5K_AR5210_SLOT_TIME,                                        \
00190             AR5K_INIT_ACK_CTS_TIMEOUT,                                  \
00191             AR5K_INIT_ACK_CTS_TIMEOUT_TURBO },                          \
00192         { AR5K_AR5210_USEC,                                             \
00193             AR5K_INIT_TRANSMIT_LATENCY,                                 \
00194             AR5K_INIT_TRANSMIT_LATENCY_TURBO},                          \
00195         { AR5K_AR5210_IFS0,                                             \
00196             ((AR5K_INIT_SIFS + (_aifs) * AR5K_INIT_SLOT_TIME)           \
00197             << AR5K_AR5210_IFS0_DIFS_S) | AR5K_INIT_SIFS,               \
00198             ((AR5K_INIT_SIFS_TURBO + (_aifs) * AR5K_INIT_SLOT_TIME_TURBO) \
00199             << AR5K_AR5210_IFS0_DIFS_S) | AR5K_INIT_SIFS_TURBO },       \
00200         { AR5K_AR5210_IFS1,                                             \
00201             AR5K_INIT_PROTO_TIME_CNTRL,                                 \
00202             AR5K_INIT_PROTO_TIME_CNTRL_TURBO },                         \
00203         { AR5K_AR5210_PHY(17),                                          \
00204             (AR5K_REG_READ(AR5K_AR5210_PHY(17)) & ~0x7F) | 0x1C,        \
00205             (AR5K_REG_READ(AR5K_AR5210_PHY(17)) & ~0x7F) | 0x38 },      \
00206         { AR5K_AR5210_PHY_FC,                                           \
00207             AR5K_AR5210_PHY_FC_SERVICE_ERR |                            \
00208             AR5K_AR5210_PHY_FC_TXURN_ERR |                              \
00209             AR5K_AR5210_PHY_FC_ILLLEN_ERR |                             \
00210             AR5K_AR5210_PHY_FC_ILLRATE_ERR |                            \
00211             AR5K_AR5210_PHY_FC_PARITY_ERR |                             \
00212             AR5K_AR5210_PHY_FC_TIMING_ERR | 0x1020,                     \
00213             AR5K_AR5210_PHY_FC_SERVICE_ERR |                            \
00214             AR5K_AR5210_PHY_FC_TXURN_ERR |                              \
00215             AR5K_AR5210_PHY_FC_ILLLEN_ERR |                             \
00216             AR5K_AR5210_PHY_FC_ILLRATE_ERR |                            \
00217             AR5K_AR5210_PHY_FC_PARITY_ERR |                             \
00218             AR5K_AR5210_PHY_FC_TURBO_MODE |                             \
00219             AR5K_AR5210_PHY_FC_TURBO_SHORT |                            \
00220             AR5K_AR5210_PHY_FC_TIMING_ERR | 0x2020 },                   \
00221 }
00222 
00223 /*
00224  * Initial register values which have to be loaded into the
00225  * card at boot time and after each reset.
00226  */
00227 
00228 #define AR5K_AR5210_INI {                                               \
00229         /* PCU and MAC registers */                                     \
00230         { AR5K_AR5210_TXDP0, 0 },                                       \
00231         { AR5K_AR5210_TXDP1, 0 },                                       \
00232         { AR5K_AR5210_RXDP, 0 },                                        \
00233         { AR5K_AR5210_CR, 0 },                                          \
00234         { AR5K_AR5210_ISR, 0, AR5K_INI_READ },                          \
00235         { AR5K_AR5210_IMR, 0 },                                         \
00236         { AR5K_AR5210_IER, AR5K_AR5210_IER_DISABLE },                   \
00237         { AR5K_AR5210_BSR, 0, AR5K_INI_READ },                          \
00238         { AR5K_AR5210_TXCFG, AR5K_AR5210_DMASIZE_128B },                \
00239         { AR5K_AR5210_RXCFG, AR5K_AR5210_DMASIZE_128B },                \
00240         { AR5K_AR5210_CFG, AR5K_AR5210_INIT_CFG },                      \
00241         { AR5K_AR5210_TOPS, AR5K_INIT_TOPS },                           \
00242         { AR5K_AR5210_RXNOFRM, AR5K_INIT_RXNOFRM },                     \
00243         { AR5K_AR5210_RPGTO, AR5K_INIT_RPGTO },                         \
00244         { AR5K_AR5210_TXNOFRM, AR5K_INIT_TXNOFRM },                     \
00245         { AR5K_AR5210_SFR, 0 },                                         \
00246         { AR5K_AR5210_MIBC, 0 },                                        \
00247         { AR5K_AR5210_MISC, 0 },                                        \
00248         { AR5K_AR5210_RX_FILTER, 0 },                                   \
00249         { AR5K_AR5210_MCAST_FIL0, 0 },                                  \
00250         { AR5K_AR5210_MCAST_FIL1, 0 },                                  \
00251         { AR5K_AR5210_TX_MASK0, 0 },                                    \
00252         { AR5K_AR5210_TX_MASK1, 0 },                                    \
00253         { AR5K_AR5210_CLR_TMASK, 0 },                                   \
00254         { AR5K_AR5210_TRIG_LVL, AR5K_TUNE_MIN_TX_FIFO_THRES },          \
00255         { AR5K_AR5210_DIAG_SW, 0 },                                     \
00256         { AR5K_AR5210_RSSI_THR, AR5K_TUNE_RSSI_THRES },                 \
00257         { AR5K_AR5210_TSF_L32, 0 },                                     \
00258         { AR5K_AR5210_TIMER0, 0 },                                      \
00259         { AR5K_AR5210_TIMER1, 0xffffffff },                             \
00260         { AR5K_AR5210_TIMER2, 0xffffffff },                             \
00261         { AR5K_AR5210_TIMER3, 1 },                                      \
00262         { AR5K_AR5210_CFP_DUR, 0 },                                     \
00263         { AR5K_AR5210_CFP_PERIOD, 0 },                                  \
00264         /* PHY registers */                                             \
00265         { AR5K_AR5210_PHY(0), 0x00000047 },                             \
00266         { AR5K_AR5210_PHY_AGC, 0x00000000 },                            \
00267         { AR5K_AR5210_PHY(3), 0x09848ea6 },                             \
00268         { AR5K_AR5210_PHY(4), 0x3d32e000 },                             \
00269         { AR5K_AR5210_PHY(5), 0x0000076b },                             \
00270         { AR5K_AR5210_PHY_ACTIVE, AR5K_AR5210_PHY_DISABLE },            \
00271         { AR5K_AR5210_PHY(8), 0x02020200 },                             \
00272         { AR5K_AR5210_PHY(9), 0x00000e0e },                             \
00273         { AR5K_AR5210_PHY(10), 0x0a020201 },                            \
00274         { AR5K_AR5210_PHY(11), 0x00036ffc },                            \
00275         { AR5K_AR5210_PHY(12), 0x00000000 },                            \
00276         { AR5K_AR5210_PHY(13), 0x00000e0e },                            \
00277         { AR5K_AR5210_PHY(14), 0x00000007 },                            \
00278         { AR5K_AR5210_PHY(15), 0x00020100 },                            \
00279         { AR5K_AR5210_PHY(16), 0x89630000 },                            \
00280         { AR5K_AR5210_PHY(17), 0x1372169c },                            \
00281         { AR5K_AR5210_PHY(18), 0x0018b633 },                            \
00282         { AR5K_AR5210_PHY(19), 0x1284613c },                            \
00283         { AR5K_AR5210_PHY(20), 0x0de8b8e0 },                            \
00284         { AR5K_AR5210_PHY(21), 0x00074859 },                            \
00285         { AR5K_AR5210_PHY(22), 0x7e80beba },                            \
00286         { AR5K_AR5210_PHY(23), 0x313a665e },                            \
00287         { AR5K_AR5210_PHY_AGCCTL, 0x00001d08 },                         \
00288         { AR5K_AR5210_PHY(25), 0x0001ce00 },                            \
00289         { AR5K_AR5210_PHY(26), 0x409a4190 },                            \
00290         { AR5K_AR5210_PHY(28), 0x0000000f },                            \
00291         { AR5K_AR5210_PHY(29), 0x00000080 },                            \
00292         { AR5K_AR5210_PHY(30), 0x00000004 },                            \
00293         { AR5K_AR5210_PHY(31), 0x00000018 }, /* 0x987c */               \
00294         { AR5K_AR5210_PHY(64), 0x00000000 }, /* 0x9900 */               \
00295         { AR5K_AR5210_PHY(65), 0x00000000 },                            \
00296         { AR5K_AR5210_PHY(66), 0x00000000 },                            \
00297         { AR5K_AR5210_PHY(67), 0x00800000 },                            \
00298         { AR5K_AR5210_PHY(68), 0x00000003 },                            \
00299         /* BB gain table (64bytes) */                                   \
00300         { AR5K_AR5210_BB_GAIN(0), 0x00000000 },                         \
00301         { AR5K_AR5210_BB_GAIN(0x01), 0x00000020 },                      \
00302         { AR5K_AR5210_BB_GAIN(0x02), 0x00000010 },                      \
00303         { AR5K_AR5210_BB_GAIN(0x03), 0x00000030 },                      \
00304         { AR5K_AR5210_BB_GAIN(0x04), 0x00000008 },                      \
00305         { AR5K_AR5210_BB_GAIN(0x05), 0x00000028 },                      \
00306         { AR5K_AR5210_BB_GAIN(0x06), 0x00000028 },                      \
00307         { AR5K_AR5210_BB_GAIN(0x07), 0x00000004 },                      \
00308         { AR5K_AR5210_BB_GAIN(0x08), 0x00000024 },                      \
00309         { AR5K_AR5210_BB_GAIN(0x09), 0x00000014 },                      \
00310         { AR5K_AR5210_BB_GAIN(0x0a), 0x00000034 },                      \
00311         { AR5K_AR5210_BB_GAIN(0x0b), 0x0000000c },                      \
00312         { AR5K_AR5210_BB_GAIN(0x0c), 0x0000002c },                      \
00313         { AR5K_AR5210_BB_GAIN(0x0d), 0x00000002 },                      \
00314         { AR5K_AR5210_BB_GAIN(0x0e), 0x00000022 },                      \
00315         { AR5K_AR5210_BB_GAIN(0x0f), 0x00000012 },                      \
00316         { AR5K_AR5210_BB_GAIN(0x10), 0x00000032 },                      \
00317         { AR5K_AR5210_BB_GAIN(0x11), 0x0000000a },                      \
00318         { AR5K_AR5210_BB_GAIN(0x12), 0x0000002a },                      \
00319         { AR5K_AR5210_BB_GAIN(0x13), 0x00000001 },                      \
00320         { AR5K_AR5210_BB_GAIN(0x14), 0x00000021 },                      \
00321         { AR5K_AR5210_BB_GAIN(0x15), 0x00000011 },                      \
00322         { AR5K_AR5210_BB_GAIN(0x16), 0x00000031 },                      \
00323         { AR5K_AR5210_BB_GAIN(0x17), 0x00000009 },                      \
00324         { AR5K_AR5210_BB_GAIN(0x18), 0x00000029 },                      \
00325         { AR5K_AR5210_BB_GAIN(0x19), 0x00000005 },                      \
00326         { AR5K_AR5210_BB_GAIN(0x1a), 0x00000025 },                      \
00327         { AR5K_AR5210_BB_GAIN(0x1b), 0x00000015 },                      \
00328         { AR5K_AR5210_BB_GAIN(0x1c), 0x00000035 },                      \
00329         { AR5K_AR5210_BB_GAIN(0x1d), 0x0000000d },                      \
00330         { AR5K_AR5210_BB_GAIN(0x1e), 0x0000002d },                      \
00331         { AR5K_AR5210_BB_GAIN(0x1f), 0x00000003 },                      \
00332         { AR5K_AR5210_BB_GAIN(0x20), 0x00000023 },                      \
00333         { AR5K_AR5210_BB_GAIN(0x21), 0x00000013 },                      \
00334         { AR5K_AR5210_BB_GAIN(0x22), 0x00000033 },                      \
00335         { AR5K_AR5210_BB_GAIN(0x23), 0x0000000b },                      \
00336         { AR5K_AR5210_BB_GAIN(0x24), 0x0000002b },                      \
00337         { AR5K_AR5210_BB_GAIN(0x25), 0x00000007 },                      \
00338         { AR5K_AR5210_BB_GAIN(0x26), 0x00000027 },                      \
00339         { AR5K_AR5210_BB_GAIN(0x27), 0x00000017 },                      \
00340         { AR5K_AR5210_BB_GAIN(0x28), 0x00000037 },                      \
00341         { AR5K_AR5210_BB_GAIN(0x29), 0x0000000f },                      \
00342         { AR5K_AR5210_BB_GAIN(0x2a), 0x0000002f },                      \
00343         { AR5K_AR5210_BB_GAIN(0x2b), 0x0000002f },                      \
00344         { AR5K_AR5210_BB_GAIN(0x2c), 0x0000002f },                      \
00345         { AR5K_AR5210_BB_GAIN(0x2d), 0x0000002f },                      \
00346         { AR5K_AR5210_BB_GAIN(0x2e), 0x0000002f },                      \
00347         { AR5K_AR5210_BB_GAIN(0x2f), 0x0000002f },                      \
00348         { AR5K_AR5210_BB_GAIN(0x30), 0x0000002f },                      \
00349         { AR5K_AR5210_BB_GAIN(0x31), 0x0000002f },                      \
00350         { AR5K_AR5210_BB_GAIN(0x32), 0x0000002f },                      \
00351         { AR5K_AR5210_BB_GAIN(0x33), 0x0000002f },                      \
00352         { AR5K_AR5210_BB_GAIN(0x34), 0x0000002f },                      \
00353         { AR5K_AR5210_BB_GAIN(0x35), 0x0000002f },                      \
00354         { AR5K_AR5210_BB_GAIN(0x36), 0x0000002f },                      \
00355         { AR5K_AR5210_BB_GAIN(0x37), 0x0000002f },                      \
00356         { AR5K_AR5210_BB_GAIN(0x38), 0x0000002f },                      \
00357         { AR5K_AR5210_BB_GAIN(0x39), 0x0000002f },                      \
00358         { AR5K_AR5210_BB_GAIN(0x3a), 0x0000002f },                      \
00359         { AR5K_AR5210_BB_GAIN(0x3b), 0x0000002f },                      \
00360         { AR5K_AR5210_BB_GAIN(0x3c), 0x0000002f },                      \
00361         { AR5K_AR5210_BB_GAIN(0x3d), 0x0000002f },                      \
00362         { AR5K_AR5210_BB_GAIN(0x3e), 0x0000002f },                      \
00363         { AR5K_AR5210_BB_GAIN(0x3f), 0x0000002f },                      \
00364         /* RF gain table (64bytes) */                                   \
00365         { AR5K_AR5210_RF_GAIN(0), 0x0000001d },                         \
00366         { AR5K_AR5210_RF_GAIN(0x01), 0x0000005d },                      \
00367         { AR5K_AR5210_RF_GAIN(0x02), 0x0000009d },                      \
00368         { AR5K_AR5210_RF_GAIN(0x03), 0x000000dd },                      \
00369         { AR5K_AR5210_RF_GAIN(0x04), 0x0000011d },                      \
00370         { AR5K_AR5210_RF_GAIN(0x05), 0x00000021 },                      \
00371         { AR5K_AR5210_RF_GAIN(0x06), 0x00000061 },                      \
00372         { AR5K_AR5210_RF_GAIN(0x07), 0x000000a1 },                      \
00373         { AR5K_AR5210_RF_GAIN(0x08), 0x000000e1 },                      \
00374         { AR5K_AR5210_RF_GAIN(0x09), 0x00000031 },                      \
00375         { AR5K_AR5210_RF_GAIN(0x0a), 0x00000071 },                      \
00376         { AR5K_AR5210_RF_GAIN(0x0b), 0x000000b1 },                      \
00377         { AR5K_AR5210_RF_GAIN(0x0c), 0x0000001c },                      \
00378         { AR5K_AR5210_RF_GAIN(0x0d), 0x0000005c },                      \
00379         { AR5K_AR5210_RF_GAIN(0x0e), 0x00000029 },                      \
00380         { AR5K_AR5210_RF_GAIN(0x0f), 0x00000069 },                      \
00381         { AR5K_AR5210_RF_GAIN(0x10), 0x000000a9 },                      \
00382         { AR5K_AR5210_RF_GAIN(0x11), 0x00000020 },                      \
00383         { AR5K_AR5210_RF_GAIN(0x12), 0x00000019 },                      \
00384         { AR5K_AR5210_RF_GAIN(0x13), 0x00000059 },                      \
00385         { AR5K_AR5210_RF_GAIN(0x14), 0x00000099 },                      \
00386         { AR5K_AR5210_RF_GAIN(0x15), 0x00000030 },                      \
00387         { AR5K_AR5210_RF_GAIN(0x16), 0x00000005 },                      \
00388         { AR5K_AR5210_RF_GAIN(0x17), 0x00000025 },                      \
00389         { AR5K_AR5210_RF_GAIN(0x18), 0x00000065 },                      \
00390         { AR5K_AR5210_RF_GAIN(0x19), 0x000000a5 },                      \
00391         { AR5K_AR5210_RF_GAIN(0x1a), 0x00000028 },                      \
00392         { AR5K_AR5210_RF_GAIN(0x1b), 0x00000068 },                      \
00393         { AR5K_AR5210_RF_GAIN(0x1c), 0x0000001f },                      \
00394         { AR5K_AR5210_RF_GAIN(0x1d), 0x0000001e },                      \
00395         { AR5K_AR5210_RF_GAIN(0x1e), 0x00000018 },                      \
00396         { AR5K_AR5210_RF_GAIN(0x1f), 0x00000058 },                      \
00397         { AR5K_AR5210_RF_GAIN(0x20), 0x00000098 },                      \
00398         { AR5K_AR5210_RF_GAIN(0x21), 0x00000003 },                      \
00399         { AR5K_AR5210_RF_GAIN(0x22), 0x00000004 },                      \
00400         { AR5K_AR5210_RF_GAIN(0x23), 0x00000044 },                      \
00401         { AR5K_AR5210_RF_GAIN(0x24), 0x00000084 },                      \
00402         { AR5K_AR5210_RF_GAIN(0x25), 0x00000013 },                      \
00403         { AR5K_AR5210_RF_GAIN(0x26), 0x00000012 },                      \
00404         { AR5K_AR5210_RF_GAIN(0x27), 0x00000052 },                      \
00405         { AR5K_AR5210_RF_GAIN(0x28), 0x00000092 },                      \
00406         { AR5K_AR5210_RF_GAIN(0x29), 0x000000d2 },                      \
00407         { AR5K_AR5210_RF_GAIN(0x2a), 0x0000002b },                      \
00408         { AR5K_AR5210_RF_GAIN(0x2b), 0x0000002a },                      \
00409         { AR5K_AR5210_RF_GAIN(0x2c), 0x0000006a },                      \
00410         { AR5K_AR5210_RF_GAIN(0x2d), 0x000000aa },                      \
00411         { AR5K_AR5210_RF_GAIN(0x2e), 0x0000001b },                      \
00412         { AR5K_AR5210_RF_GAIN(0x2f), 0x0000001a },                      \
00413         { AR5K_AR5210_RF_GAIN(0x30), 0x0000005a },                      \
00414         { AR5K_AR5210_RF_GAIN(0x31), 0x0000009a },                      \
00415         { AR5K_AR5210_RF_GAIN(0x32), 0x000000da },                      \
00416         { AR5K_AR5210_RF_GAIN(0x33), 0x00000006 },                      \
00417         { AR5K_AR5210_RF_GAIN(0x34), 0x00000006 },                      \
00418         { AR5K_AR5210_RF_GAIN(0x35), 0x00000006 },                      \
00419         { AR5K_AR5210_RF_GAIN(0x36), 0x00000006 },                      \
00420         { AR5K_AR5210_RF_GAIN(0x37), 0x00000006 },                      \
00421         { AR5K_AR5210_RF_GAIN(0x38), 0x00000006 },                      \
00422         { AR5K_AR5210_RF_GAIN(0x39), 0x00000006 },                      \
00423         { AR5K_AR5210_RF_GAIN(0x3a), 0x00000006 },                      \
00424         { AR5K_AR5210_RF_GAIN(0x3b), 0x00000006 },                      \
00425         { AR5K_AR5210_RF_GAIN(0x3c), 0x00000006 },                      \
00426         { AR5K_AR5210_RF_GAIN(0x3d), 0x00000006 },                      \
00427         { AR5K_AR5210_RF_GAIN(0x3e), 0x00000006 },                      \
00428         { AR5K_AR5210_RF_GAIN(0x3f), 0x00000006 },                      \
00429         /* PHY activation */                                            \
00430         { AR5K_AR5210_PHY(53), 0x00000020 },                            \
00431         { AR5K_AR5210_PHY(51), 0x00000004 },                            \
00432         { AR5K_AR5210_PHY(50), 0x00060106 },                            \
00433         { AR5K_AR5210_PHY(39), 0x0000006d },                            \
00434         { AR5K_AR5210_PHY(48), 0x00000000 },                            \
00435         { AR5K_AR5210_PHY(52), 0x00000014 },                            \
00436         { AR5K_AR5210_PHY_ACTIVE, AR5K_AR5210_PHY_ENABLE },             \
00437 }
00438 
00439 #endif /* _AR5K_AR5210_VAR_H */

Generated on Mon Nov 21 15:58:10 2005 for openwifi by  doxygen 1.4.1