1 /* $OpenBSD: dwqereg.h,v 1.5 2023/11/11 16:32:56 stsp Exp $ */ 2 /* 3 * Copyright (c) 2008, 2019 Mark Kettenis <kettenis@openbsd.org> 4 * Copyright (c) 2017, 2022 Patrick Wildt <patrick@blueri.se> 5 * 6 * Permission to use, copy, modify, and distribute this software for any 7 * purpose with or without fee is hereby granted, provided that the above 8 * copyright notice and this permission notice appear in all copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #define GMAC_MAC_CONF 0x0000 20 #define GMAC_MAC_CONF_CST (1 << 21) 21 #define GMAC_MAC_CONF_ACS (1 << 20) 22 #define GMAC_MAC_CONF_BE (1 << 18) 23 #define GMAC_MAC_CONF_JD (1 << 17) 24 #define GMAC_MAC_CONF_JE (1 << 16) 25 #define GMAC_MAC_CONF_PS (1 << 15) 26 #define GMAC_MAC_CONF_FES (1 << 14) 27 #define GMAC_MAC_CONF_DM (1 << 13) 28 #define GMAC_MAC_CONF_DCRS (1 << 9) 29 #define GMAC_MAC_CONF_TE (1 << 1) 30 #define GMAC_MAC_CONF_RE (1 << 0) 31 #define GMAC_MAC_PACKET_FILTER 0x0008 32 #define GMAC_MAC_PACKET_FILTER_HPF (1 << 10) 33 #define GMAC_MAC_PACKET_FILTER_PCF_MASK (3 << 6) 34 #define GMAC_MAC_PACKET_FILTER_PCF_ALL (2 << 6) 35 #define GMAC_MAC_PACKET_FILTER_DBF (1 << 5) 36 #define GMAC_MAC_PACKET_FILTER_PM (1 << 4) 37 #define GMAC_MAC_PACKET_FILTER_HMC (1 << 2) 38 #define GMAC_MAC_PACKET_FILTER_HUC (1 << 1) 39 #define GMAC_MAC_PACKET_FILTER_PR (1 << 0) 40 #define GMAC_MAC_HASH_TAB_REG0 0x0010 41 #define GMAC_MAC_HASH_TAB_REG1 0x0014 42 #define GMAC_INT_MASK 0x003c 43 #define GMAC_INT_MASK_LPIIM (1 << 10) 44 #define GMAC_INT_MASK_PIM (1 << 3) 45 #define GMAC_INT_MASK_RIM (1 << 0) 46 #define GMAC_QX_TX_FLOW_CTRL(x) (0x0070 + (x) * 4) 47 #define GMAC_QX_TX_FLOW_CTRL_PT_SHIFT 16 48 #define GMAC_QX_TX_FLOW_CTRL_TFE (1 << 0) 49 #define GMAC_RX_FLOW_CTRL 0x0090 50 #define GMAC_RX_FLOW_CTRL_RFE (1 << 0) 51 #define GMAC_RXQ_CTRL0 0x00a0 52 #define GMAC_RXQ_CTRL0_QUEUE_CLR(x) (0x3 << ((x) * 2) 53 #define GMAC_RXQ_CTRL0_AVB_QUEUE_EN(x) (1 << ((x) * 2)) 54 #define GMAC_RXQ_CTRL0_DCB_QUEUE_EN(x) (2 << ((x) * 2)) 55 #define GMAC_RXQ_CTRL1 0x00a4 56 #define GMAC_RXQ_CTRL2 0x00a8 57 #define GMAC_RXQ_CTRL3 0x00ac 58 #define GMAC_INT_STATUS 0x00b0 59 #define GMAC_INT_EN 0x00b4 60 #define GMAC_MAC_1US_TIC_CTR 0x00dc 61 #define GMAC_VERSION 0x0110 62 #define GMAC_VERSION_SNPS_MASK 0xff 63 #define GMAC_MAC_HW_FEATURE(x) (0x011c + (x) * 0x4) 64 #define GMAC_MAC_HW_FEATURE1_TXFIFOSIZE(x) (((x) >> 6) & 0x1f) 65 #define GMAC_MAC_HW_FEATURE1_RXFIFOSIZE(x) (((x) >> 0) & 0x1f) 66 #define GMAC_MAC_MDIO_ADDR 0x0200 67 #define GMAC_MAC_MDIO_ADDR_PA_SHIFT 21 68 #define GMAC_MAC_MDIO_ADDR_RDA_SHIFT 16 69 #define GMAC_MAC_MDIO_ADDR_CR_SHIFT 8 70 #define GMAC_MAC_MDIO_ADDR_CR_60_100 0 71 #define GMAC_MAC_MDIO_ADDR_CR_100_150 1 72 #define GMAC_MAC_MDIO_ADDR_CR_20_35 2 73 #define GMAC_MAC_MDIO_ADDR_CR_35_60 3 74 #define GMAC_MAC_MDIO_ADDR_CR_150_250 4 75 #define GMAC_MAC_MDIO_ADDR_CR_250_300 5 76 #define GMAC_MAC_MDIO_ADDR_CR_300_500 6 77 #define GMAC_MAC_MDIO_ADDR_CR_500_800 7 78 #define GMAC_MAC_MDIO_ADDR_SKAP (1 << 4) 79 #define GMAC_MAC_MDIO_ADDR_GOC_READ (3 << 2) 80 #define GMAC_MAC_MDIO_ADDR_GOC_WRITE (1 << 2) 81 #define GMAC_MAC_MDIO_ADDR_C45E (1 << 1) 82 #define GMAC_MAC_MDIO_ADDR_GB (1 << 0) 83 #define GMAC_MAC_MDIO_DATA 0x0204 84 #define GMAC_MAC_ADDR0_HI 0x0300 85 #define GMAC_MAC_ADDR0_LO 0x0304 86 87 #define GMAC_MTL_OPERATION_MODE 0x0c00 88 #define GMAC_MTL_FRPE (1 << 15) 89 #define GMAC_MTL_OPERATION_SCHALG_MASK (0x3 << 5) 90 #define GMAC_MTL_OPERATION_SCHALG_WRR (0x0 << 5) 91 #define GMAC_MTL_OPERATION_SCHALG_WFQ (0x1 << 5) 92 #define GMAC_MTL_OPERATION_SCHALG_DWRR (0x2 << 5) 93 #define GMAC_MTL_OPERATION_SCHALG_SP (0x3 << 5) 94 #define GMAC_MTL_OPERATION_RAA_MASK (0x1 << 2) 95 #define GMAC_MTL_OPERATION_RAA_SP (0x0 << 2) 96 #define GMAC_MTL_OPERATION_RAA_WSP (0x1 << 2) 97 98 #define GMAC_MTL_CHAN_BASE_ADDR(x) (0x0d00 + (x) * 0x40) 99 #define GMAC_MTL_CHAN_TX_OP_MODE(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x0) 100 #define GMAC_MTL_CHAN_TX_OP_MODE_TQS_MASK (0x1ffU << 16) 101 #define GMAC_MTL_CHAN_TX_OP_MODE_TQS_SHIFT 16 102 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_MASK (0x7 << 4) 103 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_SHIFT 4 104 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_32 0 105 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_64 (1 << 4) 106 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_96 (2 << 4) 107 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_128 (3 << 4) 108 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_192 (4 << 4) 109 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_256 (5 << 4) 110 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_384 (6 << 4) 111 #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_512 (7 << 4) 112 #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN_MASK (0x3 << 2) 113 #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN_AV (1 << 2) 114 #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN (2 << 2) 115 #define GMAC_MTL_CHAN_TX_OP_MODE_TSF (1 << 1) 116 #define GMAC_MTL_CHAN_TX_OP_MODE_FTQ (1 << 0) 117 #define GMAC_MTL_CHAN_TX_DEBUG(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x8) 118 #define GMAC_MTL_CHAN_INT_CTRL(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x2c) 119 #define GMAC_MTL_CHAN_RX_OP_MODE(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x30) 120 #define GMAC_MTL_CHAN_RX_OP_MODE_RQS_MASK (0x3ffU << 20) 121 #define GMAC_MTL_CHAN_RX_OP_MODE_RQS_SHIFT 20 122 #define GMAC_MTL_CHAN_RX_OP_MODE_RFD_MASK (0x3fU << 14) 123 #define GMAC_MTL_CHAN_RX_OP_MODE_RFD_SHIFT 14 124 #define GMAC_MTL_CHAN_RX_OP_MODE_RFA_MASK (0x3fU << 8) 125 #define GMAC_MTL_CHAN_RX_OP_MODE_RFA_SHIFT 8 126 #define GMAC_MTL_CHAN_RX_OP_MODE_EHFC (1 << 7) 127 #define GMAC_MTL_CHAN_RX_OP_MODE_RSF (1 << 5) 128 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_MASK (0x3 << 3) 129 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_SHIFT 3 130 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_32 (1 << 3) 131 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_64 (0 << 3) 132 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_96 (2 << 3) 133 #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_128 (3 << 3) 134 #define GMAC_MTL_CHAN_RX_DEBUG(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x38) 135 136 #define GMAC_BUS_MODE 0x1000 137 #define GMAC_BUS_MODE_DCHE (1 << 19) 138 #define GMAC_BUS_MODE_SWR (1 << 0) 139 #define GMAC_SYS_BUS_MODE 0x1004 140 #define GMAC_SYS_BUS_MODE_EN_LPI (1U << 31) 141 #define GMAC_SYS_BUS_MODE_LPI_XIT_FRM (1 << 30) 142 #define GMAC_SYS_BUS_MODE_WR_OSR_LMT_MASK (0xf << 24) 143 #define GMAC_SYS_BUS_MODE_WR_OSR_LMT_SHIFT 24 144 #define GMAC_SYS_BUS_MODE_RD_OSR_LMT_MASK (0xf << 16) 145 #define GMAC_SYS_BUS_MODE_RD_OSR_LMT_SHIFT 16 146 #define GMAC_SYS_BUS_MODE_MB (1 << 14) 147 #define GMAC_SYS_BUS_MODE_AAL (1 << 12) 148 #define GMAC_SYS_BUS_MODE_EAME (1 << 11) 149 #define GMAC_SYS_BUS_MODE_BLEN_256 (1 << 7) 150 #define GMAC_SYS_BUS_MODE_BLEN_128 (1 << 6) 151 #define GMAC_SYS_BUS_MODE_BLEN_64 (1 << 5) 152 #define GMAC_SYS_BUS_MODE_BLEN_32 (1 << 4) 153 #define GMAC_SYS_BUS_MODE_BLEN_16 (1 << 3) 154 #define GMAC_SYS_BUS_MODE_BLEN_8 (1 << 2) 155 #define GMAC_SYS_BUS_MODE_BLEN_4 (1 << 1) 156 #define GMAC_SYS_BUS_MODE_FB (1 << 0) 157 158 #define GMAC_CHAN_BASE_ADDR(x) (0x1100 + (x) * 0x80) 159 #define GMAC_CHAN_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x0) 160 #define GMAC_CHAN_CONTROL_8XPBL (1 << 16) 161 #define GMAC_CHAN_TX_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x4) 162 #define GMAC_CHAN_TX_CONTROL_PBL_MASK (0x3f << 16) 163 #define GMAC_CHAN_TX_CONTROL_PBL_SHIFT 16 164 #define GMAC_CHAN_TX_CONTROL_OSP (1 << 4) 165 #define GMAC_CHAN_TX_CONTROL_ST (1 << 0) 166 #define GMAC_CHAN_RX_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x8) 167 #define GMAC_CHAN_RX_CONTROL_RPBL_MASK (0x3f << 16) 168 #define GMAC_CHAN_RX_CONTROL_RPBL_SHIFT 16 169 #define GMAC_CHAN_RX_CONTROL_SR (1 << 0) 170 #define GMAC_CHAN_TX_BASE_ADDR_HI(x) (GMAC_CHAN_BASE_ADDR(x) + 0x10) 171 #define GMAC_CHAN_TX_BASE_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x14) 172 #define GMAC_CHAN_RX_BASE_ADDR_HI(x) (GMAC_CHAN_BASE_ADDR(x) + 0x18) 173 #define GMAC_CHAN_RX_BASE_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x1c) 174 #define GMAC_CHAN_TX_END_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x20) 175 #define GMAC_CHAN_RX_END_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x28) 176 #define GMAC_CHAN_TX_RING_LEN(x) (GMAC_CHAN_BASE_ADDR(x) + 0x2c) 177 #define GMAC_CHAN_RX_RING_LEN(x) (GMAC_CHAN_BASE_ADDR(x) + 0x30) 178 #define GMAC_CHAN_INTR_ENA(x) (GMAC_CHAN_BASE_ADDR(x) + 0x34) 179 #define GMAC_CHAN_INTR_ENA_NIE (1 << 15) 180 #define GMAC_CHAN_INTR_ENA_AIE (1 << 14) 181 #define GMAC_CHAN_INTR_ENA_CDE (1 << 13) 182 #define GMAC_CHAN_INTR_ENA_FBE (1 << 12) 183 #define GMAC_CHAN_INTR_ENA_ERE (1 << 11) 184 #define GMAC_CHAN_INTR_ENA_ETE (1 << 10) 185 #define GMAC_CHAN_INTR_ENA_RWE (1 << 9) 186 #define GMAC_CHAN_INTR_ENA_RSE (1 << 8) 187 #define GMAC_CHAN_INTR_ENA_RBUE (1 << 7) 188 #define GMAC_CHAN_INTR_ENA_RIE (1 << 6) 189 #define GMAC_CHAN_INTR_ENA_TBUE (1 << 2) 190 #define GMAC_CHAN_INTR_ENA_TSE (1 << 1) 191 #define GMAC_CHAN_INTR_ENA_TIE (1 << 0) 192 #define GMAC_CHAN_RX_WATCHDOG(x) (GMAC_CHAN_CONTROL(x) + 0x38) 193 #define GMAC_CHAN_SLOT_CTRL_STATUS(x) (GMAC_CHAN_CONTROL(x) + 0x3c) 194 #define GMAC_CHAN_CUR_TX_DESC(x) (GMAC_CHAN_CONTROL(x) + 0x44) 195 #define GMAC_CHAN_CUR_RX_DESC(x) (GMAC_CHAN_CONTROL(x) + 0x4c) 196 #define GMAC_CHAN_CUR_TX_BUF_ADDR(x) (GMAC_CHAN_CONTROL(x) + 0x54) 197 #define GMAC_CHAN_CUR_RX_BUF_ADDR(x) (GMAC_CHAN_CONTROL(x) + 0x5c) 198 #define GMAC_CHAN_STATUS(x) (GMAC_CHAN_CONTROL(x) + 0x60) 199 #define GMAC_CHAN_STATUS_REB_MASK 0x7 200 #define GMAC_CHAN_STATUS_REB_SHIFT 19 201 #define GMAC_CHAN_STATUS_TEB_MASK 0x7 202 #define GMAC_CHAN_STATUS_TEB_SHIFT 16 203 #define GMAC_CHAN_STATUS_NIS (1 << 15) 204 #define GMAC_CHAN_STATUS_AIS (1 << 14) 205 #define GMAC_CHAN_STATUS_CDE (1 << 13) 206 #define GMAC_CHAN_STATUS_FBE (1 << 12) 207 #define GMAC_CHAN_STATUS_ERI (1 << 11) 208 #define GMAC_CHAN_STATUS_ETI (1 << 10) 209 #define GMAC_CHAN_STATUS_RWT (1 << 9) 210 #define GMAC_CHAN_STATUS_RPS (1 << 8) 211 #define GMAC_CHAN_STATUS_RBU (1 << 7) 212 #define GMAC_CHAN_STATUS_RI (1 << 6) 213 #define GMAC_CHAN_STATUS_TBU (1 << 2) 214 #define GMAC_CHAN_STATUS_TPS (1 << 1) 215 #define GMAC_CHAN_STATUS_TI (1 << 0) 216 217 /* 218 * DWQE descriptors. 219 */ 220 221 struct dwqe_desc { 222 uint32_t sd_tdes0; 223 uint32_t sd_tdes1; 224 uint32_t sd_tdes2; 225 uint32_t sd_tdes3; 226 }; 227 228 /* Tx bits */ 229 #define TDES2_IC (1U << 31) 230 #define TDES3_ES (1 << 15) 231 #define TDES3_DE (1 << 23) 232 #define TDES3_LS (1 << 28) 233 #define TDES3_FS (1 << 29) 234 #define TDES3_OWN (1U << 31) 235 236 /* Rx bits */ 237 #define RDES3_ES (1 << 15) 238 #define RDES3_DE (1 << 19) 239 #define RDES3_RE (1 << 20) 240 #define RDES3_OE (1 << 21) 241 #define RDES3_RWT (1 << 22) 242 #define RDES3_CE (1 << 24) 243 #define RDES3_BUF1V (1 << 24) 244 #define RDES3_IC (1 << 30) 245 #define RDES3_OWN (1U << 31) 246 #define RDES3_LENGTH (0x7fff << 0) 247