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/dp83932reg.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: dp83932reg.h,v 1.3 2003/11/10 08:51:52 wiz Exp $       */
    2 
    3 /*-
    4  * Copyright (c) 2001 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Jason R. Thorpe.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the NetBSD
   21  *      Foundation, Inc. and its contributors.
   22  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23  *    contributors may be used to endorse or promote products derived
   24  *    from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36  * POSSIBILITY OF SUCH DAMAGE.
   37  */
   38 
   39 #ifndef _DEV_IC_DP83932REG_H_
   40 #define _DEV_IC_DP83932REG_H_
   41 
   42 /*
   43  * Register description for the National Semiconductor DP83932
   44  * Systems-Oriented Network Interface Controller (SONIC).
   45  */
   46 
   47 /*
   48  * SONIC Receive Descriptor Area.
   49  */
   50 struct sonic_rda16 {
   51         uint16_t        rda_status;
   52         uint16_t        rda_bytecount;
   53         uint16_t        rda_pkt_ptr0;
   54         uint16_t        rda_pkt_ptr1;
   55         uint16_t        rda_seqno;
   56         uint16_t        rda_link;
   57         uint16_t        rda_inuse;
   58 } __attribute__((__packed__));
   59 
   60 struct sonic_rda32 {
   61         uint32_t        rda_status;
   62         uint32_t        rda_bytecount;
   63         uint32_t        rda_pkt_ptr0;
   64         uint32_t        rda_pkt_ptr1;
   65         uint32_t        rda_seqno;
   66         uint32_t        rda_link;
   67         uint32_t        rda_inuse;
   68 } __attribute__((__packed__));
   69 
   70 #define RDA_SEQNO_RBA(x)        (((x) >> 8) & 0xff)
   71 #define RDA_SEQNO_RSN(x)        ((x) & 0xff)
   72 
   73 #define RDA_LINK_EOL    0x01            /* end-of-list */
   74 
   75 /*
   76  * SONIC Receive Resource Area.
   77  *
   78  * Note, in 32-bit mode, Rx buffers must be aligned to 32-bit
   79  * boundaries, and in 16-bit mode, to 16-bit boundaries.
   80  *
   81  * Also note the `word count' is always in units of 16-bit words.
   82  */
   83 struct sonic_rra16 {
   84         uint16_t        rra_ptr0;
   85         uint16_t        rra_ptr1;
   86         uint16_t        rra_wc0;
   87         uint16_t        rra_wc1;
   88 } __attribute__((__packed__));
   89 
   90 struct sonic_rra32 {
   91         uint32_t        rra_ptr0;
   92         uint32_t        rra_ptr1;
   93         uint32_t        rra_wc0;
   94         uint32_t        rra_wc1;
   95 } __attribute__((__packed__));
   96 
   97 /*
   98  * SONIC Transmit Descriptor Area
   99  *
  100  * Note the number of fragments defined here is arbitrary.
  101  */
  102 #define SONIC_NTXFRAGS  16
  103 
  104 struct sonic_frag16 {
  105         uint16_t        frag_ptr0;
  106         uint16_t        frag_ptr1;
  107         uint16_t        frag_size;
  108 } __attribute__((__packed__));
  109 
  110 struct sonic_frag32 {
  111         uint32_t        frag_ptr0;
  112         uint32_t        frag_ptr1;
  113         uint32_t        frag_size;
  114 } __attribute__((__packed__));
  115 
  116 /*
  117  * Note the frag after the last frag is used to link up to the
  118  * next descriptor.
  119  */
  120 
  121 struct sonic_tda16 {
  122         uint16_t        tda_status;
  123         uint16_t        tda_pktconfig;
  124         uint16_t        tda_pktsize;
  125         uint16_t        tda_fragcnt;
  126         struct sonic_frag16 tda_frags[SONIC_NTXFRAGS + 1];
  127 #if 0
  128         uint16_t        tda_link;
  129 #endif
  130 } __attribute__((__packed__));
  131 
  132 struct sonic_tda32 {
  133         uint32_t        tda_status;
  134         uint32_t        tda_pktconfig;
  135         uint32_t        tda_pktsize;
  136         uint32_t        tda_fragcnt;
  137         struct sonic_frag32 tda_frags[SONIC_NTXFRAGS + 1];
  138 #if 0
  139         uint32_t        tda_link;
  140 #endif
  141 } __attribute__((__packed__));
  142 
  143 #define TDA_STATUS_NCOL(x)      (((x) >> 11) & 0x1f)
  144 
  145 #define TDA_LINK_EOL            0x01    /* end-of-list */
  146 
  147 /*
  148  * SONIC CAM Descriptor Area.
  149  */
  150 struct sonic_cda16 {
  151         uint16_t        cda_entry;
  152         uint16_t        cda_addr0;
  153         uint16_t        cda_addr1;
  154         uint16_t        cda_addr2;
  155 } __attribute__((__packed__));
  156 
  157 struct sonic_cda32 {
  158         uint32_t        cda_entry;
  159         uint32_t        cda_addr0;
  160         uint32_t        cda_addr1;
  161         uint32_t        cda_addr2;
  162 } __attribute__((__packed__));
  163 
  164 /*
  165  * SONIC register file.
  166  *
  167  * NOTE: We define these as indices, and use a register map to deal
  168  * with different address strides.
  169  */
  170 
  171 #define SONIC_CR        0x00    /* Command Register */
  172 #define CR_HTX          (1U << 0)       /* Halt Transmission */
  173 #define CR_TXP          (1U << 1)       /* Transmit Packets */
  174 #define CR_RXDIS        (1U << 2)       /* Receiver Disable */
  175 #define CR_RXEN         (1U << 3)       /* Receiver Enable */
  176 #define CR_STP          (1U << 4)       /* Stop Timer */
  177 #define CR_ST           (1U << 5)       /* Start Timer */
  178 #define CR_RST          (1U << 7)       /* Software Reset */
  179 #define CR_RRRA         (1U << 8)       /* Read RRA */
  180 #define CR_LCAM         (1U << 9)       /* Load CAM */
  181 
  182 #define SONIC_DCR       0x01    /* Data Configuration Register */
  183 #define DCR_TFT0        (1U << 0)       /* Transmit FIFO Threshold (lo) */
  184 #define DCR_TFT1        (1U << 1)       /* Transmit FIFO Threshold (hi) */
  185 #define DCR_RFT0        (1U << 2)       /* Receive FIFO Threshold (lo) */
  186 #define DCR_RFT1        (1U << 3)       /* Receive FIFO Threshold (hi) */
  187 #define DCR_BMS         (1U << 4)       /* Block Mode Select for DMA */
  188 #define DCR_DW          (1U << 5)       /* Data Width Select */
  189 #define DCR_WC0         (1U << 6)       /* Wait State Control (lo) */
  190 #define DCR_WC1         (1U << 7)       /* Wait State Control (hi) */
  191 #define DCR_USR0        (1U << 8)       /* User Definable Pin 0 */
  192 #define DCR_USR1        (1U << 9)       /* User Definable Pin 1 */
  193 #define DCR_SBUS        (1U << 10)      /* Synchronous Bus Mode */
  194 #define DCR_PO0         (1U << 11)      /* Programmable Output 0 */
  195 #define DCR_PO1         (1U << 12)      /* Programmable Output 1 */
  196 #define DCR_LBR         (1U << 13)      /* Latched Bus Retry */
  197 #define DCR_EXBUS       (1U << 15)      /* Extended Bus Mode */
  198 
  199 #define SONIC_RCR       0x02    /* Receive Control Register */
  200 #define RCR_PRX         (1U << 0)       /* Packet Received OK */
  201 #define RCR_LBK         (1U << 1)       /* Loopback Packet Received */
  202 #define RCR_FAER        (1U << 2)       /* Frame Alignment Error */
  203 #define RCR_CRCR        (1U << 3)       /* CRC Error */
  204 #define RCR_COL         (1U << 4)       /* Collision Activity */
  205 #define RCR_CRS         (1U << 5)       /* Carrier Sense Activity */
  206 #define RCR_LPKT        (1U << 6)       /* Last Packet in RBA */
  207 #define RCR_BC          (1U << 7)       /* Broadcast Packet Received */
  208 #define RCR_MC          (1U << 8)       /* Multicast Packet Received */
  209 #define RCR_LB0         (1U << 9)       /* Loopback Control 0 */
  210 #define RCR_LB1         (1U << 10)      /* Loopback Control 1 */
  211 #define RCR_AMC         (1U << 11)      /* Accept All Multicast Packets */
  212 #define RCR_PRO         (1U << 12)      /* Physical Promiscuous Packets */
  213 #define RCR_BRD         (1U << 13)      /* Accept Broadcast Packets */
  214 #define RCR_RNT         (1U << 14)      /* Accept Runt Packets */
  215 #define RCR_ERR         (1U << 15)      /* Accept Packets with Errors */
  216 
  217 #define SONIC_TCR       0x03    /* Transmit Control Register */
  218 #define TCR_PTX         (1U << 0)       /* Packet Transmitted OK */
  219 #define TCR_BCM         (1U << 1)       /* Byte Count Mismatch */
  220 #define TCR_FU          (1U << 2)       /* FIFO Underrun */
  221 #define TCR_PMB         (1U << 3)       /* Packet Monitored Bad */
  222 #define TCR_OWC         (1U << 5)       /* Out of Window Collision */
  223 #define TCR_EXC         (1U << 6)       /* Excessive Collisions */
  224 #define TCR_CRSL        (1U << 7)       /* Carrier Sense Lost */
  225 #define TCR_NCRS        (1U << 8)       /* No Carrier Sense */
  226 #define TCR_DEF         (1U << 9)       /* Deferred Transmission */
  227 #define TCR_EXD         (1U << 10)      /* Excessive Deferral */
  228 #define TCR_EXDIS       (1U << 12)      /* Disable Excessive Deferral Timer */
  229 #define TCR_CRCI        (1U << 13)      /* CRC Inhibit */
  230 #define TCR_POWC        (1U << 14)      /* Programmed Out of Window Col. Tmr */
  231 #define TCR_PINT        (1U << 15)      /* Programmable Interrupt */
  232 
  233 #define SONIC_IMR       0x04    /* Interrupt Mask Register */
  234 #define IMR_RFO         (1U << 0)       /* Rx FIFO Overrun */
  235 #define IMR_MP          (1U << 1)       /* Missed Packet Tally */
  236 #define IMR_FAE         (1U << 2)       /* Frame Alignment Error Tally */
  237 #define IMR_CRC         (1U << 3)       /* CRC Tally */
  238 #define IMR_RBA         (1U << 4)       /* RBA Exceeded */
  239 #define IMR_RBE         (1U << 5)       /* Rx Buffers Exhausted */
  240 #define IMR_RDE         (1U << 6)       /* Rx Descriptors Exhausted */
  241 #define IMR_TC          (1U << 7)       /* Timer Complete */
  242 #define IMR_TXER        (1U << 8)       /* Transmit Error */
  243 #define IMR_PTX         (1U << 9)       /* Transmit OK */
  244 #define IMR_PRX         (1U << 10)      /* Packet Received */
  245 #define IMR_PINT        (1U << 11)      /* Programmable Interrupt */
  246 #define IMR_LCD         (1U << 12)      /* Load CAM Done */
  247 #define IMR_HBL         (1U << 13)      /* Heartbeat Lost */
  248 #define IMR_BR          (1U << 14)      /* Bus Retry Occurred */
  249 
  250 #define SONIC_ISR       0x05    /* Interrupt Status Register */
  251         /* See IMR bits. */
  252 
  253 #define SONIC_UTDAR     0x06    /* Upper Tx Descriptor Address Register */
  254 
  255 #define SONIC_CTDAR     0x07    /* Current Tx Descriptor Address Register */
  256 
  257 #define SONIC_TPS       0x08    /* Transmit Packet Size */
  258 
  259 #define SONIC_TFC       0x09    /* Transmit Fragment Count */
  260 
  261 #define SONIC_TSA0      0x0a    /* Transmit Start Address (lo) */
  262 
  263 #define SONIC_TSA1      0x0b    /* Transmit Start Address (hi) */
  264 
  265 #define SONIC_TFS       0x0c    /* Transmit Fragment Size */
  266 
  267 #define SONIC_URDAR     0x0d    /* Upper Rx Descriptor Address Register */
  268 
  269 #define SONIC_CRDAR     0x0e    /* Current Rx Descriptor Address Register */
  270 
  271 #define SONIC_CRBA0     0x0f    /* Current Receive Buffer Address (lo) */
  272 
  273 #define SONIC_CRBA1     0x10    /* Current Receive Buffer Address (hi) */
  274 
  275 #define SONIC_RBWC0     0x11    /* Remaining Buffer Word Count 0 */
  276 
  277 #define SONIC_RBWC1     0x12    /* Remaining Buffer Word Count 1 */
  278 
  279 #define SONIC_EOBC      0x13    /* End Of Buffer Word Count */
  280 
  281 #define SONIC_URRAR     0x14    /* Upper Rx Resource Address Register */
  282 
  283 #define SONIC_RSAR      0x15    /* Resource Start Address Register */
  284 
  285 #define SONIC_REAR      0x16    /* Resource End Address Register */
  286 
  287 #define SONIC_RRR       0x17    /* Resource Read Register */
  288 
  289 #define SONIC_RWR       0x18    /* Resource Write Register */
  290 
  291 #define SONIC_TRBA0     0x19    /* Temporary Receive Buffer Address (lo) */
  292 
  293 #define SONIC_TRBA1     0x1a    /* Temporary Receive Buffer Address (hi) */
  294 
  295 #define SONIC_TBWC0     0x1b    /* Temporary Buffer Word Count 0 */
  296 
  297 #define SONIC_TBWC1     0x1c    /* Temporary Buffer Word Count 1 */
  298 
  299 #define SONIC_ADDR0     0x1d    /* Address Generator 0 */
  300 
  301 #define SONIC_ADDR1     0x1e    /* Address Generator 1 */
  302 
  303 #define SONIC_LLFA      0x1f    /* Last Link Field Address */
  304 
  305 #define SONIC_TTDA      0x20    /* Temporary Tx Descriptor Address */
  306 
  307 #define SONIC_CEP       0x21    /* CAM Entry Pointer */
  308 
  309 #define SONIC_CAP2      0x22    /* CAM Address Port 2 */
  310 
  311 #define SONIC_CAP1      0x23    /* CAM Address Port 1 */
  312 
  313 #define SONIC_CAP0      0x24    /* CAM Address Port 0 */
  314 
  315 #define SONIC_CER       0x25    /* CAM Enable Register */
  316 
  317 #define SONIC_CDP       0x26    /* CAM Descriptor Pointer */
  318 
  319 #define SONIC_CDC       0x27    /* CAM Descriptor Count */
  320 
  321 #define SONIC_SRR       0x28    /* Silicon Revision Register */
  322 
  323 #define SONIC_WT0       0x29    /* Watchdog Timer 0 */
  324 
  325 #define SONIC_WT1       0x2a    /* Watchdog Timer 1 */
  326 
  327 #define SONIC_RSC       0x2b    /* Receive Sequence Counter */
  328 
  329 #define SONIC_CRCETC    0x2c    /* CRC Error Tally Count */
  330 
  331 #define SONIC_FAET      0x2d    /* Frame Alignment Error Tally */
  332 
  333 #define SONIC_MPT       0x2e    /* Missed Packet Tally */
  334 
  335 #define SONIC_DCR2      0x3f    /* Data Configuration Register 2 */
  336 #define DCR2_RJCM       (1U << 0)       /* Reject on CAM Match */
  337 #define DCR2_PCNM       (1U << 1)       /* Packet Compress When not Matched */
  338 #define DCR2_PCM        (1U << 2)       /* Packet Compress When Matched */
  339 #define DCR2_PH         (1U << 4)       /* Program Hold */
  340 #define DCR2_EXPO0      (1U << 12)      /* Extended Programmable Output 0 */
  341 #define DCR2_EXPO1      (1U << 13)      /* Extended Programmable Output 1 */
  342 #define DCR2_EXPO2      (1U << 14)      /* Extended Programmable Output 2 */
  343 #define DCR2_EXPO3      (1U << 15)      /* Extended Programmable Output 3 */
  344 
  345 #define SONIC_NREGS     0x40
  346 
  347 #endif /* _DEV_IC_DP83932REG_H_ */

Cache object: d24ee93e5171cb1b3b321c145038096d


[ 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.