1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * DMA definitions File: sb1250_dma.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains constants and macros useful for 8*4882a593Smuzhiyun * programming the SB1250's DMA controllers, both the data mover 9*4882a593Smuzhiyun * and the Ethernet DMA. 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * SB1250 specification level: User's manual 10/21/02 12*4882a593Smuzhiyun * BCM1280 specification level: User's manual 11/24/03 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun ********************************************************************* 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * Copyright 2000,2001,2002,2003 17*4882a593Smuzhiyun * Broadcom Corporation. All rights reserved. 18*4882a593Smuzhiyun * 19*4882a593Smuzhiyun ********************************************************************* */ 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #ifndef _SB1250_DMA_H 23*4882a593Smuzhiyun #define _SB1250_DMA_H 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* ********************************************************************* 29*4882a593Smuzhiyun * DMA Registers 30*4882a593Smuzhiyun ********************************************************************* */ 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* 33*4882a593Smuzhiyun * Ethernet and Serial DMA Configuration Register 0 (Table 7-4) 34*4882a593Smuzhiyun * Registers: DMA_CONFIG0_MAC_x_RX_CH_0 35*4882a593Smuzhiyun * Registers: DMA_CONFIG0_MAC_x_TX_CH_0 36*4882a593Smuzhiyun * Registers: DMA_CONFIG0_SER_x_RX 37*4882a593Smuzhiyun * Registers: DMA_CONFIG0_SER_x_TX 38*4882a593Smuzhiyun */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun #define M_DMA_DROP _SB_MAKEMASK1(0) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #define M_DMA_CHAIN_SEL _SB_MAKEMASK1(1) 44*4882a593Smuzhiyun #define M_DMA_RESERVED1 _SB_MAKEMASK1(2) 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun #define S_DMA_DESC_TYPE _SB_MAKE64(1) 47*4882a593Smuzhiyun #define M_DMA_DESC_TYPE _SB_MAKEMASK(2, S_DMA_DESC_TYPE) 48*4882a593Smuzhiyun #define V_DMA_DESC_TYPE(x) _SB_MAKEVALUE(x, S_DMA_DESC_TYPE) 49*4882a593Smuzhiyun #define G_DMA_DESC_TYPE(x) _SB_GETVALUE(x, S_DMA_DESC_TYPE, M_DMA_DESC_TYPE) 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_AL 0 52*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_CHAIN_AL 1 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 55*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_UAL_WI 2 56*4882a593Smuzhiyun #define K_DMA_DESC_TYPE_RING_UAL_RMW 3 57*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define M_DMA_EOP_INT_EN _SB_MAKEMASK1(3) 60*4882a593Smuzhiyun #define M_DMA_HWM_INT_EN _SB_MAKEMASK1(4) 61*4882a593Smuzhiyun #define M_DMA_LWM_INT_EN _SB_MAKEMASK1(5) 62*4882a593Smuzhiyun #define M_DMA_TBX_EN _SB_MAKEMASK1(6) 63*4882a593Smuzhiyun #define M_DMA_TDX_EN _SB_MAKEMASK1(7) 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define S_DMA_INT_PKTCNT _SB_MAKE64(8) 66*4882a593Smuzhiyun #define M_DMA_INT_PKTCNT _SB_MAKEMASK(8, S_DMA_INT_PKTCNT) 67*4882a593Smuzhiyun #define V_DMA_INT_PKTCNT(x) _SB_MAKEVALUE(x, S_DMA_INT_PKTCNT) 68*4882a593Smuzhiyun #define G_DMA_INT_PKTCNT(x) _SB_GETVALUE(x, S_DMA_INT_PKTCNT, M_DMA_INT_PKTCNT) 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #define S_DMA_RINGSZ _SB_MAKE64(16) 71*4882a593Smuzhiyun #define M_DMA_RINGSZ _SB_MAKEMASK(16, S_DMA_RINGSZ) 72*4882a593Smuzhiyun #define V_DMA_RINGSZ(x) _SB_MAKEVALUE(x, S_DMA_RINGSZ) 73*4882a593Smuzhiyun #define G_DMA_RINGSZ(x) _SB_GETVALUE(x, S_DMA_RINGSZ, M_DMA_RINGSZ) 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define S_DMA_HIGH_WATERMARK _SB_MAKE64(32) 76*4882a593Smuzhiyun #define M_DMA_HIGH_WATERMARK _SB_MAKEMASK(16, S_DMA_HIGH_WATERMARK) 77*4882a593Smuzhiyun #define V_DMA_HIGH_WATERMARK(x) _SB_MAKEVALUE(x, S_DMA_HIGH_WATERMARK) 78*4882a593Smuzhiyun #define G_DMA_HIGH_WATERMARK(x) _SB_GETVALUE(x, S_DMA_HIGH_WATERMARK, M_DMA_HIGH_WATERMARK) 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #define S_DMA_LOW_WATERMARK _SB_MAKE64(48) 81*4882a593Smuzhiyun #define M_DMA_LOW_WATERMARK _SB_MAKEMASK(16, S_DMA_LOW_WATERMARK) 82*4882a593Smuzhiyun #define V_DMA_LOW_WATERMARK(x) _SB_MAKEVALUE(x, S_DMA_LOW_WATERMARK) 83*4882a593Smuzhiyun #define G_DMA_LOW_WATERMARK(x) _SB_GETVALUE(x, S_DMA_LOW_WATERMARK, M_DMA_LOW_WATERMARK) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* 86*4882a593Smuzhiyun * Ethernet and Serial DMA Configuration Register 1 (Table 7-5) 87*4882a593Smuzhiyun * Registers: DMA_CONFIG1_MAC_x_RX_CH_0 88*4882a593Smuzhiyun * Registers: DMA_CONFIG1_DMA_x_TX_CH_0 89*4882a593Smuzhiyun * Registers: DMA_CONFIG1_SER_x_RX 90*4882a593Smuzhiyun * Registers: DMA_CONFIG1_SER_x_TX 91*4882a593Smuzhiyun */ 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun #define M_DMA_HDR_CF_EN _SB_MAKEMASK1(0) 94*4882a593Smuzhiyun #define M_DMA_ASIC_XFR_EN _SB_MAKEMASK1(1) 95*4882a593Smuzhiyun #define M_DMA_PRE_ADDR_EN _SB_MAKEMASK1(2) 96*4882a593Smuzhiyun #define M_DMA_FLOW_CTL_EN _SB_MAKEMASK1(3) 97*4882a593Smuzhiyun #define M_DMA_NO_DSCR_UPDT _SB_MAKEMASK1(4) 98*4882a593Smuzhiyun #define M_DMA_L2CA _SB_MAKEMASK1(5) 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 101*4882a593Smuzhiyun #define M_DMA_RX_XTRA_STATUS _SB_MAKEMASK1(6) 102*4882a593Smuzhiyun #define M_DMA_TX_CPU_PAUSE _SB_MAKEMASK1(6) 103*4882a593Smuzhiyun #define M_DMA_TX_FC_PAUSE_EN _SB_MAKEMASK1(7) 104*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun #define M_DMA_MBZ1 _SB_MAKEMASK(6, 15) 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define S_DMA_HDR_SIZE _SB_MAKE64(21) 109*4882a593Smuzhiyun #define M_DMA_HDR_SIZE _SB_MAKEMASK(9, S_DMA_HDR_SIZE) 110*4882a593Smuzhiyun #define V_DMA_HDR_SIZE(x) _SB_MAKEVALUE(x, S_DMA_HDR_SIZE) 111*4882a593Smuzhiyun #define G_DMA_HDR_SIZE(x) _SB_GETVALUE(x, S_DMA_HDR_SIZE, M_DMA_HDR_SIZE) 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun #define M_DMA_MBZ2 _SB_MAKEMASK(5, 32) 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define S_DMA_ASICXFR_SIZE _SB_MAKE64(37) 116*4882a593Smuzhiyun #define M_DMA_ASICXFR_SIZE _SB_MAKEMASK(9, S_DMA_ASICXFR_SIZE) 117*4882a593Smuzhiyun #define V_DMA_ASICXFR_SIZE(x) _SB_MAKEVALUE(x, S_DMA_ASICXFR_SIZE) 118*4882a593Smuzhiyun #define G_DMA_ASICXFR_SIZE(x) _SB_GETVALUE(x, S_DMA_ASICXFR_SIZE, M_DMA_ASICXFR_SIZE) 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #define S_DMA_INT_TIMEOUT _SB_MAKE64(48) 121*4882a593Smuzhiyun #define M_DMA_INT_TIMEOUT _SB_MAKEMASK(16, S_DMA_INT_TIMEOUT) 122*4882a593Smuzhiyun #define V_DMA_INT_TIMEOUT(x) _SB_MAKEVALUE(x, S_DMA_INT_TIMEOUT) 123*4882a593Smuzhiyun #define G_DMA_INT_TIMEOUT(x) _SB_GETVALUE(x, S_DMA_INT_TIMEOUT, M_DMA_INT_TIMEOUT) 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun /* 126*4882a593Smuzhiyun * Ethernet and Serial DMA Descriptor base address (Table 7-6) 127*4882a593Smuzhiyun */ 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun #define M_DMA_DSCRBASE_MBZ _SB_MAKEMASK(4, 0) 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* 133*4882a593Smuzhiyun * ASIC Mode Base Address (Table 7-7) 134*4882a593Smuzhiyun */ 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define M_DMA_ASIC_BASE_MBZ _SB_MAKEMASK(20, 0) 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun /* 139*4882a593Smuzhiyun * DMA Descriptor Count Registers (Table 7-8) 140*4882a593Smuzhiyun */ 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun /* No bitfields */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun /* 146*4882a593Smuzhiyun * Current Descriptor Address Register (Table 7-11) 147*4882a593Smuzhiyun */ 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define S_DMA_CURDSCR_ADDR _SB_MAKE64(0) 150*4882a593Smuzhiyun #define M_DMA_CURDSCR_ADDR _SB_MAKEMASK(40, S_DMA_CURDSCR_ADDR) 151*4882a593Smuzhiyun #define S_DMA_CURDSCR_COUNT _SB_MAKE64(40) 152*4882a593Smuzhiyun #define M_DMA_CURDSCR_COUNT _SB_MAKEMASK(16, S_DMA_CURDSCR_COUNT) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 155*4882a593Smuzhiyun #define M_DMA_TX_CH_PAUSE_ON _SB_MAKEMASK1(56) 156*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun /* 159*4882a593Smuzhiyun * Receive Packet Drop Registers 160*4882a593Smuzhiyun */ 161*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 162*4882a593Smuzhiyun #define S_DMA_OODLOST_RX _SB_MAKE64(0) 163*4882a593Smuzhiyun #define M_DMA_OODLOST_RX _SB_MAKEMASK(16, S_DMA_OODLOST_RX) 164*4882a593Smuzhiyun #define G_DMA_OODLOST_RX(x) _SB_GETVALUE(x, S_DMA_OODLOST_RX, M_DMA_OODLOST_RX) 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun #define S_DMA_EOP_COUNT_RX _SB_MAKE64(16) 167*4882a593Smuzhiyun #define M_DMA_EOP_COUNT_RX _SB_MAKEMASK(8, S_DMA_EOP_COUNT_RX) 168*4882a593Smuzhiyun #define G_DMA_EOP_COUNT_RX(x) _SB_GETVALUE(x, S_DMA_EOP_COUNT_RX, M_DMA_EOP_COUNT_RX) 169*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* ********************************************************************* 172*4882a593Smuzhiyun * DMA Descriptors 173*4882a593Smuzhiyun ********************************************************************* */ 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun /* 176*4882a593Smuzhiyun * Descriptor doubleword "A" (Table 7-12) 177*4882a593Smuzhiyun */ 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #define S_DMA_DSCRA_OFFSET _SB_MAKE64(0) 180*4882a593Smuzhiyun #define M_DMA_DSCRA_OFFSET _SB_MAKEMASK(5, S_DMA_DSCRA_OFFSET) 181*4882a593Smuzhiyun #define V_DMA_DSCRA_OFFSET(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_OFFSET) 182*4882a593Smuzhiyun #define G_DMA_DSCRA_OFFSET(x) _SB_GETVALUE(x, S_DMA_DSCRA_OFFSET, M_DMA_DSCRA_OFFSET) 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun /* Note: Don't shift the address over, just mask it with the mask below */ 185*4882a593Smuzhiyun #define S_DMA_DSCRA_A_ADDR _SB_MAKE64(5) 186*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR _SB_MAKEMASK(35, S_DMA_DSCRA_A_ADDR) 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR_OFFSET (M_DMA_DSCRA_OFFSET | M_DMA_DSCRA_A_ADDR) 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 191*4882a593Smuzhiyun #define S_DMA_DSCRA_A_ADDR_UA _SB_MAKE64(0) 192*4882a593Smuzhiyun #define M_DMA_DSCRA_A_ADDR_UA _SB_MAKEMASK(40, S_DMA_DSCRA_A_ADDR_UA) 193*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun #define S_DMA_DSCRA_A_SIZE _SB_MAKE64(40) 196*4882a593Smuzhiyun #define M_DMA_DSCRA_A_SIZE _SB_MAKEMASK(9, S_DMA_DSCRA_A_SIZE) 197*4882a593Smuzhiyun #define V_DMA_DSCRA_A_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_A_SIZE) 198*4882a593Smuzhiyun #define G_DMA_DSCRA_A_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRA_A_SIZE, M_DMA_DSCRA_A_SIZE) 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 201*4882a593Smuzhiyun #define S_DMA_DSCRA_DSCR_CNT _SB_MAKE64(40) 202*4882a593Smuzhiyun #define M_DMA_DSCRA_DSCR_CNT _SB_MAKEMASK(8, S_DMA_DSCRA_DSCR_CNT) 203*4882a593Smuzhiyun #define G_DMA_DSCRA_DSCR_CNT(x) _SB_GETVALUE(x, S_DMA_DSCRA_DSCR_CNT, M_DMA_DSCRA_DSCR_CNT) 204*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun #define M_DMA_DSCRA_INTERRUPT _SB_MAKEMASK1(49) 207*4882a593Smuzhiyun #define M_DMA_DSCRA_OFFSETB _SB_MAKEMASK1(50) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #define S_DMA_DSCRA_STATUS _SB_MAKE64(51) 210*4882a593Smuzhiyun #define M_DMA_DSCRA_STATUS _SB_MAKEMASK(13, S_DMA_DSCRA_STATUS) 211*4882a593Smuzhiyun #define V_DMA_DSCRA_STATUS(x) _SB_MAKEVALUE(x, S_DMA_DSCRA_STATUS) 212*4882a593Smuzhiyun #define G_DMA_DSCRA_STATUS(x) _SB_GETVALUE(x, S_DMA_DSCRA_STATUS, M_DMA_DSCRA_STATUS) 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun /* 215*4882a593Smuzhiyun * Descriptor doubleword "B" (Table 7-13) 216*4882a593Smuzhiyun */ 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun #define S_DMA_DSCRB_OPTIONS _SB_MAKE64(0) 220*4882a593Smuzhiyun #define M_DMA_DSCRB_OPTIONS _SB_MAKEMASK(4, S_DMA_DSCRB_OPTIONS) 221*4882a593Smuzhiyun #define V_DMA_DSCRB_OPTIONS(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_OPTIONS) 222*4882a593Smuzhiyun #define G_DMA_DSCRB_OPTIONS(x) _SB_GETVALUE(x, S_DMA_DSCRB_OPTIONS, M_DMA_DSCRB_OPTIONS) 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 225*4882a593Smuzhiyun #define S_DMA_DSCRB_A_SIZE _SB_MAKE64(8) 226*4882a593Smuzhiyun #define M_DMA_DSCRB_A_SIZE _SB_MAKEMASK(14, S_DMA_DSCRB_A_SIZE) 227*4882a593Smuzhiyun #define V_DMA_DSCRB_A_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_A_SIZE) 228*4882a593Smuzhiyun #define G_DMA_DSCRB_A_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_A_SIZE, M_DMA_DSCRB_A_SIZE) 229*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun #define R_DMA_DSCRB_ADDR _SB_MAKE64(0x10) 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun /* Note: Don't shift the address over, just mask it with the mask below */ 234*4882a593Smuzhiyun #define S_DMA_DSCRB_B_ADDR _SB_MAKE64(5) 235*4882a593Smuzhiyun #define M_DMA_DSCRB_B_ADDR _SB_MAKEMASK(35, S_DMA_DSCRB_B_ADDR) 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun #define S_DMA_DSCRB_B_SIZE _SB_MAKE64(40) 238*4882a593Smuzhiyun #define M_DMA_DSCRB_B_SIZE _SB_MAKEMASK(9, S_DMA_DSCRB_B_SIZE) 239*4882a593Smuzhiyun #define V_DMA_DSCRB_B_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_B_SIZE) 240*4882a593Smuzhiyun #define G_DMA_DSCRB_B_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_B_SIZE, M_DMA_DSCRB_B_SIZE) 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun #define M_DMA_DSCRB_B_VALID _SB_MAKEMASK1(49) 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 245*4882a593Smuzhiyun #define S_DMA_DSCRB_PKT_SIZE_MSB _SB_MAKE64(48) 246*4882a593Smuzhiyun #define M_DMA_DSCRB_PKT_SIZE_MSB _SB_MAKEMASK(2, S_DMA_DSCRB_PKT_SIZE_MSB) 247*4882a593Smuzhiyun #define V_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB) 248*4882a593Smuzhiyun #define G_DMA_DSCRB_PKT_SIZE_MSB(x) _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE_MSB, M_DMA_DSCRB_PKT_SIZE_MSB) 249*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #define S_DMA_DSCRB_PKT_SIZE _SB_MAKE64(50) 252*4882a593Smuzhiyun #define M_DMA_DSCRB_PKT_SIZE _SB_MAKEMASK(14, S_DMA_DSCRB_PKT_SIZE) 253*4882a593Smuzhiyun #define V_DMA_DSCRB_PKT_SIZE(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_PKT_SIZE) 254*4882a593Smuzhiyun #define G_DMA_DSCRB_PKT_SIZE(x) _SB_GETVALUE(x, S_DMA_DSCRB_PKT_SIZE, M_DMA_DSCRB_PKT_SIZE) 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun /* 257*4882a593Smuzhiyun * from pass2 some bits in dscr_b are also used for rx status 258*4882a593Smuzhiyun */ 259*4882a593Smuzhiyun #define S_DMA_DSCRB_STATUS _SB_MAKE64(0) 260*4882a593Smuzhiyun #define M_DMA_DSCRB_STATUS _SB_MAKEMASK(1, S_DMA_DSCRB_STATUS) 261*4882a593Smuzhiyun #define V_DMA_DSCRB_STATUS(x) _SB_MAKEVALUE(x, S_DMA_DSCRB_STATUS) 262*4882a593Smuzhiyun #define G_DMA_DSCRB_STATUS(x) _SB_GETVALUE(x, S_DMA_DSCRB_STATUS, M_DMA_DSCRB_STATUS) 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /* 265*4882a593Smuzhiyun * Ethernet Descriptor Status Bits (Table 7-15) 266*4882a593Smuzhiyun */ 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun #define M_DMA_ETHRX_BADIP4CS _SB_MAKEMASK1(51) 269*4882a593Smuzhiyun #define M_DMA_ETHRX_DSCRERR _SB_MAKEMASK1(52) 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 272*4882a593Smuzhiyun /* Note: This bit is in the DSCR_B options field */ 273*4882a593Smuzhiyun #define M_DMA_ETHRX_BADTCPCS _SB_MAKEMASK1(0) 274*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 277*4882a593Smuzhiyun /* Note: These bits are in the DSCR_B options field */ 278*4882a593Smuzhiyun #define M_DMA_ETH_VLAN_FLAG _SB_MAKEMASK1(1) 279*4882a593Smuzhiyun #define M_DMA_ETH_CRC_FLAG _SB_MAKEMASK1(2) 280*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun #define S_DMA_ETHRX_RXCH 53 283*4882a593Smuzhiyun #define M_DMA_ETHRX_RXCH _SB_MAKEMASK(2, S_DMA_ETHRX_RXCH) 284*4882a593Smuzhiyun #define V_DMA_ETHRX_RXCH(x) _SB_MAKEVALUE(x, S_DMA_ETHRX_RXCH) 285*4882a593Smuzhiyun #define G_DMA_ETHRX_RXCH(x) _SB_GETVALUE(x, S_DMA_ETHRX_RXCH, M_DMA_ETHRX_RXCH) 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun #define S_DMA_ETHRX_PKTTYPE 55 288*4882a593Smuzhiyun #define M_DMA_ETHRX_PKTTYPE _SB_MAKEMASK(3, S_DMA_ETHRX_PKTTYPE) 289*4882a593Smuzhiyun #define V_DMA_ETHRX_PKTTYPE(x) _SB_MAKEVALUE(x, S_DMA_ETHRX_PKTTYPE) 290*4882a593Smuzhiyun #define G_DMA_ETHRX_PKTTYPE(x) _SB_GETVALUE(x, S_DMA_ETHRX_PKTTYPE, M_DMA_ETHRX_PKTTYPE) 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_IPV4 0 293*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_ARPV4 1 294*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_802 2 295*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_OTHER 3 296*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER0 4 297*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER1 5 298*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER2 6 299*4882a593Smuzhiyun #define K_DMA_ETHRX_PKTTYPE_USER3 7 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun #define M_DMA_ETHRX_MATCH_HASH _SB_MAKEMASK1(58) 302*4882a593Smuzhiyun #define M_DMA_ETHRX_MATCH_EXACT _SB_MAKEMASK1(59) 303*4882a593Smuzhiyun #define M_DMA_ETHRX_BCAST _SB_MAKEMASK1(60) 304*4882a593Smuzhiyun #define M_DMA_ETHRX_MCAST _SB_MAKEMASK1(61) 305*4882a593Smuzhiyun #define M_DMA_ETHRX_BAD _SB_MAKEMASK1(62) 306*4882a593Smuzhiyun #define M_DMA_ETHRX_SOP _SB_MAKEMASK1(63) 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun /* 309*4882a593Smuzhiyun * Ethernet Transmit Status Bits (Table 7-16) 310*4882a593Smuzhiyun */ 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #define M_DMA_ETHTX_SOP _SB_MAKEMASK1(63) 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun /* 315*4882a593Smuzhiyun * Ethernet Transmit Options (Table 7-17) 316*4882a593Smuzhiyun */ 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun #define K_DMA_ETHTX_NOTSOP _SB_MAKE64(0x00) 319*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDCRC _SB_MAKE64(0x01) 320*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACECRC _SB_MAKE64(0x02) 321*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDCRC_APPENDPAD _SB_MAKE64(0x03) 322*4882a593Smuzhiyun #define K_DMA_ETHTX_APPENDVLAN_REPLACECRC _SB_MAKE64(0x04) 323*4882a593Smuzhiyun #define K_DMA_ETHTX_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x05) 324*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x6) 325*4882a593Smuzhiyun #define K_DMA_ETHTX_NOMODS _SB_MAKE64(0x07) 326*4882a593Smuzhiyun #define K_DMA_ETHTX_RESERVED1 _SB_MAKE64(0x08) 327*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC _SB_MAKE64(0x09) 328*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REPLACECRC _SB_MAKE64(0x0A) 329*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDCRC_APPENDPAD _SB_MAKE64(0x0B) 330*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_APPENDVLAN_REPLACECRC _SB_MAKE64(0x0C) 331*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REMOVEVLAN_REPLACECRC _SB_MAKE64(0x0D) 332*4882a593Smuzhiyun #define K_DMA_ETHTX_REPLACESADDR_REPLACEVLAN_REPLACECRC _SB_MAKE64(0x0E) 333*4882a593Smuzhiyun #define K_DMA_ETHTX_RESERVED2 _SB_MAKE64(0x0F) 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun /* 336*4882a593Smuzhiyun * Serial Receive Options (Table 7-18) 337*4882a593Smuzhiyun */ 338*4882a593Smuzhiyun #define M_DMA_SERRX_CRC_ERROR _SB_MAKEMASK1(56) 339*4882a593Smuzhiyun #define M_DMA_SERRX_ABORT _SB_MAKEMASK1(57) 340*4882a593Smuzhiyun #define M_DMA_SERRX_OCTET_ERROR _SB_MAKEMASK1(58) 341*4882a593Smuzhiyun #define M_DMA_SERRX_LONGFRAME_ERROR _SB_MAKEMASK1(59) 342*4882a593Smuzhiyun #define M_DMA_SERRX_SHORTFRAME_ERROR _SB_MAKEMASK1(60) 343*4882a593Smuzhiyun #define M_DMA_SERRX_OVERRUN_ERROR _SB_MAKEMASK1(61) 344*4882a593Smuzhiyun #define M_DMA_SERRX_GOOD _SB_MAKEMASK1(62) 345*4882a593Smuzhiyun #define M_DMA_SERRX_SOP _SB_MAKEMASK1(63) 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun /* 348*4882a593Smuzhiyun * Serial Transmit Status Bits (Table 7-20) 349*4882a593Smuzhiyun */ 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun #define M_DMA_SERTX_FLAG _SB_MAKEMASK1(63) 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun /* 354*4882a593Smuzhiyun * Serial Transmit Options (Table 7-21) 355*4882a593Smuzhiyun */ 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun #define K_DMA_SERTX_RESERVED _SB_MAKEMASK1(0) 358*4882a593Smuzhiyun #define K_DMA_SERTX_APPENDCRC _SB_MAKEMASK1(1) 359*4882a593Smuzhiyun #define K_DMA_SERTX_APPENDPAD _SB_MAKEMASK1(2) 360*4882a593Smuzhiyun #define K_DMA_SERTX_ABORT _SB_MAKEMASK1(3) 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun /* ********************************************************************* 364*4882a593Smuzhiyun * Data Mover Registers 365*4882a593Smuzhiyun ********************************************************************* */ 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun /* 368*4882a593Smuzhiyun * Data Mover Descriptor Base Address Register (Table 7-22) 369*4882a593Smuzhiyun * Register: DM_DSCR_BASE_0 370*4882a593Smuzhiyun * Register: DM_DSCR_BASE_1 371*4882a593Smuzhiyun * Register: DM_DSCR_BASE_2 372*4882a593Smuzhiyun * Register: DM_DSCR_BASE_3 373*4882a593Smuzhiyun */ 374*4882a593Smuzhiyun 375*4882a593Smuzhiyun #define M_DM_DSCR_BASE_MBZ _SB_MAKEMASK(4, 0) 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun /* Note: Just mask the base address and then OR it in. */ 378*4882a593Smuzhiyun #define S_DM_DSCR_BASE_ADDR _SB_MAKE64(4) 379*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ADDR _SB_MAKEMASK(36, S_DM_DSCR_BASE_ADDR) 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun #define S_DM_DSCR_BASE_RINGSZ _SB_MAKE64(40) 382*4882a593Smuzhiyun #define M_DM_DSCR_BASE_RINGSZ _SB_MAKEMASK(16, S_DM_DSCR_BASE_RINGSZ) 383*4882a593Smuzhiyun #define V_DM_DSCR_BASE_RINGSZ(x) _SB_MAKEVALUE(x, S_DM_DSCR_BASE_RINGSZ) 384*4882a593Smuzhiyun #define G_DM_DSCR_BASE_RINGSZ(x) _SB_GETVALUE(x, S_DM_DSCR_BASE_RINGSZ, M_DM_DSCR_BASE_RINGSZ) 385*4882a593Smuzhiyun 386*4882a593Smuzhiyun #define S_DM_DSCR_BASE_PRIORITY _SB_MAKE64(56) 387*4882a593Smuzhiyun #define M_DM_DSCR_BASE_PRIORITY _SB_MAKEMASK(3, S_DM_DSCR_BASE_PRIORITY) 388*4882a593Smuzhiyun #define V_DM_DSCR_BASE_PRIORITY(x) _SB_MAKEVALUE(x, S_DM_DSCR_BASE_PRIORITY) 389*4882a593Smuzhiyun #define G_DM_DSCR_BASE_PRIORITY(x) _SB_GETVALUE(x, S_DM_DSCR_BASE_PRIORITY, M_DM_DSCR_BASE_PRIORITY) 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_1 0 392*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_2 1 393*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_4 2 394*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_8 3 395*4882a593Smuzhiyun #define K_DM_DSCR_BASE_PRIORITY_16 4 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ACTIVE _SB_MAKEMASK1(59) 398*4882a593Smuzhiyun #define M_DM_DSCR_BASE_INTERRUPT _SB_MAKEMASK1(60) 399*4882a593Smuzhiyun #define M_DM_DSCR_BASE_RESET _SB_MAKEMASK1(61) /* write register */ 400*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ERROR _SB_MAKEMASK1(61) /* read register */ 401*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ABORT _SB_MAKEMASK1(62) 402*4882a593Smuzhiyun #define M_DM_DSCR_BASE_ENABL _SB_MAKEMASK1(63) 403*4882a593Smuzhiyun 404*4882a593Smuzhiyun /* 405*4882a593Smuzhiyun * Data Mover Descriptor Count Register (Table 7-25) 406*4882a593Smuzhiyun */ 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun /* no bitfields */ 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun /* 411*4882a593Smuzhiyun * Data Mover Current Descriptor Address (Table 7-24) 412*4882a593Smuzhiyun * Register: DM_CUR_DSCR_ADDR_0 413*4882a593Smuzhiyun * Register: DM_CUR_DSCR_ADDR_1 414*4882a593Smuzhiyun * Register: DM_CUR_DSCR_ADDR_2 415*4882a593Smuzhiyun * Register: DM_CUR_DSCR_ADDR_3 416*4882a593Smuzhiyun */ 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun #define S_DM_CUR_DSCR_DSCR_ADDR _SB_MAKE64(0) 419*4882a593Smuzhiyun #define M_DM_CUR_DSCR_DSCR_ADDR _SB_MAKEMASK(40, S_DM_CUR_DSCR_DSCR_ADDR) 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun #define S_DM_CUR_DSCR_DSCR_COUNT _SB_MAKE64(48) 422*4882a593Smuzhiyun #define M_DM_CUR_DSCR_DSCR_COUNT _SB_MAKEMASK(16, S_DM_CUR_DSCR_DSCR_COUNT) 423*4882a593Smuzhiyun #define V_DM_CUR_DSCR_DSCR_COUNT(r) _SB_MAKEVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT) 424*4882a593Smuzhiyun #define G_DM_CUR_DSCR_DSCR_COUNT(r) _SB_GETVALUE(r, S_DM_CUR_DSCR_DSCR_COUNT,\ 425*4882a593Smuzhiyun M_DM_CUR_DSCR_DSCR_COUNT) 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 429*4882a593Smuzhiyun /* 430*4882a593Smuzhiyun * Data Mover Channel Partial Result Registers 431*4882a593Smuzhiyun * Register: DM_PARTIAL_0 432*4882a593Smuzhiyun * Register: DM_PARTIAL_1 433*4882a593Smuzhiyun * Register: DM_PARTIAL_2 434*4882a593Smuzhiyun * Register: DM_PARTIAL_3 435*4882a593Smuzhiyun */ 436*4882a593Smuzhiyun #define S_DM_PARTIAL_CRC_PARTIAL _SB_MAKE64(0) 437*4882a593Smuzhiyun #define M_DM_PARTIAL_CRC_PARTIAL _SB_MAKEMASK(32, S_DM_PARTIAL_CRC_PARTIAL) 438*4882a593Smuzhiyun #define V_DM_PARTIAL_CRC_PARTIAL(r) _SB_MAKEVALUE(r, S_DM_PARTIAL_CRC_PARTIAL) 439*4882a593Smuzhiyun #define G_DM_PARTIAL_CRC_PARTIAL(r) _SB_GETVALUE(r, S_DM_PARTIAL_CRC_PARTIAL,\ 440*4882a593Smuzhiyun M_DM_PARTIAL_CRC_PARTIAL) 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun #define S_DM_PARTIAL_TCPCS_PARTIAL _SB_MAKE64(32) 443*4882a593Smuzhiyun #define M_DM_PARTIAL_TCPCS_PARTIAL _SB_MAKEMASK(16, S_DM_PARTIAL_TCPCS_PARTIAL) 444*4882a593Smuzhiyun #define V_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_MAKEVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL) 445*4882a593Smuzhiyun #define G_DM_PARTIAL_TCPCS_PARTIAL(r) _SB_GETVALUE(r, S_DM_PARTIAL_TCPCS_PARTIAL,\ 446*4882a593Smuzhiyun M_DM_PARTIAL_TCPCS_PARTIAL) 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun #define M_DM_PARTIAL_ODD_BYTE _SB_MAKEMASK1(48) 449*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 453*4882a593Smuzhiyun /* 454*4882a593Smuzhiyun * Data Mover CRC Definition Registers 455*4882a593Smuzhiyun * Register: CRC_DEF_0 456*4882a593Smuzhiyun * Register: CRC_DEF_1 457*4882a593Smuzhiyun */ 458*4882a593Smuzhiyun #define S_CRC_DEF_CRC_INIT _SB_MAKE64(0) 459*4882a593Smuzhiyun #define M_CRC_DEF_CRC_INIT _SB_MAKEMASK(32, S_CRC_DEF_CRC_INIT) 460*4882a593Smuzhiyun #define V_CRC_DEF_CRC_INIT(r) _SB_MAKEVALUE(r, S_CRC_DEF_CRC_INIT) 461*4882a593Smuzhiyun #define G_CRC_DEF_CRC_INIT(r) _SB_GETVALUE(r, S_CRC_DEF_CRC_INIT,\ 462*4882a593Smuzhiyun M_CRC_DEF_CRC_INIT) 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun #define S_CRC_DEF_CRC_POLY _SB_MAKE64(32) 465*4882a593Smuzhiyun #define M_CRC_DEF_CRC_POLY _SB_MAKEMASK(32, S_CRC_DEF_CRC_POLY) 466*4882a593Smuzhiyun #define V_CRC_DEF_CRC_POLY(r) _SB_MAKEVALUE(r, S_CRC_DEF_CRC_POLY) 467*4882a593Smuzhiyun #define G_CRC_DEF_CRC_POLY(r) _SB_GETVALUE(r, S_CRC_DEF_CRC_POLY,\ 468*4882a593Smuzhiyun M_CRC_DEF_CRC_POLY) 469*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 473*4882a593Smuzhiyun /* 474*4882a593Smuzhiyun * Data Mover CRC/Checksum Definition Registers 475*4882a593Smuzhiyun * Register: CTCP_DEF_0 476*4882a593Smuzhiyun * Register: CTCP_DEF_1 477*4882a593Smuzhiyun */ 478*4882a593Smuzhiyun #define S_CTCP_DEF_CRC_TXOR _SB_MAKE64(0) 479*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_TXOR _SB_MAKEMASK(32, S_CTCP_DEF_CRC_TXOR) 480*4882a593Smuzhiyun #define V_CTCP_DEF_CRC_TXOR(r) _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_TXOR) 481*4882a593Smuzhiyun #define G_CTCP_DEF_CRC_TXOR(r) _SB_GETVALUE(r, S_CTCP_DEF_CRC_TXOR,\ 482*4882a593Smuzhiyun M_CTCP_DEF_CRC_TXOR) 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun #define S_CTCP_DEF_TCPCS_INIT _SB_MAKE64(32) 485*4882a593Smuzhiyun #define M_CTCP_DEF_TCPCS_INIT _SB_MAKEMASK(16, S_CTCP_DEF_TCPCS_INIT) 486*4882a593Smuzhiyun #define V_CTCP_DEF_TCPCS_INIT(r) _SB_MAKEVALUE(r, S_CTCP_DEF_TCPCS_INIT) 487*4882a593Smuzhiyun #define G_CTCP_DEF_TCPCS_INIT(r) _SB_GETVALUE(r, S_CTCP_DEF_TCPCS_INIT,\ 488*4882a593Smuzhiyun M_CTCP_DEF_TCPCS_INIT) 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun #define S_CTCP_DEF_CRC_WIDTH _SB_MAKE64(48) 491*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_WIDTH _SB_MAKEMASK(2, S_CTCP_DEF_CRC_WIDTH) 492*4882a593Smuzhiyun #define V_CTCP_DEF_CRC_WIDTH(r) _SB_MAKEVALUE(r, S_CTCP_DEF_CRC_WIDTH) 493*4882a593Smuzhiyun #define G_CTCP_DEF_CRC_WIDTH(r) _SB_GETVALUE(r, S_CTCP_DEF_CRC_WIDTH,\ 494*4882a593Smuzhiyun M_CTCP_DEF_CRC_WIDTH) 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_4 0 497*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_2 1 498*4882a593Smuzhiyun #define K_CTCP_DEF_CRC_WIDTH_1 2 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun #define M_CTCP_DEF_CRC_BIT_ORDER _SB_MAKEMASK1(50) 501*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun /* 505*4882a593Smuzhiyun * Data Mover Descriptor Doubleword "A" (Table 7-26) 506*4882a593Smuzhiyun */ 507*4882a593Smuzhiyun 508*4882a593Smuzhiyun #define S_DM_DSCRA_DST_ADDR _SB_MAKE64(0) 509*4882a593Smuzhiyun #define M_DM_DSCRA_DST_ADDR _SB_MAKEMASK(40, S_DM_DSCRA_DST_ADDR) 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun #define M_DM_DSCRA_UN_DEST _SB_MAKEMASK1(40) 512*4882a593Smuzhiyun #define M_DM_DSCRA_UN_SRC _SB_MAKEMASK1(41) 513*4882a593Smuzhiyun #define M_DM_DSCRA_INTERRUPT _SB_MAKEMASK1(42) 514*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_UP_TO(1250, PASS1) 515*4882a593Smuzhiyun #define M_DM_DSCRA_THROTTLE _SB_MAKEMASK1(43) 516*4882a593Smuzhiyun #endif /* up to 1250 PASS1 */ 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun #define S_DM_DSCRA_DIR_DEST _SB_MAKE64(44) 519*4882a593Smuzhiyun #define M_DM_DSCRA_DIR_DEST _SB_MAKEMASK(2, S_DM_DSCRA_DIR_DEST) 520*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST(x) _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_DEST) 521*4882a593Smuzhiyun #define G_DM_DSCRA_DIR_DEST(x) _SB_GETVALUE(x, S_DM_DSCRA_DIR_DEST, M_DM_DSCRA_DIR_DEST) 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_INCR 0 524*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_DECR 1 525*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_DEST_CONST 2 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_INCR _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_INCR, S_DM_DSCRA_DIR_DEST) 528*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_DECR _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_DECR, S_DM_DSCRA_DIR_DEST) 529*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_DEST_CONST _SB_MAKEVALUE(K_DM_DSCRA_DIR_DEST_CONST, S_DM_DSCRA_DIR_DEST) 530*4882a593Smuzhiyun 531*4882a593Smuzhiyun #define S_DM_DSCRA_DIR_SRC _SB_MAKE64(46) 532*4882a593Smuzhiyun #define M_DM_DSCRA_DIR_SRC _SB_MAKEMASK(2, S_DM_DSCRA_DIR_SRC) 533*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC(x) _SB_MAKEVALUE(x, S_DM_DSCRA_DIR_SRC) 534*4882a593Smuzhiyun #define G_DM_DSCRA_DIR_SRC(x) _SB_GETVALUE(x, S_DM_DSCRA_DIR_SRC, M_DM_DSCRA_DIR_SRC) 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_INCR 0 537*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_DECR 1 538*4882a593Smuzhiyun #define K_DM_DSCRA_DIR_SRC_CONST 2 539*4882a593Smuzhiyun 540*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_INCR _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_INCR, S_DM_DSCRA_DIR_SRC) 541*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_DECR _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_DECR, S_DM_DSCRA_DIR_SRC) 542*4882a593Smuzhiyun #define V_DM_DSCRA_DIR_SRC_CONST _SB_MAKEVALUE(K_DM_DSCRA_DIR_SRC_CONST, S_DM_DSCRA_DIR_SRC) 543*4882a593Smuzhiyun 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun #define M_DM_DSCRA_ZERO_MEM _SB_MAKEMASK1(48) 546*4882a593Smuzhiyun #define M_DM_DSCRA_PREFETCH _SB_MAKEMASK1(49) 547*4882a593Smuzhiyun #define M_DM_DSCRA_L2C_DEST _SB_MAKEMASK1(50) 548*4882a593Smuzhiyun #define M_DM_DSCRA_L2C_SRC _SB_MAKEMASK1(51) 549*4882a593Smuzhiyun 550*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 551*4882a593Smuzhiyun #define M_DM_DSCRA_RD_BKOFF _SB_MAKEMASK1(52) 552*4882a593Smuzhiyun #define M_DM_DSCRA_WR_BKOFF _SB_MAKEMASK1(53) 553*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 554*4882a593Smuzhiyun 555*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 556*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_EN _SB_MAKEMASK1(54) 557*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_RES _SB_MAKEMASK1(55) 558*4882a593Smuzhiyun #define M_DM_DSCRA_TCPCS_AP _SB_MAKEMASK1(56) 559*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_EN _SB_MAKEMASK1(57) 560*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_RES _SB_MAKEMASK1(58) 561*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_AP _SB_MAKEMASK1(59) 562*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_DFN _SB_MAKEMASK1(60) 563*4882a593Smuzhiyun #define M_DM_DSCRA_CRC_XBIT _SB_MAKEMASK1(61) 564*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 565*4882a593Smuzhiyun 566*4882a593Smuzhiyun #define M_DM_DSCRA_RESERVED2 _SB_MAKEMASK(3, 61) 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun /* 569*4882a593Smuzhiyun * Data Mover Descriptor Doubleword "B" (Table 7-25) 570*4882a593Smuzhiyun */ 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun #define S_DM_DSCRB_SRC_ADDR _SB_MAKE64(0) 573*4882a593Smuzhiyun #define M_DM_DSCRB_SRC_ADDR _SB_MAKEMASK(40, S_DM_DSCRB_SRC_ADDR) 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun #define S_DM_DSCRB_SRC_LENGTH _SB_MAKE64(40) 576*4882a593Smuzhiyun #define M_DM_DSCRB_SRC_LENGTH _SB_MAKEMASK(20, S_DM_DSCRB_SRC_LENGTH) 577*4882a593Smuzhiyun #define V_DM_DSCRB_SRC_LENGTH(x) _SB_MAKEVALUE(x, S_DM_DSCRB_SRC_LENGTH) 578*4882a593Smuzhiyun #define G_DM_DSCRB_SRC_LENGTH(x) _SB_GETVALUE(x, S_DM_DSCRB_SRC_LENGTH, M_DM_DSCRB_SRC_LENGTH) 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun 581*4882a593Smuzhiyun #endif 582