Path: blob/main/sys/contrib/ncsw/inc/flib/fsl_enet.h
48378 views
/*1* Copyright 2008-2012 Freescale Semiconductor Inc.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions are met:5* * Redistributions of source code must retain the above copyright6* notice, this list of conditions and the following disclaimer.7* * Redistributions in binary form must reproduce the above copyright8* notice, this list of conditions and the following disclaimer in the9* documentation and/or other materials provided with the distribution.10* * Neither the name of Freescale Semiconductor nor the11* names of its contributors may be used to endorse or promote products12* derived from this software without specific prior written permission.13*14*15* ALTERNATIVELY, this software may be distributed under the terms of the16* GNU General Public License ("GPL") as published by the Free Software17* Foundation, either version 2 of that License or (at your option) any18* later version.19*20* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY21* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED22* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE23* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY24* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES25* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;26* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND27* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT28* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/3132#ifndef __FSL_ENET_H33#define __FSL_ENET_H3435/**36@Description Ethernet MAC-PHY Interface37*/3839enum enet_interface {40E_ENET_IF_MII = 0x00010000, /**< MII interface */41E_ENET_IF_RMII = 0x00020000, /**< RMII interface */42E_ENET_IF_SMII = 0x00030000, /**< SMII interface */43E_ENET_IF_GMII = 0x00040000, /**< GMII interface */44E_ENET_IF_RGMII = 0x00050000, /**< RGMII interface */45E_ENET_IF_TBI = 0x00060000, /**< TBI interface */46E_ENET_IF_RTBI = 0x00070000, /**< RTBI interface */47E_ENET_IF_SGMII = 0x00080000, /**< SGMII interface */48E_ENET_IF_XGMII = 0x00090000, /**< XGMII interface */49E_ENET_IF_QSGMII = 0x000a0000, /**< QSGMII interface */50E_ENET_IF_XFI = 0x000b0000 /**< XFI interface */51};5253/**54@Description Ethernet Speed (nominal data rate)55*/56enum enet_speed {57E_ENET_SPEED_10 = 10, /**< 10 Mbps */58E_ENET_SPEED_100 = 100, /**< 100 Mbps */59E_ENET_SPEED_1000 = 1000, /**< 1000 Mbps = 1 Gbps */60E_ENET_SPEED_2500 = 2500, /**< 2500 Mbps = 2.5 Gbps */61E_ENET_SPEED_10000 = 10000 /**< 10000 Mbps = 10 Gbps */62};6364enum mac_type {65E_MAC_DTSEC,66E_MAC_TGEC,67E_MAC_MEMAC68};6970/**************************************************************************//**71@Description Enum for inter-module interrupts registration72*//***************************************************************************/73enum fman_event_modules {74E_FMAN_MOD_PRS, /**< Parser event */75E_FMAN_MOD_KG, /**< Keygen event */76E_FMAN_MOD_PLCR, /**< Policer event */77E_FMAN_MOD_10G_MAC, /**< 10G MAC event */78E_FMAN_MOD_1G_MAC, /**< 1G MAC event */79E_FMAN_MOD_TMR, /**< Timer event */80E_FMAN_MOD_FMAN_CTRL, /**< FMAN Controller Timer event */81E_FMAN_MOD_MACSEC,82E_FMAN_MOD_DUMMY_LAST83};8485/**************************************************************************//**86@Description Enum for interrupts types87*//***************************************************************************/88enum fman_intr_type {89E_FMAN_INTR_TYPE_ERR,90E_FMAN_INTR_TYPE_NORMAL91};9293/**************************************************************************//**94@Description enum for defining MAC types95*//***************************************************************************/96enum fman_mac_type {97E_FMAN_MAC_10G = 0, /**< 10G MAC */98E_FMAN_MAC_1G /**< 1G MAC */99};100101enum fman_mac_exceptions {102E_FMAN_MAC_EX_10G_MDIO_SCAN_EVENTMDIO = 0,103/**< 10GEC MDIO scan event interrupt */104E_FMAN_MAC_EX_10G_MDIO_CMD_CMPL,105/**< 10GEC MDIO command completion interrupt */106E_FMAN_MAC_EX_10G_REM_FAULT,107/**< 10GEC, mEMAC Remote fault interrupt */108E_FMAN_MAC_EX_10G_LOC_FAULT,109/**< 10GEC, mEMAC Local fault interrupt */110E_FMAN_MAC_EX_10G_1TX_ECC_ER,111/**< 10GEC, mEMAC Transmit frame ECC error interrupt */112E_FMAN_MAC_EX_10G_TX_FIFO_UNFL,113/**< 10GEC, mEMAC Transmit FIFO underflow interrupt */114E_FMAN_MAC_EX_10G_TX_FIFO_OVFL,115/**< 10GEC, mEMAC Transmit FIFO overflow interrupt */116E_FMAN_MAC_EX_10G_TX_ER,117/**< 10GEC Transmit frame error interrupt */118E_FMAN_MAC_EX_10G_RX_FIFO_OVFL,119/**< 10GEC, mEMAC Receive FIFO overflow interrupt */120E_FMAN_MAC_EX_10G_RX_ECC_ER,121/**< 10GEC, mEMAC Receive frame ECC error interrupt */122E_FMAN_MAC_EX_10G_RX_JAB_FRM,123/**< 10GEC Receive jabber frame interrupt */124E_FMAN_MAC_EX_10G_RX_OVRSZ_FRM,125/**< 10GEC Receive oversized frame interrupt */126E_FMAN_MAC_EX_10G_RX_RUNT_FRM,127/**< 10GEC Receive runt frame interrupt */128E_FMAN_MAC_EX_10G_RX_FRAG_FRM,129/**< 10GEC Receive fragment frame interrupt */130E_FMAN_MAC_EX_10G_RX_LEN_ER,131/**< 10GEC Receive payload length error interrupt */132E_FMAN_MAC_EX_10G_RX_CRC_ER,133/**< 10GEC Receive CRC error interrupt */134E_FMAN_MAC_EX_10G_RX_ALIGN_ER,135/**< 10GEC Receive alignment error interrupt */136E_FMAN_MAC_EX_1G_BAB_RX,137/**< dTSEC Babbling receive error */138E_FMAN_MAC_EX_1G_RX_CTL,139/**< dTSEC Receive control (pause frame) interrupt */140E_FMAN_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET,141/**< dTSEC Graceful transmit stop complete */142E_FMAN_MAC_EX_1G_BAB_TX,143/**< dTSEC Babbling transmit error */144E_FMAN_MAC_EX_1G_TX_CTL,145/**< dTSEC Transmit control (pause frame) interrupt */146E_FMAN_MAC_EX_1G_TX_ERR,147/**< dTSEC Transmit error */148E_FMAN_MAC_EX_1G_LATE_COL,149/**< dTSEC Late collision */150E_FMAN_MAC_EX_1G_COL_RET_LMT,151/**< dTSEC Collision retry limit */152E_FMAN_MAC_EX_1G_TX_FIFO_UNDRN,153/**< dTSEC Transmit FIFO underrun */154E_FMAN_MAC_EX_1G_MAG_PCKT,155/**< dTSEC Magic Packet detection */156E_FMAN_MAC_EX_1G_MII_MNG_RD_COMPLET,157/**< dTSEC MII management read completion */158E_FMAN_MAC_EX_1G_MII_MNG_WR_COMPLET,159/**< dTSEC MII management write completion */160E_FMAN_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET,161/**< dTSEC Graceful receive stop complete */162E_FMAN_MAC_EX_1G_TX_DATA_ERR,163/**< dTSEC Internal data error on transmit */164E_FMAN_MAC_EX_1G_RX_DATA_ERR,165/**< dTSEC Internal data error on receive */166E_FMAN_MAC_EX_1G_1588_TS_RX_ERR,167/**< dTSEC Time-Stamp Receive Error */168E_FMAN_MAC_EX_1G_RX_MIB_CNT_OVFL,169/**< dTSEC MIB counter overflow */170E_FMAN_MAC_EX_TS_FIFO_ECC_ERR,171/**< mEMAC Time-stamp FIFO ECC error interrupt;172not supported on T4240/B4860 rev1 chips */173};174175#define ENET_IF_SGMII_BASEX 0x80000000176/**< SGMII/QSGII interface with 1000BaseX auto-negotiation between MAC177and phy or backplane;178Note: 1000BaseX auto-negotiation relates only to interface between MAC179and phy/backplane, SGMII phy can still synchronize with far-end phy at18010Mbps, 100Mbps or 1000Mbps */181182enum enet_mode {183E_ENET_MODE_INVALID = 0,184/**< Invalid Ethernet mode */185E_ENET_MODE_MII_10 = (E_ENET_IF_MII | E_ENET_SPEED_10),186/**< 10 Mbps MII */187E_ENET_MODE_MII_100 = (E_ENET_IF_MII | E_ENET_SPEED_100),188/**< 100 Mbps MII */189E_ENET_MODE_RMII_10 = (E_ENET_IF_RMII | E_ENET_SPEED_10),190/**< 10 Mbps RMII */191E_ENET_MODE_RMII_100 = (E_ENET_IF_RMII | E_ENET_SPEED_100),192/**< 100 Mbps RMII */193E_ENET_MODE_SMII_10 = (E_ENET_IF_SMII | E_ENET_SPEED_10),194/**< 10 Mbps SMII */195E_ENET_MODE_SMII_100 = (E_ENET_IF_SMII | E_ENET_SPEED_100),196/**< 100 Mbps SMII */197E_ENET_MODE_GMII_1000 = (E_ENET_IF_GMII | E_ENET_SPEED_1000),198/**< 1000 Mbps GMII */199E_ENET_MODE_RGMII_10 = (E_ENET_IF_RGMII | E_ENET_SPEED_10),200/**< 10 Mbps RGMII */201E_ENET_MODE_RGMII_100 = (E_ENET_IF_RGMII | E_ENET_SPEED_100),202/**< 100 Mbps RGMII */203E_ENET_MODE_RGMII_1000 = (E_ENET_IF_RGMII | E_ENET_SPEED_1000),204/**< 1000 Mbps RGMII */205E_ENET_MODE_TBI_1000 = (E_ENET_IF_TBI | E_ENET_SPEED_1000),206/**< 1000 Mbps TBI */207E_ENET_MODE_RTBI_1000 = (E_ENET_IF_RTBI | E_ENET_SPEED_1000),208/**< 1000 Mbps RTBI */209E_ENET_MODE_SGMII_10 = (E_ENET_IF_SGMII | E_ENET_SPEED_10),210/**< 10 Mbps SGMII with auto-negotiation between MAC and211SGMII phy according to Cisco SGMII specification */212E_ENET_MODE_SGMII_100 = (E_ENET_IF_SGMII | E_ENET_SPEED_100),213/**< 100 Mbps SGMII with auto-negotiation between MAC and214SGMII phy according to Cisco SGMII specification */215E_ENET_MODE_SGMII_1000 = (E_ENET_IF_SGMII | E_ENET_SPEED_1000),216/**< 1000 Mbps SGMII with auto-negotiation between MAC and217SGMII phy according to Cisco SGMII specification */218E_ENET_MODE_SGMII_BASEX_10 = (ENET_IF_SGMII_BASEX | E_ENET_IF_SGMII219| E_ENET_SPEED_10),220/**< 10 Mbps SGMII with 1000BaseX auto-negotiation between221MAC and SGMII phy or backplane */222E_ENET_MODE_SGMII_BASEX_100 = (ENET_IF_SGMII_BASEX | E_ENET_IF_SGMII223| E_ENET_SPEED_100),224/**< 100 Mbps SGMII with 1000BaseX auto-negotiation between225MAC and SGMII phy or backplane */226E_ENET_MODE_SGMII_BASEX_1000 = (ENET_IF_SGMII_BASEX | E_ENET_IF_SGMII227| E_ENET_SPEED_1000),228/**< 1000 Mbps SGMII with 1000BaseX auto-negotiation between229MAC and SGMII phy or backplane */230E_ENET_MODE_QSGMII_1000 = (E_ENET_IF_QSGMII | E_ENET_SPEED_1000),231/**< 1000 Mbps QSGMII with auto-negotiation between MAC and232QSGMII phy according to Cisco QSGMII specification */233E_ENET_MODE_QSGMII_BASEX_1000 = (ENET_IF_SGMII_BASEX | E_ENET_IF_QSGMII234| E_ENET_SPEED_1000),235/**< 1000 Mbps QSGMII with 1000BaseX auto-negotiation between236MAC and QSGMII phy or backplane */237E_ENET_MODE_XGMII_10000 = (E_ENET_IF_XGMII | E_ENET_SPEED_10000),238/**< 10000 Mbps XGMII */239E_ENET_MODE_XFI_10000 = (E_ENET_IF_XFI | E_ENET_SPEED_10000)240/**< 10000 Mbps XFI */241};242243enum fmam_mac_statistics_level {244E_FMAN_MAC_NONE_STATISTICS, /**< No statistics */245E_FMAN_MAC_PARTIAL_STATISTICS, /**< Only error counters are available;246Optimized for performance */247E_FMAN_MAC_FULL_STATISTICS /**< All counters available; Not248optimized for performance */249};250251#define _MAKE_ENET_MODE(_interface, _speed) (enum enet_mode)((_interface) \252| (_speed))253254#define _ENET_INTERFACE_FROM_MODE(mode) (enum enet_interface) \255((mode) & 0x0FFF0000)256#define _ENET_SPEED_FROM_MODE(mode) (enum enet_speed)((mode) & 0x0000FFFF)257#define _ENET_ADDR_TO_UINT64(_enet_addr) \258(uint64_t)(((uint64_t)(_enet_addr)[0] << 40) | \259((uint64_t)(_enet_addr)[1] << 32) | \260((uint64_t)(_enet_addr)[2] << 24) | \261((uint64_t)(_enet_addr)[3] << 16) | \262((uint64_t)(_enet_addr)[4] << 8) | \263((uint64_t)(_enet_addr)[5]))264265#define _MAKE_ENET_ADDR_FROM_UINT64(_addr64, _enet_addr) \266do { \267int i; \268for (i = 0; i < ENET_NUM_OCTETS_PER_ADDRESS; i++) \269(_enet_addr)[i] = (uint8_t)((_addr64) >> ((5-i)*8));\270} while (0)271272#endif /* __FSL_ENET_H */273274275