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/dwc/if_dwc.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  * Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com>
    3  * All rights reserved.
    4  *
    5  * This software was developed by SRI International and the University of
    6  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
    7  * ("CTSRD"), as part of the DARPA CRASH research programme.
    8  *
    9  * Redistribution and use in source and binary forms, with or without
   10  * modification, are permitted provided that the following conditions
   11  * are met:
   12  * 1. Redistributions of source code must retain the above copyright
   13  *    notice, this list of conditions and the following disclaimer.
   14  * 2. Redistributions in binary form must reproduce the above copyright
   15  *    notice, this list of conditions and the following disclaimer in the
   16  *    documentation and/or other materials provided with the distribution.
   17  *
   18  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   28  * SUCH DAMAGE.
   29  *
   30  * $FreeBSD$
   31  */
   32 
   33 /*
   34  * Register names were taken almost as is from the documentation.
   35  */
   36 
   37 #ifndef __IF_DWC_H__
   38 #define __IF_DWC_H__
   39 
   40 #define PHY_MODE_UNKNOWN        0x0
   41 #define PHY_MODE_RMII           0x1
   42 #define PHY_MODE_RGMII          0x2
   43 #define PHY_MODE_MII            0x3
   44 
   45 #define MAC_CONFIGURATION       0x0
   46 #define  CONF_JD                (1 << 22)       /* jabber timer disable */
   47 #define  CONF_BE                (1 << 21)       /* Frame Burst Enable */
   48 #define  CONF_PS                (1 << 15)       /* GMII/MII */
   49 #define  CONF_FES               (1 << 14)       /* MII speed select */
   50 #define  CONF_DM                (1 << 11)       /* Full Duplex Enable */
   51 #define  CONF_IPC               (1 << 10)       /* IPC checksum offload */
   52 #define  CONF_ACS               (1 << 7)
   53 #define  CONF_TE                (1 << 3)
   54 #define  CONF_RE                (1 << 2)
   55 #define MAC_FRAME_FILTER        0x4
   56 #define  FRAME_FILTER_RA        (1U << 31)      /* Receive All */
   57 #define  FRAME_FILTER_HPF       (1 << 10)       /* Hash or Perfect Filter */
   58 #define  FRAME_FILTER_PM        (1 << 4)        /* Pass multicast */
   59 #define  FRAME_FILTER_HMC       (1 << 2)
   60 #define  FRAME_FILTER_HUC       (1 << 1)
   61 #define  FRAME_FILTER_PR        (1 << 0)        /* All Incoming Frames */
   62 #define GMAC_MAC_HTHIGH         0x08
   63 #define GMAC_MAC_HTLOW          0x0c
   64 #define GMII_ADDRESS            0x10
   65 #define  GMII_ADDRESS_PA_MASK   0x1f            /* Phy device */
   66 #define  GMII_ADDRESS_PA_SHIFT  11
   67 #define  GMII_ADDRESS_GR_MASK   0x1f            /* Phy register */
   68 #define  GMII_ADDRESS_GR_SHIFT  6
   69 #define  GMII_ADDRESS_CR_MASK   0xf
   70 #define  GMII_ADDRESS_CR_SHIFT  2               /* Clock */
   71 #define  GMII_ADDRESS_GW        (1 << 1)        /* Write operation */
   72 #define  GMII_ADDRESS_GB        (1 << 0)        /* Busy */
   73 #define GMII_DATA               0x14
   74 #define FLOW_CONTROL            0x18
   75 #define  FLOW_CONTROL_PT_SHIFT  16
   76 #define  FLOW_CONTROL_UP        (1 << 3)        /* Unicast pause enable */
   77 #define  FLOW_CONTROL_RX        (1 << 2)        /* RX Flow control enable */
   78 #define  FLOW_CONTROL_TX        (1 << 1)        /* TX Flow control enable */
   79 #define GMAC_VLAN_TAG           0x1C
   80 #define VERSION                 0x20
   81 #define DEBUG                   0x24
   82 #define LPI_CONTROL_STATUS      0x30
   83 #define LPI_TIMERS_CONTROL      0x34
   84 #define INTERRUPT_STATUS        0x38
   85 #define INTERRUPT_MASK          0x3C
   86 #define MAC_ADDRESS_HIGH(n)     ((n > 15 ? 0x800 : 0x40) + 0x8 * n)
   87 #define MAC_ADDRESS_LOW(n)      ((n > 15 ? 0x804 : 0x44) + 0x8 * n)
   88 
   89 #define SGMII_RGMII_SMII_CTRL_STATUS    0xD8
   90 #define MMC_CONTROL                     0x100
   91 #define  MMC_CONTROL_CNTRST             (1 << 0)
   92 #define MMC_RECEIVE_INTERRUPT           0x104
   93 #define MMC_TRANSMIT_INTERRUPT          0x108
   94 #define MMC_RECEIVE_INTERRUPT_MASK      0x10C
   95 #define MMC_TRANSMIT_INTERRUPT_MASK     0x110
   96 #define TXOCTETCOUNT_GB                 0x114
   97 #define TXFRAMECOUNT_GB                 0x118
   98 #define TXBROADCASTFRAMES_G             0x11C
   99 #define TXMULTICASTFRAMES_G             0x120
  100 #define TX64OCTETS_GB                   0x124
  101 #define TX65TO127OCTETS_GB              0x128
  102 #define TX128TO255OCTETS_GB             0x12C
  103 #define TX256TO511OCTETS_GB             0x130
  104 #define TX512TO1023OCTETS_GB            0x134
  105 #define TX1024TOMAXOCTETS_GB            0x138
  106 #define TXUNICASTFRAMES_GB              0x13C
  107 #define TXMULTICASTFRAMES_GB            0x140
  108 #define TXBROADCASTFRAMES_GB            0x144
  109 #define TXUNDERFLOWERROR                0x148
  110 #define TXSINGLECOL_G                   0x14C
  111 #define TXMULTICOL_G                    0x150
  112 #define TXDEFERRED                      0x154
  113 #define TXLATECOL                       0x158
  114 #define TXEXESSCOL                      0x15C
  115 #define TXCARRIERERR                    0x160
  116 #define TXOCTETCNT                      0x164
  117 #define TXFRAMECOUNT_G                  0x168
  118 #define TXEXCESSDEF                     0x16C
  119 #define TXPAUSEFRAMES                   0x170
  120 #define TXVLANFRAMES_G                  0x174
  121 #define TXOVERSIZE_G                    0x178
  122 #define RXFRAMECOUNT_GB                 0x180
  123 #define RXOCTETCOUNT_GB                 0x184
  124 #define RXOCTETCOUNT_G                  0x188
  125 #define RXBROADCASTFRAMES_G             0x18C
  126 #define RXMULTICASTFRAMES_G             0x190
  127 #define RXCRCERROR                      0x194
  128 #define RXALIGNMENTERROR                0x198
  129 #define RXRUNTERROR                     0x19C
  130 #define RXJABBERERROR                   0x1A0
  131 #define RXUNDERSIZE_G                   0x1A4
  132 #define RXOVERSIZE_G                    0x1A8
  133 #define RX64OCTETS_GB                   0x1AC
  134 #define RX65TO127OCTETS_GB              0x1B0
  135 #define RX128TO255OCTETS_GB             0x1B4
  136 #define RX256TO511OCTETS_GB             0x1B8
  137 #define RX512TO1023OCTETS_GB            0x1BC
  138 #define RX1024TOMAXOCTETS_GB            0x1C0
  139 #define RXUNICASTFRAMES_G               0x1C4
  140 #define RXLENGTHERROR                   0x1C8
  141 #define RXOUTOFRANGETYPE                0x1CC
  142 #define RXPAUSEFRAMES                   0x1D0
  143 #define RXFIFOOVERFLOW                  0x1D4
  144 #define RXVLANFRAMES_GB                 0x1D8
  145 #define RXWATCHDOGERROR                 0x1DC
  146 #define RXRCVERROR                      0x1E0
  147 #define RXCTRLFRAMES_G                  0x1E4
  148 #define MMC_IPC_RECEIVE_INT_MASK        0x200
  149 #define MMC_IPC_RECEIVE_INT             0x208
  150 #define RXIPV4_GD_FRMS                  0x210
  151 #define RXIPV4_HDRERR_FRMS              0x214
  152 #define RXIPV4_NOPAY_FRMS               0x218
  153 #define RXIPV4_FRAG_FRMS                0x21C
  154 #define RXIPV4_UDSBL_FRMS               0x220
  155 #define RXIPV6_GD_FRMS                  0x224
  156 #define RXIPV6_HDRERR_FRMS              0x228
  157 #define RXIPV6_NOPAY_FRMS               0x22C
  158 #define RXUDP_GD_FRMS                   0x230
  159 #define RXUDP_ERR_FRMS                  0x234
  160 #define RXTCP_GD_FRMS                   0x238
  161 #define RXTCP_ERR_FRMS                  0x23C
  162 #define RXICMP_GD_FRMS                  0x240
  163 #define RXICMP_ERR_FRMS                 0x244
  164 #define RXIPV4_GD_OCTETS                0x250
  165 #define RXIPV4_HDRERR_OCTETS            0x254
  166 #define RXIPV4_NOPAY_OCTETS             0x258
  167 #define RXIPV4_FRAG_OCTETS              0x25C
  168 #define RXIPV4_UDSBL_OCTETS             0x260
  169 #define RXIPV6_GD_OCTETS                0x264
  170 #define RXIPV6_HDRERR_OCTETS            0x268
  171 #define RXIPV6_NOPAY_OCTETS             0x26C
  172 #define RXUDP_GD_OCTETS                 0x270
  173 #define RXUDP_ERR_OCTETS                0x274
  174 #define RXTCP_GD_OCTETS                 0x278
  175 #define RXTCPERROCTETS                  0x27C
  176 #define RXICMP_GD_OCTETS                0x280
  177 #define RXICMP_ERR_OCTETS               0x284
  178 #define L3_L4_CONTROL0                  0x400
  179 #define LAYER4_ADDRESS0                 0x404
  180 #define LAYER3_ADDR0_REG0               0x410
  181 #define LAYER3_ADDR1_REG0               0x414
  182 #define LAYER3_ADDR2_REG0               0x418
  183 #define LAYER3_ADDR3_REG0               0x41C
  184 #define L3_L4_CONTROL1                  0x430
  185 #define LAYER4_ADDRESS1                 0x434
  186 #define LAYER3_ADDR0_REG1               0x440
  187 #define LAYER3_ADDR1_REG1               0x444
  188 #define LAYER3_ADDR2_REG1               0x448
  189 #define LAYER3_ADDR3_REG1               0x44C
  190 #define L3_L4_CONTROL2                  0x460
  191 #define LAYER4_ADDRESS2                 0x464
  192 #define LAYER3_ADDR0_REG2               0x470
  193 #define LAYER3_ADDR1_REG2               0x474
  194 #define LAYER3_ADDR2_REG2               0x478
  195 #define LAYER3_ADDR3_REG2               0x47C
  196 #define L3_L4_CONTROL3                  0x490
  197 #define LAYER4_ADDRESS3                 0x494
  198 #define LAYER3_ADDR0_REG3               0x4A0
  199 #define LAYER3_ADDR1_REG3               0x4A4
  200 #define LAYER3_ADDR2_REG3               0x4A8
  201 #define LAYER3_ADDR3_REG3               0x4AC
  202 #define HASH_TABLE_REG(n)               0x500 + (0x4 * n)
  203 #define VLAN_INCL_REG                   0x584
  204 #define VLAN_HASH_TABLE_REG             0x588
  205 #define TIMESTAMP_CONTROL               0x700
  206 #define SUB_SECOND_INCREMENT            0x704
  207 #define SYSTEM_TIME_SECONDS             0x708
  208 #define SYSTEM_TIME_NANOSECONDS         0x70C
  209 #define SYSTEM_TIME_SECONDS_UPDATE      0x710
  210 #define SYSTEM_TIME_NANOSECONDS_UPDATE  0x714
  211 #define TIMESTAMP_ADDEND                0x718
  212 #define TARGET_TIME_SECONDS             0x71C
  213 #define TARGET_TIME_NANOSECONDS         0x720
  214 #define SYSTEM_TIME_HIGHER_WORD_SECONDS 0x724
  215 #define TIMESTAMP_STATUS                0x728
  216 #define PPS_CONTROL                     0x72C
  217 #define AUXILIARY_TIMESTAMP_NANOSECONDS 0x730
  218 #define AUXILIARY_TIMESTAMP_SECONDS     0x734
  219 #define PPS0_INTERVAL                   0x760
  220 #define PPS0_WIDTH                      0x764
  221 
  222 /* DMA */
  223 #define BUS_MODE                0x1000
  224 #define  BUS_MODE_EIGHTXPBL     (1 << 24) /* Multiplies PBL by 8 */
  225 #define  BUS_MODE_USP           (1 << 23)
  226 #define  BUS_MODE_RPBL_SHIFT    17 /* Single block transfer size */
  227 #define  BUS_MODE_FIXEDBURST    (1 << 16)
  228 #define  BUS_MODE_PRIORXTX_SHIFT        14
  229 #define  BUS_MODE_PRIORXTX_41   3
  230 #define  BUS_MODE_PRIORXTX_31   2
  231 #define  BUS_MODE_PRIORXTX_21   1
  232 #define  BUS_MODE_PRIORXTX_11   0
  233 #define  BUS_MODE_PBL_SHIFT     8 /* Single block transfer size */
  234 #define  BUS_MODE_SWR           (1 << 0) /* Reset */
  235 #define  BUS_MODE_DEFAULT_PBL   8
  236 #define TRANSMIT_POLL_DEMAND    0x1004
  237 #define RECEIVE_POLL_DEMAND     0x1008
  238 #define RX_DESCR_LIST_ADDR      0x100C
  239 #define TX_DESCR_LIST_ADDR      0x1010
  240 #define DMA_STATUS              0x1014
  241 #define  DMA_STATUS_NIS         (1 << 16)
  242 #define  DMA_STATUS_AIS         (1 << 15)
  243 #define  DMA_STATUS_FBI         (1 << 13)
  244 #define  DMA_STATUS_RI          (1 << 6)
  245 #define  DMA_STATUS_TI          (1 << 0)
  246 #define  DMA_STATUS_INTR_MASK   0x1ffff
  247 #define OPERATION_MODE          0x1018
  248 #define  MODE_RSF               (1 << 25) /* RX Full Frame */
  249 #define  MODE_TSF               (1 << 21) /* TX Full Frame */
  250 #define  MODE_FTF               (1 << 20) /* Flush TX FIFO */
  251 #define  MODE_ST                (1 << 13) /* Start DMA TX */
  252 #define  MODE_FUF               (1 << 6)  /* TX frames < 64bytes */
  253 #define  MODE_RTC_LEV32         0x1
  254 #define  MODE_RTC_SHIFT         3
  255 #define  MODE_OSF               (1 << 2) /* Process Second frame */
  256 #define  MODE_SR                (1 << 1) /* Start DMA RX */
  257 #define INTERRUPT_ENABLE        0x101C
  258 #define  INT_EN_NIE             (1 << 16) /* Normal/Summary */
  259 #define  INT_EN_AIE             (1 << 15) /* Abnormal/Summary */
  260 #define  INT_EN_ERE             (1 << 14) /* Early receive */
  261 #define  INT_EN_FBE             (1 << 13) /* Fatal bus error */
  262 #define  INT_EN_ETE             (1 << 10) /* Early transmit */
  263 #define  INT_EN_RWE             (1 << 9)  /* Receive watchdog */
  264 #define  INT_EN_RSE             (1 << 8)  /* Receive stopped */
  265 #define  INT_EN_RUE             (1 << 7)  /* Recv buf unavailable */
  266 #define  INT_EN_RIE             (1 << 6)  /* Receive interrupt */
  267 #define  INT_EN_UNE             (1 << 5)  /* Tx underflow */
  268 #define  INT_EN_OVE             (1 << 4)  /* Receive overflow */
  269 #define  INT_EN_TJE             (1 << 3)  /* Transmit jabber */
  270 #define  INT_EN_TUE             (1 << 2)  /* Tx. buf unavailable */
  271 #define  INT_EN_TSE             (1 << 1)  /* Transmit stopped */
  272 #define  INT_EN_TIE             (1 << 0)  /* Transmit interrupt */
  273 #define  INT_EN_DEFAULT         (INT_EN_TIE|INT_EN_RIE| \
  274             INT_EN_NIE|INT_EN_AIE|                      \
  275             INT_EN_FBE|INT_EN_UNE)
  276 
  277 #define MISSED_FRAMEBUF_OVERFLOW_CNTR   0x1020
  278 #define RECEIVE_INT_WATCHDOG_TMR        0x1024
  279 #define AXI_BUS_MODE                    0x1028
  280 #define AHB_OR_AXI_STATUS               0x102C
  281 #define CURRENT_HOST_TRANSMIT_DESCR     0x1048
  282 #define CURRENT_HOST_RECEIVE_DESCR      0x104C
  283 #define CURRENT_HOST_TRANSMIT_BUF_ADDR  0x1050
  284 #define CURRENT_HOST_RECEIVE_BUF_ADDR   0x1054
  285 #define HW_FEATURE                      0x1058
  286 
  287 #define DWC_GMAC_NORMAL_DESC            0x1
  288 #define DWC_GMAC_EXT_DESC               0x2
  289 
  290 #define GMAC_MII_CLK_60_100M_DIV42      0x0
  291 #define GMAC_MII_CLK_100_150M_DIV62     0x1
  292 #define GMAC_MII_CLK_25_35M_DIV16       0x2
  293 #define GMAC_MII_CLK_35_60M_DIV26       0x3
  294 #define GMAC_MII_CLK_150_250M_DIV102    0x4
  295 #define GMAC_MII_CLK_250_300M_DIV124    0x5
  296 #define GMAC_MII_CLK_DIV4               0x8
  297 #define GMAC_MII_CLK_DIV6               0x9
  298 #define GMAC_MII_CLK_DIV8               0xa
  299 #define GMAC_MII_CLK_DIV10              0xb
  300 #define GMAC_MII_CLK_DIV12              0xc
  301 #define GMAC_MII_CLK_DIV14              0xd
  302 #define GMAC_MII_CLK_DIV16              0xe
  303 #define GMAC_MII_CLK_DIV18              0xf
  304 
  305 #endif  /* __IF_DWC_H__ */

Cache object: 9d1beb2a5e4cc3358d844dc25774600f


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