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/vte/if_vtereg.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 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2010, Pyun YongHyeon <yongari@FreeBSD.org>
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice unmodified, this list of conditions, and the following
   12  *    disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   27  * SUCH DAMAGE.
   28  *
   29  * $FreeBSD$
   30  */
   31 
   32 #ifndef _IF_VTEREG_H
   33 #define _IF_VTEREG_H
   34 
   35 /*
   36  * RDC Semiconductor PCI vendor ID
   37  */
   38 #define VENDORID_RDC            0x17F3
   39 
   40 /*
   41  * Vortex86 RDC R6040 FastEthernet device ID
   42  */
   43 #define DEVICEID_RDC_R6040              0x6040  /* PMX-1000 */
   44 
   45 /* MAC control register 0 */
   46 #define VTE_MCR0                        0x00
   47 #define MCR0_ACCPT_ERR                  0x0001
   48 #define MCR0_RX_ENB                     0x0002
   49 #define MCR0_ACCPT_RUNT                 0x0004
   50 #define MCR0_ACCPT_LONG_PKT             0x0008
   51 #define MCR0_ACCPT_DRIBBLE              0x0010
   52 #define MCR0_PROMISC                    0x0020
   53 #define MCR0_BROADCAST_DIS              0x0040
   54 #define MCR0_RX_EARLY_INTR              0x0080
   55 #define MCR0_MULTICAST                  0x0100
   56 #define MCR0_FC_ENB                     0x0200
   57 #define MCR0_TX_ENB                     0x1000
   58 #define MCR0_TX_EARLY_INTR              0x4000
   59 #define MCR0_FULL_DUPLEX                0x8000
   60 
   61 /* MAC control register 1 */
   62 #define VTE_MCR1                        0x04
   63 #define MCR1_MAC_RESET                  0x0001
   64 #define MCR1_MAC_LOOPBACK               0x0002
   65 #define MCR1_EXCESS_COL_RETRANS_DIS     0x0004
   66 #define MCR1_AUTO_CHG_DUPLEX            0x0008
   67 #define MCR1_PKT_LENGTH_1518            0x0010
   68 #define MCR1_PKT_LENGTH_1522            0x0020
   69 #define MCR1_PKT_LENGTH_1534            0x0030
   70 #define MCR1_PKT_LENGTH_1537            0x0000
   71 #define MCR1_EARLY_INTR_THRESH_1129     0x0000
   72 #define MCR1_EARLY_INTR_THRESH_1257     0x0040
   73 #define MCR1_EARLY_INTR_THRESH_1385     0x0080
   74 #define MCR1_EARLY_INTR_THRESH_1513     0x00C0
   75 #define MCR1_EXCESS_COL_RETRY_16        0x0000
   76 #define MCR1_EXCESS_COL_RETRY_32        0x0100
   77 #define MCR1_FC_ACTIVE                  0x0200
   78 #define MCR1_RX_DESC_HASH_IDX           0x4000
   79 #define MCR1_RX_UNICAST_HASH            0x8000
   80 
   81 #define MCR1_PKT_LENGTH_MASK            0x0030
   82 #define MCR1_EARLY_INTR_THRESH_MASK     0x00C0
   83 
   84 /* MAC bus control register */
   85 #define VTE_MBCR                        0x08
   86 #define MBCR_FIFO_XFER_LENGTH_4         0x0000
   87 #define MBCR_FIFO_XFER_LENGTH_8         0x0001
   88 #define MBCR_FIFO_XFER_LENGTH_16        0x0002
   89 #define MBCR_FIFO_XFER_LENGTH_32        0x0003
   90 #define MBCR_TX_FIFO_THRESH_16          0x0000
   91 #define MBCR_TX_FIFO_THRESH_32          0x0004
   92 #define MBCR_TX_FIFO_THRESH_64          0x0008
   93 #define MBCR_TX_FIFO_THRESH_96          0x000C
   94 #define MBCR_RX_FIFO_THRESH_8           0x0000
   95 #define MBCR_RX_FIFO_THRESH_16          0x0010
   96 #define MBCR_RX_FIFO_THRESH_32          0x0020
   97 #define MBCR_RX_FIFO_THRESH_64          0x0030
   98 #define MBCR_SDRAM_BUS_REQ_TIMER_MASK   0x1F00
   99 #define MBCR_SDRAM_BUS_REQ_TIMER_SHIFT  8
  100 #define MBCR_SDRAM_BUS_REQ_TIMER_DEFAULT        0x1F00
  101 
  102 /* MAC TX interrupt control register */
  103 #define VTE_MTICR                       0x0C
  104 #define MTICR_TX_TIMER_MASK             0x001F
  105 #define MTICR_TX_BUNDLE_MASK            0x0F00
  106 #define VTE_IM_TX_TIMER_DEFAULT         0x7F
  107 #define VTE_IM_TX_BUNDLE_DEFAULT        15
  108 
  109 #define VTE_IM_TIMER_MIN                0
  110 #define VTE_IM_TIMER_MAX                82
  111 #define VTE_IM_TIMER_MASK               0x001F
  112 #define VTE_IM_TIMER_SHIFT              0
  113 #define VTE_IM_BUNDLE_MIN               1
  114 #define VTE_IM_BUNDLE_MAX               15
  115 #define VTE_IM_BUNDLE_SHIFT             8
  116 
  117 /* MAC RX interrupt control register */
  118 #define VTE_MRICR                       0x10
  119 #define MRICR_RX_TIMER_MASK             0x001F
  120 #define MRICR_RX_BUNDLE_MASK            0x0F00
  121 #define VTE_IM_RX_TIMER_DEFAULT         0x7F
  122 #define VTE_IM_RX_BUNDLE_DEFAULT        15
  123 
  124 /* MAC TX poll command register */
  125 #define VTE_TX_POLL                     0x14
  126 #define TX_POLL_START                   0x0001
  127 
  128 /* MAC RX buffer size register */
  129 #define VTE_MRBSR                       0x18
  130 #define VTE_MRBSR_SIZE_MASK             0x03FF
  131 
  132 /* MAC RX descriptor control register */
  133 #define VTE_MRDCR                       0x1A
  134 #define VTE_MRDCR_RESIDUE_MASK          0x00FF
  135 #define VTE_MRDCR_RX_PAUSE_THRESH_MASK  0xFF00
  136 #define VTE_MRDCR_RX_PAUSE_THRESH_SHIFT 8
  137 
  138 /* MAC Last status register */
  139 #define VTE_MLSR                        0x1C
  140 #define MLSR_MULTICAST                  0x0001
  141 #define MLSR_BROADCAST                  0x0002
  142 #define MLSR_CRC_ERR                    0x0004
  143 #define MLSR_RUNT                       0x0008
  144 #define MLSR_LONG_PKT                   0x0010
  145 #define MLSR_TRUNC                      0x0020
  146 #define MLSR_DRIBBLE                    0x0040
  147 #define MLSR_PHY_ERR                    0x0080
  148 #define MLSR_TX_FIFO_UNDERRUN           0x0200
  149 #define MLSR_RX_DESC_UNAVAIL            0x0400
  150 #define MLSR_TX_EXCESS_COL              0x2000
  151 #define MLSR_TX_LATE_COL                0x4000
  152 #define MLSR_RX_FIFO_OVERRUN            0x8000
  153 
  154 /* MAC MDIO control register */
  155 #define VTE_MMDIO                       0x20
  156 #define MMDIO_REG_ADDR_MASK             0x001F
  157 #define MMDIO_PHY_ADDR_MASK             0x1F00
  158 #define MMDIO_READ                      0x2000
  159 #define MMDIO_WRITE                     0x4000
  160 #define MMDIO_REG_ADDR_SHIFT            0
  161 #define MMDIO_PHY_ADDR_SHIFT            8
  162 
  163 /* MAC MDIO read data register */
  164 #define VTE_MMRD                        0x24
  165 #define MMRD_DATA_MASK                  0xFFFF
  166 
  167 /* MAC MDIO write data register */
  168 #define VTE_MMWD                        0x28
  169 #define MMWD_DATA_MASK                  0xFFFF
  170 
  171 /* MAC TX descriptor start address 0 */
  172 #define VTE_MTDSA0                      0x2C
  173 
  174 /* MAC TX descriptor start address 1 */
  175 #define VTE_MTDSA1                      0x30
  176 
  177 /* MAC RX descriptor start address 0 */
  178 #define VTE_MRDSA0                      0x34
  179 
  180 /* MAC RX descriptor start address 1 */
  181 #define VTE_MRDSA1                      0x38
  182 
  183 /* MAC Interrupt status register */
  184 #define VTE_MISR                        0x3C
  185 #define MISR_RX_DONE                    0x0001
  186 #define MISR_RX_DESC_UNAVAIL            0x0002
  187 #define MISR_RX_FIFO_FULL               0x0004
  188 #define MISR_RX_EARLY_INTR              0x0008
  189 #define MISR_TX_DONE                    0x0010
  190 #define MISR_TX_EARLY_INTR              0x0080
  191 #define MISR_EVENT_CNT_OFLOW            0x0100
  192 #define MISR_PHY_MEDIA_CHG              0x0200
  193 
  194 /* MAC Interrupt enable register */
  195 #define VTE_MIER                        0x40
  196 
  197 #define VTE_INTRS                                                       \
  198         (MISR_RX_DONE | MISR_RX_DESC_UNAVAIL | MISR_RX_FIFO_FULL |      \
  199         MISR_TX_DONE | MISR_EVENT_CNT_OFLOW)
  200 
  201 /* MAC Event counter interrupt status register */
  202 #define VTE_MECISR                      0x44
  203 #define MECISR_EC_RX_DONE               0x0001
  204 #define MECISR_EC_MULTICAST             0x0002
  205 #define MECISR_EC_BROADCAST             0x0004
  206 #define MECISR_EC_CRC_ERR               0x0008
  207 #define MECISR_EC_RUNT                  0x0010
  208 #define MESCIR_EC_LONG_PKT              0x0020
  209 #define MESCIR_EC_RX_DESC_UNAVAIL       0x0080
  210 #define MESCIR_EC_RX_FIFO_FULL          0x0100
  211 #define MESCIR_EC_TX_DONE               0x0200
  212 #define MESCIR_EC_LATE_COL              0x0400
  213 #define MESCIR_EC_TX_UNDERRUN           0x0800
  214 
  215 /* MAC Event counter interrupt enable register */
  216 #define VTE_MECIER                      0x48
  217 #define VTE_MECIER_INTRS                                                 \
  218         (MECISR_EC_RX_DONE | MECISR_EC_MULTICAST | MECISR_EC_BROADCAST | \
  219         MECISR_EC_CRC_ERR | MECISR_EC_RUNT | MESCIR_EC_LONG_PKT |        \
  220         MESCIR_EC_RX_DESC_UNAVAIL | MESCIR_EC_RX_FIFO_FULL |             \
  221         MESCIR_EC_TX_DONE | MESCIR_EC_LATE_COL | MESCIR_EC_TX_UNDERRUN)
  222 
  223 #define VTE_CNT_RX_DONE                 0x50
  224 
  225 #define VTE_CNT_MECNT0                  0x52
  226 
  227 #define VTE_CNT_MECNT1                  0x54
  228 
  229 #define VTE_CNT_MECNT2                  0x56
  230 
  231 #define VTE_CNT_MECNT3                  0x58
  232 
  233 #define VTE_CNT_TX_DONE                 0x5A
  234 
  235 #define VTE_CNT_MECNT4                  0x5C
  236 
  237 #define VTE_CNT_PAUSE                   0x5E
  238 
  239 /* MAC Hash table register */
  240 #define VTE_MAR0                        0x60
  241 #define VTE_MAR1                        0x62
  242 #define VTE_MAR2                        0x64
  243 #define VTE_MAR3                        0x66
  244 
  245 /* MAC station address and multicast address register */
  246 #define VTE_MID0L                       0x68
  247 #define VTE_MID0M                       0x6A
  248 #define VTE_MID0H                       0x6C
  249 #define VTE_MID1L                       0x70
  250 #define VTE_MID1M                       0x72
  251 #define VTE_MID1H                       0x74
  252 #define VTE_MID2L                       0x78
  253 #define VTE_MID2M                       0x7A
  254 #define VTE_MID2H                       0x7C
  255 #define VTE_MID3L                       0x80
  256 #define VTE_MID3M                       0x82
  257 #define VTE_MID3H                       0x84
  258 
  259 #define VTE_RXFILTER_PEEFECT_BASE       VTE_MID1L
  260 #define VTE_RXFILT_PERFECT_CNT          3
  261 
  262 /* MAC PHY status change configuration register */
  263 #define VTE_MPSCCR                      0x88
  264 #define MPSCCR_TIMER_DIVIDER_MASK       0x0007
  265 #define MPSCCR_PHY_ADDR_MASK            0x1F00
  266 #define MPSCCR_PHY_STS_CHG_ENB          0x8000
  267 #define MPSCCR_PHY_ADDR_SHIFT           8
  268 
  269 /* MAC PHY status register2 */
  270 #define VTE_MPSR                        0x8A
  271 #define MPSR_LINK_UP                    0x0001
  272 #define MPSR_SPEED_100                  0x0002
  273 #define MPSR_FULL_DUPLEX                0x0004
  274 
  275 /* MAC Status machine(undocumented). */
  276 #define VTE_MACSM                       0xAC
  277 
  278 /* MDC Speed control register */
  279 #define VTE_MDCSC                       0xB6
  280 #define MDCSC_DEFAULT                   0x0030
  281 
  282 /* MAC Identifier and revision register */
  283 #define VTE_MACID_REV                   0xBC
  284 #define VTE_MACID_REV_MASK              0x00FF
  285 #define VTE_MACID_MASK                  0xFF00
  286 #define VTE_MACID_REV_SHIFT             0
  287 #define VTE_MACID_SHIFT                 8
  288 
  289 /* MAC Identifier register */
  290 #define VTE_MACID                       0xBE
  291 
  292 /*
  293  * RX descriptor
  294  * - Added one more uint16_t member to align it 4 on bytes boundary.
  295  *   This does not affect operation of controller since it includes
  296  *   next pointer address.
  297  */
  298 struct vte_rx_desc {
  299         uint16_t drst;
  300         uint16_t drlen;
  301         uint32_t drbp;
  302         uint32_t drnp;
  303         uint16_t hidx;
  304         uint16_t rsvd2;
  305         uint16_t rsvd3;
  306         uint16_t __pad; /* Not actual descriptor member. */
  307 };
  308 
  309 #define VTE_DRST_MID_MASK       0x0003
  310 #define VTE_DRST_MID_HIT        0x0004
  311 #define VTE_DRST_MULTICAST_HIT  0x0008
  312 #define VTE_DRST_MULTICAST      0x0010
  313 #define VTE_DRST_BROADCAST      0x0020
  314 #define VTE_DRST_CRC_ERR        0x0040
  315 #define VTE_DRST_RUNT           0x0080
  316 #define VTE_DRST_LONG           0x0100
  317 #define VTE_DRST_TRUNC          0x0200
  318 #define VTE_DRST_DRIBBLE        0x0400
  319 #define VTE_DRST_PHY_ERR        0x0800
  320 #define VTE_DRST_RX_OK          0x4000
  321 #define VTE_DRST_RX_OWN         0x8000
  322 
  323 #define VTE_RX_LEN(x)           ((x) & 0x7FF)
  324 
  325 #define VTE_RX_HIDX(x)          ((x) & 0x3F)
  326 
  327 /*
  328  * TX descriptor
  329  * - Added one more uint32_t member to align it on 16 bytes boundary.
  330  */
  331 struct vte_tx_desc {
  332         uint16_t dtst;
  333         uint16_t dtlen;
  334         uint32_t dtbp;
  335         uint32_t dtnp;
  336         uint32_t __pad; /* Not actual descriptor member. */
  337 };
  338 
  339 #define VTE_DTST_EXCESS_COL     0x0010
  340 #define VTE_DTST_LATE_COL       0x0020
  341 #define VTE_DTST_UNDERRUN       0x0040
  342 #define VTE_DTST_NO_CRC         0x2000
  343 #define VTE_DTST_TX_OK          0x4000
  344 #define VTE_DTST_TX_OWN         0x8000
  345 
  346 #define VTE_TX_LEN(x)           ((x) & 0x7FF)
  347 
  348 #endif  /* _IF_VTEREG_H */

Cache object: d426e27c0e7419b0a6f8e7831ede9762


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