1119051cbSMarius Strobl /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3718cf2ccSPedro F. Giffuni * 4119051cbSMarius Strobl * Copyright (C) 2001 Eduardo Horvath. 5119051cbSMarius Strobl * Copyright (c) 2008 Marius Strobl <marius@FreeBSD.org> 6119051cbSMarius Strobl * All rights reserved. 7119051cbSMarius Strobl * 8119051cbSMarius Strobl * Redistribution and use in source and binary forms, with or without 9119051cbSMarius Strobl * modification, are permitted provided that the following conditions 10119051cbSMarius Strobl * are met: 11119051cbSMarius Strobl * 1. Redistributions of source code must retain the above copyright 12119051cbSMarius Strobl * notice, this list of conditions and the following disclaimer. 13119051cbSMarius Strobl * 2. Redistributions in binary form must reproduce the above copyright 14119051cbSMarius Strobl * notice, this list of conditions and the following disclaimer in the 15119051cbSMarius Strobl * documentation and/or other materials provided with the distribution. 16119051cbSMarius Strobl * 17119051cbSMarius Strobl * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND 18119051cbSMarius Strobl * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19119051cbSMarius Strobl * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20119051cbSMarius Strobl * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE 21119051cbSMarius Strobl * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22119051cbSMarius Strobl * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23119051cbSMarius Strobl * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24119051cbSMarius Strobl * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25119051cbSMarius Strobl * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26119051cbSMarius Strobl * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27119051cbSMarius Strobl * SUCH DAMAGE. 28119051cbSMarius Strobl * 29119051cbSMarius Strobl * from: NetBSD: gemreg.h,v 1.8 2005/12/11 12:21:26 christos Exp 30119051cbSMarius Strobl * from: FreeBSD: if_gemreg.h 174987 2007-12-30 01:32:03Z marius 31119051cbSMarius Strobl */ 32119051cbSMarius Strobl 33119051cbSMarius Strobl #ifndef _IF_CASREG_H 34119051cbSMarius Strobl #define _IF_CASREG_H 35119051cbSMarius Strobl 36119051cbSMarius Strobl /* 37119051cbSMarius Strobl * register definitions for Sun Cassini/Cassini+ and National Semiconductor 38119051cbSMarius Strobl * DP83065 Saturn Gigabit Ethernet controllers 39119051cbSMarius Strobl */ 40119051cbSMarius Strobl 41119051cbSMarius Strobl /* global resources */ 42119051cbSMarius Strobl #define CAS_CAW 0x0004 /* core arbitration weight */ 43119051cbSMarius Strobl #define CAS_INF_BURST 0x0008 /* infinite burst enable */ 44119051cbSMarius Strobl #define CAS_STATUS 0x000c /* interrupt status */ 45119051cbSMarius Strobl #define CAS_INTMASK 0x0010 /* interrupt mask */ 46119051cbSMarius Strobl #define CAS_CLEAR_ALIAS 0x0014 /* clear mask alias */ 47119051cbSMarius Strobl #define CAS_STATUS_ALIAS 0x001c /* interrupt status alias */ 48119051cbSMarius Strobl #define CAS_ERROR_STATUS 0x1000 /* PCI error status */ 49119051cbSMarius Strobl #define CAS_ERROR_MASK 0x1004 /* PCI error mask */ 50119051cbSMarius Strobl #define CAS_BIM_CONF 0x1008 /* BIM configuration */ 51119051cbSMarius Strobl #define CAS_BIM_DIAG 0x100c /* BIM diagnostic */ 52119051cbSMarius Strobl #define CAS_RESET 0x1010 /* software reset */ 53119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN 0x1020 /* BIM local device output enable */ 54119051cbSMarius Strobl #define CAS_BIM_BUF_ADDR 0x1024 /* BIM buffer address */ 55119051cbSMarius Strobl #define CAS_BIM_BUF_DATA_LO 0x1028 /* BIM buffer data low */ 56119051cbSMarius Strobl #define CAS_BIM_BUF_DATA_HI 0x102c /* BIM buffer data high */ 57119051cbSMarius Strobl #define CAS_BIM_RAM_BIST 0x1030 /* BIM RAM BIST control/status */ 58119051cbSMarius Strobl #define CAS_PROBE_MUX_SELECT 0x1034 /* PROBE MUX SELECT */ 59119051cbSMarius Strobl #define CAS_INTMASK2 0x1038 /* interrupt mask 2 for INTB */ 60119051cbSMarius Strobl #define CAS_STATUS2 0x103c /* interrupt status 2 for INTB */ 61119051cbSMarius Strobl #define CAS_CLEAR_ALIAS2 0x1040 /* clear mask alias 2 for INTB */ 62119051cbSMarius Strobl #define CAS_STATUS_ALIAS2 0x1044 /* interrupt status alias 2 for INTB */ 63119051cbSMarius Strobl #define CAS_INTMASK3 0x1048 /* interrupt mask 3 for INTC */ 64119051cbSMarius Strobl #define CAS_STATUS3 0x104c /* interrupt status 3 for INTC */ 65119051cbSMarius Strobl #define CAS_CLEAR_ALIAS3 0x1050 /* clear mask alias 3 for INTC */ 66119051cbSMarius Strobl #define CAS_STATUS_ALIAS3 0x1054 /* interrupt status alias 3 for INTC */ 67119051cbSMarius Strobl #define CAS_INTMASK4 0x1058 /* interrupt mask 4 for INTD */ 68119051cbSMarius Strobl #define CAS_STATUS4 0x105c /* interrupt status 4 for INTD */ 69119051cbSMarius Strobl #define CAS_CLEAR_ALIAS4 0x1060 /* clear mask alias 4 for INTD */ 70119051cbSMarius Strobl #define CAS_STATUS_ALIAS4 0x1064 /* interrupt status alias 4 for INTD */ 71917825acSMarius Strobl #define CAS_SATURN_PCFG 0x106c /* internal MACPHY pin configuration */ 72119051cbSMarius Strobl 73119051cbSMarius Strobl #define CAS_CAW_RX_WGHT_MASK 0x00000003 /* RX DMA factor for... */ 74119051cbSMarius Strobl #define CAS_CAW_RX_WGHT_SHFT 0 /* ...weighted round robin */ 75119051cbSMarius Strobl #define CAS_CAW_TX_WGHT_MASK 0x0000000c /* RX DMA factor for... */ 76119051cbSMarius Strobl #define CAS_CAW_TX_WGHT_SHFT 2 /* ...weighted round robin */ 77119051cbSMarius Strobl #define CAS_CAW_RR_DIS 0x00000010 /* weighted round robin dis. */ 78119051cbSMarius Strobl 79119051cbSMarius Strobl #define CAS_INF_BURST_EN 0x00000001 /* Allow bursts > cachline. */ 80119051cbSMarius Strobl 81119051cbSMarius Strobl /* 82119051cbSMarius Strobl * shared interrupt bits for CAS_STATUS, CAS_INTMASK, CAS_CLEAR_ALIAS and 83119051cbSMarius Strobl * CAS_STATUS_ALIAS 84119051cbSMarius Strobl * Bits 0-9 of CAS_STATUS auto-clear when read. CAS_CLEAR_ALIAS specifies 85119051cbSMarius Strobl * which of bits 0-9 auto-clear when reading CAS_STATUS_ALIAS. 86119051cbSMarius Strobl */ 87119051cbSMarius Strobl #define CAS_INTR_TX_INT_ME 0x00000001 /* Frame w/ INT_ME set sent. */ 88119051cbSMarius Strobl #define CAS_INTR_TX_ALL 0x00000002 /* TX frames trans. to FIFO. */ 89119051cbSMarius Strobl #define CAS_INTR_TX_DONE 0x00000004 /* Any TX frame transferred. */ 90119051cbSMarius Strobl #define CAS_INTR_TX_TAG_ERR 0x00000008 /* TX FIFO tag corrupted. */ 91119051cbSMarius Strobl #define CAS_INTR_RX_DONE 0x00000010 /* >=1 RX frames transferred. */ 92119051cbSMarius Strobl #define CAS_INTR_RX_BUF_NA 0x00000020 /* RX buffer not available */ 93119051cbSMarius Strobl #define CAS_INTR_RX_TAG_ERR 0x00000040 /* RX FIFO tag corrupted. */ 94119051cbSMarius Strobl #define CAS_INTR_RX_COMP_FULL 0x00000080 /* RX completion ring full */ 95119051cbSMarius Strobl #define CAS_INTR_RX_BUF_AEMPTY 0x00000100 /* RX desc. ring almost empty */ 96119051cbSMarius Strobl #define CAS_INTR_RX_COMP_AFULL 0x00000200 /* RX cmpl. ring almost full */ 97119051cbSMarius Strobl #define CAS_INTR_RX_LEN_MMATCH 0x00000400 /* length field mismatch */ 98119051cbSMarius Strobl #define CAS_INTR_SUMMARY 0x00001000 /* summary interrupt bit */ 99119051cbSMarius Strobl #define CAS_INTR_PCS_INT 0x00002000 /* PCS interrupt */ 100119051cbSMarius Strobl #define CAS_INTR_TX_MAC_INT 0x00004000 /* TX MAC interrupt */ 101119051cbSMarius Strobl #define CAS_INTR_RX_MAC_INT 0x00008000 /* RX MAC interrupt */ 102119051cbSMarius Strobl #define CAS_INTR_MAC_CTRL_INT 0x00010000 /* MAC control interrupt */ 103119051cbSMarius Strobl #define CAS_INTR_MIF 0x00020000 /* MIF interrupt */ 104119051cbSMarius Strobl #define CAS_INTR_PCI_ERROR_INT 0x00040000 /* PCI error interrupt */ 105119051cbSMarius Strobl 106119051cbSMarius Strobl #define CAS_STATUS_TX_COMP3_MASK 0xfff80000 /* TX completion 3 */ 107119051cbSMarius Strobl #define CAS_STATUS_TX_COMP3_SHFT 19 108119051cbSMarius Strobl 109119051cbSMarius Strobl /* CAS_ERROR_STATUS and CAS_ERROR_MASK PCI error bits */ 110119051cbSMarius Strobl #define CAS_ERROR_DTRTO 0x00000002 /* delayed trans. timeout */ 111119051cbSMarius Strobl #define CAS_ERROR_OTHER 0x00000004 /* errors (see PCIR_STATUS) */ 112119051cbSMarius Strobl #define CAS_ERROR_DMAW_ZERO 0x00000008 /* zero count DMA write */ 113119051cbSMarius Strobl #define CAS_ERROR_DMAR_ZERO 0x00000010 /* zero count DMA read */ 114119051cbSMarius Strobl #define CAS_ERROR_RTRTO 0x00000020 /* 255 retries exceeded */ 115119051cbSMarius Strobl 116119051cbSMarius Strobl #define CAS_BIM_CONF_BD64_DIS 0x00000004 /* 64-bit mode disable */ 117119051cbSMarius Strobl #define CAS_BIM_CONF_M66EN 0x00000008 /* PCI clock is 66MHz (ro). */ 118119051cbSMarius Strobl #define CAS_BIM_CONF_BUS32_WIDE 0x00000010 /* PCI bus is 32-bit (ro). */ 119119051cbSMarius Strobl #define CAS_BIM_CONF_DPAR_EN 0x00000020 /* parity error intr. enable */ 120119051cbSMarius Strobl #define CAS_BIM_CONF_RMA_EN 0x00000040 /* master abort intr. enable */ 121119051cbSMarius Strobl #define CAS_BIM_CONF_RTA_EN 0x00000080 /* target abort intr. enable */ 122119051cbSMarius Strobl #define CAS_BIM_CONF_DIS_BIM 0x00000200 /* Stop PCI DMA transactions. */ 123119051cbSMarius Strobl #define CAS_BIM_CONF_BIM_DIS 0x00000400 /* BIM was stopped (ro). */ 124119051cbSMarius Strobl #define CAS_BIM_CONF_BLOCK_PERR 0x00000800 /* Block PERR# to PCI bus. */ 125119051cbSMarius Strobl 126119051cbSMarius Strobl #define CAS_BIM_DIAG_BRST_SM 0x0000007f /* burst ctrl. state machine */ 127119051cbSMarius Strobl #define CAS_BIM_DIAG_MSTR_SM 0x3fffff00 128119051cbSMarius Strobl 129119051cbSMarius Strobl #define CAS_RESET_TX 0x00000001 /* Reset TX DMA engine. */ 130119051cbSMarius Strobl #define CAS_RESET_RX 0x00000002 /* Reset RX DMA engine. */ 131119051cbSMarius Strobl #define CAS_RESET_RSTOUT 0x00000004 /* Force PCI RSTOUT#. */ 132119051cbSMarius Strobl #define CAS_RESET_PCS_DIS 0x00000008 /* PCS reset disable */ 133119051cbSMarius Strobl #define CAS_RESET_BREQ_SM 0x00007f00 /* breq state machine */ 134119051cbSMarius Strobl #define CAS_RESET_PCIARB 0x00070000 /* PCI arbitration state */ 135119051cbSMarius Strobl #define CAS_RESET_RDPCI 0x00300000 /* read PCI state */ 136119051cbSMarius Strobl #define CAS_RESET_RDARB 0x00c00000 /* read arbitration state */ 137119051cbSMarius Strobl #define CAS_RESET_WRPCI 0x06000000 /* write PCI state */ 138119051cbSMarius Strobl #define CAS_RESET_WRARB 0x38000000 /* write arbitration state */ 139119051cbSMarius Strobl 140119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_PAD 0x00000001 /* addr. bus, RW and OE */ 141119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_PROM 0x00000002 /* PROM chip select */ 142119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_EXT 0x00000004 /* secondary local bus device */ 143119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_SOFT_0 0x00000008 /* soft. progr. ctrl. bit 0 */ 144119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_SOFT_1 0x00000010 /* soft. progr. ctrl. bit 1 */ 145119051cbSMarius Strobl #define CAS_BIM_LDEV_OEN_HWRST 0x00000020 /* hw. reset (Cassini+ only) */ 146119051cbSMarius Strobl 147119051cbSMarius Strobl #define CAS_BIM_BUF_ADDR_INDEX 0x0000003f /* buffer entry index */ 148119051cbSMarius Strobl #define CAS_BIM_BUF_ADDR_RDWR 0x00000040 /* 0: read, 1: write access */ 149119051cbSMarius Strobl 150119051cbSMarius Strobl #define CAS_BIM_RAM_BIST_START 0x00000001 /* Start BIST on read buffer. */ 151119051cbSMarius Strobl #define CAS_BIM_RAM_BIST_SUM 0x00000004 /* read buffer pass summary */ 152119051cbSMarius Strobl #define CAS_BIM_RAM_BIST_LO 0x00000010 /* read buf. low bank passes */ 153119051cbSMarius Strobl #define CAS_BIM_RAM_BIST_HI 0x00000020 /* read buf. high bank passes */ 154119051cbSMarius Strobl 155119051cbSMarius Strobl #define CAS_PROBE_MUX_SELECT_LO 0x0000000f /* P_A[7:0] */ 156119051cbSMarius Strobl #define CAS_PROBE_MUX_SELECT_HI 0x000000f0 /* P_A[15:8] */ 157119051cbSMarius Strobl #define CAS_PROBE_MUX_SELECT_SB 0x000000f0 /* txdma_wr address and size */ 158119051cbSMarius Strobl #define CAS_PROBE_MUX_SELECT_EN 0xf0000000 /* enable probe on P_A[15:0] */ 159119051cbSMarius Strobl 160119051cbSMarius Strobl /* 161119051cbSMarius Strobl * interrupt bits for CAS_INTMASK[2-4], CAS_STATUS[2-4], CAS_CLEAR_ALIAS[2-4] 162119051cbSMarius Strobl * and CAS_STATUS_ALIAS[2-4]. 163119051cbSMarius Strobl * CAS_STATUS[2-4] auto-clear when read. CAS_CLEAR_ALIAS[2-4] specifies which 164119051cbSMarius Strobl * of bits 0-9 auto-clear when reading the corresponding CAS_STATUS_ALIAS[2-4]. 165119051cbSMarius Strobl */ 166119051cbSMarius Strobl #define CAS_INTRN_RX_DONE 0x00000001 /* >=1 RX frames transferred. */ 167119051cbSMarius Strobl #define CAS_INTRN_RX_COMP_FULL 0x00000002 /* RX completion ring full */ 168119051cbSMarius Strobl #define CAS_INTRN_RX_COMP_AFULL 0x00000004 /* RX cmpl. ring almost full */ 169119051cbSMarius Strobl #define CAS_INTRN_RX_BUF_NA 0x00000008 /* RX buffer not available */ 170119051cbSMarius Strobl #define CAS_INTRN_RX_BUF_AEMPTY 0x00000010 /* RX desc. ring almost empty */ 171119051cbSMarius Strobl 172119051cbSMarius Strobl /* INTn enable bit for CAS_INTMASK[2-4] */ 173119051cbSMarius Strobl #define CAS_INTMASKN_EN 0x00000080 /* INT[B-D] enable */ 174119051cbSMarius Strobl 175917825acSMarius Strobl #define CAS_SATURN_PCFG_TLA 0x00000001 /* PHY activity LED */ 176917825acSMarius Strobl #define CAS_SATURN_PCFG_FLA 0x00000002 /* PHY 10MBit/sec LED */ 177917825acSMarius Strobl #define CAS_SATURN_PCFG_CLA 0x00000004 /* PHY 100MBit/sec LED */ 178917825acSMarius Strobl #define CAS_SATURN_PCFG_LLA 0x00000008 /* PHY 1000MBit/sec LED */ 179917825acSMarius Strobl #define CAS_SATURN_PCFG_RLA 0x00000010 /* PHY full-duplex LED */ 180917825acSMarius Strobl #define CAS_SATURN_PCFG_PDS 0x00000020 /* PHY debug mode */ 181917825acSMarius Strobl #define CAS_SATURN_PCFG_MTP 0x00000080 /* test point select */ 182917825acSMarius Strobl #define CAS_SATURN_PCFG_GMO 0x00000100 /* GMII observe */ 183917825acSMarius Strobl #define CAS_SATURN_PCFG_FSI 0x00000200 /* freeze GMII/SERDES */ 184917825acSMarius Strobl #define CAS_SATURN_PCFG_LAD 0x00000800 /* MAC LED control active low */ 185917825acSMarius Strobl 186119051cbSMarius Strobl /* TX DMA registers */ 187119051cbSMarius Strobl #define CAS_TX_CONF 0x2004 /* TX configuration */ 188119051cbSMarius Strobl #define CAS_TX_FIFO_WR 0x2014 /* FIFO write pointer */ 189119051cbSMarius Strobl #define CAS_TX_FIFO_SDWR 0x2018 /* FIFO shadow write pointer */ 190119051cbSMarius Strobl #define CAS_TX_FIFO_RD 0x201c /* FIFO read pointer */ 191119051cbSMarius Strobl #define CAS_TX_FIFO_SDRD 0x2020 /* FIFO shadow read pointer */ 192119051cbSMarius Strobl #define CAS_TX_FIFO_PKT_CNT 0x2024 /* FIFO packet counter */ 193119051cbSMarius Strobl #define CAS_TX_SM1 0x2028 /* TX state machine 1 */ 194119051cbSMarius Strobl #define CAS_TX_SM2 0x202c /* TX state machine 2 */ 195119051cbSMarius Strobl #define CAS_TX_DATA_PTR_LO 0x2030 /* TX data pointer low */ 196119051cbSMarius Strobl #define CAS_TX_DATA_PTR_HI 0x2034 /* TX data pointer high */ 197119051cbSMarius Strobl #define CAS_TX_KICK1 0x2038 /* TX kick 1 */ 198119051cbSMarius Strobl #define CAS_TX_KICK2 0x203c /* TX kick 2 */ 199119051cbSMarius Strobl #define CAS_TX_KICK3 0x2040 /* TX kick 3 */ 200119051cbSMarius Strobl #define CAS_TX_KICK4 0x2044 /* TX kick 4 */ 201119051cbSMarius Strobl #define CAS_TX_COMP1 0x2048 /* TX completion 1 */ 202119051cbSMarius Strobl #define CAS_TX_COMP2 0x204c /* TX completion 2 */ 203119051cbSMarius Strobl #define CAS_TX_COMP3 0x2050 /* TX completion 3 */ 204119051cbSMarius Strobl #define CAS_TX_COMP4 0x2054 /* TX completion 4 */ 205119051cbSMarius Strobl #define CAS_TX_COMPWB_BASE_LO 0x2058 /* TX completion writeback base low */ 206119051cbSMarius Strobl #define CAS_TX_COMPWB_BASE_HI 0x205c /* TX completion writeback base high */ 207119051cbSMarius Strobl #define CAS_TX_DESC1_BASE_LO 0x2060 /* TX descriptor ring 1 base low */ 208119051cbSMarius Strobl #define CAS_TX_DESC1_BASE_HI 0x2064 /* TX descriptor ring 1 base high */ 209119051cbSMarius Strobl #define CAS_TX_DESC2_BASE_LO 0x2068 /* TX descriptor ring 2 base low */ 210119051cbSMarius Strobl #define CAS_TX_DESC2_BASE_HI 0x206c /* TX descriptor ring 2 base high */ 211119051cbSMarius Strobl #define CAS_TX_DESC3_BASE_LO 0x2070 /* TX descriptor ring 2 base low */ 212119051cbSMarius Strobl #define CAS_TX_DESC3_BASE_HI 0x2074 /* TX descriptor ring 2 base high */ 213119051cbSMarius Strobl #define CAS_TX_DESC4_BASE_LO 0x2078 /* TX descriptor ring 2 base low */ 214119051cbSMarius Strobl #define CAS_TX_DESC4_BASE_HI 0x207c /* TX descriptor ring 2 base high */ 215119051cbSMarius Strobl #define CAS_TX_MAXBURST1 0x2080 /* TX MaxBurst 1 */ 216119051cbSMarius Strobl #define CAS_TX_MAXBURST2 0x2084 /* TX MaxBurst 2 */ 217119051cbSMarius Strobl #define CAS_TX_MAXBURST3 0x2088 /* TX MaxBurst 3 */ 218119051cbSMarius Strobl #define CAS_TX_MAXBURST4 0x208c /* TX MaxBurst 4 */ 219119051cbSMarius Strobl #define CAS_TX_FIFO_ADDR 0x2104 /* TX FIFO address */ 220119051cbSMarius Strobl #define CAS_TX_FIFO_TAG 0x2108 /* TX FIFO tag */ 221119051cbSMarius Strobl #define CAS_TX_FIFO_DATA_LO 0x210c /* TX FIFO data low */ 222119051cbSMarius Strobl #define CAS_TX_FIFO_DATA_HI_T1 0x2110 /* TX FIFO data highT1 */ 223119051cbSMarius Strobl #define CAS_TX_FIFO_DATA_HI_T0 0x2114 /* TX FIFO data highT0 */ 224119051cbSMarius Strobl #define CAS_TX_FIFO_SIZE 0x2118 /* TX FIFO size in 64 byte multiples */ 225119051cbSMarius Strobl #define CAS_TX_RAM_BIST 0x211c /* TX RAM BIST control/status */ 226119051cbSMarius Strobl 227119051cbSMarius Strobl #define CAS_TX_CONF_TXDMA_EN 0x00000001 /* TX DMA enable */ 228119051cbSMarius Strobl #define CAS_TX_CONF_FIFO_PIO 0x00000002 /* Allow TX FIFO PIO access. */ 229119051cbSMarius Strobl #define CAS_TX_CONF_DESC1_MASK 0x0000003c /* TX descriptor ring 1 size */ 230119051cbSMarius Strobl #define CAS_TX_CONF_DESC1_SHFT 2 231119051cbSMarius Strobl #define CAS_TX_CONF_DESC2_MASK 0x000003c0 /* TX descriptor ring 2 size */ 232119051cbSMarius Strobl #define CAS_TX_CONF_DESC2_SHFT 6 233119051cbSMarius Strobl #define CAS_TX_CONF_DESC3_MASK 0x00003c00 /* TX descriptor ring 3 size */ 234119051cbSMarius Strobl #define CAS_TX_CONF_DESC3_SHFT 10 235119051cbSMarius Strobl #define CAS_TX_CONF_DESC4_MASK 0x0003c000 /* TX descriptor ring 4 size */ 236119051cbSMarius Strobl #define CAS_TX_CONF_DESC4_SHFT 14 237119051cbSMarius Strobl #define CAS_TX_CONF_PACED 0x00100000 /* ALL intr. on FIFO empty */ 238119051cbSMarius Strobl #define CAS_TX_CONF_RDPP_DIS 0x01000000 /* Should always be set. */ 239119051cbSMarius Strobl #define CAS_TX_CONF_COMPWB_Q1 0x02000000 /* Completion writeback... */ 240119051cbSMarius Strobl #define CAS_TX_CONF_COMPWB_Q2 0x04000000 /* ...happens at the end... */ 241119051cbSMarius Strobl #define CAS_TX_CONF_COMPWB_Q3 0x08000000 /* ...of every packet in... */ 242119051cbSMarius Strobl #define CAS_TX_CONF_COMPWB_Q4 0x10000000 /* ...queue n. */ 243119051cbSMarius Strobl #define CAS_TX_CONF_PICWB_DIS 0x20000000 /* pre-intr. compl. W/B dis. */ 244119051cbSMarius Strobl #define CAS_TX_CONF_CTX_MASK 0xc0000000 /* test port selection */ 245119051cbSMarius Strobl #define CAS_TX_CONF_CTX_SHFT 30 246119051cbSMarius Strobl 247119051cbSMarius Strobl #define CAS_TX_COMPWB_ALIGN 2048 /* TX compl. W/B alignment */ 248119051cbSMarius Strobl 249119051cbSMarius Strobl #define CAS_TX_DESC_ALIGN 2048 /* TX descriptor alignment */ 250119051cbSMarius Strobl 251119051cbSMarius Strobl /* descriptor ring size bits for both CAS_TX_CONF and CAS_RX_CONF */ 252119051cbSMarius Strobl #define CAS_DESC_32 0x0 /* 32 descriptors */ 253119051cbSMarius Strobl #define CAS_DESC_64 0x1 /* 64 descriptors */ 254119051cbSMarius Strobl #define CAS_DESC_128 0x2 /* 128 descriptors */ 255119051cbSMarius Strobl #define CAS_DESC_256 0x3 /* 256 descriptors */ 256119051cbSMarius Strobl #define CAS_DESC_512 0x4 /* 512 descriptors */ 257119051cbSMarius Strobl #define CAS_DESC_1K 0x5 /* 1k descriptors */ 258119051cbSMarius Strobl #define CAS_DESC_2K 0x6 /* 2k descriptors */ 259119051cbSMarius Strobl #define CAS_DESC_4K 0x7 /* 4k descriptors */ 260119051cbSMarius Strobl #define CAS_DESC_8K 0x8 /* 8k descriptors */ 261119051cbSMarius Strobl 262119051cbSMarius Strobl #define CAS_TX_SM1_CHAIN 0x000003ff /* chaining state machine */ 263119051cbSMarius Strobl #define CAS_TX_SM1_CKSUM 0x00000c00 /* checksum state machine */ 264119051cbSMarius Strobl #define CAS_TX_SM1_TX_FIFO_LOAD 0x0003f000 /* TX FIFO load state machine */ 265119051cbSMarius Strobl #define CAS_TX_SM1_TX_FIFO_UNLD 0x003c0000 /* TX FIFO unload state mach. */ 266119051cbSMarius Strobl #define CAS_TX_SM1_CACHE_CTRL 0x03c00000 /* cache control state mach. */ 267119051cbSMarius Strobl #define CAS_TX_SM1_CBQARB 0x03c00000 /* CBQ arbiter state machine */ 268119051cbSMarius Strobl 269119051cbSMarius Strobl #define CAS_TX_SM2_COMPWB 0x00000007 /* compl. WB state machine */ 270119051cbSMarius Strobl #define CAS_TX_SM2_SUB_LOAD 0x00000038 /* sub load state machine */ 271119051cbSMarius Strobl #define CAS_TX_SM2_KICK 0x000000c0 /* kick state machine */ 272119051cbSMarius Strobl 273119051cbSMarius Strobl #define CAS_TX_RAM_BIST_START 0x00000001 /* Start RAM BIST process. */ 274119051cbSMarius Strobl #define CAS_TX_RAM_BIST_SUMMARY 0x00000002 /* All RAM okay */ 275119051cbSMarius Strobl #define CAS_TX_RAM_BIST_RAM32B 0x00000004 /* RAM32B okay */ 276119051cbSMarius Strobl #define CAS_TX_RAM_BIST_RAM33B 0x00000008 /* RAM33B okay */ 277119051cbSMarius Strobl #define CAS_TX_RAM_BIST_RAM32A 0x00000010 /* RAM32A okay */ 278119051cbSMarius Strobl #define CAS_TX_RAM_BIST_RAM33A 0x00000020 /* RAM33A okay */ 279119051cbSMarius Strobl #define CAS_TX_RAM_BIST_SM 0x000001c0 /* RAM BIST state machine */ 280119051cbSMarius Strobl 281119051cbSMarius Strobl /* RX DMA registers */ 282119051cbSMarius Strobl #define CAS_RX_CONF 0x4000 /* RX configuration */ 283119051cbSMarius Strobl #define CAS_RX_PSZ 0x4004 /* RX page size */ 284119051cbSMarius Strobl #define CAS_RX_FIFO_WR 0x4008 /* RX FIFO write pointer */ 285119051cbSMarius Strobl #define CAS_RX_FIFO_RD 0x400c /* RX FIFO read pointer */ 286119051cbSMarius Strobl #define CAS_RX_IPP_WR 0x4010 /* RX IPP FIFO write pointer */ 287119051cbSMarius Strobl #define CAS_RX_IPP_SDWR 0x4014 /* RX IPP FIFO shadow write pointer */ 288119051cbSMarius Strobl #define CAS_RX_IPP_RD 0x4018 /* RX IPP FIFO read pointer */ 289119051cbSMarius Strobl #define CAS_RX_DEBUG 0x401c /* RX debug */ 290119051cbSMarius Strobl #define CAS_RX_PTHRS 0x4020 /* RX PAUSE threshold */ 291119051cbSMarius Strobl #define CAS_RX_KICK 0x4024 /* RX kick */ 292119051cbSMarius Strobl #define CAS_RX_DESC_BASE_LO 0x4028 /* RX descriptor ring base low */ 293119051cbSMarius Strobl #define CAS_RX_DESC_BASE_HI 0x402c /* RX descriptor ring base high */ 294119051cbSMarius Strobl #define CAS_RX_COMP_BASE_LO 0x4030 /* RX completion ring base low */ 295119051cbSMarius Strobl #define CAS_RX_COMP_BASE_HI 0x4034 /* RX completion ring base high */ 296119051cbSMarius Strobl #define CAS_RX_COMP 0x4038 /* RX completion */ 297119051cbSMarius Strobl #define CAS_RX_COMP_HEAD 0x403c /* RX completion head */ 298119051cbSMarius Strobl #define CAS_RX_COMP_TAIL 0x4040 /* RX completion tail */ 299119051cbSMarius Strobl #define CAS_RX_BLANK 0x4044 /* RX blanking for ISR read */ 300119051cbSMarius Strobl #define CAS_RX_AEMPTY_THRS 0x4048 /* RX almost empty threshold */ 301119051cbSMarius Strobl #define CAS_RX_RED 0x4048 /* RX random early detection enable */ 302119051cbSMarius Strobl #define CAS_RX_FF 0x4050 /* RX FIFO fullness */ 303119051cbSMarius Strobl #define CAS_RX_IPP_PKT_CNT 0x4054 /* RX IPP packet counter */ 304119051cbSMarius Strobl #define CAS_RX_WORKING_DMA_LO 0x4058 /* RX working DMA pointer low */ 305119051cbSMarius Strobl #define CAS_RX_WORKING_DMA_HI 0x405c /* RX working DMA pointer high */ 306119051cbSMarius Strobl #define CAS_RX_BIST 0x4060 /* RX BIST */ 307119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO_WR 0x4064 /* RX control FIFO write pointer */ 308119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO_RD 0x4068 /* RX control FIFO read pointer */ 309119051cbSMarius Strobl #define CAS_RX_BLANK_ALIAS 0x406c /* RX blanking for ISR read alias */ 310119051cbSMarius Strobl #define CAS_RX_FIFO_ADDR 0x4080 /* RX FIFO address */ 311119051cbSMarius Strobl #define CAS_RX_FIFO_TAG 0x4084 /* RX FIFO tag */ 312119051cbSMarius Strobl #define CAS_RX_FIFO_DATA_LO 0x4088 /* RX FIFO data low */ 313119051cbSMarius Strobl #define CAS_RX_FIFO_DATA_HI_T0 0x408c /* RX FIFO data highT0 */ 314119051cbSMarius Strobl #define CAS_RX_FIFO_DATA_HI_T1 0x4090 /* RX FIFO data highT1 */ 315119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO 0x4094 /* RX control FIFO and batching FIFO */ 316119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO_LO 0x4098 /* RX control FIFO data low */ 317119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO_MD 0x409c /* RX control FIFO data mid */ 318119051cbSMarius Strobl #define CAS_RX_CTRL_FIFO_HI 0x4100 /* RX control FIFO data high, flowID */ 319119051cbSMarius Strobl #define CAS_RX_IPP_ADDR 0x4104 /* RX IPP FIFO address */ 320119051cbSMarius Strobl #define CAS_RX_IPP_TAG 0x4108 /* RX IPP FIFO tag */ 321119051cbSMarius Strobl #define CAS_RX_IPP_DATA_LO 0x410c /* RX IPP FIFO data low */ 322119051cbSMarius Strobl #define CAS_RX_IPP_DATA_HI_T0 0x4110 /* RX IPP FIFO data highT0 */ 323119051cbSMarius Strobl #define CAS_RX_IPP_DATA_HI_T1 0x4114 /* RX IPP FIFO data highT1 */ 324119051cbSMarius Strobl #define CAS_RX_HDR_PAGE_LO 0x4118 /* RX header page pointer low */ 325119051cbSMarius Strobl #define CAS_RX_HDR_PAGE_HIGH 0x411c /* RX header page pointer high */ 326119051cbSMarius Strobl #define CAS_RX_MTU_PAGE_LO 0x4120 /* RX MTU page pointer low */ 327119051cbSMarius Strobl #define CAS_RX_MTU_PAGE_HIGH 0x4124 /* RX MTU page pointer high */ 328119051cbSMarius Strobl #define CAS_RX_REAS_DMA_ADDR 0x4128 /* RX reassembly DMA table address */ 329119051cbSMarius Strobl #define CAS_RX_REAS_DMA_DATA_LO 0x412c /* RX reassembly DMA table data low */ 330119051cbSMarius Strobl #define CAS_RX_REAS_DMA_DATA_MD 0x4130 /* RX reassembly DMA table data mid */ 331119051cbSMarius Strobl #define CAS_RX_REAS_DMA_DATA_HI 0x4134 /* RX reassembly DMA table data high */ 332119051cbSMarius Strobl /* The rest of the RX DMA registers are Cassini+/Saturn only. */ 333119051cbSMarius Strobl #define CAS_RX_DESC2_BASE_LO 0x4200 /* RX descriptor ring 2 base low */ 334119051cbSMarius Strobl #define CAS_RX_DESC2_BASE_HI 0x4204 /* RX descriptor ring 2 base high */ 335119051cbSMarius Strobl #define CAS_RX_COMP2_BASE_LO 0x4208 /* RX completion ring 2 base low */ 336119051cbSMarius Strobl #define CAS_RX_COMP2_BASE_HI 0x420c /* RX completion ring 2 base high */ 337119051cbSMarius Strobl #define CAS_RX_COMP3_BASE_LO 0x4210 /* RX completion ring 3 base low */ 338119051cbSMarius Strobl #define CAS_RX_COMP3_BASE_HI 0x4214 /* RX completion ring 3 base high */ 339119051cbSMarius Strobl #define CAS_RX_COMP4_BASE_LO 0x4218 /* RX completion ring 4 base low */ 340119051cbSMarius Strobl #define CAS_RX_COMP4_BASE_HI 0x421c /* RX completion ring 4 base high */ 341119051cbSMarius Strobl #define CAS_RX_KICK2 0x4220 /* RX kick 2 */ 342119051cbSMarius Strobl #define CAS_RX_COMP2 0x4224 /* RX completion 2 */ 343119051cbSMarius Strobl #define CAS_RX_COMP_HEAD2 0x4228 /* RX completion head 2 */ 344119051cbSMarius Strobl #define CAS_RX_COMP_TAIL2 0x422c /* RX completion tail 2 */ 345119051cbSMarius Strobl #define CAS_RX_COMP_HEAD3 0x4230 /* RX completion head 3 */ 346119051cbSMarius Strobl #define CAS_RX_COMP_TAIL3 0x4234 /* RX completion tail 3 */ 347119051cbSMarius Strobl #define CAS_RX_COMP_HEAD4 0x4238 /* RX completion head 4 */ 348119051cbSMarius Strobl #define CAS_RX_COMP_TAIL4 0x423c /* RX completion tail 4 */ 349119051cbSMarius Strobl #define CAS_RX_AEMPTY_THRS2 0x4048 /* RX almost empty threshold 2 */ 350119051cbSMarius Strobl 351119051cbSMarius Strobl #define CAS_RX_CONF_RXDMA_EN 0x00000001 /* RX DMA enable */ 352119051cbSMarius Strobl #define CAS_RX_CONF_DESC_MASK 0x0000001e /* RX descriptor ring size */ 353119051cbSMarius Strobl #define CAS_RX_CONF_DESC_SHFT 1 354119051cbSMarius Strobl #define CAS_RX_CONF_COMP_MASK 0x000001e0 /* RX complition ring size */ 355119051cbSMarius Strobl #define CAS_RX_CONF_COMP_SHFT 5 356119051cbSMarius Strobl #define CAS_RX_CONF_BATCH_DIS 0x00000200 /* descriptor batching dis. */ 357119051cbSMarius Strobl #define CAS_RX_CONF_SOFF_MASK 0x00001c00 /* swivel offset */ 358119051cbSMarius Strobl #define CAS_RX_CONF_SOFF_SHFT 10 359119051cbSMarius Strobl /* The RX descriptor ring 2 is Cassini+/Saturn only. */ 360119051cbSMarius Strobl #define CAS_RX_CONF_DESC2_MASK 0x000f0000 /* RX descriptor ring 2 size */ 361119051cbSMarius Strobl #define CAS_RX_CONF_DESC2_SHFT 16 362119051cbSMarius Strobl 363119051cbSMarius Strobl #define CAS_RX_CONF_COMP_128 0x0 /* 128 descriptors */ 364119051cbSMarius Strobl #define CAS_RX_CONF_COMP_256 0x1 /* 256 descriptors */ 365119051cbSMarius Strobl #define CAS_RX_CONF_COMP_512 0x2 /* 512 descriptors */ 366119051cbSMarius Strobl #define CAS_RX_CONF_COMP_1K 0x3 /* 1k descriptors */ 367119051cbSMarius Strobl #define CAS_RX_CONF_COMP_2K 0x4 /* 2k descriptors */ 368119051cbSMarius Strobl #define CAS_RX_CONF_COMP_4K 0x5 /* 4k descriptors */ 369119051cbSMarius Strobl #define CAS_RX_CONF_COMP_8K 0x6 /* 8k descriptors */ 370119051cbSMarius Strobl #define CAS_RX_CONF_COMP_16K 0x7 /* 16k descriptors */ 371119051cbSMarius Strobl #define CAS_RX_CONF_COMP_32K 0x8 /* 32k descriptors */ 372119051cbSMarius Strobl 373119051cbSMarius Strobl #define CAS_RX_PSZ_MASK 0x00000003 /* RX page size */ 374119051cbSMarius Strobl #define CAS_RX_PSZ_SHFT 0 375119051cbSMarius Strobl #define CAS_RX_PSZ_MB_CNT_MASK 0x00007800 /* number of MTU buffers */ 376119051cbSMarius Strobl #define CAS_RX_PSZ_MB_CNT_SHFT 11 377119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_MASK 0x18000000 /* MTU buffer stride */ 378119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_SHFT 27 379119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_MASK 0xc0000000 /* MTU buffer offset */ 380119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_SHFT 30 381119051cbSMarius Strobl 382119051cbSMarius Strobl #define CAS_RX_PSZ_2K 0x0 /* page size 2Kbyte */ 383119051cbSMarius Strobl #define CAS_RX_PSZ_4K 0x1 /* page size 4Kbyte */ 384119051cbSMarius Strobl #define CAS_RX_PSZ_8K 0x2 /* page size 8Kbyte */ 385119051cbSMarius Strobl #define CAS_RX_PSZ_16K 0x3 /* page size 16Kbyte*/ 386119051cbSMarius Strobl 387119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_1K 0x0 /* MTU buffer stride 1Kbyte */ 388119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_2K 0x1 /* MTU buffer stride 2Kbyte */ 389119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_4K 0x2 /* MTU buffer stride 4Kbyte */ 390119051cbSMarius Strobl #define CAS_RX_PSZ_MB_STRD_8K 0x3 /* MTU buffer stride 8Kbyte */ 391119051cbSMarius Strobl 392119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_0 0x0 /* MTU buf. offset 0 bytes */ 393119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_64 0x1 /* MTU buf. offset 64 bytes */ 394119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_96 0x2 /* MTU buf. offset 96 bytes */ 395119051cbSMarius Strobl #define CAS_RX_PSZ_MB_OFF_128 0x3 /* MTU buf. offset 128 bytes */ 396119051cbSMarius Strobl 397119051cbSMarius Strobl #define CAS_RX_DESC_ALIGN 8192 /* RX descriptor alignment */ 398119051cbSMarius Strobl 399119051cbSMarius Strobl #define CAS_RX_COMP_ALIGN 8192 /* RX complition alignment */ 400119051cbSMarius Strobl 401119051cbSMarius Strobl /* The RX PAUSE thresholds are specified in multiples of 64 bytes. */ 402119051cbSMarius Strobl #define CAS_RX_PTHRS_XOFF_MASK 0x000001ff /* XOFF PAUSE */ 403119051cbSMarius Strobl #define CAS_RX_PTHRS_XOFF_SHFT 0 404119051cbSMarius Strobl #define CAS_RX_PTHRS_XON_MASK 0x001ff000 /* XON PAUSE */ 405119051cbSMarius Strobl #define CAS_RX_PTHRS_XON_SHFT 12 406119051cbSMarius Strobl 407119051cbSMarius Strobl /* 408119051cbSMarius Strobl * CAS_RX_BLANK and CAS_RX_BLANK_ALIAS bits 409119051cbSMarius Strobl * CAS_RX_BLANK is loaded each time CAS_STATUS is read and CAS_RX_BLANK_ALIAS 410119051cbSMarius Strobl * is read each time CAS_STATUS_ALIAS is read. The blanking time is specified 411119051cbSMarius Strobl * in multiples of 512 core ticks (which runs at 125MHz). 412119051cbSMarius Strobl */ 413119051cbSMarius Strobl #define CAS_RX_BLANK_PKTS_MASK 0x000001ff /* RX blanking packets */ 414119051cbSMarius Strobl #define CAS_RX_BLANK_PKTS_SHFT 0 415119051cbSMarius Strobl #define CAS_RX_BLANK_TIME_MASK 0x3ffff000 /* RX blanking time */ 416119051cbSMarius Strobl #define CAS_RX_BLANK_TIME_SHFT 12 417119051cbSMarius Strobl 418119051cbSMarius Strobl /* CAS_RX_AEMPTY_THRS and CAS_RX_AEMPTY_THRS2 bits */ 419119051cbSMarius Strobl #define CAS_RX_AEMPTY_THRS_MASK 0x00001fff /* RX_BUF_AEMPTY threshold */ 420119051cbSMarius Strobl #define CAS_RX_AEMPTY_THRS_SHFT 0 421119051cbSMarius Strobl #define CAS_RX_AEMPTY_COMP_MASK 0x0fffe000 /* RX_COMP_AFULL threshold */ 422119051cbSMarius Strobl #define CAS_RX_AEMPTY_COMP_SHFT 13 423119051cbSMarius Strobl 424119051cbSMarius Strobl /* The RX random early detection probability is in 12.5% granularity. */ 425119051cbSMarius Strobl #define CAS_RX_RED_4K_6K_MASK 0x000000ff /* 4K < FIFO threshold < 6K */ 426119051cbSMarius Strobl #define CAS_RX_RED_4K_6K_SHFT 0 427119051cbSMarius Strobl #define CAS_RX_RED_6K_8K_MASK 0x0000ff00 /* 6K < FIFO threshold < 8K */ 428119051cbSMarius Strobl #define CAS_RX_RED_6K_8K_SHFT 8 429119051cbSMarius Strobl #define CAS_RX_RED_8K_10K_MASK 0x00ff0000 /* 8K < FIFO threshold < 10K */ 430119051cbSMarius Strobl #define CAS_RX_RED_8K_10K_SHFT 16 431119051cbSMarius Strobl #define CAS_RX_RED_10K_12K_MASK 0xff000000 /* 10K < FIFO threshold < 12K */ 432119051cbSMarius Strobl #define CAS_RX_RED_10K_12K_SHFT 24 433119051cbSMarius Strobl 434119051cbSMarius Strobl /* CAS_RX_FF_IPP_MASK and CAS_RX_FF_FIFO_MASK are in 8 bytes granularity. */ 435119051cbSMarius Strobl #define CAS_RX_FF_PKT_MASK 0x000000ff /* # of packets in RX FIFO */ 436119051cbSMarius Strobl #define CAS_RX_FF_PKT_SHFT 0 437119051cbSMarius Strobl #define CAS_RX_FF_IPP_MASK 0x0007ff00 /* IPP FIFO level */ 438119051cbSMarius Strobl #define CAS_RX_FF_IPP_SHFT 8 439119051cbSMarius Strobl #define CAS_RX_FF_FIFO_MASK 0x3ff80000 /* RX FIFO level */ 440119051cbSMarius Strobl #define CAS_RX_FF_FIFO_SHFT 19 441119051cbSMarius Strobl 442119051cbSMarius Strobl #define CAS_RX_BIST_START 0x00000001 /* Start BIST process. */ 443119051cbSMarius Strobl #define CAS_RX_BIST_SUMMARY 0x00000002 /* All okay */ 444119051cbSMarius Strobl #define CAS_RX_BIST_SM 0x00007800 /* BIST state machine */ 445119051cbSMarius Strobl #define CAS_RX_BIST_REAS_27 0x00008000 /* Reas 27 okay */ 446119051cbSMarius Strobl #define CAS_RX_BIST_REAS_26B 0x00010000 /* Reas 26B okay */ 447119051cbSMarius Strobl #define CAS_RX_BIST_REAS_26A 0x00020000 /* Reas 26A okay */ 448119051cbSMarius Strobl #define CAS_RX_BIST_CTRL_33 0x00040000 /* Control FIFO 33 okay */ 449119051cbSMarius Strobl #define CAS_RX_BIST_CTRL_32 0x00080000 /* Control FIFO 32 okay */ 450119051cbSMarius Strobl #define CAS_RX_BIST_IPP_33C 0x00100000 /* IPP 33C okay */ 451119051cbSMarius Strobl #define CAS_RX_BIST_IPP_32C 0x00200000 /* IPP 32C okay */ 452119051cbSMarius Strobl #define CAS_RX_BIST_IPP_33B 0x00400000 /* IPP 33B okay */ 453119051cbSMarius Strobl #define CAS_RX_BIST_IPP_32B 0x00800000 /* IPP 32B okay */ 454119051cbSMarius Strobl #define CAS_RX_BIST_IPP_33A 0x01000000 /* IPP 33A okay */ 455119051cbSMarius Strobl #define CAS_RX_BIST_IPP_32A 0x02000000 /* IPP 32A okay */ 456119051cbSMarius Strobl #define CAS_RX_BIST_33C 0x04000000 /* 33C okay */ 457119051cbSMarius Strobl #define CAS_RX_BIST_32C 0x08000000 /* 32C okay */ 458119051cbSMarius Strobl #define CAS_RX_BIST_33B 0x10000000 /* 33B okay */ 459119051cbSMarius Strobl #define CAS_RX_BIST_32B 0x20000000 /* 32B okay */ 460119051cbSMarius Strobl #define CAS_RX_BIST_33A 0x40000000 /* 33A okay */ 461119051cbSMarius Strobl #define CAS_RX_BIST_32A 0x80000000 /* 32A okay */ 462119051cbSMarius Strobl 463119051cbSMarius Strobl #define CAS_RX_REAS_DMA_ADDR_LC 0x0000003f /* reas. table location sel. */ 464119051cbSMarius Strobl 465119051cbSMarius Strobl /* header parser registers */ 466119051cbSMarius Strobl #define CAS_HP_CONF 0x4140 /* HP configuration */ 467119051cbSMarius Strobl #define CAS_HP_IR_ADDR 0x4144 /* HP instruction RAM address */ 468119051cbSMarius Strobl #define CAS_HP_IR_DATA_LO 0x4148 /* HP instruction RAM data low */ 469119051cbSMarius Strobl #define CAS_HP_IR_DATA_MD 0x414c /* HP instruction RAM data mid */ 470119051cbSMarius Strobl #define CAS_HP_IR_DATA_HI 0x4150 /* HP instruction RAM data high */ 471119051cbSMarius Strobl #define CAS_HP_DR_FDB 0x4154 /* HP data RAM and flow DB address */ 472119051cbSMarius Strobl #define CAS_HP_DR_DATA 0x4158 /* HP data RAM data */ 473119051cbSMarius Strobl #define CAS_HP_FLOW_DB1 0x415c /* HP flow database 1 */ 474119051cbSMarius Strobl #define CAS_HP_FLOW_DB2 0x4160 /* HP flow database 2 */ 475119051cbSMarius Strobl #define CAS_HP_FLOW_DB3 0x4164 /* HP flow database 3 */ 476119051cbSMarius Strobl #define CAS_HP_FLOW_DB4 0x4168 /* HP flow database 4 */ 477119051cbSMarius Strobl #define CAS_HP_FLOW_DB5 0x416c /* HP flow database 5 */ 478119051cbSMarius Strobl #define CAS_HP_FLOW_DB6 0x4170 /* HP flow database 6 */ 479119051cbSMarius Strobl #define CAS_HP_FLOW_DB7 0x4174 /* HP flow database 7 */ 480119051cbSMarius Strobl #define CAS_HP_FLOW_DB8 0x4178 /* HP flow database 8 */ 481119051cbSMarius Strobl #define CAS_HP_FLOW_DB9 0x417c /* HP flow database 9 */ 482119051cbSMarius Strobl #define CAS_HP_FLOW_DB10 0x4180 /* HP flow database 10 */ 483119051cbSMarius Strobl #define CAS_HP_FLOW_DB11 0x4184 /* HP flow database 11 */ 484119051cbSMarius Strobl #define CAS_HP_FLOW_DB12 0x4188 /* HP flow database 12 */ 485119051cbSMarius Strobl #define CAS_HP_SM 0x418c /* HP state machine */ 486119051cbSMarius Strobl #define CAS_HP_STATUS1 0x4190 /* HP status 1 */ 487119051cbSMarius Strobl #define CAS_HP_STATUS2 0x4194 /* HP status 2 */ 488119051cbSMarius Strobl #define CAS_HP_STATUS3 0x4198 /* HP status 3 */ 489119051cbSMarius Strobl #define CAS_HP_RAM_BIST 0x419c /* HP RAM BIST */ 490119051cbSMarius Strobl 491119051cbSMarius Strobl #define CAS_HP_CONF_PARSE_EN 0x00000001 /* header parsing enable */ 492119051cbSMarius Strobl #define CAS_HP_CONF_NCPU_MASK 0x000000fc /* #CPUs (0x0: 64) */ 493119051cbSMarius Strobl #define CAS_HP_CONF_NCPU_SHFT 2 494119051cbSMarius Strobl #define CAS_HP_CONF_SINC_DIS 0x00000100 /* SYN inc. seq. number dis. */ 495119051cbSMarius Strobl #define CAS_HP_CONF_TPT_MASK 0x000ffe00 /* TCP payload threshold */ 496119051cbSMarius Strobl #define CAS_HP_CONF_TPT_SHFT 9 497119051cbSMarius Strobl 498119051cbSMarius Strobl #define CAS_HP_DR_FDB_DR_MASK 0x0000001f /* data RAM location sel. */ 499119051cbSMarius Strobl #define CAS_HP_DR_FDB_DR_SHFT 0 500119051cbSMarius Strobl #define CAS_HP_DR_FDB_FDB_MASK 0x00003f00 /* flow DB location sel. */ 501119051cbSMarius Strobl #define CAS_HP_DR_FDB_FDB_SHFT 8 502119051cbSMarius Strobl 503119051cbSMarius Strobl #define CAS_HP_STATUS1_OP_MASK 0x00000007 /* HRP opcode */ 504119051cbSMarius Strobl #define CAS_HP_STATUS1_OP_SHFT 0 505119051cbSMarius Strobl #define CAS_HP_STATUS1_LB_MASK 0x000001f8 /* load balancing CPU number */ 506119051cbSMarius Strobl #define CAS_HP_STATUS1_LB_SHFT 3 507119051cbSMarius Strobl #define CAS_HP_STATUS1_L3O_MASK 0x0000fe00 /* layer 3 offset */ 508119051cbSMarius Strobl #define CAS_HP_STATUS1_L3O_SHFT 9 509119051cbSMarius Strobl #define CAS_HP_STATUS1_SAP_MASK 0xffff0000 /* ethertype */ 510119051cbSMarius Strobl #define CAS_HP_STATUS1_SAP_SHFT 16 511119051cbSMarius Strobl 512119051cbSMarius Strobl #define CAS_HP_STATUS2_TSZ_MASK 0x0000ffff /* TCP payload size */ 513119051cbSMarius Strobl #define CAS_HP_STATUS2_TSZ_SHFT 0 514119051cbSMarius Strobl #define CAS_HP_STATUS2_TO_MASK 0x007f0000 /* TCP payload offset */ 515119051cbSMarius Strobl #define CAS_HP_STATUS2_TO_SHFT 16 516119051cbSMarius Strobl #define CAS_HP_STATUS2_FID_MASK 0x1f800000 /* flow ID */ 517119051cbSMarius Strobl #define CAS_HP_STATUS2_FID_SHFT 23 518119051cbSMarius Strobl #define CAS_HP_STATUS2_AR2_MASK 0xe0000000 /* accu_R2[6:4] */ 519119051cbSMarius Strobl #define CAS_HP_STATUS2_AR2_SHFT 29 520119051cbSMarius Strobl 521119051cbSMarius Strobl #define CAS_HP_STATUS3_TCP_NCHK 0x00000001 /* TCP no payload check */ 522119051cbSMarius Strobl #define CAS_HP_STATUS3_TCP_CHK 0x00000002 /* TCP payload check */ 523119051cbSMarius Strobl #define CAS_HP_STATUS3_SYN_FLAG 0x00000004 /* SYN flag */ 524119051cbSMarius Strobl #define CAS_HP_STATUS3_TCP_FLAG 0x00000008 /* TCP flag check */ 525119051cbSMarius Strobl #define CAS_HP_STATUS3_CTRL_PF 0x00000010 /* control packet flag */ 526119051cbSMarius Strobl #define CAS_HP_STATUS3_NASSIST 0x00000020 /* no assist */ 527119051cbSMarius Strobl #define CAS_HP_STATUS3_MASK_PT 0x00000040 /* Mask payload threshold. */ 528119051cbSMarius Strobl #define CAS_HP_STATUS3_FRC_TPC 0x00000080 /* Force TCP payload check. */ 529119051cbSMarius Strobl #define CAS_HP_STATUS3_MASK_DLZ 0x00000100 /* Mask data length equal 0. */ 530119051cbSMarius Strobl #define CAS_HP_STATUS3_FRC_TNPC 0x00000200 /* Force TCP no payload chk. */ 531119051cbSMarius Strobl #define CAS_HP_STATUS3_JMBHS_EN 0x00000400 /* jumbo header split enable */ 532119051cbSMarius Strobl #define CAS_HP_STATUS3_BWO_REAS 0x00000800 /* batching w/o reassembly */ 533119051cbSMarius Strobl #define CAS_HP_STATUS3_FRC_DROP 0x00001000 /* force drop */ 534119051cbSMarius Strobl #define CAS_HP_STATUS3_AR1_MASK 0x000fe000 /* accu_R1 */ 535119051cbSMarius Strobl #define CAS_HP_STATUS3_AR1_SHFT 13 536119051cbSMarius Strobl #define CAS_HP_STATUS3_CSO_MASK 0x07f00000 /* checksum start offset */ 537119051cbSMarius Strobl #define CAS_HP_STATUS3_CSO_SHFT 19 538119051cbSMarius Strobl #define CAS_HP_STATUS3_AR2_MASK 0xf0000000 /* accu_R2[3:0] */ 539119051cbSMarius Strobl #define CAS_HP_STATUS3_AR2_SHFT 28 540119051cbSMarius Strobl 541119051cbSMarius Strobl #define CAS_HP_RAM_BIST_START 0x00000001 /* Start RAM BIST process. */ 542119051cbSMarius Strobl #define CAS_HP_RAM_BIST_SUMMARY 0x00000002 /* all RAM okay */ 543119051cbSMarius Strobl #define CAS_HP_RAM_BIST_TCPSEQ 0x00020000 /* TCP seqeunce RAM okay */ 544119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID31 0x00040000 /* flow ID RAM3 bank 1 okay */ 545119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID21 0x00080000 /* flow ID RAM2 bank 1 okay */ 546119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID11 0x00100000 /* flow ID RAM1 bank 1 okay */ 547119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID01 0x00200000 /* flow ID RAM0 bank 1 okay */ 548119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID30 0x00400000 /* flow ID RAM3 bank 0 okay */ 549119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID20 0x00800000 /* flow ID RAM2 bank 0 okay */ 550119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID10 0x01000000 /* flow ID RAM1 bank 0 okay */ 551119051cbSMarius Strobl #define CAS_HP_RAM_BIST_FID00 0x02000000 /* flow ID RAM0 bank 0 okay */ 552119051cbSMarius Strobl #define CAS_HP_RAM_BIST_AGE1 0x04000000 /* aging RAM1 okay */ 553119051cbSMarius Strobl #define CAS_HP_RAM_BIST_AGE0 0x08000000 /* aging RAM0 okay */ 554119051cbSMarius Strobl #define CAS_HP_RAM_BIST_IR2 0x10000000 /* instruction RAM2 okay */ 555119051cbSMarius Strobl #define CAS_HP_RAM_BIST_IR1 0x20000000 /* instruction RAM1 okay */ 556119051cbSMarius Strobl #define CAS_HP_RAM_BIST_IR0 0x40000000 /* instruction RAM0 okay */ 557119051cbSMarius Strobl #define CAS_HP_RAM_BIST_DR 0x80000000 /* data RAM okay */ 558119051cbSMarius Strobl 559119051cbSMarius Strobl /* MAC registers */ 560119051cbSMarius Strobl #define CAS_MAC_TXRESET 0x6000 /* TX MAC software reset command */ 561119051cbSMarius Strobl #define CAS_MAC_RXRESET 0x6004 /* RX MAC software reset command */ 562119051cbSMarius Strobl #define CAS_MAC_SPC 0x6008 /* send PAUSE command */ 563119051cbSMarius Strobl #define CAS_MAC_TX_STATUS 0x6010 /* TX MAC status */ 564119051cbSMarius Strobl #define CAS_MAC_RX_STATUS 0x6014 /* RX MAC status */ 565119051cbSMarius Strobl #define CAS_MAC_CTRL_STATUS 0x6018 /* MAC control status */ 566119051cbSMarius Strobl #define CAS_MAC_TX_MASK 0x6020 /* TX MAC mask */ 567119051cbSMarius Strobl #define CAS_MAC_RX_MASK 0x6024 /* RX MAC mask */ 568119051cbSMarius Strobl #define CAS_MAC_CTRL_MASK 0x6028 /* MAC control mask */ 569119051cbSMarius Strobl #define CAS_MAC_TX_CONF 0x6030 /* TX MAC configuration */ 570119051cbSMarius Strobl #define CAS_MAC_RX_CONF 0x6034 /* RX MAC configuration */ 571119051cbSMarius Strobl #define CAS_MAC_CTRL_CONF 0x6038 /* MAC control configuration */ 572119051cbSMarius Strobl #define CAS_MAC_XIF_CONF 0x603c /* XIF configuration */ 573119051cbSMarius Strobl #define CAS_MAC_IPG0 0x6040 /* inter packet gap 0 */ 574119051cbSMarius Strobl #define CAS_MAC_IPG1 0x6044 /* inter packet gap 1 */ 575119051cbSMarius Strobl #define CAS_MAC_IPG2 0x6048 /* inter packet gap 2 */ 576119051cbSMarius Strobl #define CAS_MAC_SLOT_TIME 0x604c /* slot time */ 577119051cbSMarius Strobl #define CAS_MAC_MIN_FRAME 0x6050 /* minimum frame size */ 578119051cbSMarius Strobl #define CAS_MAC_MAX_BF 0x6054 /* maximum bust and frame size */ 579119051cbSMarius Strobl #define CAS_MAC_PREAMBLE_LEN 0x6058 /* PA size */ 580119051cbSMarius Strobl #define CAS_MAC_JAM_SIZE 0x605c /* jam size */ 581119051cbSMarius Strobl #define CAS_MAC_ATTEMPT_LIMIT 0x6060 /* attempt limit */ 582119051cbSMarius Strobl #define CAS_MAC_CTRL_TYPE 0x6064 /* MAC control type */ 583119051cbSMarius Strobl #define CAS_MAC_ADDR0 0x6080 /* MAC address 0 */ 584119051cbSMarius Strobl #define CAS_MAC_ADDR1 0x6084 /* MAC address 1 */ 585119051cbSMarius Strobl #define CAS_MAC_ADDR2 0x6088 /* MAC address 2 */ 586119051cbSMarius Strobl #define CAS_MAC_ADDR3 0x608c /* MAC address 3 */ 587119051cbSMarius Strobl #define CAS_MAC_ADDR4 0x6090 /* MAC address 4 */ 588119051cbSMarius Strobl #define CAS_MAC_ADDR5 0x6094 /* MAC address 5 */ 589119051cbSMarius Strobl #define CAS_MAC_ADDR6 0x6098 /* MAC address 6 */ 590119051cbSMarius Strobl #define CAS_MAC_ADDR7 0x609c /* MAC address 7 */ 591119051cbSMarius Strobl #define CAS_MAC_ADDR8 0x60a0 /* MAC address 8 */ 592119051cbSMarius Strobl #define CAS_MAC_ADDR9 0x60a4 /* MAC address 9 */ 593119051cbSMarius Strobl #define CAS_MAC_ADDR10 0x60a8 /* MAC address 10 */ 594119051cbSMarius Strobl #define CAS_MAC_ADDR11 0x60ac /* MAC address 11 */ 595119051cbSMarius Strobl #define CAS_MAC_ADDR12 0x60b0 /* MAC address 12 */ 596119051cbSMarius Strobl #define CAS_MAC_ADDR13 0x60b4 /* MAC address 13 */ 597119051cbSMarius Strobl #define CAS_MAC_ADDR14 0x60b8 /* MAC address 14 */ 598119051cbSMarius Strobl #define CAS_MAC_ADDR15 0x60bc /* MAC address 15 */ 599119051cbSMarius Strobl #define CAS_MAC_ADDR16 0x60c0 /* MAC address 16 */ 600119051cbSMarius Strobl #define CAS_MAC_ADDR17 0x60c4 /* MAC address 17 */ 601119051cbSMarius Strobl #define CAS_MAC_ADDR18 0x60c8 /* MAC address 18 */ 602119051cbSMarius Strobl #define CAS_MAC_ADDR19 0x60cc /* MAC address 19 */ 603119051cbSMarius Strobl #define CAS_MAC_ADDR20 0x60d0 /* MAC address 20 */ 604119051cbSMarius Strobl #define CAS_MAC_ADDR21 0x60d4 /* MAC address 21 */ 605119051cbSMarius Strobl #define CAS_MAC_ADDR22 0x60d8 /* MAC address 22 */ 606119051cbSMarius Strobl #define CAS_MAC_ADDR23 0x60dc /* MAC address 23 */ 607119051cbSMarius Strobl #define CAS_MAC_ADDR24 0x60e0 /* MAC address 24 */ 608119051cbSMarius Strobl #define CAS_MAC_ADDR25 0x60e4 /* MAC address 25 */ 609119051cbSMarius Strobl #define CAS_MAC_ADDR26 0x60e8 /* MAC address 26 */ 610119051cbSMarius Strobl #define CAS_MAC_ADDR27 0x60ec /* MAC address 27 */ 611119051cbSMarius Strobl #define CAS_MAC_ADDR28 0x60f0 /* MAC address 28 */ 612119051cbSMarius Strobl #define CAS_MAC_ADDR29 0x60f4 /* MAC address 29 */ 613119051cbSMarius Strobl #define CAS_MAC_ADDR30 0x60f8 /* MAC address 30 */ 614119051cbSMarius Strobl #define CAS_MAC_ADDR31 0x60fc /* MAC address 31 */ 615119051cbSMarius Strobl #define CAS_MAC_ADDR32 0x6100 /* MAC address 32 */ 616119051cbSMarius Strobl #define CAS_MAC_ADDR33 0x6104 /* MAC address 33 */ 617119051cbSMarius Strobl #define CAS_MAC_ADDR34 0x6108 /* MAC address 34 */ 618119051cbSMarius Strobl #define CAS_MAC_ADDR35 0x610c /* MAC address 35 */ 619119051cbSMarius Strobl #define CAS_MAC_ADDR36 0x6110 /* MAC address 36 */ 620119051cbSMarius Strobl #define CAS_MAC_ADDR37 0x6114 /* MAC address 37 */ 621119051cbSMarius Strobl #define CAS_MAC_ADDR38 0x6118 /* MAC address 38 */ 622119051cbSMarius Strobl #define CAS_MAC_ADDR39 0x611c /* MAC address 39 */ 623119051cbSMarius Strobl #define CAS_MAC_ADDR40 0x6120 /* MAC address 40 */ 624119051cbSMarius Strobl #define CAS_MAC_ADDR41 0x6124 /* MAC address 41 */ 625119051cbSMarius Strobl #define CAS_MAC_ADDR42 0x6128 /* MAC address 42 */ 626119051cbSMarius Strobl #define CAS_MAC_ADDR43 0x612c /* MAC address 43 */ 627119051cbSMarius Strobl #define CAS_MAC_ADDR44 0x6130 /* MAC address 44 */ 628119051cbSMarius Strobl #define CAS_MAC_AFILTER0 0x614c /* address filter 0 */ 629119051cbSMarius Strobl #define CAS_MAC_AFILTER1 0x6150 /* address filter 1 */ 630119051cbSMarius Strobl #define CAS_MAC_AFILTER2 0x6154 /* address filter 2 */ 631119051cbSMarius Strobl #define CAS_MAC_AFILTER_MASK1_2 0x6158 /* address filter 2 & 1 mask*/ 632119051cbSMarius Strobl #define CAS_MAC_AFILTER_MASK0 0x615c /* address filter 0 mask */ 633119051cbSMarius Strobl #define CAS_MAC_HASH0 0x6160 /* hash table 0 */ 634119051cbSMarius Strobl #define CAS_MAC_HASH1 0x6164 /* hash table 1 */ 635119051cbSMarius Strobl #define CAS_MAC_HASH2 0x6168 /* hash table 2 */ 636119051cbSMarius Strobl #define CAS_MAC_HASH3 0x616c /* hash table 3 */ 637119051cbSMarius Strobl #define CAS_MAC_HASH4 0x6170 /* hash table 4 */ 638119051cbSMarius Strobl #define CAS_MAC_HASH5 0x6174 /* hash table 5 */ 639119051cbSMarius Strobl #define CAS_MAC_HASH6 0x6178 /* hash table 6 */ 640119051cbSMarius Strobl #define CAS_MAC_HASH7 0x617c /* hash table 7 */ 641119051cbSMarius Strobl #define CAS_MAC_HASH8 0x6180 /* hash table 8 */ 642119051cbSMarius Strobl #define CAS_MAC_HASH9 0x6184 /* hash table 9 */ 643119051cbSMarius Strobl #define CAS_MAC_HASH10 0x6188 /* hash table 10 */ 644119051cbSMarius Strobl #define CAS_MAC_HASH11 0x618c /* hash table 11 */ 645119051cbSMarius Strobl #define CAS_MAC_HASH12 0x6190 /* hash table 12 */ 646119051cbSMarius Strobl #define CAS_MAC_HASH13 0x6194 /* hash table 13 */ 647119051cbSMarius Strobl #define CAS_MAC_HASH14 0x6198 /* hash table 14 */ 648119051cbSMarius Strobl #define CAS_MAC_HASH15 0x619c /* hash table 15 */ 649119051cbSMarius Strobl #define CAS_MAC_NORM_COLL_CNT 0x61a0 /* normal collision counter */ 650119051cbSMarius Strobl #define CAS_MAC_FIRST_COLL_CNT 0x61a4 /* 1st attempt suc. collision counter */ 651119051cbSMarius Strobl #define CAS_MAC_EXCESS_COLL_CNT 0x61a8 /* excess collision counter */ 652119051cbSMarius Strobl #define CAS_MAC_LATE_COLL_CNT 0x61ac /* late collision counter */ 653119051cbSMarius Strobl #define CAS_MAC_DEFER_TMR_CNT 0x61b0 /* defer timer */ 654119051cbSMarius Strobl #define CAS_MAC_PEAK_ATTEMPTS 0x61b4 /* peak attempts */ 655119051cbSMarius Strobl #define CAS_MAC_RX_FRAME_COUNT 0x61b8 /* receive frame counter */ 656119051cbSMarius Strobl #define CAS_MAC_RX_LEN_ERR_CNT 0x61bc /* length error counter */ 657119051cbSMarius Strobl #define CAS_MAC_RX_ALIGN_ERR 0x61c0 /* alignment error counter */ 658119051cbSMarius Strobl #define CAS_MAC_RX_CRC_ERR_CNT 0x61c4 /* FCS error counter */ 659119051cbSMarius Strobl #define CAS_MAC_RX_CODE_VIOL 0x61c8 /* RX code violation error counter */ 660119051cbSMarius Strobl #define CAS_MAC_RANDOM_SEED 0x61cc /* random number seed */ 661119051cbSMarius Strobl #define CAS_MAC_MAC_STATE 0x61d0 /* MAC state machine */ 662119051cbSMarius Strobl 663119051cbSMarius Strobl #define CAS_MAC_SPC_TIME_MASK 0x0000ffff /* PAUSE time value */ 664119051cbSMarius Strobl #define CAS_MAC_SPC_TIME_SHFT 0 665119051cbSMarius Strobl #define CAS_MAC_SPC_SEND 0x00010000 /* Send PAUSE frame. */ 666119051cbSMarius Strobl 667119051cbSMarius Strobl /* CAS_MAC_TX_STATUS and CAS_MAC_TX_MASK register bits */ 668119051cbSMarius Strobl #define CAS_MAC_TX_FRAME_XMTD 0x00000001 /* Frame transmitted. */ 669119051cbSMarius Strobl #define CAS_MAC_TX_UNDERRUN 0x00000002 /* TX data starvation */ 670119051cbSMarius Strobl #define CAS_MAC_TX_MAX_PKT_ERR 0x00000004 /* frame > CAS_MAC_MAX_FRAME */ 671119051cbSMarius Strobl #define CAS_MAC_TX_NCC_EXP 0x00000008 /* normal coll. counter wrap */ 672119051cbSMarius Strobl #define CAS_MAC_TX_ECC_EXP 0x00000010 /* excess coll. counter wrap */ 673119051cbSMarius Strobl #define CAS_MAC_TX_LCC_EXP 0x00000020 /* late coll. counter wrap */ 674119051cbSMarius Strobl #define CAS_MAC_TX_FCC_EXP 0x00000040 /* 1st coll. counter wrap */ 675119051cbSMarius Strobl #define CAS_MAC_TX_DEFER_EXP 0x00000080 /* defer timer wrap */ 676119051cbSMarius Strobl #define CAS_MAC_TX_PEAK_EXP 0x00000100 /* peak attempts counter wrap */ 677119051cbSMarius Strobl 678119051cbSMarius Strobl /* CAS_MAC_RX_STATUS and CAS_MAC_RX_MASK register bits */ 679119051cbSMarius Strobl #define CAS_MAC_RX_FRAME_RCVD 0x00000001 /* Frame received. */ 680119051cbSMarius Strobl #define CAS_MAC_RX_OVERFLOW 0x00000002 /* RX FIFO overflow */ 681119051cbSMarius Strobl #define CAS_MAC_RX_FRAME_EXP 0x00000004 /* RX frame counter wrap */ 682119051cbSMarius Strobl #define CAS_MAC_RX_ALIGN_EXP 0x00000008 /* alignment error cntr. wrap */ 683119051cbSMarius Strobl #define CAS_MAC_RX_CRC_EXP 0x00000010 /* CRC error counter wrap */ 684119051cbSMarius Strobl #define CAS_MAC_RX_LEN_EXP 0x00000020 /* length error counter wrap */ 685119051cbSMarius Strobl #define CAS_MAC_RX_VIOL_EXP 0x00000040 /* code violation cntr. wrap */ 686119051cbSMarius Strobl 687119051cbSMarius Strobl /* CAS_MAC_CTRL_STATUS and CAS_MAC_CTRL_MASK register bits */ 688119051cbSMarius Strobl #define CAS_MAC_CTRL_PAUSE_RCVD 0x00000001 /* PAUSE received. */ 689119051cbSMarius Strobl #define CAS_MAC_CTRL_PAUSE 0x00000002 /* PAUSE state entered. */ 690119051cbSMarius Strobl #define CAS_MAC_CTRL_NON_PAUSE 0x00000004 /* PAUSE state left. */ 691119051cbSMarius Strobl 692119051cbSMarius Strobl #define CAS_MAC_CTRL_STATUS_PT_MASK 0xffff0000 /* PAUSE time */ 693119051cbSMarius Strobl #define CAS_MAC_CTRL_STATUS_PT_SHFT 16 694119051cbSMarius Strobl 695119051cbSMarius Strobl #define CAS_MAC_TX_CONF_EN 0x00000001 /* TX enable */ 696119051cbSMarius Strobl #define CAS_MAC_TX_CONF_ICARR 0x00000002 /* Ignore carrier sense. */ 697119051cbSMarius Strobl #define CAS_MAC_TX_CONF_ICOLLIS 0x00000004 /* Ignore collisions. */ 698119051cbSMarius Strobl #define CAS_MAC_TX_CONF_EN_IPG0 0x00000008 /* extend RX-to-TX IPG */ 699119051cbSMarius Strobl #define CAS_MAC_TX_CONF_NGU 0x00000010 /* Never give up. */ 700119051cbSMarius Strobl #define CAS_MAC_TX_CONF_NGUL 0x00000020 /* never give up limit */ 701119051cbSMarius Strobl #define CAS_MAC_TX_CONF_NBOFF 0x00000040 /* Disable backoff algorithm. */ 702119051cbSMarius Strobl #define CAS_MAC_TX_CONF_SDOWN 0x00000080 /* CSMA/CD slow down */ 703119051cbSMarius Strobl #define CAS_MAC_TX_CONF_NO_FCS 0x00000100 /* Don't generate FCS. */ 704119051cbSMarius Strobl #define CAS_MAC_TX_CONF_CARR 0x00000200 /* carrier extension enable */ 705119051cbSMarius Strobl 706119051cbSMarius Strobl #define CAS_MAC_RX_CONF_EN 0x00000001 /* RX enable */ 707119051cbSMarius Strobl #define CAS_MAC_RX_CONF_STRPPAD 0x00000002 /* Must not be set. */ 708119051cbSMarius Strobl #define CAS_MAC_RX_CONF_STRPFCS 0x00000004 /* Strip FCS bytes. */ 709119051cbSMarius Strobl #define CAS_MAC_RX_CONF_PROMISC 0x00000008 /* promiscuous mode enable */ 710119051cbSMarius Strobl #define CAS_MAC_RX_CONF_PGRP 0x00000010 /* promiscuous group mode en. */ 711119051cbSMarius Strobl #define CAS_MAC_RX_CONF_HFILTER 0x00000020 /* hash filter enable */ 712119051cbSMarius Strobl #define CAS_MAC_RX_CONF_AFILTER 0x00000040 /* address filter enable */ 713119051cbSMarius Strobl #define CAS_MAC_RX_CONF_DIS_DOE 0x00000080 /* disable discard on error */ 714119051cbSMarius Strobl #define CAS_MAC_RX_CONF_CARR 0x00000100 /* carrier extension enable */ 715119051cbSMarius Strobl 716119051cbSMarius Strobl #define CAS_MAC_CTRL_CONF_TXP 0x00000001 /* send PAUSE enable */ 717119051cbSMarius Strobl #define CAS_MAC_CTRL_CONF_RXP 0x00000002 /* receive PAUSE enable */ 718119051cbSMarius Strobl #define CAS_MAC_CTRL_CONF_PASSP 0x00000004 /* Pass PAUSE up to RX DMA. */ 719119051cbSMarius Strobl 720119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_TX_OE 0x00000001 /* MII TX output drivers en. */ 721119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_ILBK 0x00000002 /* MII internal loopback en. */ 722119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_NOECHO 0x00000004 /* Disable echo. */ 723119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_GMII 0x00000008 /* GMII (vs. MII) mode enable */ 724119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_BUF_OE 0x00000010 /* MII_BUF_OE enable */ 725119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_LNKLED 0x00000020 /* Force LINKLED# active. */ 726119051cbSMarius Strobl #define CAS_MAC_XIF_CONF_FDXLED 0x00000040 /* Force FDPLXLED# active. */ 727119051cbSMarius Strobl 728119051cbSMarius Strobl /* 729119051cbSMarius Strobl * The value of CAS_MAC_SLOT_TIME specifies the PAUSE time unit and depends 730119051cbSMarius Strobl * on whether carrier extension is enabled. 731119051cbSMarius Strobl */ 732119051cbSMarius Strobl #define CAS_MAC_SLOT_TIME_CARR 0x200 /* slot time for carr. ext. */ 733119051cbSMarius Strobl #define CAS_MAC_SLOT_TIME_NORM 0x40 /* slot time otherwise */ 734119051cbSMarius Strobl 735119051cbSMarius Strobl #define CAS_MAC_MAX_BF_FRM_MASK 0x00007fff /* maximum frame size */ 736119051cbSMarius Strobl #define CAS_MAC_MAX_BF_FRM_SHFT 0 737119051cbSMarius Strobl #define CAS_MAC_MAX_BF_BST_MASK 0x3fff0000 /* maximum burst size */ 738119051cbSMarius Strobl #define CAS_MAC_MAX_BF_BST_SHFT 16 739119051cbSMarius Strobl 740119051cbSMarius Strobl /* 741119051cbSMarius Strobl * MIF registers 742119051cbSMarius Strobl * The bit-bang registers use the low bit only. 743119051cbSMarius Strobl */ 744119051cbSMarius Strobl #define CAS_MIF_BB_CLOCK 0x6200 /* MIF bit-bang clock */ 745119051cbSMarius Strobl #define CAS_MIF_BB_DATA 0x6204 /* MIF bit-bang data */ 746119051cbSMarius Strobl #define CAS_MIF_BB_OUTPUT_EN 0x6208 /* MIF bit-bang output enable */ 747119051cbSMarius Strobl #define CAS_MIF_FRAME 0x620c /* MIF frame/output */ 748119051cbSMarius Strobl #define CAS_MIF_CONF 0x6210 /* MIF configuration */ 749119051cbSMarius Strobl #define CAS_MIF_MASK 0x6214 /* MIF mask */ 750119051cbSMarius Strobl #define CAS_MIF_STATUS 0x6218 /* MIF status */ 751119051cbSMarius Strobl #define CAS_MIF_SM 0x621c /* MIF state machine */ 752119051cbSMarius Strobl 753119051cbSMarius Strobl #define CAS_MIF_FRAME_DATA 0x0000ffff /* instruction payload */ 754119051cbSMarius Strobl #define CAS_MIF_FRAME_TA_LSB 0x00010000 /* turn around LSB */ 755119051cbSMarius Strobl #define CAS_MIF_FRAME_TA_MSB 0x00020000 /* turn around MSB */ 756119051cbSMarius Strobl #define CAS_MIF_FRAME_REG_MASK 0x007c0000 /* register address */ 757119051cbSMarius Strobl #define CAS_MIF_FRAME_REG_SHFT 18 758119051cbSMarius Strobl #define CAS_MIF_FRAME_PHY_MASK 0x0f800000 /* PHY address */ 759119051cbSMarius Strobl #define CAS_MIF_FRAME_PHY_SHFT 23 760119051cbSMarius Strobl #define CAS_MIF_FRAME_OP_WRITE 0x10000000 /* write opcode */ 761119051cbSMarius Strobl #define CAS_MIF_FRAME_OP_READ 0x20000000 /* read opcode */ 762119051cbSMarius Strobl #define CAS_MIF_FRAME_OP_MASK \ 763119051cbSMarius Strobl (CAS_MIF_FRAME_OP_WRITE | CAS_MIF_FRAME_OP_READ) 764119051cbSMarius Strobl #define CAS_MIF_FRAME_ST 0x40000000 /* start of frame */ 765119051cbSMarius Strobl #define CAS_MIF_FRAME_ST_MASK 0xc0000000 /* start of frame */ 766119051cbSMarius Strobl 767119051cbSMarius Strobl #define CAS_MIF_FRAME_READ \ 768119051cbSMarius Strobl (CAS_MIF_FRAME_TA_MSB | CAS_MIF_FRAME_OP_READ | CAS_MIF_FRAME_ST) 769119051cbSMarius Strobl #define CAS_MIF_FRAME_WRITE \ 770119051cbSMarius Strobl (CAS_MIF_FRAME_TA_MSB | CAS_MIF_FRAME_OP_WRITE | CAS_MIF_FRAME_ST) 771119051cbSMarius Strobl 772119051cbSMarius Strobl #define CAS_MIF_CONF_PHY_SELECT 0x00000001 /* PHY select, 0: MDIO_0 */ 773119051cbSMarius Strobl #define CAS_MIF_CONF_POLL_EN 0x00000002 /* polling mechanism enable */ 774119051cbSMarius Strobl #define CAS_MIF_CONF_BB_MODE 0x00000004 /* bit-bang mode enable */ 775119051cbSMarius Strobl #define CAS_MIF_CONF_PREG_MASK 0x000000f8 /* polled register */ 776119051cbSMarius Strobl #define CAS_MIF_CONF_PREG_SHFT 3 777119051cbSMarius Strobl #define CAS_MIF_CONF_MDI0 0x00000100 /* MDIO_0 data/attached */ 778119051cbSMarius Strobl #define CAS_MIF_CONF_MDI1 0x00000200 /* MDIO_1 data/attached */ 779119051cbSMarius Strobl #define CAS_MIF_CONF_PPHY_MASK 0x00007c00 /* polled PHY */ 780119051cbSMarius Strobl #define CAS_MIF_CONF_PPHY_SHFT 10 781119051cbSMarius Strobl 782119051cbSMarius Strobl /* CAS_MIF_MASK and CAS_MIF_STATUS bits */ 783119051cbSMarius Strobl #define CAS_MIF_POLL_STATUS_MASK 0x0000ffff /* polling status */ 784119051cbSMarius Strobl #define CAS_MIF_POLL_STATUS_SHFT 0 785119051cbSMarius Strobl #define CAS_MIF_POLL_DATA_MASK 0xffff0000 /* polling data */ 786119051cbSMarius Strobl #define CAS_MIF_POLL_DATA_SHFT 8 787119051cbSMarius Strobl 788119051cbSMarius Strobl #define CAS_MIF_SM_CTRL_MASK 0x00000007 /* ctrl. state machine state */ 789119051cbSMarius Strobl #define CAS_MIF_SM_CTRL_SHFT 0 790119051cbSMarius Strobl #define CAS_MIF_SM_EXEC_MASK 0x00000060 /* exec. state machine state */ 791119051cbSMarius Strobl 792119051cbSMarius Strobl /* PCS/Serialink registers */ 793119051cbSMarius Strobl #define CAS_PCS_CTRL 0x9000 /* PCS MII control (PCS "BMCR") */ 794119051cbSMarius Strobl #define CAS_PCS_STATUS 0x9004 /* PCS MII status (PCS "BMSR") */ 795119051cbSMarius Strobl #define CAS_PCS_ANAR 0x9008 /* PCS MII advertisement */ 796119051cbSMarius Strobl #define CAS_PCS_ANLPAR 0x900c /* PCS MII link partner ability */ 797119051cbSMarius Strobl #define CAS_PCS_CONF 0x9010 /* PCS configuration */ 798119051cbSMarius Strobl #define CAS_PCS_SM 0x9014 /* PCS state machine */ 799119051cbSMarius Strobl #define CAS_PCS_INTR_STATUS 0x9018 /* PCS interrupt status */ 800119051cbSMarius Strobl #define CAS_PCS_DATAPATH 0x9050 /* datapath mode */ 801119051cbSMarius Strobl #define CAS_PCS_SERDES_CTRL 0x9054 /* SERDES control */ 802119051cbSMarius Strobl #define CAS_PCS_OUTPUT_SELECT 0x9058 /* shared output select */ 803119051cbSMarius Strobl #define CAS_PCS_SERDES_STATUS 0x905c /* SERDES state */ 804119051cbSMarius Strobl #define CAS_PCS_PKT_CNT 0x9060 /* PCS packet counter */ 805119051cbSMarius Strobl 806119051cbSMarius Strobl #define CAS_PCS_CTRL_1000M 0x00000040 /* 1000Mbps speed select */ 807119051cbSMarius Strobl #define CAS_PCS_CTRL_COLL_TEST 0x00000080 /* collision test */ 808119051cbSMarius Strobl #define CAS_PCS_CTRL_FDX 0x00000100 /* full-duplex, always 0 */ 809119051cbSMarius Strobl #define CAS_PCS_CTRL_RANEG 0x00000200 /* restart auto-negotiation */ 810119051cbSMarius Strobl #define CAS_PCS_CTRL_ISOLATE 0x00000400 /* isolate PHY from MII */ 811119051cbSMarius Strobl #define CAS_PCS_CTRL_POWERDOWN 0x00000800 /* power down */ 812119051cbSMarius Strobl #define CAS_PCS_CTRL_ANEG_EN 0x00001000 /* auto-negotiation enable */ 813119051cbSMarius Strobl #define CAS_PCS_CTRL_10_100M 0x00002000 /* 10/100Mbps speed select */ 814119051cbSMarius Strobl #define CAS_PCS_CTRL_RESET 0x00008000 /* Reset PCS. */ 815119051cbSMarius Strobl 816119051cbSMarius Strobl #define CAS_PCS_STATUS_EXTCAP 0x00000001 /* extended capability */ 817119051cbSMarius Strobl #define CAS_PCS_STATUS_JABBER 0x00000002 /* jabber condition detected */ 818119051cbSMarius Strobl #define CAS_PCS_STATUS_LINK 0x00000004 /* link status */ 819119051cbSMarius Strobl #define CAS_PCS_STATUS_ANEG_ABL 0x00000008 /* auto-negotiation ability */ 820119051cbSMarius Strobl #define CAS_PCS_STATUS_REM_FLT 0x00000010 /* remote fault detected */ 821119051cbSMarius Strobl #define CAS_PCS_STATUS_ANEG_CPT 0x00000020 /* auto-negotiate complete */ 822119051cbSMarius Strobl #define CAS_PCS_STATUS_EXTENDED 0x00000100 /* extended status */ 823119051cbSMarius Strobl 824119051cbSMarius Strobl /* CAS_PCS_ANAR and CAS_PCS_ANLPAR register bits */ 825119051cbSMarius Strobl #define CAS_PCS_ANEG_FDX 0x00000020 /* full-duplex */ 826119051cbSMarius Strobl #define CAS_PCS_ANEG_HDX 0x00000040 /* half-duplex */ 827119051cbSMarius Strobl #define CAS_PCS_ANEG_PAUSE 0x00000080 /* symmetric PAUSE */ 828119051cbSMarius Strobl #define CAS_PCS_ANEG_ASM_DIR 0x00000100 /* asymmetric PAUSE */ 829119051cbSMarius Strobl #define CAS_PCS_ANEG_RFLT_FAIL 0x00001000 /* remote fault - fail */ 830119051cbSMarius Strobl #define CAS_PCS_ANEG_RFLT_OFF 0x00002000 /* remote fault - off-line */ 831119051cbSMarius Strobl #define CAS_PCS_ANEG_RFLT_MASK \ 832119051cbSMarius Strobl (CAS_PCS_ANEG_RFLT_FAIL | CAS_PCS_ANEG_RFLT_OFF) 833119051cbSMarius Strobl #define CAS_PCS_ANEG_ACK 0x00004000 /* acknowledge */ 834119051cbSMarius Strobl #define CAS_PCS_ANEG_NEXT_PAGE 0x00008000 /* next page */ 835119051cbSMarius Strobl 836119051cbSMarius Strobl #define CAS_PCS_CONF_EN 0x00000001 /* Enable PCS. */ 837119051cbSMarius Strobl #define CAS_PCS_CONF_SDO 0x00000002 /* signal detect override */ 838119051cbSMarius Strobl #define CAS_PCS_CONF_SDL 0x00000004 /* signal detect active-low */ 839119051cbSMarius Strobl #define CAS_PCS_CONF_JS_NORM 0x00000000 /* jitter study - normal op. */ 840119051cbSMarius Strobl #define CAS_PCS_CONF_JS_HF 0x00000008 /* jitter study - HF test */ 841119051cbSMarius Strobl #define CAS_PCS_CONF_JS_LF 0x00000010 /* jitter study - LF test */ 842119051cbSMarius Strobl #define CAS_PCS_CONF_JS_MASK (CAS_PCS_CONF_JS_HF | CAS_PCS_CONF_JS_LF) 843119051cbSMarius Strobl #define CAS_PCS_CONF_ANEG_TO 0x00000020 /* auto-neg. timer override */ 844119051cbSMarius Strobl 845119051cbSMarius Strobl #define CAS_PCS_SM_TX_CTRL_MASK 0x0000000f /* TX control state */ 846119051cbSMarius Strobl #define CAS_PCS_SM_TX_CTRL_SHFT 0 847119051cbSMarius Strobl #define CAS_PCS_SM_RX_CTRL_MASK 0x000000f0 /* RX control state */ 848119051cbSMarius Strobl #define CAS_PCS_SM_RX_CTRL_SHFT 4 849119051cbSMarius Strobl #define CAS_PCS_SM_WSYNC_MASK 0x00000700 /* word sync. state */ 850119051cbSMarius Strobl #define CAS_PCS_SM_WSYNC_SHFT 8 851119051cbSMarius Strobl #define CAS_PCS_SM_SEQ_MASK 0x00001800 /* sequence detection state */ 852119051cbSMarius Strobl #define CAS_PCS_SM_SEQ_SHFT 11 853119051cbSMarius Strobl #define CAS_PCS_SM_LINK_UP 0x00016000 854119051cbSMarius Strobl #define CAS_PCS_SM_LINK_MASK 0x0001e000 /* link configuration state */ 855119051cbSMarius Strobl #define CAS_PCS_SM_LINK_SHFT 13 856119051cbSMarius Strobl #define CAS_PCS_SM_LOSS_C 0x00100000 /* link-loss due to C codes */ 857119051cbSMarius Strobl #define CAS_PCS_SM_LOSS_SYNC 0x00200000 /* link-loss due to sync-loss */ 858119051cbSMarius Strobl #define CAS_PCS_SM_LOS 0x00400000 /* loss of signal */ 859119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_BREAK 0x01000000 /* no link due to breaklink */ 860119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_SERDES 0x02000000 /* no link due to SERDES */ 861119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_C 0x04000000 /* no link due to bad C codes */ 862119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_SYNC 0x08000000 /* no link due to word sync. */ 863119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_WAIT_C 0x10000000 /* no link, waiting for ack. */ 864119051cbSMarius Strobl #define CAS_PCS_SM_NLINK_NIDLE 0x20000000 /* no link due to no idle */ 865119051cbSMarius Strobl 866119051cbSMarius Strobl /* 867119051cbSMarius Strobl * CAS_PCS_INTR_STATUS has no corresponding mask register. It can only 868119051cbSMarius Strobl * be masked with CAS_INTR_PCS_INT. 869119051cbSMarius Strobl */ 870119051cbSMarius Strobl #define CAS_PCS_INTR_LINK 0x00000004 /* link status change */ 871119051cbSMarius Strobl 872119051cbSMarius Strobl #define CAS_PCS_DATAPATH_MII 0x00000001 /* GMII/MII and MAC loopback */ 873119051cbSMarius Strobl #define CAS_PCS_DATAPATH_SERDES 0x00000002 /* SERDES via 10-bit */ 874119051cbSMarius Strobl 875119051cbSMarius Strobl #define CAS_PCS_SERDES_CTRL_LBK 0x00000001 /* loopback at 10-bit enable */ 876119051cbSMarius Strobl #define CAS_PCS_SERDES_CTRL_ESD 0x00000002 /* En. sync char. detection. */ 877119051cbSMarius Strobl #define CAS_PCS_SERDES_CTRL_LR 0x00000004 /* Lock to reference clock. */ 878119051cbSMarius Strobl 879119051cbSMarius Strobl #define CAS_PCS_SERDES_STATUS_T 0x00000000 /* Undergoing test. */ 880119051cbSMarius Strobl #define CAS_PCS_SERDES_STATUS_L 0x00000001 /* Waiting 500us w/ lockrefn. */ 881119051cbSMarius Strobl #define CAS_PCS_SERDES_STATUS_C 0x00000002 /* Waiting for comma detect. */ 882119051cbSMarius Strobl #define CAS_PCS_SERDES_STATUS_S 0x00000003 /* Receive data is sync. */ 883119051cbSMarius Strobl 884119051cbSMarius Strobl #define CAS_PCS_PKT_CNT_TX_MASK 0x000007ff /* TX packets */ 885119051cbSMarius Strobl #define CAS_PCS_PKT_CNT_TX_SHFT 0 886119051cbSMarius Strobl #define CAS_PCS_PKT_CNT_RX_MASK 0x07ff0000 /* RX packets */ 887119051cbSMarius Strobl #define CAS_PCS_PKT_CNT_RX_SHFT 16 888119051cbSMarius Strobl 889119051cbSMarius Strobl /* 890119051cbSMarius Strobl * PCI expansion ROM runtime access 891119051cbSMarius Strobl * Cassinis and Saturn map a 1MB space for the PCI expansion ROM as the 892119051cbSMarius Strobl * second half of the first register bank, although they only support up 893119051cbSMarius Strobl * to 64KB ROMs. 894119051cbSMarius Strobl */ 895119051cbSMarius Strobl #define CAS_PCI_ROM_OFFSET 0x100000 896119051cbSMarius Strobl #define CAS_PCI_ROM_SIZE 0x10000 897119051cbSMarius Strobl 898119051cbSMarius Strobl /* secondary local bus device */ 899119051cbSMarius Strobl #define CAS_SEC_LBDEV_OFFSET 0x180000 900119051cbSMarius Strobl #define CAS_SEC_LBDE_SIZE 0x7ffff 901119051cbSMarius Strobl 902119051cbSMarius Strobl /* wired PHY addresses */ 903119051cbSMarius Strobl #define CAS_PHYAD_INTERNAL 1 904119051cbSMarius Strobl #define CAS_PHYAD_EXTERNAL 0 905119051cbSMarius Strobl 906119051cbSMarius Strobl /* wired RX FIFO size in bytes */ 907119051cbSMarius Strobl #define CAS_RX_FIFO_SIZE 16 * 1024 908119051cbSMarius Strobl 909119051cbSMarius Strobl /* 910119051cbSMarius Strobl * descriptor ring structures 911119051cbSMarius Strobl */ 912119051cbSMarius Strobl struct cas_desc { 913119051cbSMarius Strobl uint64_t cd_flags; 914119051cbSMarius Strobl uint64_t cd_buf_ptr; 915119051cbSMarius Strobl }; 916119051cbSMarius Strobl 917119051cbSMarius Strobl /* 918119051cbSMarius Strobl * transmit flags 919119051cbSMarius Strobl * CAS_TD_CKSUM_START_MASK, CAS_TD_CKSUM_STUFF_MASK, CAS_TD_CKSUM_EN and 920119051cbSMarius Strobl * CAS_TD_INT_ME only need to be set in 1st descriptor of a frame. 921119051cbSMarius Strobl */ 922119051cbSMarius Strobl #define CAS_TD_BUF_LEN_MASK 0x0000000000003fffULL /* buffer length */ 923119051cbSMarius Strobl #define CAS_TD_BUF_LEN_SHFT 0 924119051cbSMarius Strobl #define CAS_TD_CKSUM_START_MASK 0x00000000001f8000ULL /* checksum start... */ 925119051cbSMarius Strobl #define CAS_TD_CKSUM_START_SHFT 15 /* ...offset */ 926119051cbSMarius Strobl #define CAS_TD_CKSUM_STUFF_MASK 0x000000001fe00000ULL /* checksum stuff... */ 927119051cbSMarius Strobl #define CAS_TD_CKSUM_STUFF_SHFT 21 /* ...offset */ 928119051cbSMarius Strobl #define CAS_TD_CKSUM_EN 0x0000000020000000ULL /* checksum enable */ 929119051cbSMarius Strobl #define CAS_TD_END_OF_FRAME 0x0000000040000000ULL /* last desc. of pkt. */ 930119051cbSMarius Strobl #define CAS_TD_START_OF_FRAME 0x0000000080000000ULL /* 1st desc. of pkt. */ 931119051cbSMarius Strobl #define CAS_TD_INT_ME 0x0000000100000000ULL /* intr. when in FIFO */ 932119051cbSMarius Strobl #define CAS_TD_NO_CRC 0x0000000200000000ULL /* Don't insert CRC. */ 933119051cbSMarius Strobl 934119051cbSMarius Strobl /* receive flags */ 935119051cbSMarius Strobl #define CAS_RD_BUF_INDEX_MASK 0x0000000000003fffULL /* data buffer index */ 936119051cbSMarius Strobl #define CAS_RD_BUF_INDEX_SHFT 0 937119051cbSMarius Strobl 938119051cbSMarius Strobl /* 939119051cbSMarius Strobl * receive completion ring structure 940119051cbSMarius Strobl */ 941119051cbSMarius Strobl struct cas_rx_comp { 942119051cbSMarius Strobl uint64_t crc_word1; 943119051cbSMarius Strobl uint64_t crc_word2; 944119051cbSMarius Strobl uint64_t crc_word3; 945119051cbSMarius Strobl uint64_t crc_word4; 946119051cbSMarius Strobl }; 947119051cbSMarius Strobl 948119051cbSMarius Strobl #define CAS_RC1_DATA_SIZE_MASK 0x0000000007ffe000ULL /* pkt. data length */ 949119051cbSMarius Strobl #define CAS_RC1_DATA_SIZE_SHFT 13 950119051cbSMarius Strobl #define CAS_RC1_DATA_OFF_MASK 0x000001fff8000000ULL /* data buffer offset */ 951119051cbSMarius Strobl #define CAS_RC1_DATA_OFF_SHFT 27 952119051cbSMarius Strobl #define CAS_RC1_DATA_INDEX_MASK 0x007ffe0000000000ULL /* data buffer index */ 953119051cbSMarius Strobl #define CAS_RC1_DATA_INDEX_SHFT 41 954119051cbSMarius Strobl #define CAS_RC1_SKIP_MASK 0x0180000000000000ULL /* entries to skip */ 955119051cbSMarius Strobl #define CAS_RC1_SKIP_SHFT 55 956119051cbSMarius Strobl #define CAS_RC1_RELEASE_NEXT 0x0200000000000000ULL /* last in reas. buf. */ 957119051cbSMarius Strobl #define CAS_RC1_SPLIT_PKT 0x0400000000000000ULL /* used 2 reas. buf. */ 958119051cbSMarius Strobl #define CAS_RC1_RELEASE_FLOW 0x0800000000000000ULL /* last pkt. of flow */ 959119051cbSMarius Strobl #define CAS_RC1_RELEASE_DATA 0x1000000000000000ULL /* reas. buf. full */ 960119051cbSMarius Strobl #define CAS_RC1_RELEASE_HDR 0x2000000000000000ULL /* header buf. full */ 961119051cbSMarius Strobl #define CAS_RC1_TYPE_HW 0x0000000000000000ULL /* owned by hardware */ 962119051cbSMarius Strobl #define CAS_RC1_TYPE_RSFB 0x4000000000000000ULL /* stale flow buf... */ 963119051cbSMarius Strobl #define CAS_RC1_TYPE_RNRP 0x8000000000000000ULL /* non-reas. pkt... */ 964119051cbSMarius Strobl #define CAS_RC1_TYPE_RFP 0xc000000000000000ULL /* flow packet... */ 965119051cbSMarius Strobl #define CAS_RC1_TYPE_MASK CAS_RC1_TYPE_RFP /* ...release */ 966119051cbSMarius Strobl #define CAS_RC1_TYPE_SHFT 62 967119051cbSMarius Strobl 968119051cbSMarius Strobl #define CAS_RC2_NEXT_INDEX_MASK 0x00000007ffe00000ULL /* next buf. of pkt. */ 969119051cbSMarius Strobl #define CAS_RC2_NEXT_INDEX_SHFT 21 970119051cbSMarius Strobl #define CAS_RC2_HDR_SIZE_MASK 0x00000ff800000000ULL /* header length */ 971119051cbSMarius Strobl #define CAS_RC2_HDR_SIZE_SHFT 35 972119051cbSMarius Strobl #define CAS_RC2_HDR_OFF_MASK 0x0003f00000000000ULL /* header buf. offset */ 973119051cbSMarius Strobl #define CAS_RC2_HDR_OFF_SHFT 44 974119051cbSMarius Strobl #define CAS_RC2_HDR_INDEX_MASK 0xfffc000000000000ULL /* header buf. index */ 975119051cbSMarius Strobl #define CAS_RC2_HDR_INDEX_SHFT 50 976119051cbSMarius Strobl 977119051cbSMarius Strobl #define CAS_RC3_SMALL_PKT 0x0000000000000001ULL /* pkt. <= 256 - SOFF */ 978119051cbSMarius Strobl #define CAS_RC3_JUMBO_PKT 0x0000000000000002ULL /* pkt. > 1522 bytes */ 979119051cbSMarius Strobl #define CAS_RC3_JMBHS_EN 0x0000000000000004ULL /* jmb. hdr. spl. en. */ 980119051cbSMarius Strobl #define CAS_RC3_CSO_MASK 0x000000000007f000ULL /* checksum start... */ 981119051cbSMarius Strobl #define CAS_RC3_CSO_SHFT 12 /* ...offset */ 982119051cbSMarius Strobl #define CAS_RC3_FLOWID_MASK 0x0000000001f80000ULL /* flow ID of pkt. */ 983119051cbSMarius Strobl #define CAS_RC3_FLOWID_SHFT 19 984119051cbSMarius Strobl #define CAS_RC3_OP_MASK 0x000000000e000000ULL /* opcode */ 985119051cbSMarius Strobl #define CAS_RC3_OP_SHFT 25 986119051cbSMarius Strobl #define CAS_RC3_FRC_FLAG 0x0000000010000000ULL /* op. 2 batch. lkhd. */ 987119051cbSMarius Strobl #define CAS_RC3_NASSIST 0x0000000020000000ULL /* no assist */ 988119051cbSMarius Strobl #define CAS_RC3_LB_MASK 0x000001f800000000ULL /* load balancing key */ 989119051cbSMarius Strobl #define CAS_RC3_LB_SHFT 35 990119051cbSMarius Strobl #define CAS_RC3_L3HO_MASK 0x0000fe0000000000ULL /* layer 3 hdr. off. */ 991119051cbSMarius Strobl #define CAS_RC3_L3HO_SHFT 41 992119051cbSMarius Strobl #define CAS_RC3_PLUS_ENC_PKT 0x0000020000000000ULL /* IPsec AH/ESP pkt. */ 993119051cbSMarius Strobl #define CAS_RC3_PLUS_L3HO_MASK 0x0000fc0000000000ULL /* layer 3 hdr. off. */ 994119051cbSMarius Strobl #define CAS_RC3_PLUS_L3HO_SHFT 42 995119051cbSMarius Strobl #define CAS_RC3_SAP_MASK 0xffff000000000000ULL /* ethertype */ 996119051cbSMarius Strobl #define CAS_RC3_SAP_SHFT 48 997119051cbSMarius Strobl 998119051cbSMarius Strobl #define CAS_RC4_TCP_CSUM_MASK 0x000000000000ffffULL /* TCP checksum */ 999119051cbSMarius Strobl #define CAS_RC4_TCP_CSUM_SHFT 0 1000119051cbSMarius Strobl #define CAS_RC4_PKT_LEN_MASK 0x000000003fff0000ULL /* entire pkt. length */ 1001119051cbSMarius Strobl #define CAS_RC4_PKT_LEN_SHFT 16 1002119051cbSMarius Strobl #define CAS_RC4_PAM_MASK 0x00000003c0000000ULL /* mcast. addr. match */ 1003119051cbSMarius Strobl #define CAS_RC4_PAM_SHFT 30 1004119051cbSMarius Strobl #define CAS_RC4_ZERO 0x0000080000000000ULL /* owned by software */ 1005119051cbSMarius Strobl #define CAS_RC4_HASH_VAL_MASK 0x0ffff00000000000ULL /* mcast. addr. hash */ 1006119051cbSMarius Strobl #define CAS_RC4_HASH_VAL_SHFT 44 1007119051cbSMarius Strobl #define CAS_RC4_HASH_PASS 0x1000000000000000ULL /* passed hash filter */ 1008119051cbSMarius Strobl #define CAS_RC4_BAD 0x4000000000000000ULL /* CRC error */ 1009119051cbSMarius Strobl #define CAS_RC4_LEN_MMATCH 0x8000000000000000ULL /* length field mism. */ 1010119051cbSMarius Strobl 1011119051cbSMarius Strobl #define CAS_GET(reg, bits) (((reg) & (bits ## _MASK)) >> (bits ## _SHFT)) 1012119051cbSMarius Strobl #define CAS_SET(val, bits) (((val) << (bits ## _SHFT)) & (bits ## _MASK)) 1013119051cbSMarius Strobl 1014119051cbSMarius Strobl #endif 1015