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/contrib/ncsw/Peripherals/FM/MAC/dtsec.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 2008-2013 Freescale Semiconductor Inc.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions are met:
    6  *     * Redistributions of source code must retain the above copyright
    7  *       notice, this list of conditions and the following disclaimer.
    8  *     * Redistributions in binary form must reproduce the above copyright
    9  *       notice, this list of conditions and the following disclaimer in the
   10  *       documentation and/or other materials provided with the distribution.
   11  *     * Neither the name of Freescale Semiconductor nor the
   12  *       names of its contributors may be used to endorse or promote products
   13  *       derived from this software without specific prior written permission.
   14  *
   15  *
   16  * ALTERNATIVELY, this software may be distributed under the terms of the
   17  * GNU General Public License ("GPL") as published by the Free Software
   18  * Foundation, either version 2 of that License or (at your option) any
   19  * later version.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
   22  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   24  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
   25  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   26  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   28  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 /******************************************************************************
   34  @File          dtsec.h
   35 
   36  @Description   FM dTSEC ...
   37 *//***************************************************************************/
   38 #ifndef __DTSEC_H
   39 #define __DTSEC_H
   40 
   41 #include "std_ext.h"
   42 #include "error_ext.h"
   43 #include "list_ext.h"
   44 #include "enet_ext.h"
   45 
   46 #include "dtsec_mii_acc.h"
   47 #include "fm_mac.h"
   48 
   49 
   50 #define DEFAULT_exceptions            \
   51     ((uint32_t)(DTSEC_IMASK_BREN    | \
   52                 DTSEC_IMASK_RXCEN   | \
   53                 DTSEC_IMASK_BTEN    | \
   54                 DTSEC_IMASK_TXCEN   | \
   55                 DTSEC_IMASK_TXEEN   | \
   56                 DTSEC_IMASK_ABRTEN  | \
   57                 DTSEC_IMASK_LCEN    | \
   58                 DTSEC_IMASK_CRLEN   | \
   59                 DTSEC_IMASK_XFUNEN  | \
   60                 DTSEC_IMASK_IFERREN | \
   61                 DTSEC_IMASK_MAGEN   | \
   62                 DTSEC_IMASK_TDPEEN  | \
   63                 DTSEC_IMASK_RDPEEN))
   64 
   65 #define GET_EXCEPTION_FLAG(bitMask, exception)  switch (exception){ \
   66     case e_FM_MAC_EX_1G_BAB_RX:                                     \
   67         bitMask = DTSEC_IMASK_BREN; break;                          \
   68     case e_FM_MAC_EX_1G_RX_CTL:                                     \
   69         bitMask = DTSEC_IMASK_RXCEN; break;                         \
   70     case e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET:                    \
   71         bitMask = DTSEC_IMASK_GTSCEN ; break;                       \
   72     case e_FM_MAC_EX_1G_BAB_TX:                                     \
   73         bitMask = DTSEC_IMASK_BTEN   ; break;                       \
   74     case e_FM_MAC_EX_1G_TX_CTL:                                     \
   75         bitMask = DTSEC_IMASK_TXCEN  ; break;                       \
   76     case e_FM_MAC_EX_1G_TX_ERR:                                     \
   77         bitMask = DTSEC_IMASK_TXEEN  ; break;                       \
   78     case e_FM_MAC_EX_1G_LATE_COL:                                   \
   79         bitMask = DTSEC_IMASK_LCEN   ; break;                       \
   80     case e_FM_MAC_EX_1G_COL_RET_LMT:                                \
   81         bitMask = DTSEC_IMASK_CRLEN  ; break;                       \
   82     case e_FM_MAC_EX_1G_TX_FIFO_UNDRN:                              \
   83         bitMask = DTSEC_IMASK_XFUNEN ; break;                       \
   84     case e_FM_MAC_EX_1G_MAG_PCKT:                                   \
   85         bitMask = DTSEC_IMASK_MAGEN ; break;                        \
   86     case e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET:                         \
   87         bitMask = DTSEC_IMASK_MMRDEN; break;                        \
   88     case e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET:                         \
   89         bitMask = DTSEC_IMASK_MMWREN  ; break;                      \
   90     case e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET:                    \
   91         bitMask = DTSEC_IMASK_GRSCEN; break;                        \
   92     case e_FM_MAC_EX_1G_TX_DATA_ERR:                                \
   93         bitMask = DTSEC_IMASK_TDPEEN; break;                        \
   94     case e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL:                            \
   95         bitMask = DTSEC_IMASK_MSROEN ; break;                       \
   96     default: bitMask = 0;break;}
   97 
   98 
   99 #define MAX_PACKET_ALIGNMENT        31
  100 #define MAX_INTER_PACKET_GAP        0x7f
  101 #define MAX_INTER_PALTERNATE_BEB    0x0f
  102 #define MAX_RETRANSMISSION          0x0f
  103 #define MAX_COLLISION_WINDOW        0x03ff
  104 
  105 
  106 /********************* From mac ext ******************************************/
  107 typedef  uint32_t t_ErrorDisable;
  108 
  109 #define ERROR_DISABLE_TRANSMIT              0x00400000
  110 #define ERROR_DISABLE_LATE_COLLISION        0x00040000
  111 #define ERROR_DISABLE_COLLISION_RETRY_LIMIT 0x00020000
  112 #define ERROR_DISABLE_TxFIFO_UNDERRUN       0x00010000
  113 #define ERROR_DISABLE_TxABORT               0x00008000
  114 #define ERROR_DISABLE_INTERFACE             0x00004000
  115 #define ERROR_DISABLE_TxDATA_PARITY         0x00000002
  116 #define ERROR_DISABLE_RxDATA_PARITY         0x00000001
  117 
  118 /*****************************************************************************/
  119 #define DTSEC_NUM_OF_PADDRS             15  /* number of pattern match registers (entries) */
  120 
  121 #define GROUP_ADDRESS                   0x0000010000000000LL /* Group address bit indication */
  122 
  123 #define HASH_TABLE_SIZE                 256 /* Hash table size (= 32 bits * 8 regs) */
  124 
  125 #define HASH_TABLE_SIZE                 256 /* Hash table size (32 bits * 8 regs) */
  126 #define EXTENDED_HASH_TABLE_SIZE        512 /* Extended Hash table size (32 bits * 16 regs) */
  127 
  128 #define DTSEC_TO_MII_OFFSET             0x1000  /* number of pattern match registers (entries) */
  129 
  130 #define MAX_PHYS                    32 /* maximum number of phys */
  131 
  132 #define     VAL32BIT    0x100000000LL
  133 #define     VAL22BIT    0x00400000
  134 #define     VAL16BIT    0x00010000
  135 #define     VAL12BIT    0x00001000
  136 
  137 /* CAR1/2 bits */
  138 #define CAR1_TR64   0x80000000
  139 #define CAR1_TR127  0x40000000
  140 #define CAR1_TR255  0x20000000
  141 #define CAR1_TR511  0x10000000
  142 #define CAR1_TRK1   0x08000000
  143 #define CAR1_TRMAX  0x04000000
  144 #define CAR1_TRMGV  0x02000000
  145 
  146 #define CAR1_RBYT   0x00010000
  147 #define CAR1_RPKT   0x00008000
  148 #define CAR1_RMCA   0x00002000
  149 #define CAR1_RBCA   0x00001000
  150 #define CAR1_RXPF   0x00000400
  151 #define CAR1_RALN   0x00000100
  152 #define CAR1_RFLR   0x00000080
  153 #define CAR1_RCDE   0x00000040
  154 #define CAR1_RCSE   0x00000020
  155 #define CAR1_RUND   0x00000010
  156 #define CAR1_ROVR   0x00000008
  157 #define CAR1_RFRG   0x00000004
  158 #define CAR1_RJBR   0x00000002
  159 #define CAR1_RDRP   0x00000001
  160 
  161 #define CAR2_TFCS   0x00040000
  162 #define CAR2_TBYT   0x00002000
  163 #define CAR2_TPKT   0x00001000
  164 #define CAR2_TMCA   0x00000800
  165 #define CAR2_TBCA   0x00000400
  166 #define CAR2_TXPF   0x00000200
  167 #define CAR2_TDRP   0x00000001
  168 
  169 typedef struct t_InternalStatistics
  170 {
  171     uint64_t    tr64;
  172     uint64_t    tr127;
  173     uint64_t    tr255;
  174     uint64_t    tr511;
  175     uint64_t    tr1k;
  176     uint64_t    trmax;
  177     uint64_t    trmgv;
  178     uint64_t    rfrg;
  179     uint64_t    rjbr;
  180     uint64_t    rdrp;
  181     uint64_t    raln;
  182     uint64_t    rund;
  183     uint64_t    rovr;
  184     uint64_t    rxpf;
  185     uint64_t    txpf;
  186     uint64_t    rbyt;
  187     uint64_t    rpkt;
  188     uint64_t    rmca;
  189     uint64_t    rbca;
  190     uint64_t    rflr;
  191     uint64_t    rcde;
  192     uint64_t    rcse;
  193     uint64_t    tbyt;
  194     uint64_t    tpkt;
  195     uint64_t    tmca;
  196     uint64_t    tbca;
  197     uint64_t    tdrp;
  198     uint64_t    tfcs;
  199 } t_InternalStatistics;
  200 
  201 typedef struct {
  202     t_FmMacControllerDriver     fmMacControllerDriver;
  203     t_Handle                    h_App;            /**< Handle to the upper layer application              */
  204     struct dtsec_regs           *p_MemMap;        /**< pointer to dTSEC memory mapped registers.          */
  205     struct dtsec_mii_reg        *p_MiiMemMap;     /**< pointer to dTSEC MII memory mapped registers.          */
  206     uint64_t                    addr;             /**< MAC address of device;                             */
  207     e_EnetMode                  enetMode;         /**< Ethernet physical interface  */
  208     t_FmMacExceptionCallback    *f_Exception;
  209     int                         mdioIrq;
  210     t_FmMacExceptionCallback    *f_Event;
  211     bool                        indAddrRegUsed[DTSEC_NUM_OF_PADDRS]; /**< Whether a particular individual address recognition register is being used */
  212     uint64_t                    paddr[DTSEC_NUM_OF_PADDRS]; /**< MAC address for particular individual address recognition register */
  213     uint8_t                     numOfIndAddrInRegs; /**< Number of individual addresses in registers for this station. */
  214     bool                        halfDuplex;
  215     t_InternalStatistics        internalStatistics;
  216     t_EthHash                   *p_MulticastAddrHash;      /* pointer to driver's global address hash table  */
  217     t_EthHash                   *p_UnicastAddrHash;    /* pointer to driver's individual address hash table  */
  218     uint8_t                     macId;
  219     uint8_t                     tbi_phy_addr;
  220     uint32_t                    exceptions;
  221     bool                        ptpTsuEnabled;
  222     bool                        enTsuErrExeption;
  223     e_FmMacStatisticsLevel      statisticsLevel;
  224     struct dtsec_cfg            *p_DtsecDriverParam;
  225 } t_Dtsec;
  226 
  227 
  228 #endif /* __DTSEC_H */

Cache object: 4d58984ed6af4b37c7cc38d739fb8cd2


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