Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 #ifndef __BCM4908_ENET_H
0003 #define __BCM4908_ENET_H
0004 
0005 #define ENET_CONTROL                    0x000
0006 #define ENET_MIB_CTRL                   0x004
0007 #define  ENET_MIB_CTRL_CLR_MIB              0x00000001
0008 #define ENET_RX_ERR_MASK                0x008
0009 #define ENET_MIB_MAX_PKT_SIZE               0x00C
0010 #define  ENET_MIB_MAX_PKT_SIZE_VAL          0x00003fff
0011 #define ENET_DIAG_OUT                   0x01c
0012 #define ENET_ENABLE_DROP_PKT                0x020
0013 #define ENET_IRQ_ENABLE                 0x024
0014 #define  ENET_IRQ_ENABLE_OVFL               0x00000001
0015 #define ENET_GMAC_STATUS                0x028
0016 #define  ENET_GMAC_STATUS_ETH_SPEED_MASK        0x00000003
0017 #define  ENET_GMAC_STATUS_ETH_SPEED_10          0x00000000
0018 #define  ENET_GMAC_STATUS_ETH_SPEED_100         0x00000001
0019 #define  ENET_GMAC_STATUS_ETH_SPEED_1000        0x00000002
0020 #define  ENET_GMAC_STATUS_HD                0x00000004
0021 #define  ENET_GMAC_STATUS_AUTO_CFG_EN           0x00000008
0022 #define  ENET_GMAC_STATUS_LINK_UP           0x00000010
0023 #define ENET_IRQ_STATUS                 0x02c
0024 #define  ENET_IRQ_STATUS_OVFL               0x00000001
0025 #define ENET_OVERFLOW_COUNTER               0x030
0026 #define ENET_FLUSH                  0x034
0027 #define  ENET_FLUSH_RXFIFO_FLUSH            0x00000001
0028 #define  ENET_FLUSH_TXFIFO_FLUSH            0x00000002
0029 #define ENET_RSV_SELECT                 0x038
0030 #define ENET_BP_FORCE                   0x03c
0031 #define  ENET_BP_FORCE_FORCE                0x00000001
0032 #define ENET_DMA_RX_OK_TO_SEND_COUNT            0x040
0033 #define  ENET_DMA_RX_OK_TO_SEND_COUNT_VAL       0x0000000f
0034 #define ENET_TX_CRC_CTRL                0x044
0035 #define ENET_MIB                    0x200
0036 #define ENET_UNIMAC                 0x400
0037 #define ENET_DMA                    0x800
0038 #define ENET_DMA_CONTROLLER_CFG             0x800
0039 #define  ENET_DMA_CTRL_CFG_MASTER_EN            0x00000001
0040 #define  ENET_DMA_CTRL_CFG_FLOWC_CH1_EN         0x00000002
0041 #define  ENET_DMA_CTRL_CFG_FLOWC_CH3_EN         0x00000004
0042 #define ENET_DMA_FLOWCTL_CH1_THRESH_LO          0x804
0043 #define ENET_DMA_FLOWCTL_CH1_THRESH_HI          0x808
0044 #define ENET_DMA_FLOWCTL_CH1_ALLOC          0x80c
0045 #define  ENET_DMA_FLOWCTL_CH1_ALLOC_FORCE       0x80000000
0046 #define ENET_DMA_FLOWCTL_CH3_THRESH_LO          0x810
0047 #define ENET_DMA_FLOWCTL_CH3_THRESH_HI          0x814
0048 #define ENET_DMA_FLOWCTL_CH3_ALLOC          0x818
0049 #define ENET_DMA_FLOWCTL_CH5_THRESH_LO          0x81C
0050 #define ENET_DMA_FLOWCTL_CH5_THRESH_HI          0x820
0051 #define ENET_DMA_FLOWCTL_CH5_ALLOC          0x824
0052 #define ENET_DMA_FLOWCTL_CH7_THRESH_LO          0x828
0053 #define ENET_DMA_FLOWCTL_CH7_THRESH_HI          0x82C
0054 #define ENET_DMA_FLOWCTL_CH7_ALLOC          0x830
0055 #define ENET_DMA_CTRL_CHANNEL_RESET         0x834
0056 #define ENET_DMA_CTRL_CHANNEL_DEBUG         0x838
0057 #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_STATUS       0x840
0058 #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_MASK     0x844
0059 #define ENET_DMA_CH0_CFG                0xa00       /* RX */
0060 #define ENET_DMA_CH1_CFG                0xa10       /* TX */
0061 #define ENET_DMA_CH0_STATE_RAM              0xc00       /* RX */
0062 #define ENET_DMA_CH1_STATE_RAM              0xc10       /* TX */
0063 
0064 #define ENET_DMA_CH_CFG                 0x00        /* assorted configuration */
0065 #define  ENET_DMA_CH_CFG_ENABLE             0x00000001  /* set to enable channel */
0066 #define  ENET_DMA_CH_CFG_PKT_HALT           0x00000002  /* idle after an EOP flag is detected */
0067 #define  ENET_DMA_CH_CFG_BURST_HALT         0x00000004  /* idle after finish current memory burst */
0068 #define ENET_DMA_CH_CFG_INT_STAT            0x04        /* interrupts control and status */
0069 #define ENET_DMA_CH_CFG_INT_MASK            0x08        /* interrupts mask */
0070 #define  ENET_DMA_CH_CFG_INT_BUFF_DONE          0x00000001  /* buffer done */
0071 #define  ENET_DMA_CH_CFG_INT_DONE           0x00000002  /* packet xfer complete */
0072 #define  ENET_DMA_CH_CFG_INT_NO_DESC            0x00000004  /* no valid descriptors */
0073 #define  ENET_DMA_CH_CFG_INT_RX_ERROR           0x00000008  /* rxdma detect client protocol error */
0074 #define ENET_DMA_CH_CFG_MAX_BURST           0x0c        /* max burst length permitted */
0075 #define  ENET_DMA_CH_CFG_MAX_BURST_DESCSIZE_SEL     0x00040000  /* DMA Descriptor Size Selection */
0076 #define ENET_DMA_CH_CFG_SIZE                0x10
0077 
0078 #define ENET_DMA_CH_STATE_RAM_BASE_DESC_PTR     0x00        /* descriptor ring start address */
0079 #define ENET_DMA_CH_STATE_RAM_STATE_DATA        0x04        /* state/bytes done/ring offset */
0080 #define ENET_DMA_CH_STATE_RAM_DESC_LEN_STATUS       0x08        /* buffer descriptor status and len */
0081 #define ENET_DMA_CH_STATE_RAM_DESC_BASE_BUFPTR      0x0c        /* buffer descrpitor current processing */
0082 #define ENET_DMA_CH_STATE_RAM_SIZE          0x10
0083 
0084 #define DMA_CTL_STATUS_APPEND_CRC           0x00000100
0085 #define DMA_CTL_STATUS_APPEND_BRCM_TAG          0x00000200
0086 #define DMA_CTL_STATUS_PRIO             0x00000C00  /* Prio for Tx */
0087 #define DMA_CTL_STATUS_WRAP             0x00001000  /* */
0088 #define DMA_CTL_STATUS_SOP              0x00002000  /* first buffer in packet */
0089 #define DMA_CTL_STATUS_EOP              0x00004000  /* last buffer in packet */
0090 #define DMA_CTL_STATUS_OWN              0x00008000  /* cleared by DMA, set by SW */
0091 #define DMA_CTL_LEN_DESC_BUFLENGTH          0x0fff0000
0092 #define DMA_CTL_LEN_DESC_BUFLENGTH_SHIFT        16
0093 #define DMA_CTL_LEN_DESC_MULTICAST          0x40000000
0094 #define DMA_CTL_LEN_DESC_USEFPM             0x80000000
0095 
0096 #endif