1*84a278ffSstsp /* $OpenBSD: dwqereg.h,v 1.10 2024/06/05 10:19:55 stsp Exp $ */ 2305ac5f9Spatrick /* 3305ac5f9Spatrick * Copyright (c) 2008, 2019 Mark Kettenis <kettenis@openbsd.org> 4305ac5f9Spatrick * Copyright (c) 2017, 2022 Patrick Wildt <patrick@blueri.se> 5305ac5f9Spatrick * 6305ac5f9Spatrick * Permission to use, copy, modify, and distribute this software for any 7305ac5f9Spatrick * purpose with or without fee is hereby granted, provided that the above 8305ac5f9Spatrick * copyright notice and this permission notice appear in all copies. 9305ac5f9Spatrick * 10305ac5f9Spatrick * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11305ac5f9Spatrick * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12305ac5f9Spatrick * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13305ac5f9Spatrick * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14305ac5f9Spatrick * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15305ac5f9Spatrick * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16305ac5f9Spatrick * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17305ac5f9Spatrick */ 18305ac5f9Spatrick 19305ac5f9Spatrick #define GMAC_MAC_CONF 0x0000 20a72369d8Sstsp #define GMAC_MAC_CONF_IPC (1 << 27) 21305ac5f9Spatrick #define GMAC_MAC_CONF_CST (1 << 21) 22305ac5f9Spatrick #define GMAC_MAC_CONF_ACS (1 << 20) 23305ac5f9Spatrick #define GMAC_MAC_CONF_BE (1 << 18) 24305ac5f9Spatrick #define GMAC_MAC_CONF_JD (1 << 17) 25305ac5f9Spatrick #define GMAC_MAC_CONF_JE (1 << 16) 26305ac5f9Spatrick #define GMAC_MAC_CONF_PS (1 << 15) 27305ac5f9Spatrick #define GMAC_MAC_CONF_FES (1 << 14) 28305ac5f9Spatrick #define GMAC_MAC_CONF_DM (1 << 13) 29305ac5f9Spatrick #define GMAC_MAC_CONF_DCRS (1 << 9) 30305ac5f9Spatrick #define GMAC_MAC_CONF_TE (1 << 1) 31305ac5f9Spatrick #define GMAC_MAC_CONF_RE (1 << 0) 32305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER 0x0008 33305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_HPF (1 << 10) 34305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_PCF_MASK (3 << 6) 35305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_PCF_ALL (2 << 6) 36305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_DBF (1 << 5) 37305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_PM (1 << 4) 38305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_HMC (1 << 2) 39305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_HUC (1 << 1) 40305ac5f9Spatrick #define GMAC_MAC_PACKET_FILTER_PR (1 << 0) 41305ac5f9Spatrick #define GMAC_MAC_HASH_TAB_REG0 0x0010 42305ac5f9Spatrick #define GMAC_MAC_HASH_TAB_REG1 0x0014 43305ac5f9Spatrick #define GMAC_INT_MASK 0x003c 44305ac5f9Spatrick #define GMAC_INT_MASK_LPIIM (1 << 10) 45305ac5f9Spatrick #define GMAC_INT_MASK_PIM (1 << 3) 46305ac5f9Spatrick #define GMAC_INT_MASK_RIM (1 << 0) 47*84a278ffSstsp #define GMAC_VLAN_TAG_CTRL 0x0050 48*84a278ffSstsp #define GMAC_VLAN_TAG_CTRL_EVLRXS (1 << 24) 49*84a278ffSstsp #define GMAC_VLAN_TAG_CTRL_STRIP_ALWAYS ((1 << 21) | (1 << 22)) 50*84a278ffSstsp #define GMAC_VLAN_TAG_DATA 0x0054 51*84a278ffSstsp #define GMAC_VLAN_TAG_INCL 0x0060 52*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_VLTI (1 << 20) 53*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_CSVL (1 << 19) 54*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_DELETE 0x10000 55*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_INSERT 0x20000 56*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_REPLACE 0x30000 57*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_VLT 0x0ffff 58*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_RDWR (1U << 30) 59*84a278ffSstsp #define GMAC_VLAN_TAG_INCL_BUSY (1U << 31) 60305ac5f9Spatrick #define GMAC_QX_TX_FLOW_CTRL(x) (0x0070 + (x) * 4) 61305ac5f9Spatrick #define GMAC_QX_TX_FLOW_CTRL_PT_SHIFT 16 62305ac5f9Spatrick #define GMAC_QX_TX_FLOW_CTRL_TFE (1 << 0) 63305ac5f9Spatrick #define GMAC_RX_FLOW_CTRL 0x0090 64305ac5f9Spatrick #define GMAC_RX_FLOW_CTRL_RFE (1 << 0) 65305ac5f9Spatrick #define GMAC_RXQ_CTRL0 0x00a0 66305ac5f9Spatrick #define GMAC_RXQ_CTRL0_QUEUE_CLR(x) (0x3 << ((x) * 2) 67305ac5f9Spatrick #define GMAC_RXQ_CTRL0_AVB_QUEUE_EN(x) (1 << ((x) * 2)) 68305ac5f9Spatrick #define GMAC_RXQ_CTRL0_DCB_QUEUE_EN(x) (2 << ((x) * 2)) 69305ac5f9Spatrick #define GMAC_RXQ_CTRL1 0x00a4 70305ac5f9Spatrick #define GMAC_RXQ_CTRL2 0x00a8 71305ac5f9Spatrick #define GMAC_RXQ_CTRL3 0x00ac 72305ac5f9Spatrick #define GMAC_INT_STATUS 0x00b0 73305ac5f9Spatrick #define GMAC_INT_EN 0x00b4 74305ac5f9Spatrick #define GMAC_MAC_1US_TIC_CTR 0x00dc 75b6eb1329Skettenis #define GMAC_VERSION 0x0110 76b6eb1329Skettenis #define GMAC_VERSION_SNPS_MASK 0xff 77305ac5f9Spatrick #define GMAC_MAC_HW_FEATURE(x) (0x011c + (x) * 0x4) 78a72369d8Sstsp #define GMAC_MAC_HW_FEATURE0_TXCOESEL (1 << 14) 79a72369d8Sstsp #define GMAC_MAC_HW_FEATURE0_RXCOESEL (1 << 16) 80*84a278ffSstsp #define GMAC_MAC_HW_FEATURE0_SAVLANINS (1 << 27) 81305ac5f9Spatrick #define GMAC_MAC_HW_FEATURE1_TXFIFOSIZE(x) (((x) >> 6) & 0x1f) 821066eb27Sstsp #define GMAC_MAC_HW_FEATURE1_RXFIFOSIZE(x) (((x) >> 0) & 0x1f) 83305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR 0x0200 84305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_PA_SHIFT 21 85305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_RDA_SHIFT 16 86305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_SHIFT 8 87305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_60_100 0 88305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_100_150 1 89305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_20_35 2 90305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_35_60 3 91305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_150_250 4 92305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_250_300 5 93305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_300_500 6 94305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_CR_500_800 7 95305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_SKAP (1 << 4) 96305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_GOC_READ (3 << 2) 97305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_GOC_WRITE (1 << 2) 98305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_C45E (1 << 1) 99305ac5f9Spatrick #define GMAC_MAC_MDIO_ADDR_GB (1 << 0) 100305ac5f9Spatrick #define GMAC_MAC_MDIO_DATA 0x0204 101bc63a4e9Skettenis #define GMAC_MAC_ADDR0_HI 0x0300 102bc63a4e9Skettenis #define GMAC_MAC_ADDR0_LO 0x0304 10364bdd17fSjmatthew #define GMAC_MMC_RX_INT_MASK 0x070c 10464bdd17fSjmatthew #define GMAC_MMC_TX_INT_MASK 0x0710 105305ac5f9Spatrick 106305ac5f9Spatrick #define GMAC_MTL_OPERATION_MODE 0x0c00 107305ac5f9Spatrick #define GMAC_MTL_FRPE (1 << 15) 108305ac5f9Spatrick #define GMAC_MTL_OPERATION_SCHALG_MASK (0x3 << 5) 109305ac5f9Spatrick #define GMAC_MTL_OPERATION_SCHALG_WRR (0x0 << 5) 110305ac5f9Spatrick #define GMAC_MTL_OPERATION_SCHALG_WFQ (0x1 << 5) 111305ac5f9Spatrick #define GMAC_MTL_OPERATION_SCHALG_DWRR (0x2 << 5) 112305ac5f9Spatrick #define GMAC_MTL_OPERATION_SCHALG_SP (0x3 << 5) 113305ac5f9Spatrick #define GMAC_MTL_OPERATION_RAA_MASK (0x1 << 2) 114305ac5f9Spatrick #define GMAC_MTL_OPERATION_RAA_SP (0x0 << 2) 115305ac5f9Spatrick #define GMAC_MTL_OPERATION_RAA_WSP (0x1 << 2) 116305ac5f9Spatrick 117305ac5f9Spatrick #define GMAC_MTL_CHAN_BASE_ADDR(x) (0x0d00 + (x) * 0x40) 118305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x0) 119305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TQS_MASK (0x1ffU << 16) 120305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TQS_SHIFT 16 121305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_MASK (0x7 << 4) 122305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_SHIFT 4 123305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_32 0 124305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_64 (1 << 4) 125305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_96 (2 << 4) 126305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_128 (3 << 4) 127305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_192 (4 << 4) 128305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_256 (5 << 4) 129305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_384 (6 << 4) 130305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TTC_512 (7 << 4) 131305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN_MASK (0x3 << 2) 132305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN_AV (1 << 2) 133305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TXQEN (2 << 2) 134305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_TSF (1 << 1) 135305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_OP_MODE_FTQ (1 << 0) 136305ac5f9Spatrick #define GMAC_MTL_CHAN_TX_DEBUG(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x8) 137305ac5f9Spatrick #define GMAC_MTL_CHAN_INT_CTRL(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x2c) 138305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x30) 139305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RQS_MASK (0x3ffU << 20) 140305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RQS_SHIFT 20 141305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RFD_MASK (0x3fU << 14) 142305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RFD_SHIFT 14 143305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RFA_MASK (0x3fU << 8) 144305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RFA_SHIFT 8 145305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_EHFC (1 << 7) 146305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RSF (1 << 5) 147305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_MASK (0x3 << 3) 148305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_SHIFT 3 149305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_32 (1 << 3) 150305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_64 (0 << 3) 151305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_96 (2 << 3) 152305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_OP_MODE_RTC_128 (3 << 3) 153305ac5f9Spatrick #define GMAC_MTL_CHAN_RX_DEBUG(x) (GMAC_MTL_CHAN_BASE_ADDR(x) + 0x38) 154305ac5f9Spatrick 155305ac5f9Spatrick #define GMAC_BUS_MODE 0x1000 156305ac5f9Spatrick #define GMAC_BUS_MODE_DCHE (1 << 19) 157305ac5f9Spatrick #define GMAC_BUS_MODE_SWR (1 << 0) 158305ac5f9Spatrick #define GMAC_SYS_BUS_MODE 0x1004 159305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_EN_LPI (1U << 31) 160305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_LPI_XIT_FRM (1 << 30) 161305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_WR_OSR_LMT_MASK (0xf << 24) 162305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_WR_OSR_LMT_SHIFT 24 163305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_RD_OSR_LMT_MASK (0xf << 16) 164305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_RD_OSR_LMT_SHIFT 16 165305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_MB (1 << 14) 166305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_AAL (1 << 12) 167305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_EAME (1 << 11) 168305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_256 (1 << 7) 169305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_128 (1 << 6) 170305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_64 (1 << 5) 171305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_32 (1 << 4) 172305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_16 (1 << 3) 173305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_8 (1 << 2) 174305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_BLEN_4 (1 << 1) 175305ac5f9Spatrick #define GMAC_SYS_BUS_MODE_FB (1 << 0) 176305ac5f9Spatrick 177305ac5f9Spatrick #define GMAC_CHAN_BASE_ADDR(x) (0x1100 + (x) * 0x80) 178305ac5f9Spatrick #define GMAC_CHAN_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x0) 179305ac5f9Spatrick #define GMAC_CHAN_CONTROL_8XPBL (1 << 16) 180305ac5f9Spatrick #define GMAC_CHAN_TX_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x4) 1812fc5c81eSstsp #define GMAC_CHAN_TX_CONTROL_PBL_MASK (0x3f << 16) 1822fc5c81eSstsp #define GMAC_CHAN_TX_CONTROL_PBL_SHIFT 16 183305ac5f9Spatrick #define GMAC_CHAN_TX_CONTROL_OSP (1 << 4) 184305ac5f9Spatrick #define GMAC_CHAN_TX_CONTROL_ST (1 << 0) 185305ac5f9Spatrick #define GMAC_CHAN_RX_CONTROL(x) (GMAC_CHAN_BASE_ADDR(x) + 0x8) 1862fc5c81eSstsp #define GMAC_CHAN_RX_CONTROL_RPBL_MASK (0x3f << 16) 1872fc5c81eSstsp #define GMAC_CHAN_RX_CONTROL_RPBL_SHIFT 16 188305ac5f9Spatrick #define GMAC_CHAN_RX_CONTROL_SR (1 << 0) 189305ac5f9Spatrick #define GMAC_CHAN_TX_BASE_ADDR_HI(x) (GMAC_CHAN_BASE_ADDR(x) + 0x10) 190305ac5f9Spatrick #define GMAC_CHAN_TX_BASE_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x14) 191305ac5f9Spatrick #define GMAC_CHAN_RX_BASE_ADDR_HI(x) (GMAC_CHAN_BASE_ADDR(x) + 0x18) 192305ac5f9Spatrick #define GMAC_CHAN_RX_BASE_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x1c) 193305ac5f9Spatrick #define GMAC_CHAN_TX_END_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x20) 194305ac5f9Spatrick #define GMAC_CHAN_RX_END_ADDR(x) (GMAC_CHAN_BASE_ADDR(x) + 0x28) 195305ac5f9Spatrick #define GMAC_CHAN_TX_RING_LEN(x) (GMAC_CHAN_BASE_ADDR(x) + 0x2c) 196305ac5f9Spatrick #define GMAC_CHAN_RX_RING_LEN(x) (GMAC_CHAN_BASE_ADDR(x) + 0x30) 197305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA(x) (GMAC_CHAN_BASE_ADDR(x) + 0x34) 198305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_NIE (1 << 15) 199305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_AIE (1 << 14) 200305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_CDE (1 << 13) 201305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_FBE (1 << 12) 202305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_ERE (1 << 11) 203305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_ETE (1 << 10) 204305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_RWE (1 << 9) 205305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_RSE (1 << 8) 206305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_RBUE (1 << 7) 207305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_RIE (1 << 6) 208305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_TBUE (1 << 2) 209305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_TSE (1 << 1) 210305ac5f9Spatrick #define GMAC_CHAN_INTR_ENA_TIE (1 << 0) 211305ac5f9Spatrick #define GMAC_CHAN_RX_WATCHDOG(x) (GMAC_CHAN_CONTROL(x) + 0x38) 212305ac5f9Spatrick #define GMAC_CHAN_SLOT_CTRL_STATUS(x) (GMAC_CHAN_CONTROL(x) + 0x3c) 213305ac5f9Spatrick #define GMAC_CHAN_CUR_TX_DESC(x) (GMAC_CHAN_CONTROL(x) + 0x44) 214305ac5f9Spatrick #define GMAC_CHAN_CUR_RX_DESC(x) (GMAC_CHAN_CONTROL(x) + 0x4c) 215305ac5f9Spatrick #define GMAC_CHAN_CUR_TX_BUF_ADDR(x) (GMAC_CHAN_CONTROL(x) + 0x54) 216305ac5f9Spatrick #define GMAC_CHAN_CUR_RX_BUF_ADDR(x) (GMAC_CHAN_CONTROL(x) + 0x5c) 217305ac5f9Spatrick #define GMAC_CHAN_STATUS(x) (GMAC_CHAN_CONTROL(x) + 0x60) 218305ac5f9Spatrick #define GMAC_CHAN_STATUS_REB_MASK 0x7 219305ac5f9Spatrick #define GMAC_CHAN_STATUS_REB_SHIFT 19 220305ac5f9Spatrick #define GMAC_CHAN_STATUS_TEB_MASK 0x7 221305ac5f9Spatrick #define GMAC_CHAN_STATUS_TEB_SHIFT 16 222305ac5f9Spatrick #define GMAC_CHAN_STATUS_NIS (1 << 15) 223305ac5f9Spatrick #define GMAC_CHAN_STATUS_AIS (1 << 14) 224305ac5f9Spatrick #define GMAC_CHAN_STATUS_CDE (1 << 13) 225305ac5f9Spatrick #define GMAC_CHAN_STATUS_FBE (1 << 12) 226305ac5f9Spatrick #define GMAC_CHAN_STATUS_ERI (1 << 11) 227305ac5f9Spatrick #define GMAC_CHAN_STATUS_ETI (1 << 10) 228305ac5f9Spatrick #define GMAC_CHAN_STATUS_RWT (1 << 9) 229305ac5f9Spatrick #define GMAC_CHAN_STATUS_RPS (1 << 8) 230305ac5f9Spatrick #define GMAC_CHAN_STATUS_RBU (1 << 7) 231305ac5f9Spatrick #define GMAC_CHAN_STATUS_RI (1 << 6) 232305ac5f9Spatrick #define GMAC_CHAN_STATUS_TBU (1 << 2) 233305ac5f9Spatrick #define GMAC_CHAN_STATUS_TPS (1 << 1) 234305ac5f9Spatrick #define GMAC_CHAN_STATUS_TI (1 << 0) 235305ac5f9Spatrick 236305ac5f9Spatrick /* 237305ac5f9Spatrick * DWQE descriptors. 238305ac5f9Spatrick */ 239305ac5f9Spatrick 240305ac5f9Spatrick struct dwqe_desc { 241305ac5f9Spatrick uint32_t sd_tdes0; 242305ac5f9Spatrick uint32_t sd_tdes1; 243305ac5f9Spatrick uint32_t sd_tdes2; 244305ac5f9Spatrick uint32_t sd_tdes3; 245305ac5f9Spatrick }; 246305ac5f9Spatrick 247*84a278ffSstsp /* Tx context descriptor bits (host to device); precedes regular descriptor */ 248*84a278ffSstsp #define TDES3_CTXT (1 << 30) 249*84a278ffSstsp #define TDES3_VLAN_TAG_VALID (1 << 16) 250*84a278ffSstsp #define TDES3_VLAN_TAG 0xffff 251*84a278ffSstsp /* Bit 31 is the OWN bit, as in regular Tx descriptor. */ 252*84a278ffSstsp 25371083937Sstsp /* Tx bits (read format; host to device) */ 25471083937Sstsp #define TDES2_HDR_LEN 0x000003ff /* if TSO is enabled */ 25571083937Sstsp #define TDES2_BUF1_LEN 0x00003fff /* if TSO is disabled */ 25671083937Sstsp #define TDES2_VLAN_TIR 0x0000c000 25771083937Sstsp #define TDES2_NO_VLAN_TAGGING (0x0 << 14) 25871083937Sstsp #define TDES2_VLAN_TAG_STRIP (0x1 << 14) 25971083937Sstsp #define TDES2_VLAN_TAG_INSERT (0x2 << 14) 26071083937Sstsp #define TDES2_VLAN_TAG_REPLACE (0x3 << 14) 26171083937Sstsp #define TDES2_BUF2_LEN 0x3fff0000 26271083937Sstsp #define TDES2_TX_TIMESTAMP_EN (1 << 30) /* if TSO is disabled */ 26371083937Sstsp #define TDES2_TSO_EXTMEM_DIS (1 << 30) /* if TSO is enabled */ 264305ac5f9Spatrick #define TDES2_IC (1U << 31) 26571083937Sstsp #define TDES3_TCP_PAYLOAD_LEN 0x0003ffff /* if TSO is enabled */ 26671083937Sstsp #define TDES3_FRAME_LEN 0x00007fff /* if TSO is disabled */ 26771083937Sstsp #define TDES3_CIC 0x00030000 /* if TSO is disabled */ 26871083937Sstsp #define TDES3_CSUM_DISABLE (0x0 << 16) 26971083937Sstsp #define TDES3_CSUM_IPHDR (0x1 << 16) 27071083937Sstsp #define TDES3_CSUM_IPHDR_PAYLOAD (0x2 << 16) 27171083937Sstsp #define TDES3_CSUM_IPHDR_PAYLOAD_PSEUDOHDR (0x3 << 16) 27271083937Sstsp #define TDES3_TSO_EN (1 << 18) 273*84a278ffSstsp #define TDES3_CPC ((1 << 26) | (1 << 27)) /* if TSO is disabled */ 274*84a278ffSstsp #define TDES3_CPC_CRC_AND_PAD (0x0 << 26) 275*84a278ffSstsp #define TDES3_CPC_CRC_NO_PAD (0x1 << 26) 276*84a278ffSstsp #define TDES3_CPC_DISABLE (0x2 << 26) 277*84a278ffSstsp #define TDES3_CPC_CRC_REPLACE (0x3 << 26) 278305ac5f9Spatrick #define TDES3_LS (1 << 28) 279305ac5f9Spatrick #define TDES3_FS (1 << 29) 280305ac5f9Spatrick #define TDES3_OWN (1U << 31) 281305ac5f9Spatrick 28271083937Sstsp /* Tx bits (writeback format; device to host) */ 28371083937Sstsp #define TDES3_ES (1 << 15) 28471083937Sstsp #define TDES3_DE (1 << 23) 28571083937Sstsp /* Bit 28 is the LS bit, as in "read" format. */ 28671083937Sstsp /* Bit 29 is the FS bit, as in "read" format. */ 28771083937Sstsp /* Bit 31 is the OWN bit, as in "read" format. */ 28871083937Sstsp 2898fa0fb92Sstsp /* Rx bits (read format; host to device) */ 2908fa0fb92Sstsp #define RDES3_BUF1V (1 << 24) 2918fa0fb92Sstsp #define RDES3_BUF2V (1 << 25) 2928fa0fb92Sstsp #define RDES3_IC (1 << 30) 2938fa0fb92Sstsp #define RDES3_OWN (1U << 31) 2948fa0fb92Sstsp 2958fa0fb92Sstsp /* Rx bits (writeback format; device to host) */ 296*84a278ffSstsp #define RDES0_IVT 0xffff0000 297*84a278ffSstsp #define RDES0_OVT 0x0000ffff 2988fa0fb92Sstsp #define RDES1_IP_PAYLOAD_TYPE 0x7 2998fa0fb92Sstsp #define RDES1_IP_PAYLOAD_UNKNOWN 0x0 3008fa0fb92Sstsp #define RDES1_IP_PAYLOAD_UDP 0x1 3018fa0fb92Sstsp #define RDES1_IP_PAYLOAD_TCP 0x2 3028fa0fb92Sstsp #define RDES1_IP_PAYLOAD_ICMP 0x3 3038fa0fb92Sstsp #define RDES1_IP_HDR_ERROR (1 << 3) 3048fa0fb92Sstsp #define RDES1_IPV4_HDR (1 << 4) 3058fa0fb92Sstsp #define RDES1_IPV6_HDR (1 << 5) 3068fa0fb92Sstsp #define RDES1_IP_CSUM_BYPASS (1 << 6) 3078fa0fb92Sstsp #define RDES1_IP_PAYLOAD_ERROR (1 << 7) 3088fa0fb92Sstsp #define RDES3_LENGTH (0x7fff << 0) 309305ac5f9Spatrick #define RDES3_ES (1 << 15) 3108fa0fb92Sstsp #define RDES3_LENTYPE 0x70000 3118fa0fb92Sstsp #define RDES3_LENTYPE_LENGTH (0x0 << 16) 3128fa0fb92Sstsp #define RDES3_LENTYPE_TYPE (0x1 << 16) 3138fa0fb92Sstsp /* 0x2 is reserved */ 3148fa0fb92Sstsp #define RDES3_LENTYPE_ARP (0x3 << 16) 3158fa0fb92Sstsp #define RDES3_LENTYPE_VLAN (0x4 << 16) 3168fa0fb92Sstsp #define RDES3_LENTYPE_2VLAN (0x5 << 16) 3178fa0fb92Sstsp #define RDES3_LENTYPE_MACCTL (0x6 << 16) 3188fa0fb92Sstsp #define RDES3_LENTYPE_OAM (0x7 << 16) 319305ac5f9Spatrick #define RDES3_DE (1 << 19) 320305ac5f9Spatrick #define RDES3_RE (1 << 20) 321305ac5f9Spatrick #define RDES3_OE (1 << 21) 322305ac5f9Spatrick #define RDES3_RWT (1 << 22) 3238fa0fb92Sstsp #define RDES3_GP (1 << 23) 324305ac5f9Spatrick #define RDES3_CE (1 << 24) 3258fa0fb92Sstsp #define RDES3_RDES0_VALID (1 << 25) 3268fa0fb92Sstsp #define RDES3_RDES1_VALID (1 << 26) 3278fa0fb92Sstsp #define RDES3_RDES2_VALID (1 << 27) 3288fa0fb92Sstsp #define RDES3_LD (1 << 28) 3298fa0fb92Sstsp #define RDES3_FD (1 << 29) 3308fa0fb92Sstsp #define RDES3_CTXT (1 << 30) 3318fa0fb92Sstsp /* Bit 31 is the OWN bit, as in "read" format. */ 332