1490cb412SJustin Chen /* SPDX-License-Identifier: GPL-2.0 */ 2490cb412SJustin Chen #ifndef __BCMASP_INTF_DEFS_H 3490cb412SJustin Chen #define __BCMASP_INTF_DEFS_H 4490cb412SJustin Chen 5490cb412SJustin Chen #define UMC_OFFSET(intf) \ 6490cb412SJustin Chen ((((intf)->port) * 0x800) + 0xc000) 7490cb412SJustin Chen #define UMC_CMD 0x008 8490cb412SJustin Chen #define UMC_CMD_TX_EN BIT(0) 9490cb412SJustin Chen #define UMC_CMD_RX_EN BIT(1) 10490cb412SJustin Chen #define UMC_CMD_SPEED_SHIFT 0x2 11490cb412SJustin Chen #define UMC_CMD_SPEED_MASK 0x3 12490cb412SJustin Chen #define UMC_CMD_SPEED_10 0x0 13490cb412SJustin Chen #define UMC_CMD_SPEED_100 0x1 14490cb412SJustin Chen #define UMC_CMD_SPEED_1000 0x2 15490cb412SJustin Chen #define UMC_CMD_SPEED_2500 0x3 16490cb412SJustin Chen #define UMC_CMD_PROMISC BIT(4) 17490cb412SJustin Chen #define UMC_CMD_PAD_EN BIT(5) 18490cb412SJustin Chen #define UMC_CMD_CRC_FWD BIT(6) 19490cb412SJustin Chen #define UMC_CMD_PAUSE_FWD BIT(7) 20490cb412SJustin Chen #define UMC_CMD_RX_PAUSE_IGNORE BIT(8) 21490cb412SJustin Chen #define UMC_CMD_TX_ADDR_INS BIT(9) 22490cb412SJustin Chen #define UMC_CMD_HD_EN BIT(10) 23490cb412SJustin Chen #define UMC_CMD_SW_RESET BIT(13) 24490cb412SJustin Chen #define UMC_CMD_LCL_LOOP_EN BIT(15) 25490cb412SJustin Chen #define UMC_CMD_AUTO_CONFIG BIT(22) 26490cb412SJustin Chen #define UMC_CMD_CNTL_FRM_EN BIT(23) 27490cb412SJustin Chen #define UMC_CMD_NO_LEN_CHK BIT(24) 28490cb412SJustin Chen #define UMC_CMD_RMT_LOOP_EN BIT(25) 29490cb412SJustin Chen #define UMC_CMD_PRBL_EN BIT(27) 30490cb412SJustin Chen #define UMC_CMD_TX_PAUSE_IGNORE BIT(28) 31490cb412SJustin Chen #define UMC_CMD_TX_RX_EN BIT(29) 32490cb412SJustin Chen #define UMC_CMD_RUNT_FILTER_DIS BIT(30) 33490cb412SJustin Chen #define UMC_MAC0 0x0c 34490cb412SJustin Chen #define UMC_MAC1 0x10 35490cb412SJustin Chen #define UMC_FRM_LEN 0x14 36490cb412SJustin Chen #define UMC_EEE_CTRL 0x64 37490cb412SJustin Chen #define EN_LPI_RX_PAUSE BIT(0) 38490cb412SJustin Chen #define EN_LPI_TX_PFC BIT(1) 39490cb412SJustin Chen #define EN_LPI_TX_PAUSE BIT(2) 40490cb412SJustin Chen #define EEE_EN BIT(3) 41490cb412SJustin Chen #define RX_FIFO_CHECK BIT(4) 42490cb412SJustin Chen #define EEE_TX_CLK_DIS BIT(5) 43490cb412SJustin Chen #define DIS_EEE_10M BIT(6) 44490cb412SJustin Chen #define LP_IDLE_PREDICTION_MODE BIT(7) 45490cb412SJustin Chen #define UMC_EEE_LPI_TIMER 0x68 46490cb412SJustin Chen #define UMC_PAUSE_CNTRL 0x330 47490cb412SJustin Chen #define UMC_TX_FLUSH 0x334 48*64931534SJustin Chen #define UMC_GR64 0x400 49*64931534SJustin Chen #define UMC_GR127 0x404 50*64931534SJustin Chen #define UMC_GR255 0x408 51*64931534SJustin Chen #define UMC_GR511 0x40c 52*64931534SJustin Chen #define UMC_GR1023 0x410 53*64931534SJustin Chen #define UMC_GR1518 0x414 54*64931534SJustin Chen #define UMC_GRMGV 0x418 55*64931534SJustin Chen #define UMC_GR2047 0x41c 56*64931534SJustin Chen #define UMC_GR4095 0x420 57*64931534SJustin Chen #define UMC_GR9216 0x424 58*64931534SJustin Chen #define UMC_GRPKT 0x428 59*64931534SJustin Chen #define UMC_GRBYT 0x42c 60*64931534SJustin Chen #define UMC_GRMCA 0x430 61*64931534SJustin Chen #define UMC_GRBCA 0x434 62*64931534SJustin Chen #define UMC_GRFCS 0x438 63*64931534SJustin Chen #define UMC_GRXCF 0x43c 64*64931534SJustin Chen #define UMC_GRXPF 0x440 65*64931534SJustin Chen #define UMC_GRXUO 0x444 66*64931534SJustin Chen #define UMC_GRALN 0x448 67*64931534SJustin Chen #define UMC_GRFLR 0x44c 68*64931534SJustin Chen #define UMC_GRCDE 0x450 69*64931534SJustin Chen #define UMC_GRFCR 0x454 70*64931534SJustin Chen #define UMC_GROVR 0x458 71*64931534SJustin Chen #define UMC_GRJBR 0x45c 72*64931534SJustin Chen #define UMC_GRMTUE 0x460 73*64931534SJustin Chen #define UMC_GRPOK 0x464 74*64931534SJustin Chen #define UMC_GRUC 0x468 75*64931534SJustin Chen #define UMC_GRPPP 0x46c 76*64931534SJustin Chen #define UMC_GRMCRC 0x470 77*64931534SJustin Chen #define UMC_TR64 0x480 78*64931534SJustin Chen #define UMC_TR127 0x484 79*64931534SJustin Chen #define UMC_TR255 0x488 80*64931534SJustin Chen #define UMC_TR511 0x48c 81*64931534SJustin Chen #define UMC_TR1023 0x490 82*64931534SJustin Chen #define UMC_TR1518 0x494 83*64931534SJustin Chen #define UMC_TRMGV 0x498 84*64931534SJustin Chen #define UMC_TR2047 0x49c 85*64931534SJustin Chen #define UMC_TR4095 0x4a0 86*64931534SJustin Chen #define UMC_TR9216 0x4a4 87*64931534SJustin Chen #define UMC_GTPKT 0x4a8 88*64931534SJustin Chen #define UMC_GTMCA 0x4ac 89*64931534SJustin Chen #define UMC_GTBCA 0x4b0 90*64931534SJustin Chen #define UMC_GTXPF 0x4b4 91*64931534SJustin Chen #define UMC_GTXCF 0x4b8 92*64931534SJustin Chen #define UMC_GTFCS 0x4bc 93*64931534SJustin Chen #define UMC_GTOVR 0x4c0 94*64931534SJustin Chen #define UMC_GTDRF 0x4c4 95*64931534SJustin Chen #define UMC_GTEDF 0x4c8 96*64931534SJustin Chen #define UMC_GTSCL 0x4cc 97*64931534SJustin Chen #define UMC_GTMCL 0x4d0 98*64931534SJustin Chen #define UMC_GTLCL 0x4d4 99*64931534SJustin Chen #define UMC_GTXCL 0x4d8 100*64931534SJustin Chen #define UMC_GTFRG 0x4dc 101*64931534SJustin Chen #define UMC_GTNCL 0x4e0 102*64931534SJustin Chen #define UMC_GTJBR 0x4e4 103*64931534SJustin Chen #define UMC_GTBYT 0x4e8 104*64931534SJustin Chen #define UMC_GTPOK 0x4ec 105*64931534SJustin Chen #define UMC_GTUC 0x4f0 106*64931534SJustin Chen #define UMC_RRPKT 0x500 107*64931534SJustin Chen #define UMC_RRUND 0x504 108*64931534SJustin Chen #define UMC_RRFRG 0x508 109*64931534SJustin Chen #define UMC_RRBYT 0x50c 110490cb412SJustin Chen #define UMC_MIB_CNTRL 0x580 111490cb412SJustin Chen #define UMC_MIB_CNTRL_RX_CNT_RST BIT(0) 112490cb412SJustin Chen #define UMC_MIB_CNTRL_RUNT_CNT_RST BIT(1) 113490cb412SJustin Chen #define UMC_MIB_CNTRL_TX_CNT_RST BIT(2) 114490cb412SJustin Chen #define UMC_RX_MAX_PKT_SZ 0x608 115490cb412SJustin Chen #define UMC_MPD_CTRL 0x620 116490cb412SJustin Chen #define UMC_MPD_CTRL_MPD_EN BIT(0) 117490cb412SJustin Chen #define UMC_MPD_CTRL_PSW_EN BIT(27) 118490cb412SJustin Chen #define UMC_PSW_MS 0x624 119490cb412SJustin Chen #define UMC_PSW_LS 0x628 120490cb412SJustin Chen 121490cb412SJustin Chen #define UMAC2FB_OFFSET_2_1 0x9f044 122490cb412SJustin Chen #define UMAC2FB_OFFSET 0x9f03c 123490cb412SJustin Chen #define UMAC2FB_CFG 0x0 124490cb412SJustin Chen #define UMAC2FB_CFG_OPUT_EN BIT(0) 125490cb412SJustin Chen #define UMAC2FB_CFG_VLAN_EN BIT(1) 126490cb412SJustin Chen #define UMAC2FB_CFG_SNAP_EN BIT(2) 127490cb412SJustin Chen #define UMAC2FB_CFG_BCM_TG_EN BIT(3) 128490cb412SJustin Chen #define UMAC2FB_CFG_IPUT_EN BIT(4) 129490cb412SJustin Chen #define UMAC2FB_CFG_CHID_SHIFT 8 130490cb412SJustin Chen #define UMAC2FB_CFG_OK_SEND_SHIFT 24 131490cb412SJustin Chen #define UMAC2FB_CFG_DEFAULT_EN \ 132490cb412SJustin Chen (UMAC2FB_CFG_OPUT_EN | UMAC2FB_CFG_VLAN_EN \ 133490cb412SJustin Chen | UMAC2FB_CFG_SNAP_EN | UMAC2FB_CFG_IPUT_EN) 134490cb412SJustin Chen 135490cb412SJustin Chen #define RGMII_OFFSET(intf) \ 136490cb412SJustin Chen ((((intf)->port) * 0x100) + 0xd000) 137490cb412SJustin Chen #define RGMII_EPHY_CNTRL 0x00 138490cb412SJustin Chen #define RGMII_EPHY_CFG_IDDQ_BIAS BIT(0) 139490cb412SJustin Chen #define RGMII_EPHY_CFG_EXT_PWRDOWN BIT(1) 140490cb412SJustin Chen #define RGMII_EPHY_CFG_FORCE_DLL_EN BIT(2) 141490cb412SJustin Chen #define RGMII_EPHY_CFG_IDDQ_GLOBAL BIT(3) 142490cb412SJustin Chen #define RGMII_EPHY_CK25_DIS BIT(4) 143490cb412SJustin Chen #define RGMII_EPHY_RESET BIT(7) 144490cb412SJustin Chen #define RGMII_OOB_CNTRL 0x0c 145490cb412SJustin Chen #define RGMII_LINK BIT(4) 146490cb412SJustin Chen #define RGMII_OOB_DIS BIT(5) 147490cb412SJustin Chen #define RGMII_MODE_EN BIT(6) 148490cb412SJustin Chen #define RGMII_ID_MODE_DIS BIT(16) 149490cb412SJustin Chen 150490cb412SJustin Chen #define RGMII_PORT_CNTRL 0x60 151490cb412SJustin Chen #define RGMII_PORT_MODE_EPHY 0 152490cb412SJustin Chen #define RGMII_PORT_MODE_GPHY 1 153490cb412SJustin Chen #define RGMII_PORT_MODE_EXT_EPHY 2 154490cb412SJustin Chen #define RGMII_PORT_MODE_EXT_GPHY 3 155490cb412SJustin Chen #define RGMII_PORT_MODE_EXT_RVMII 4 156490cb412SJustin Chen #define RGMII_PORT_MODE_MASK GENMASK(2, 0) 157490cb412SJustin Chen 158490cb412SJustin Chen #define RGMII_SYS_LED_CNTRL 0x74 159490cb412SJustin Chen #define RGMII_SYS_LED_CNTRL_LINK_OVRD BIT(15) 160490cb412SJustin Chen 161490cb412SJustin Chen #define TX_SPB_DMA_OFFSET(intf) \ 162490cb412SJustin Chen ((((intf)->channel) * 0x30) + 0x48180) 163490cb412SJustin Chen #define TX_SPB_DMA_READ 0x00 164490cb412SJustin Chen #define TX_SPB_DMA_BASE 0x08 165490cb412SJustin Chen #define TX_SPB_DMA_END 0x10 166490cb412SJustin Chen #define TX_SPB_DMA_VALID 0x18 167490cb412SJustin Chen #define TX_SPB_DMA_FIFO_CTRL 0x20 168490cb412SJustin Chen #define TX_SPB_DMA_FIFO_FLUSH BIT(0) 169490cb412SJustin Chen #define TX_SPB_DMA_FIFO_STATUS 0x24 170490cb412SJustin Chen 171490cb412SJustin Chen #define TX_SPB_CTRL_OFFSET(intf) \ 172490cb412SJustin Chen ((((intf)->channel) * 0x68) + 0x49340) 173490cb412SJustin Chen #define TX_SPB_CTRL_ENABLE 0x0 174490cb412SJustin Chen #define TX_SPB_CTRL_ENABLE_EN BIT(0) 175490cb412SJustin Chen #define TX_SPB_CTRL_XF_CTRL2 0x20 176490cb412SJustin Chen #define TX_SPB_CTRL_XF_BID_SHIFT 16 177490cb412SJustin Chen 178490cb412SJustin Chen #define TX_SPB_TOP_OFFSET(intf) \ 179490cb412SJustin Chen ((((intf)->channel) * 0x1c) + 0x4a0e0) 180490cb412SJustin Chen #define TX_SPB_TOP_BLKOUT 0x0 181490cb412SJustin Chen #define TX_SPB_TOP_SPRE_BW_CTRL 0x4 182490cb412SJustin Chen 183490cb412SJustin Chen #define TX_EPKT_C_OFFSET(intf) \ 184490cb412SJustin Chen ((((intf)->channel) * 0x120) + 0x40900) 185490cb412SJustin Chen #define TX_EPKT_C_CFG_MISC 0x0 186490cb412SJustin Chen #define TX_EPKT_C_CFG_MISC_EN BIT(0) 187490cb412SJustin Chen #define TX_EPKT_C_CFG_MISC_PT BIT(1) 188490cb412SJustin Chen #define TX_EPKT_C_CFG_MISC_PS_SHIFT 14 189490cb412SJustin Chen #define TX_EPKT_C_CFG_MISC_FD_SHIFT 20 190490cb412SJustin Chen 191490cb412SJustin Chen #define TX_PAUSE_CTRL_OFFSET(intf) \ 192490cb412SJustin Chen ((((intf)->channel * 0xc) + 0x49a20)) 193490cb412SJustin Chen #define TX_PAUSE_MAP_VECTOR 0x8 194490cb412SJustin Chen 195490cb412SJustin Chen #define RX_EDPKT_DMA_OFFSET(intf) \ 196490cb412SJustin Chen ((((intf)->channel) * 0x38) + 0x9ca00) 197490cb412SJustin Chen #define RX_EDPKT_DMA_WRITE 0x00 198490cb412SJustin Chen #define RX_EDPKT_DMA_READ 0x08 199490cb412SJustin Chen #define RX_EDPKT_DMA_BASE 0x10 200490cb412SJustin Chen #define RX_EDPKT_DMA_END 0x18 201490cb412SJustin Chen #define RX_EDPKT_DMA_VALID 0x20 202490cb412SJustin Chen #define RX_EDPKT_DMA_FULLNESS 0x28 203490cb412SJustin Chen #define RX_EDPKT_DMA_MIN_THRES 0x2c 204490cb412SJustin Chen #define RX_EDPKT_DMA_CH_XONOFF 0x30 205490cb412SJustin Chen 206490cb412SJustin Chen #define RX_EDPKT_CFG_OFFSET(intf) \ 207490cb412SJustin Chen ((((intf)->channel) * 0x70) + 0x9c600) 208490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0 0x0 209490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_DBUF_SHIFT 9 210490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_RBUF 0x0 211490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_RBUF_4K 0x1 212490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_BUF_4K 0x2 213490cb412SJustin Chen /* EFRM STUFF, 0 = no byte stuff, 1 = two byte stuff */ 214490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_EFRM_STUF BIT(11) 215490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_BALN_SHIFT 12 216490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_NO_ALN 0 217490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_4_ALN 2 218490cb412SJustin Chen #define RX_EDPKT_CFG_CFG0_64_ALN 6 219490cb412SJustin Chen #define RX_EDPKT_RING_BUFFER_WRITE 0x38 220490cb412SJustin Chen #define RX_EDPKT_RING_BUFFER_READ 0x40 221490cb412SJustin Chen #define RX_EDPKT_RING_BUFFER_BASE 0x48 222490cb412SJustin Chen #define RX_EDPKT_RING_BUFFER_END 0x50 223490cb412SJustin Chen #define RX_EDPKT_RING_BUFFER_VALID 0x58 224490cb412SJustin Chen #define RX_EDPKT_CFG_ENABLE 0x6c 225490cb412SJustin Chen #define RX_EDPKT_CFG_ENABLE_EN BIT(0) 226490cb412SJustin Chen 227490cb412SJustin Chen #define RX_SPB_DMA_OFFSET(intf) \ 228490cb412SJustin Chen ((((intf)->channel) * 0x30) + 0xa0000) 229490cb412SJustin Chen #define RX_SPB_DMA_READ 0x00 230490cb412SJustin Chen #define RX_SPB_DMA_BASE 0x08 231490cb412SJustin Chen #define RX_SPB_DMA_END 0x10 232490cb412SJustin Chen #define RX_SPB_DMA_VALID 0x18 233490cb412SJustin Chen #define RX_SPB_DMA_FIFO_CTRL 0x20 234490cb412SJustin Chen #define RX_SPB_DMA_FIFO_FLUSH BIT(0) 235490cb412SJustin Chen #define RX_SPB_DMA_FIFO_STATUS 0x24 236490cb412SJustin Chen 237490cb412SJustin Chen #define RX_SPB_CTRL_OFFSET(intf) \ 238490cb412SJustin Chen ((((intf)->channel - 6) * 0x68) + 0xa1000) 239490cb412SJustin Chen #define RX_SPB_CTRL_ENABLE 0x00 240490cb412SJustin Chen #define RX_SPB_CTRL_ENABLE_EN BIT(0) 241490cb412SJustin Chen 242490cb412SJustin Chen #define RX_PAUSE_CTRL_OFFSET(intf) \ 243490cb412SJustin Chen ((((intf)->channel - 6) * 0x4) + 0xa1138) 244490cb412SJustin Chen #define RX_PAUSE_MAP_VECTOR 0x00 245490cb412SJustin Chen 246490cb412SJustin Chen #define RX_SPB_TOP_CTRL_OFFSET(intf) \ 247490cb412SJustin Chen ((((intf)->channel - 6) * 0x14) + 0xa2000) 248490cb412SJustin Chen #define RX_SPB_TOP_BLKOUT 0x00 249490cb412SJustin Chen 250490cb412SJustin Chen #define NUM_4K_BUFFERS 32 251490cb412SJustin Chen #define RING_BUFFER_SIZE (PAGE_SIZE * NUM_4K_BUFFERS) 252490cb412SJustin Chen 253490cb412SJustin Chen #define DESC_RING_COUNT (64 * NUM_4K_BUFFERS) 254490cb412SJustin Chen #define DESC_SIZE 16 255490cb412SJustin Chen #define DESC_RING_SIZE (DESC_RING_COUNT * DESC_SIZE) 256490cb412SJustin Chen 257490cb412SJustin Chen #endif 258