1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | #ifndef __BCM4908_ENET_H |
3 | #define __BCM4908_ENET_H |
4 | |
5 | #define ENET_CONTROL 0x000 |
6 | #define ENET_MIB_CTRL 0x004 |
7 | #define ENET_MIB_CTRL_CLR_MIB 0x00000001 |
8 | #define ENET_RX_ERR_MASK 0x008 |
9 | #define ENET_MIB_MAX_PKT_SIZE 0x00C |
10 | #define ENET_MIB_MAX_PKT_SIZE_VAL 0x00003fff |
11 | #define ENET_DIAG_OUT 0x01c |
12 | #define ENET_ENABLE_DROP_PKT 0x020 |
13 | #define ENET_IRQ_ENABLE 0x024 |
14 | #define ENET_IRQ_ENABLE_OVFL 0x00000001 |
15 | #define ENET_GMAC_STATUS 0x028 |
16 | #define ENET_GMAC_STATUS_ETH_SPEED_MASK 0x00000003 |
17 | #define ENET_GMAC_STATUS_ETH_SPEED_10 0x00000000 |
18 | #define ENET_GMAC_STATUS_ETH_SPEED_100 0x00000001 |
19 | #define ENET_GMAC_STATUS_ETH_SPEED_1000 0x00000002 |
20 | #define ENET_GMAC_STATUS_HD 0x00000004 |
21 | #define ENET_GMAC_STATUS_AUTO_CFG_EN 0x00000008 |
22 | #define ENET_GMAC_STATUS_LINK_UP 0x00000010 |
23 | #define ENET_IRQ_STATUS 0x02c |
24 | #define ENET_IRQ_STATUS_OVFL 0x00000001 |
25 | #define ENET_OVERFLOW_COUNTER 0x030 |
26 | #define ENET_FLUSH 0x034 |
27 | #define ENET_FLUSH_RXFIFO_FLUSH 0x00000001 |
28 | #define ENET_FLUSH_TXFIFO_FLUSH 0x00000002 |
29 | #define ENET_RSV_SELECT 0x038 |
30 | #define ENET_BP_FORCE 0x03c |
31 | #define ENET_BP_FORCE_FORCE 0x00000001 |
32 | #define ENET_DMA_RX_OK_TO_SEND_COUNT 0x040 |
33 | #define ENET_DMA_RX_OK_TO_SEND_COUNT_VAL 0x0000000f |
34 | #define ENET_TX_CRC_CTRL 0x044 |
35 | #define ENET_MIB 0x200 |
36 | #define ENET_UNIMAC 0x400 |
37 | #define ENET_DMA 0x800 |
38 | #define ENET_DMA_CONTROLLER_CFG 0x800 |
39 | #define ENET_DMA_CTRL_CFG_MASTER_EN 0x00000001 |
40 | #define ENET_DMA_CTRL_CFG_FLOWC_CH1_EN 0x00000002 |
41 | #define ENET_DMA_CTRL_CFG_FLOWC_CH3_EN 0x00000004 |
42 | #define ENET_DMA_FLOWCTL_CH1_THRESH_LO 0x804 |
43 | #define ENET_DMA_FLOWCTL_CH1_THRESH_HI 0x808 |
44 | #define ENET_DMA_FLOWCTL_CH1_ALLOC 0x80c |
45 | #define ENET_DMA_FLOWCTL_CH1_ALLOC_FORCE 0x80000000 |
46 | #define ENET_DMA_FLOWCTL_CH3_THRESH_LO 0x810 |
47 | #define ENET_DMA_FLOWCTL_CH3_THRESH_HI 0x814 |
48 | #define ENET_DMA_FLOWCTL_CH3_ALLOC 0x818 |
49 | #define ENET_DMA_FLOWCTL_CH5_THRESH_LO 0x81C |
50 | #define ENET_DMA_FLOWCTL_CH5_THRESH_HI 0x820 |
51 | #define ENET_DMA_FLOWCTL_CH5_ALLOC 0x824 |
52 | #define ENET_DMA_FLOWCTL_CH7_THRESH_LO 0x828 |
53 | #define ENET_DMA_FLOWCTL_CH7_THRESH_HI 0x82C |
54 | #define ENET_DMA_FLOWCTL_CH7_ALLOC 0x830 |
55 | #define ENET_DMA_CTRL_CHANNEL_RESET 0x834 |
56 | #define ENET_DMA_CTRL_CHANNEL_DEBUG 0x838 |
57 | #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_STATUS 0x840 |
58 | #define ENET_DMA_CTRL_GLOBAL_INTERRUPT_MASK 0x844 |
59 | #define ENET_DMA_CH0_CFG 0xa00 /* RX */ |
60 | #define ENET_DMA_CH1_CFG 0xa10 /* TX */ |
61 | #define ENET_DMA_CH0_STATE_RAM 0xc00 /* RX */ |
62 | #define ENET_DMA_CH1_STATE_RAM 0xc10 /* TX */ |
63 | |
64 | #define ENET_DMA_CH_CFG 0x00 /* assorted configuration */ |
65 | #define ENET_DMA_CH_CFG_ENABLE 0x00000001 /* set to enable channel */ |
66 | #define ENET_DMA_CH_CFG_PKT_HALT 0x00000002 /* idle after an EOP flag is detected */ |
67 | #define ENET_DMA_CH_CFG_BURST_HALT 0x00000004 /* idle after finish current memory burst */ |
68 | #define ENET_DMA_CH_CFG_INT_STAT 0x04 /* interrupts control and status */ |
69 | #define ENET_DMA_CH_CFG_INT_MASK 0x08 /* interrupts mask */ |
70 | #define ENET_DMA_CH_CFG_INT_BUFF_DONE 0x00000001 /* buffer done */ |
71 | #define ENET_DMA_CH_CFG_INT_DONE 0x00000002 /* packet xfer complete */ |
72 | #define ENET_DMA_CH_CFG_INT_NO_DESC 0x00000004 /* no valid descriptors */ |
73 | #define ENET_DMA_CH_CFG_INT_RX_ERROR 0x00000008 /* rxdma detect client protocol error */ |
74 | #define ENET_DMA_CH_CFG_MAX_BURST 0x0c /* max burst length permitted */ |
75 | #define ENET_DMA_CH_CFG_MAX_BURST_DESCSIZE_SEL 0x00040000 /* DMA Descriptor Size Selection */ |
76 | #define ENET_DMA_CH_CFG_SIZE 0x10 |
77 | |
78 | #define ENET_DMA_CH_STATE_RAM_BASE_DESC_PTR 0x00 /* descriptor ring start address */ |
79 | #define ENET_DMA_CH_STATE_RAM_STATE_DATA 0x04 /* state/bytes done/ring offset */ |
80 | #define ENET_DMA_CH_STATE_RAM_DESC_LEN_STATUS 0x08 /* buffer descriptor status and len */ |
81 | #define ENET_DMA_CH_STATE_RAM_DESC_BASE_BUFPTR 0x0c /* buffer descrpitor current processing */ |
82 | #define ENET_DMA_CH_STATE_RAM_SIZE 0x10 |
83 | |
84 | #define DMA_CTL_STATUS_APPEND_CRC 0x00000100 |
85 | #define DMA_CTL_STATUS_APPEND_BRCM_TAG 0x00000200 |
86 | #define DMA_CTL_STATUS_PRIO 0x00000C00 /* Prio for Tx */ |
87 | #define DMA_CTL_STATUS_WRAP 0x00001000 /* */ |
88 | #define DMA_CTL_STATUS_SOP 0x00002000 /* first buffer in packet */ |
89 | #define DMA_CTL_STATUS_EOP 0x00004000 /* last buffer in packet */ |
90 | #define DMA_CTL_STATUS_OWN 0x00008000 /* cleared by DMA, set by SW */ |
91 | #define DMA_CTL_LEN_DESC_BUFLENGTH 0x0fff0000 |
92 | #define DMA_CTL_LEN_DESC_BUFLENGTH_SHIFT 16 |
93 | #define DMA_CTL_LEN_DESC_MULTICAST 0x40000000 |
94 | #define DMA_CTL_LEN_DESC_USEFPM 0x80000000 |
95 | |
96 | #endif |
97 | |