The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/rt2560reg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: rt2560reg.h,v 1.1 2006/06/04 20:38:06 rpaulo Exp $     */
    2 /*      $OpenBSD: rt2560reg.h,v 1.3 2006/01/14 12:43:27 damien Exp $  */
    3 
    4 /*-
    5  * Copyright (c) 2005, 2006
    6  *      Damien Bergamini <damien.bergamini@free.fr>
    7  *
    8  * Permission to use, copy, modify, and distribute this software for any
    9  * purpose with or without fee is hereby granted, provided that the above
   10  * copyright notice and this permission notice appear in all copies.
   11  *
   12  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   13  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   14  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   15  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   17  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   18  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   19  */
   20 
   21 #define RT2560_TX_RING_COUNT            48
   22 #define RT2560_ATIM_RING_COUNT          4
   23 #define RT2560_PRIO_RING_COUNT          16
   24 #define RT2560_BEACON_RING_COUNT        1
   25 #define RT2560_RX_RING_COUNT            32
   26 
   27 #define RT2560_TX_DESC_SIZE     (sizeof (struct rt2560_tx_desc))
   28 #define RT2560_RX_DESC_SIZE     (sizeof (struct rt2560_rx_desc))
   29 
   30 #define RT2560_MAX_SCATTER      1
   31 
   32 /*
   33  * Control and status registers.
   34  */
   35 #define RT2560_CSR0             0x0000  /* ASIC version number */
   36 #define RT2560_CSR1             0x0004  /* System control */
   37 #define RT2560_CSR3             0x000c  /* STA MAC address 0 */
   38 #define RT2560_CSR4             0x0010  /* STA MAC address 1 */
   39 #define RT2560_CSR5             0x0014  /* BSSID 0 */
   40 #define RT2560_CSR6             0x0018  /* BSSID 1 */
   41 #define RT2560_CSR7             0x001c  /* Interrupt source */
   42 #define RT2560_CSR8             0x0020  /* Interrupt mask */
   43 #define RT2560_CSR9             0x0024  /* Maximum frame length */
   44 #define RT2560_SECCSR0          0x0028  /* WEP control */
   45 #define RT2560_CSR11            0x002c  /* Back-off control */
   46 #define RT2560_CSR12            0x0030  /* Synchronization configuration 0 */
   47 #define RT2560_CSR13            0x0034  /* Synchronization configuration 1 */
   48 #define RT2560_CSR14            0x0038  /* Synchronization control */
   49 #define RT2560_CSR15            0x003c  /* Synchronization status */
   50 #define RT2560_CSR16            0x0040  /* TSF timer 0 */
   51 #define RT2560_CSR17            0x0044  /* TSF timer 1 */
   52 #define RT2560_CSR18            0x0048  /* IFS timer 0 */
   53 #define RT2560_CSR19            0x004c  /* IFS timer 1 */
   54 #define RT2560_CSR20            0x0050  /* WAKEUP timer */
   55 #define RT2560_CSR21            0x0054  /* EEPROM control */
   56 #define RT2560_CSR22            0x0058  /* CFP control */
   57 #define RT2560_TXCSR0           0x0060  /* TX control */
   58 #define RT2560_TXCSR1           0x0064  /* TX configuration */
   59 #define RT2560_TXCSR2           0x0068  /* TX descriptor configuration */
   60 #define RT2560_TXCSR3           0x006c  /* TX ring base address */
   61 #define RT2560_TXCSR4           0x0070  /* TX ATIM ring base address */
   62 #define RT2560_TXCSR5           0x0074  /* TX PRIO ring base address */
   63 #define RT2560_TXCSR6           0x0078  /* Beacon base address */
   64 #define RT2560_TXCSR7           0x007c  /* AutoResponder control */
   65 #define RT2560_RXCSR0           0x0080  /* RX control */
   66 #define RT2560_RXCSR1           0x0084  /* RX descriptor configuration */
   67 #define RT2560_RXCSR2           0x0088  /* RX ring base address */
   68 #define RT2560_PCICSR           0x008c  /* PCI control */
   69 #define RT2560_RXCSR3           0x0090  /* BBP ID 0 */
   70 #define RT2560_TXCSR9           0x0094  /* OFDM TX BBP */
   71 #define RT2560_ARSP_PLCP_0      0x0098  /* Auto Responder PLCP address */
   72 #define RT2560_ARSP_PLCP_1      0x009c  /* Auto Responder Basic Rate mask */
   73 #define RT2560_CNT0             0x00a0  /* FCS error counter */
   74 #define RT2560_CNT1             0x00ac  /* PLCP error counter */
   75 #define RT2560_CNT2             0x00b0  /* Long error counter */
   76 #define RT2560_CNT3             0x00b8  /* CCA false alarm counter */
   77 #define RT2560_CNT4             0x00bc  /* RX FIFO Overflow counter */
   78 #define RT2560_CNT5             0x00c0  /* Tx FIFO Underrun counter */
   79 #define RT2560_PWRCSR0          0x00c4  /* Power mode configuration */
   80 #define RT2560_PSCSR0           0x00c8  /* Power state transition time */
   81 #define RT2560_PSCSR1           0x00cc  /* Power state transition time */
   82 #define RT2560_PSCSR2           0x00d0  /* Power state transition time */
   83 #define RT2560_PSCSR3           0x00d4  /* Power state transition time */
   84 #define RT2560_PWRCSR1          0x00d8  /* Manual power control/status */
   85 #define RT2560_TIMECSR          0x00dc  /* Timer control */
   86 #define RT2560_MACCSR0          0x00e0  /* MAC configuration */
   87 #define RT2560_MACCSR1          0x00e4  /* MAC configuration */
   88 #define RT2560_RALINKCSR        0x00e8  /* Ralink RX auto-reset BBCR */
   89 #define RT2560_BCNCSR           0x00ec  /* Beacon interval control */
   90 #define RT2560_BBPCSR           0x00f0  /* BBP serial control */
   91 #define RT2560_RFCSR            0x00f4  /* RF serial control */
   92 #define RT2560_LEDCSR           0x00f8  /* LED control */
   93 #define RT2560_SECCSR3          0x00fc  /* XXX not documented */
   94 #define RT2560_DMACSR0          0x0100  /* Current RX ring address */
   95 #define RT2560_DMACSR1          0x0104  /* Current Tx ring address */
   96 #define RT2560_DMACSR2          0x0104  /* Current Priority ring address */
   97 #define RT2560_DMACSR3          0x0104  /* Current ATIM ring address */
   98 #define RT2560_TXACKCSR0        0x0110  /* XXX not documented */
   99 #define RT2560_GPIOCSR          0x0120  /* */
  100 #define RT2560_BBBPPCSR         0x0124  /* BBP Pin Control */
  101 #define RT2560_FIFOCSR0         0x0128  /* TX FIFO pointer */
  102 #define RT2560_FIFOCSR1         0x012c  /* RX FIFO pointer */
  103 #define RT2560_BCNOCSR          0x0130  /* Beacon time offset */
  104 #define RT2560_RLPWCSR          0x0134  /* RX_PE Low Width */
  105 #define RT2560_TESTCSR          0x0138  /* Test Mode Select */
  106 #define RT2560_PLCP1MCSR        0x013c  /* Signal/Service/Length of ACK @1M */
  107 #define RT2560_PLCP2MCSR        0x0140  /* Signal/Service/Length of ACK @2M */
  108 #define RT2560_PLCP5p5MCSR      0x0144  /* Signal/Service/Length of ACK @5.5M */
  109 #define RT2560_PLCP11MCSR       0x0148  /* Signal/Service/Length of ACK @11M */
  110 #define RT2560_ACKPCTCSR        0x014c  /* ACK/CTS padload consume time */
  111 #define RT2560_ARTCSR1          0x0150  /* ACK/CTS padload consume time */
  112 #define RT2560_ARTCSR2          0x0154  /* ACK/CTS padload consume time */
  113 #define RT2560_SECCSR1          0x0158  /* WEP control */
  114 #define RT2560_BBPCSR1          0x015c  /* BBP TX Configuration */
  115 
  116 
  117 /* possible flags for register RXCSR0 */
  118 #define RT2560_DISABLE_RX               (1 << 0)
  119 #define RT2560_DROP_CRC_ERROR           (1 << 1)
  120 #define RT2560_DROP_PHY_ERROR           (1 << 2)
  121 #define RT2560_DROP_CTL                 (1 << 3)
  122 #define RT2560_DROP_NOT_TO_ME           (1 << 4)
  123 #define RT2560_DROP_TODS                (1 << 5)
  124 #define RT2560_DROP_VERSION_ERROR       (1 << 6)
  125 
  126 /* possible flags for register CSR1 */
  127 #define RT2560_RESET_ASIC       (1 << 0)
  128 #define RT2560_RESET_BBP        (1 << 1)
  129 #define RT2560_HOST_READY       (1 << 2)
  130 
  131 /* possible flags for register CSR14 */
  132 #define RT2560_ENABLE_TSF               (1 << 0)
  133 #define RT2560_ENABLE_TSF_SYNC(x)       (((x) & 0x3) << 1)
  134 #define RT2560_ENABLE_TBCN              (1 << 3)
  135 #define RT2560_ENABLE_BEACON_GENERATOR  (1 << 6)
  136 
  137 /* possible flags for register CSR21 */
  138 #define RT2560_C        (1 << 1)
  139 #define RT2560_S        (1 << 2)
  140 #define RT2560_D        (1 << 3)
  141 #define RT2560_Q        (1 << 4)
  142 #define RT2560_93C46    (1 << 5)
  143 
  144 #define RT2560_SHIFT_D  3
  145 #define RT2560_SHIFT_Q  4
  146 
  147 /* possible flags for register TXCSR0 */
  148 #define RT2560_KICK_TX          (1 << 0)
  149 #define RT2560_KICK_ATIM        (1 << 1)
  150 #define RT2560_KICK_PRIO        (1 << 2)
  151 #define RT2560_ABORT_TX         (1 << 3)
  152 
  153 /* possible flags for register SECCSR0 */
  154 #define RT2560_KICK_DECRYPT     (1 << 0)
  155 
  156 /* possible flags for register SECCSR1 */
  157 #define RT2560_KICK_ENCRYPT     (1 << 0)
  158 
  159 /* possible flags for register CSR7 */
  160 #define RT2560_BEACON_EXPIRE    0x00000001
  161 #define RT2560_WAKEUP_EXPIRE    0x00000002
  162 #define RT2560_ATIM_EXPIRE      0x00000004
  163 #define RT2560_TX_DONE          0x00000008
  164 #define RT2560_ATIM_DONE        0x00000010
  165 #define RT2560_PRIO_DONE        0x00000020
  166 #define RT2560_RX_DONE          0x00000040
  167 #define RT2560_DECRYPTION_DONE  0x00000080
  168 #define RT2560_ENCRYPTION_DONE  0x00000100
  169 
  170 #define RT2560_INTR_MASK                                                  \
  171         (~(RT2560_BEACON_EXPIRE | RT2560_WAKEUP_EXPIRE | RT2560_TX_DONE | \
  172            RT2560_PRIO_DONE | RT2560_RX_DONE | RT2560_DECRYPTION_DONE |   \
  173            RT2560_ENCRYPTION_DONE))
  174 
  175 /* Tx descriptor */
  176 struct rt2560_tx_desc {
  177         uint32_t        flags;
  178 #define RT2560_TX_BUSY          (1 << 0)
  179 #define RT2560_TX_VALID         (1 << 1)
  180 
  181 #define RT2560_TX_RESULT_MASK           0x0000001c
  182 #define RT2560_TX_SUCCESS               (0 << 2)
  183 #define RT2560_TX_SUCCESS_RETRY         (1 << 2)
  184 #define RT2560_TX_FAIL_RETRY            (2 << 2)
  185 #define RT2560_TX_FAIL_INVALID          (3 << 2)
  186 #define RT2560_TX_FAIL_OTHER            (4 << 2)
  187 
  188 #define RT2560_TX_MORE_FRAG             (1 << 8)
  189 #define RT2560_TX_ACK                   (1 << 9)
  190 #define RT2560_TX_TIMESTAMP             (1 << 10)
  191 #define RT2560_TX_OFDM                  (1 << 11)
  192 #define RT2560_TX_CIPHER_BUSY           (1 << 12)
  193 
  194 #define RT2560_TX_IFS_MASK              0x00006000
  195 #define RT2560_TX_IFS_BACKOFF           (0 << 13)
  196 #define RT2560_TX_IFS_SIFS              (1 << 13)
  197 #define RT2560_TX_IFS_NEWBACKOFF        (2 << 13)
  198 #define RT2560_TX_IFS_NONE              (3 << 13)
  199 
  200 #define RT2560_TX_LONG_RETRY            (1 << 15)
  201 
  202 #define RT2560_TX_CIPHER_MASK           0xe0000000
  203 #define RT2560_TX_CIPHER_NONE           (0 << 29)
  204 #define RT2560_TX_CIPHER_WEP40          (1 << 29)
  205 #define RT2560_TX_CIPHER_WEP104         (2 << 29)
  206 #define RT2560_TX_CIPHER_TKIP           (3 << 29)
  207 #define RT2560_TX_CIPHER_AES            (4 << 29)
  208 
  209         uint32_t        physaddr;
  210         uint16_t        wme;
  211 #define RT2560_LOGCWMAX(x)      (((x) & 0xf) << 12)
  212 #define RT2560_LOGCWMIN(x)      (((x) & 0xf) << 8)
  213 #define RT2560_AIFSN(x)         (((x) & 0x3) << 6)
  214 #define RT2560_IVOFFSET(x)      (((x) & 0x3f))
  215 
  216         uint16_t        reserved1;
  217         uint8_t         plcp_signal;
  218         uint8_t         plcp_service;
  219 #define RT2560_PLCP_LENGEXT     0x80
  220 
  221         uint8_t         plcp_length_lo;
  222         uint8_t         plcp_length_hi;
  223         uint32_t        iv;
  224         uint32_t        eiv;
  225         uint8_t         key[IEEE80211_KEYBUF_SIZE];
  226         uint32_t        reserved2[2];
  227 } __packed;
  228 
  229 /* Rx descriptor */
  230 struct rt2560_rx_desc {
  231         uint32_t        flags;
  232 #define RT2560_RX_BUSY          (1 << 0)
  233 #define RT2560_RX_CRC_ERROR     (1 << 5)
  234 #define RT2560_RX_OFDM          (1 << 6)
  235 #define RT2560_RX_PHY_ERROR     (1 << 7)
  236 #define RT2560_RX_CIPHER_BUSY   (1 << 8)
  237 #define RT2560_RX_ICV_ERROR     (1 << 9)
  238 
  239 #define RT2560_RX_CIPHER_MASK   0xe0000000
  240 #define RT2560_RX_CIPHER_NONE   (0 << 29)
  241 #define RT2560_RX_CIPHER_WEP40  (1 << 29)
  242 #define RT2560_RX_CIPHER_WEP104 (2 << 29)
  243 #define RT2560_RX_CIPHER_TKIP   (3 << 29)
  244 #define RT2560_RX_CIPHER_AES    (4 << 29)
  245 
  246         uint32_t        physaddr;
  247         uint8_t         rate;
  248         uint8_t         rssi;
  249         uint8_t         ta[IEEE80211_ADDR_LEN];
  250         uint32_t        iv;
  251         uint32_t        eiv;
  252         uint8_t         key[IEEE80211_KEYBUF_SIZE];
  253         uint32_t        reserved[2];
  254 } __packed;
  255 
  256 #define RT2560_RF1      0
  257 #define RT2560_RF2      2
  258 #define RT2560_RF3      1
  259 #define RT2560_RF4      3
  260 
  261 #define RT2560_RF1_AUTOTUNE     0x08000
  262 #define RT2560_RF3_AUTOTUNE     0x00040
  263 
  264 #define RT2560_BBP_BUSY         (1 << 15)
  265 #define RT2560_BBP_WRITE        (1 << 16)
  266 #define RT2560_RF_20BIT         (20 << 24)
  267 #define RT2560_RF_BUSY          (1 << 31)
  268 
  269 #define RT2560_RF_2522  0x00
  270 #define RT2560_RF_2523  0x01
  271 #define RT2560_RF_2524  0x02
  272 #define RT2560_RF_2525  0x03
  273 #define RT2560_RF_2525E 0x04
  274 #define RT2560_RF_2526  0x05
  275 /* dual-band RF */
  276 #define RT2560_RF_5222  0x10
  277 
  278 #define RT2560_BBP_VERSION      0
  279 #define RT2560_BBP_TX           2
  280 #define RT2560_BBP_RX           14
  281 
  282 #define RT2560_BBP_ANTA         0x00
  283 #define RT2560_BBP_DIVERSITY    0x01
  284 #define RT2560_BBP_ANTB         0x02
  285 #define RT2560_BBP_ANTMASK      0x03
  286 #define RT2560_BBP_FLIPIQ       0x04
  287 
  288 #define RT2560_LED_MODE_DEFAULT         0
  289 #define RT2560_LED_MODE_TXRX_ACTIVITY   1
  290 #define RT2560_LED_MODE_SINGLE          2
  291 #define RT2560_LED_MODE_ASUS            3
  292 
  293 #define RT2560_JAPAN_FILTER     0x8
  294 
  295 #define RT2560_EEPROM_CONFIG0   16
  296 #define RT2560_EEPROM_BBP_BASE  19
  297 #define RT2560_EEPROM_TXPOWER   35
  298 
  299 #define RT2560_EEPROM_DELAY     1       /* minimum hold time (microsecond) */
  300 
  301 /*
  302  * control and status registers access macros
  303  */
  304 #define RAL_READ(sc, reg)                                               \
  305         bus_space_read_4((sc)->sc_st, (sc)->sc_sh, (reg))
  306 
  307 #define RAL_WRITE(sc, reg, val)                                         \
  308         bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val))
  309 
  310 /*
  311  * EEPROM access macro
  312  */
  313 #define RT2560_EEPROM_CTL(sc, val) do {                                 \
  314         RAL_WRITE((sc), RT2560_CSR21, (val));                           \
  315         DELAY(RT2560_EEPROM_DELAY);                                     \
  316 } while (/* CONSTCOND */0)

Cache object: 210d0fcfc93a49fae15d88a7b40cd5ec


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.