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/altera/atse/if_atsereg.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) 2012 Bjoern A. Zeeb
    5  * All rights reserved.
    6  *
    7  * This software was developed by SRI International and the University of
    8  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-11-C-0249)
    9  * ("MRC2"), as part of the DARPA MRC research programme.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   30  * SUCH DAMAGE.
   31  *
   32  * $FreeBSD$
   33  */
   34 
   35 #ifndef _DEV_IF_ATSEREG_H
   36 #define _DEV_IF_ATSEREG_H
   37 
   38 #include <dev/xdma/xdma.h>
   39 
   40 #define ATSE_VENDOR                     0x6af7
   41 #define ATSE_DEVICE                     0x00bd
   42 
   43 /* See hints file/fdt for ctrl port and Avalon FIFO addresses. */
   44 
   45 /* Section 3. Parameter Settings. */
   46 /*
   47  * This is a lot of options that affect the way things are synthesized.
   48  * We cannot really make them all hints and most of them might be stale.
   49  */
   50 
   51 /* 3-1 Core Configuration */
   52 #if 0
   53 static const char *atse_core_core_variation[] = {
   54         [0] = "10/100/1000 Mbps Ethernet MAC only",
   55         [1] = "10/100/1000 Mbps Ethernet MAC with 1000BASE-X/SGMII PCS",
   56         [2] = "1000BASE-X/SGMII PCS only",
   57         [3] = "1000 Mbps Small MAC",
   58         [4] = "10/100 Mbps Small MAC",
   59         NULL
   60 };
   61 static const char *atse_core_interface[] = {
   62         [0] = "MII",                            /* Core variation 4. */
   63         [1] = "GMII",                           /* Core variation 3. */
   64         [2] = "RGMII",                          /* Core variation 0,1,3. */
   65         [3] = "MII/GMII",                       /* Core variation 0,1. */
   66         NULL
   67 };
   68 #endif
   69 #define CORE_CORE_VARIATION             1       /* atse_core_core_variation[] */
   70 #define CORE_INTERFACE                  3       /* atse_core_interface[] */
   71 #define CORE_USE_INTERNAL_FIFO          1
   72 #define CORE_NUMBER_OF_PORTS            1       /* Internal FIFO count. */
   73 #define CORE_USE_TRANSCEIVER_BLOCK      1       /* SGMII PCS transceiver:
   74                                                  * LVDS I/O. */
   75 
   76 /* 3-2 MAC Options. */
   77 /* Ethernet MAC Options. */
   78 #define MAC_ENABLE_10_100_HDX_SUPPORT   0
   79 #define MAC_ENABLE_RG_G_MII_LOOPBACK    0
   80 #define MAC_ENABLE_SUPL_MAC_UCAST_ADDR  0       /* Supplementary MAC unicast. */
   81 #define MAC_INCLUDE_STATISTICS_COUNTERS 0
   82 #define MAC_STATISTICS_COUNTERS_64BIT   0
   83 #define MAC_INCLUDE_MC_HASHTABLE        0       /* Multicast. */
   84 #define MAC_ALIGN_PKTHDR_32BIT          1
   85 #define MAC_ENABLE_FDX_FLOW_CTRL        0
   86 #define MAC_ENABLE_VLAN_DETECTION       0       /* VLAN and stacked VLANs. */
   87 #define MAC_ENABLE_MAGIC_PKT_DETECTION  0
   88 /* MDIO Module. */
   89 #define MAC_MDIO_INCLUDE_MDIO_MODULE    1
   90 #define MAC_MDIO_HOST_CLOCK_DIVISOR     40      /* Not just On/Off. */
   91 
   92 /* 3-4 FIFO Options. */
   93 /* Width and Memory Type. */
   94 #if 0
   95 static char *fifo_memory_block[] = {
   96         [0] = "M4K",
   97         [1] = "M9K",
   98         [2] = "M144K",
   99         [3] = "MRAM",
  100         [4] = "AUTO",
  101         NULL
  102 };
  103 #endif
  104 #define FIFO_MEMORY_BLOCK               4
  105 #define FIFO_WITDH                      32      /* Other: 8 bits. */
  106 /* Depth. */
  107 #define FIFO_DEPTH_TX                   2048    /* 64 .. 64k, 2048x32bits. */
  108 #define FIFO_DEPTH_RX                   2048    /* 64 .. 64k, 2048x32bits. */
  109 
  110 #define ATSE_TX_LIST_CNT                5       /* Certainly not bufferbloat. */
  111 
  112 /* 3-4 PCS/Transceiver Options */
  113 /* PCS Options. */
  114 #define PCS_TXRX_PHY_ID                 0x00000000      /* 32 bits */
  115 #define PCS_TXRX_ENABLE_SGMII_BRIDGE    0
  116 /* Transceiver Options. */
  117 #define PCS_TXRX_EXP_POWER_DOWN_SIGNAL  0       /* Export power down signal. */
  118 #define PCS_TXRX_ENABLE_DYNAMIC_RECONF  0       /* Dynamic trans. reconfig. */
  119 #define PCS_TXRX_STARTING_CHANNEL       0       /* 0..284. */
  120 
  121 /* -------------------------------------------------------------------------- */
  122 
  123 /* XXX more values based on the bitmaps provided. Cleanup. */
  124 /* See regs above. */
  125 #define AVALON_FIFO_TX_BLOCK_DIAGRAM            0
  126 #define AVALON_FIFO_TX_BLOCK_DIAGRAM_SHOW_SIGANLS       0
  127 #define AVALON_FIFO_TX_PARAM_SINGLE_RESET_MODE  0
  128 #define AVALON_FIFO_TX_BASIC_OPTS_DEPTH         16
  129 #define AVALON_FIFO_TX_BASIC_OPTS_ALLOW_BACKPRESSURE    1
  130 #define AVALON_FIFO_TX_BASIC_OPTS_CLOCK_SETTING "Single Clock Mode"
  131 #define AVALON_FIFO_TX_BASIC_OPTS_FIFO_IMPL     "Construct FIFO from embedded memory blocks"
  132 #define AVALON_FIFO_TX_STATUS_PORT_CREATE_STATUS_INT_FOR_INPUT  1
  133 #define AVALON_FIFO_TX_STATUS_PORT_CREATE_STATUS_INT_FOR_OUTPUT 0
  134 #define AVALON_FIFO_TX_STATUS_PORT_ENABLE_IRQ_FOR_STATUS_PORT   1
  135 #define AVALON_FIFO_TX_INPUT_TYPE                       "AVALONMM_WRITE"
  136 #define AVALON_FIFO_TX_OUTPUT_TYPE                      "AVALONST_SOURCE"
  137 #define AVALON_FIFO_TX_AVALON_MM_PORT_SETTINGS_DATA_WIDTH       ""
  138 #define AVALON_FIFO_TX_AVALON_ST_PORT_SETTINGS_BITS_PER_SYMBOL  8
  139 #define AVALON_FIFO_TX_AVALON_ST_PORT_SETTINGS_SYM_PER_BEAT     4
  140 #define AVALON_FIFO_TX_AVALON_ST_PORT_SETTINGS_ERROR_WIDTH              1
  141 #define AVALON_FIFO_TX_AVALON_ST_PORT_SETTINGS_CHANNEL_WIDTH    0
  142 #define AVALON_FIFO_TX_AVALON_ST_PORT_SETTINGS_ENABLE_PACKET_DATA       1
  143 
  144 #define AVALON_FIFO_RX_BLOCK_DIAGRAM            0
  145 #define AVALON_FIFO_RX_BLOCK_DIAGRAM_SHOW_SIGNALS               0
  146 #define AVALON_FIFO_RX_PARAM_SINGLE_RESET_MODE  0
  147 #define AVALON_FIFO_RX_BASIC_OPTS_DEPTH         16
  148 #define AVALON_FIFO_RX_BASIC_OPTS_ALLOW_BACKPRESSURE    1
  149 #define AVALON_FIFO_RX_BASIC_OPTS_CLOCK_SETTING "Single Clock Mode"
  150 #define AVALON_FIFO_RX_BASIC_OPTS_FIFO_IMPL     "Construct FIFO from embedded memory blocks"
  151 #define AVALON_FIFO_RX_STATUS_PORT_CREATE_STATUS_INT_FOR_INPUT  1
  152 #define AVALON_FIFO_RX_STATUS_PORT_CREATE_STATUS_INT_FOR_OUTPUT 0
  153 #define AVALON_FIFO_RX_STATUS_PORT_ENABLE_IRQ_FOR_STATUS_PORT   1
  154 #define AVALON_FIFO_RX_INPUT_TYPE                       "AVALONST_SINK"
  155 #define AVALON_FIFO_RX_OUTPUT_TYPE                      "AVALONMM_READ"
  156 #define AVALON_FIFO_RX_AVALON_MM_PORT_SETTINGS_DATA_WIDTH       ""
  157 #define AVALON_FIFO_RX_AVALON_ST_PORT_SETTINGS_BITS_PER_SYMBOL  8
  158 #define AVALON_FIFO_RX_AVALON_ST_PORT_SETTINGS_SYM_PER_BEAT     4
  159 #define AVALON_FIFO_RX_AVALON_ST_PORT_SETTINGS_ERROR_WIDTH              6
  160 #define AVALON_FIFO_RX_AVALON_ST_PORT_SETTINGS_CHANNEL_WIDTH    0
  161 #define AVALON_FIFO_RX_AVALON_ST_PORT_SETTINGS_ENABLE_PACKET_DATA       1
  162 
  163 /* -------------------------------------------------------------------------- */
  164 
  165 /* 5. Configuration Register Space. */
  166 
  167 /* 5-1, MAC Configuration Register Space; Dword offsets. */
  168 /* 0x00 - 0x17, Base Configuration. */
  169 #define BASE_CONFIG_REV                 0x00            /* ro, IP Core ver. */
  170 #define BASE_CFG_REV_VER_MASK                   0x0000FFFF
  171 #define BASE_CFG_REV_CUST_VERSION__MASK         0xFFFF0000
  172 
  173 #define BASE_CFG_SCRATCH                0x01            /* rw, 0 */
  174 
  175 #define BASE_CFG_COMMAND_CONFIG         0x02            /* rw, 0 */
  176 #define BASE_CFG_COMMAND_CONFIG_TX_ENA          (1<<0)  /* rw */
  177 #define BASE_CFG_COMMAND_CONFIG_RX_ENA          (1<<1)  /* rw */
  178 #define BASE_CFG_COMMAND_CONFIG_XON_GEN         (1<<2)  /* rw */
  179 #define BASE_CFG_COMMAND_CONFIG_ETH_SPEED       (1<<3)  /* rw */
  180 #define BASE_CFG_COMMAND_CONFIG_PROMIS_EN       (1<<4)  /* rw */
  181 #define BASE_CFG_COMMAND_CONFIG_PAD_EN          (1<<5)  /* rw */
  182 #define BASE_CFG_COMMAND_CONFIG_CRC_FWD         (1<<6)  /* rw */
  183 #define BASE_CFG_COMMAND_CONFIG_PAUSE_FWD       (1<<7)  /* rw */
  184 #define BASE_CFG_COMMAND_CONFIG_PAUSE_IGNORE    (1<<8)  /* rw */
  185 #define BASE_CFG_COMMAND_CONFIG_TX_ADDR_INS     (1<<9)  /* rw */
  186 #define BASE_CFG_COMMAND_CONFIG_HD_ENA          (1<<10) /* rw */
  187 #define BASE_CFG_COMMAND_CONFIG_EXCESS_COL      (1<<11) /* ro */
  188 #define BASE_CFG_COMMAND_CONFIG_LATE_COL        (1<<12) /* ro */
  189 #define BASE_CFG_COMMAND_CONFIG_SW_RESET        (1<<13) /* rw */
  190 #define BASE_CFG_COMMAND_CONFIG_MHASH_SEL       (1<<14) /* rw */
  191 #define BASE_CFG_COMMAND_CONFIG_LOOP_ENA        (1<<15) /* rw */
  192 #define BASE_CFG_COMMAND_CONFIG_TX_ADDR_SEL     (1<<16|1<<17|1<<18) /* rw */
  193 #define BASE_CFG_COMMAND_CONFIG_MAGIC_ENA       (1<<19) /* rw */
  194 #define BASE_CFG_COMMAND_CONFIG_SLEEP           (1<<20) /* rw */
  195 #define BASE_CFG_COMMAND_CONFIG_WAKEUP          (1<<21) /* ro */
  196 #define BASE_CFG_COMMAND_CONFIG_XOFF_GEN        (1<<22) /* rw */
  197 #define BASE_CFG_COMMAND_CONFIG_CNTL_FRM_ENA    (1<<23) /* rw */
  198 #define BASE_CFG_COMMAND_CONFIG_NO_LGTH_CHECK   (1<<24) /* rw */
  199 #define BASE_CFG_COMMAND_CONFIG_ENA_10          (1<<25) /* rw */
  200 #define BASE_CFG_COMMAND_CONFIG_RX_ERR_DISC     (1<<26) /* rw */
  201 #define BASE_CFG_COMMAND_CONFIG_DISABLE_READ_TIMEOUT    (1<<27) /* rw */
  202         /* 28-30 Reserved. */                           /* - */
  203 #define BASE_CFG_COMMAND_CONFIG_CNT_RESET       (1<<31) /* rw */
  204 
  205 #define BASE_CFG_MAC_0                  0x03            /* rw, 0 */
  206 #define BASE_CFG_MAC_1                  0x04            /* rw, 0 */
  207 #define BASE_CFG_FRM_LENGTH             0x05            /* rw/ro, 1518 */
  208 #define BASE_CFG_PAUSE_QUANT            0x06            /* rw, 0 */
  209 #define BASE_CFG_RX_SECTION_EMPTY       0x07            /* rw/ro, 0 */
  210 #define BASE_CFG_RX_SECTION_FULL        0x08            /* rw/ro, 0 */
  211 #define BASE_CFG_TX_SECTION_EMPTY       0x09            /* rw/ro, 0 */
  212 #define BASE_CFG_TX_SECTION_FULL        0x0A            /* rw/ro, 0 */
  213 #define BASE_CFG_RX_ALMOST_EMPTY        0x0B            /* rw/ro, 0 */
  214 #define BASE_CFG_RX_ALMOST_FULL         0x0C            /* rw/ro, 0 */
  215 #define BASE_CFG_TX_ALMOST_EMPTY        0x0D            /* rw/ro, 0 */
  216 #define BASE_CFG_TX_ALMOST_FULL         0x0E            /* rw/ro, 0 */
  217 #define BASE_CFG_MDIO_ADDR0             0x0F            /* rw, 0 */
  218 #define BASE_CFG_MDIO_ADDR1             0x10            /* rw, 1 */
  219 #define BASE_CFG_HOLDOFF_QUANT          0x11            /* rw, 0xFFFF */
  220 /* 0x12-0x16 Reserved. */                               /* -, 0 */
  221 #define BASE_CFG_TX_IPG_LENGTH          0x17            /* rw, 0 */
  222 
  223 /* 0x18 - 0x38, Statistics Counters. */
  224 #define STATS_A_MAC_ID_0                0x18            /* ro */
  225 #define STATS_A_MAC_ID_1                0x19            /* ro */
  226 #define STATS_A_FRAMES_TX_OK            0x1A            /* ro */
  227 #define STATS_A_FRAMES_RX_OK            0x1B            /* ro */
  228 #define STATS_A_FCS_ERRORS              0x1C            /* ro */
  229 #define STATS_A_ALIGNMENT_ERRORS        0x1D            /* ro */
  230 #define STATS_A_OCTETS_TX_OK            0x1E            /* ro */
  231 #define STATS_A_OCTETS_RX_OK            0x1F            /* ro */
  232 #define STATS_A_TX_PAUSE_MAX_CTRL_FRAME 0x20            /* ro */
  233 #define STATS_A_RX_PAUSE_MAX_CTRL_FRAME 0x21            /* ro */
  234 #define STATS_IF_IN_ERRORS              0x22            /* ro */
  235 #define STATS_IF_OUT_ERRORS             0x23            /* ro */
  236 #define STATS_IF_IN_UCAST_PKTS          0x24            /* ro */
  237 #define STATS_IF_IN_MULTICAST_PKTS      0x25            /* ro */
  238 #define STATS_IF_IN_BROADCAST_PKTS      0x26            /* ro */
  239 #define STATS_IF_OUT_DISCARDS           0x27            /* ro */
  240 #define STATS_IF_OUT_UCAST_PKTS         0x28            /* ro */
  241 #define STATS_IF_OUT_MULTICAST_PKTS     0x29            /* ro */
  242 #define STATS_IF_OUT_BROADCAST_PKTS     0x2A            /* ro */
  243 #define STATS_ETHER_STATS_DROP_EVENT    0x2B            /* ro */
  244 #define STATS_ETHER_STATS_OCTETS        0x2C            /* ro */
  245 #define STATS_ETHER_STATS_PKTS          0x2D            /* ro */
  246 #define STATS_ETHER_STATS_USIZE_PKTS    0x2E            /* ro */
  247 #define STATS_ETHER_STATS_OSIZE_PKTS    0x2F            /* ro */
  248 #define STATS_ETHER_STATS_PKTS_64_OCTETS 0x30           /* ro */
  249 #define STATS_ETHER_STATS_PKTS_65_TO_127_OCTETS  0x31   /* ro */
  250 #define STATS_ETHER_STATS_PKTS_128_TO_255_OCTETS 0x32   /* ro */
  251 #define STATS_ETHER_STATS_PKTS_256_TO_511_OCTETS 0x33   /* ro */
  252 #define STATS_ETHER_STATS_PKTS_512_TO_1023_OCTETS 0x34  /* ro */
  253 #define STATS_ETHER_STATS_PKTS_1024_TO_1518_OCTETS 0x35 /* ro */
  254 #define STATS_ETHER_STATS_PKTS_1519_TO_X_OCTETS 0x36    /* ro */
  255 #define STATS_ETHER_STATS_JABBERS       0x37            /* ro */
  256 #define STATS_ETHER_STATS_FRAGMENTS     0x38            /* ro */
  257         /* 0x39, Reserved. */                           /* - */
  258 
  259 /* 0x3A, Transmit Command. */
  260 #define TX_CMD_STAT                     0x3A            /* rw */
  261 #define TX_CMD_STAT_OMIT_CRC                    (1<<17)
  262 #define TX_CMD_STAT_TX_SHIFT16                  (1<<18)
  263 
  264 /* 0x3B, Receive Command. */
  265 #define RX_CMD_STAT                     0x3B            /* rw */
  266 #define RX_CMD_STAT_RX_SHIFT16                  (1<<25)
  267 
  268 /* 0x3C - 0x3E, Extended Statistics Counters. */
  269 #define ESTATS_MSB_A_OCTETS_TX_OK       0x3C            /* ro */
  270 #define ESTATS_MSB_A_OCTETS_RX_OK       0x3D            /* ro */
  271 #define ESTATS_MSB_ETHER_STATS_OCTETS   0x3E            /* ro */
  272 
  273 /* 0x3F, Reserved. */
  274 
  275 /* 0x40 - 0x7F, Multicast Hash Table. */
  276 #define MHASH_START                     0x40
  277 #define MHASH_LEN                       0x3F
  278 
  279 /* 0x80 - 0x9F, MDIO Space 0 or PCS Function Configuration. */
  280 #define MDIO_0_START                    0x80
  281 
  282 /* The following are offsets to the first PCS register at 0x80. */
  283 /* See sys/dev/mii/mii.h. */
  284 #define PCS_CONTROL                     0x00            /* rw */
  285         /* Bits 0:4, Reserved. */                       /* - */
  286 #define PCS_CONTROL_UNIDIRECTIONAL_ENABLE       (1<<5)  /* rw */
  287 #define PCS_CONTROL_SPEED_SELECTION             (1<<6|1<<13) /* ro */
  288 #define PCS_CONTROL_COLLISION_TEST              (1<<7)  /* ro */
  289 #define PCS_CONTROL_DUPLEX_MODE                 (1<<8)  /* ro */
  290 #define PCS_CONTROL_RESTART_AUTO_NEGOTIATION    (1<<9)  /* rw */
  291 #define PCS_CONTROL_ISOLATE                     (1<<10) /* rw */
  292 #define PCS_CONTROL_POWERDOWN                   (1<<11) /* rw */
  293 #define PCS_CONTROL_AUTO_NEGOTIATION_ENABLE     (1<<12) /* rw */
  294         /* See bit 6 above. */                          /* ro */
  295 #define PCS_CONTROL_LOOPBACK                    (1<<14) /* rw */
  296 #define PCS_CONTROL_RESET                       (1<<15) /* rw */
  297 
  298 #define PCS_STATUS                      0x01            /* ro */
  299 #define PCS_STATUS_EXTENDED_CAPABILITY          (1<<0)  /* ro */
  300 #define PCS_STATUS_JABBER_DETECT                (1<<1)  /* -, 0 */
  301 #define PCS_STATUS_LINK_STATUS                  (1<<2)  /* ro */
  302 #define PCS_STATUS_AUTO_NEGOTIATION_ABILITY     (1<<3)  /* ro */
  303 #define PCS_STATUS_REMOTE_FAULT                 (1<<4)  /* -, 0 */
  304 #define PCS_STATUS_AUTO_NEGOTIATION_COMPLETE    (1<<5)  /* ro */
  305 #define PCS_STATUS_MF_PREAMBLE_SUPPRESSION      (1<<6)  /* -, 0 */
  306 #define PCS_STATUS_UNIDIRECTIONAL_ABILITY       (1<<7)  /* ro */
  307 #define PCS_STATUS_EXTENDED_STATUS              (1<<8)  /* -, 0 */
  308 #define PCS_STATUS_100BASET2_HALF_DUPLEX        (1<<9)  /* ro */
  309 #define PCS_STATUS_100BASET2_FULL_DUPLEX        (1<<10) /* ro */
  310 #define PCS_STATUS_10MBPS_HALF_DUPLEX           (1<<11) /* ro */
  311 #define PCS_STATUS_10MBPS_FULL_DUPLEX           (1<<12) /* ro */
  312 #define PCS_STATUS_100BASE_X_HALF_DUPLEX        (1<<13) /* ro */
  313 #define PCS_STATUS_100BASE_X_FULL_DUPLEX        (1<<14) /* ro */
  314 #define PCS_STATUS_100BASE_T4                   (1<<15) /* ro */
  315 
  316 #define PCS_PHY_IDENTIFIER_0            0x02            /* ro */
  317 #define PCS_PHY_IDENTIFIER_1            0x03            /* ro */
  318 
  319 #define PCS_DEV_ABILITY                 0x04            /* rw */
  320         /* 1000BASE-X */
  321         /* Bits 0:4, Reserved. */                       /* - */
  322 #define PCS_DEV_ABILITY_1000BASE_X_FD           (1<<5)  /* rw */
  323 #define PCS_DEV_ABILITY_1000BASE_X_HD           (1<<6)  /* rw */
  324 #define PCS_DEV_ABILITY_1000BASE_X_PS1          (1<<7)  /* rw */
  325 #define PCS_DEV_ABILITY_1000BASE_X_PS2          (1<<8)  /* rw */
  326         /* Bits 9:11, Reserved. */                      /* - */
  327 #define PCS_DEV_ABILITY_1000BASE_X_RF1          (1<<12) /* rw */
  328 #define PCS_DEV_ABILITY_1000BASE_X_RF2          (1<<13) /* rw */
  329 #define PCS_DEV_ABILITY_1000BASE_X_ACK          (1<<14) /* rw */
  330 #define PCS_DEV_ABILITY_1000BASE_X_NP           (1<<15) /* rw */
  331 
  332 #define PCS_PARTNER_ABILITY             0x05            /* ro */
  333         /* 1000BASE-X */
  334         /* Bits 0:4, Reserved. */                       /* - */
  335 #define PCS_PARTNER_ABILITY_1000BASE_X_FD       (1<<5)  /* ro */
  336 #define PCS_PARTNER_ABILITY_1000BASE_X_HD       (1<<6)  /* ro */
  337 #define PCS_PARTNER_ABILITY_1000BASE_X_PS1      (1<<7)  /* ro */
  338 #define PCS_PARTNER_ABILITY_1000BASE_X_PS2      (1<<8)  /* ro */
  339         /* Bits 9:11, Reserved. */                      /* - */
  340 #define PCS_PARTNER_ABILITY_1000BASE_X_RF1      (1<<12) /* ro */
  341 #define PCS_PARTNER_ABILITY_1000BASE_X_RF2      (1<<13) /* ro */
  342 #define PCS_PARTNER_ABILITY_1000BASE_X_ACK      (1<<14) /* ro */
  343 #define PCS_PARTNER_ABILITY_1000BASE_X_NP       (1<<15) /* ro */
  344         /* SGMII */
  345         /* Bits 0:9, Reserved. */                       /* - */
  346 #define PCS_PARTNER_ABILITY_SGMII_COPPER_SPEED0 (1<<10) /* ro */
  347 #define PCS_PARTNER_ABILITY_SGMII_COPPER_SPEED1 (1<<11) /* ro */
  348 #define PCS_PARTNER_ABILITY_SGMII_COPPER_DUPLEX_STATUS  (1<<12) /* ro */
  349         /* Bit 13, Reserved. */                         /* - */
  350 #define PCS_PARTNER_ABILITY_SGMII_ACK           (1<<14) /* ro */
  351 #define PCS_PARTNER_ABILITY_SGMII_COPPER_LINK_STATUS    (1<<15) /* ro */
  352 
  353 #define PCS_AN_EXPANSION                0x06            /* ro */
  354 #define PCS_AN_EXPANSION_LINK_PARTNER_AUTO_NEGOTIATION_ABLE     (1<<0)  /* ro */
  355 #define PCS_AN_EXPANSION_PAGE_RECEIVE           (1<<1)  /* ro */
  356 #define PCS_AN_EXPANSION_NEXT_PAGE_ABLE         (1<<2)  /* -, 0 */
  357         /* Bits 3:15, Reserved. */                      /* - */
  358 
  359 #define PCS_DEVICE_NEXT_PAGE            0x07            /* ro */
  360 #define PCS_PARTNER_NEXT_PAGE           0x08            /* ro */
  361 #define PCS_MASTER_SLAVE_CNTL           0x09            /* ro */
  362 #define PCS_MASTER_SLAVE_STAT           0x0A            /* ro */
  363         /* 0x0B - 0x0E, Reserved */                     /* - */
  364 #define PCS_EXTENDED_STATUS             0x0F            /* ro */
  365 /* Specific Extended Registers. */
  366 #define PCS_EXT_SCRATCH                 0x10            /* rw */
  367 #define PCS_EXT_REV                     0x11            /* ro */
  368 #define PCS_EXT_LINK_TIMER_0            0x12            /* rw */
  369 #define PCS_EXT_LINK_TIMER_1            0x13            /* rw */
  370 #define PCS_EXT_IF_MODE                 0x14            /* rw */
  371 #define PCS_EXT_IF_MODE_SGMII_ENA               (1<<0)  /* rw */
  372 #define PCS_EXT_IF_MODE_USE_SGMII_AN            (1<<1)  /* rw */
  373 #define PCS_EXT_IF_MODE_SGMII_SPEED1            (1<<2)  /* rw */
  374 #define PCS_EXT_IF_MODE_SGMII_SPEED0            (1<<3)  /* rw */
  375 #define PCS_EXT_IF_MODE_SGMII_DUPLEX            (1<<4)  /* rw */
  376         /* Bits 5:15, Reserved. */                      /* - */
  377 
  378 #define PCS_EXT_DISABLE_READ_TIMEOUT    0x15            /* rw */
  379 #define PCS_EXT_READ_TIMEOUT            0x16            /* r0 */
  380         /* 0x17-0x1F, Reserved. */
  381 
  382 /* 0xA0 - 0xBF, MDIO Space 1. */
  383 #define MDIO_1_START                    0xA0
  384 #define ATSE_BMCR                       MDIO_1_START
  385 
  386 /* 0xC0 - 0xC7, Supplementary Address. */
  387 #define SUPPL_ADDR_SMAC_0_0             0xC0            /* rw */
  388 #define SUPPL_ADDR_SMAC_0_1             0xC1            /* rw */
  389 #define SUPPL_ADDR_SMAC_1_0             0xC2            /* rw */
  390 #define SUPPL_ADDR_SMAC_1_1             0xC3            /* rw */
  391 #define SUPPL_ADDR_SMAC_2_0             0xC4            /* rw */
  392 #define SUPPL_ADDR_SMAC_2_1             0xC5            /* rw */
  393 #define SUPPL_ADDR_SMAC_3_0             0xC6            /* rw */
  394 #define SUPPL_ADDR_SMAC_3_1             0xC7            /* rw */
  395 
  396 /* 0xC8 - 0xCF, Reserved; set to zero, ignore on read. */
  397 /* 0xD7 - 0xFF, Reserved; set to zero, ignore on read. */
  398 
  399 /* -------------------------------------------------------------------------- */
  400 
  401 /* DE4 Intel Strata Flash Ethernet Option Bits area. */
  402 /* XXX-BZ this is something a loader will have to handle for us. */
  403 #define ALTERA_ETHERNET_OPTION_BITS_OFF 0x00008000
  404 #define ALTERA_ETHERNET_OPTION_BITS_LEN 0x00007fff
  405 
  406 /* -------------------------------------------------------------------------- */
  407 
  408 struct atse_softc {
  409         struct ifnet            *atse_ifp;
  410         struct resource         *atse_mem_res;
  411         device_t                atse_miibus;
  412         device_t                atse_dev;
  413         int                     atse_unit;
  414         int                     atse_mem_rid;
  415         int                     atse_phy_addr;
  416         int                     atse_if_flags;
  417         bus_addr_t              atse_bmcr0;
  418         bus_addr_t              atse_bmcr1;
  419         uint32_t                atse_flags;
  420 #define ATSE_FLAGS_LINK                 0x00000001
  421 #define ATSE_FLAGS_ERROR                0x00000002
  422 #define ATSE_FLAGS_SOP_SEEN             0x00000004
  423         uint8_t                 atse_eth_addr[ETHER_ADDR_LEN];
  424 #define ATSE_ETH_ADDR_DEF       0x01
  425 #define ATSE_ETH_ADDR_SUPP1     0x02
  426 #define ATSE_ETH_ADDR_SUPP2     0x04
  427 #define ATSE_ETH_ADDR_SUPP3     0x08
  428 #define ATSE_ETH_ADDR_SUPP4     0x10
  429 #define ATSE_ETH_ADDR_ALL       0x1f
  430         int16_t                 atse_rx_cycles;         /* POLLING */
  431 #define RX_CYCLES_IN_INTR       5
  432         uint32_t                atse_rx_err[6];
  433 #define ATSE_RX_ERR_FIFO_THRES_EOP      0 /* FIFO threshold reached, on EOP. */
  434 #define ATSE_RX_ERR_ELEN                1 /* Frame/payload length not valid. */
  435 #define ATSE_RX_ERR_CRC32               2 /* CRC-32 error. */
  436 #define ATSE_RX_ERR_FIFO_THRES_TRUNC    3 /* FIFO thresh., truncated frame. */
  437 #define ATSE_RX_ERR_4                   4 /* ? */
  438 #define ATSE_RX_ERR_5                   5 /* / */
  439 #define ATSE_RX_ERR_MAX                 6
  440         struct callout          atse_tick;
  441         struct mtx              atse_mtx;
  442         device_t                dev;
  443 
  444         /* xDMA */
  445         xdma_controller_t       *xdma_tx;
  446         xdma_channel_t          *xchan_tx;
  447         void                    *ih_tx;
  448         int                     txcount;
  449 
  450         xdma_controller_t       *xdma_rx;
  451         xdma_channel_t          *xchan_rx;
  452         void                    *ih_rx;
  453 
  454         struct buf_ring         *br;
  455         struct mtx              br_mtx;
  456 };
  457 
  458 int     atse_attach(device_t);
  459 int     atse_detach_dev(device_t);
  460 void    atse_detach_resources(device_t);
  461 
  462 int     atse_miibus_readreg(device_t, int, int);
  463 int     atse_miibus_writereg(device_t, int, int, int);
  464 void    atse_miibus_statchg(device_t);
  465 
  466 #endif /* _DEV_IF_ATSEREG_H */

Cache object: b395714e189eede0e66914560b9b3f0c


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