1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Register Definitions File: sb1250_regs.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains the addresses of the on-chip peripherals 8*4882a593Smuzhiyun * on the SB1250. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * SB1250 specification level: 01/02/2002 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun ********************************************************************* 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * Copyright 2000,2001,2002,2003 15*4882a593Smuzhiyun * Broadcom Corporation. All rights reserved. 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun ********************************************************************* */ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #ifndef _SB1250_REGS_H 21*4882a593Smuzhiyun #define _SB1250_REGS_H 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* ********************************************************************* 27*4882a593Smuzhiyun * Some general notes: 28*4882a593Smuzhiyun * 29*4882a593Smuzhiyun * For the most part, when there is more than one peripheral 30*4882a593Smuzhiyun * of the same type on the SOC, the constants below will be 31*4882a593Smuzhiyun * offsets from the base of each peripheral. For example, 32*4882a593Smuzhiyun * the MAC registers are described as offsets from the first 33*4882a593Smuzhiyun * MAC register, and there will be a MAC_REGISTER() macro 34*4882a593Smuzhiyun * to calculate the base address of a given MAC. 35*4882a593Smuzhiyun * 36*4882a593Smuzhiyun * The information in this file is based on the SB1250 SOC 37*4882a593Smuzhiyun * manual version 0.2, July 2000. 38*4882a593Smuzhiyun ********************************************************************* */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* ********************************************************************* 42*4882a593Smuzhiyun * Memory Controller Registers 43*4882a593Smuzhiyun ********************************************************************* */ 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* 46*4882a593Smuzhiyun * XXX: can't remove MC base 0 if 112x, since it's used by other macros, 47*4882a593Smuzhiyun * since there is one reg there (but it could get its addr/offset constant). 48*4882a593Smuzhiyun */ 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* This MC only on 1250 & 112x */ 51*4882a593Smuzhiyun #define A_MC_BASE_0 0x0010051000 52*4882a593Smuzhiyun #define A_MC_BASE_1 0x0010052000 53*4882a593Smuzhiyun #define MC_REGISTER_SPACING 0x1000 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #define A_MC_BASE(ctlid) ((ctlid)*MC_REGISTER_SPACING+A_MC_BASE_0) 56*4882a593Smuzhiyun #define A_MC_REGISTER(ctlid, reg) (A_MC_BASE(ctlid)+(reg)) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define R_MC_CONFIG 0x0000000100 59*4882a593Smuzhiyun #define R_MC_DRAMCMD 0x0000000120 60*4882a593Smuzhiyun #define R_MC_DRAMMODE 0x0000000140 61*4882a593Smuzhiyun #define R_MC_TIMING1 0x0000000160 62*4882a593Smuzhiyun #define R_MC_TIMING2 0x0000000180 63*4882a593Smuzhiyun #define R_MC_CS_START 0x00000001A0 64*4882a593Smuzhiyun #define R_MC_CS_END 0x00000001C0 65*4882a593Smuzhiyun #define R_MC_CS_INTERLEAVE 0x00000001E0 66*4882a593Smuzhiyun #define S_MC_CS_STARTEND 16 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define R_MC_CSX_BASE 0x0000000200 69*4882a593Smuzhiyun #define R_MC_CSX_ROW 0x0000000000 /* relative to CSX_BASE, above */ 70*4882a593Smuzhiyun #define R_MC_CSX_COL 0x0000000020 /* relative to CSX_BASE, above */ 71*4882a593Smuzhiyun #define R_MC_CSX_BA 0x0000000040 /* relative to CSX_BASE, above */ 72*4882a593Smuzhiyun #define MC_CSX_SPACING 0x0000000060 /* relative to CSX_BASE, above */ 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #define R_MC_CS0_ROW 0x0000000200 75*4882a593Smuzhiyun #define R_MC_CS0_COL 0x0000000220 76*4882a593Smuzhiyun #define R_MC_CS0_BA 0x0000000240 77*4882a593Smuzhiyun #define R_MC_CS1_ROW 0x0000000260 78*4882a593Smuzhiyun #define R_MC_CS1_COL 0x0000000280 79*4882a593Smuzhiyun #define R_MC_CS1_BA 0x00000002A0 80*4882a593Smuzhiyun #define R_MC_CS2_ROW 0x00000002C0 81*4882a593Smuzhiyun #define R_MC_CS2_COL 0x00000002E0 82*4882a593Smuzhiyun #define R_MC_CS2_BA 0x0000000300 83*4882a593Smuzhiyun #define R_MC_CS3_ROW 0x0000000320 84*4882a593Smuzhiyun #define R_MC_CS3_COL 0x0000000340 85*4882a593Smuzhiyun #define R_MC_CS3_BA 0x0000000360 86*4882a593Smuzhiyun #define R_MC_CS_ATTR 0x0000000380 87*4882a593Smuzhiyun #define R_MC_TEST_DATA 0x0000000400 88*4882a593Smuzhiyun #define R_MC_TEST_ECC 0x0000000420 89*4882a593Smuzhiyun #define R_MC_MCLK_CFG 0x0000000500 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #endif /* 1250 & 112x */ 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /* ********************************************************************* 94*4882a593Smuzhiyun * L2 Cache Control Registers 95*4882a593Smuzhiyun ********************************************************************* */ 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* This L2C only on 1250/112x */ 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun #define A_L2_READ_TAG 0x0010040018 100*4882a593Smuzhiyun #define A_L2_ECC_TAG 0x0010040038 101*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 102*4882a593Smuzhiyun #define A_L2_READ_MISC 0x0010040058 103*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 104*4882a593Smuzhiyun #define A_L2_WAY_DISABLE 0x0010041000 105*4882a593Smuzhiyun #define A_L2_MAKEDISABLE(x) (A_L2_WAY_DISABLE | (((~(x))&0x0F) << 8)) 106*4882a593Smuzhiyun #define A_L2_MGMT_TAG_BASE 0x00D0000000 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 109*4882a593Smuzhiyun #define A_L2_CACHE_DISABLE 0x0010042000 110*4882a593Smuzhiyun #define A_L2_MAKECACHEDISABLE(x) (A_L2_CACHE_DISABLE | (((x)&0x0F) << 8)) 111*4882a593Smuzhiyun #define A_L2_MISC_CONFIG 0x0010043000 112*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun /* Backward-compatibility definitions. */ 115*4882a593Smuzhiyun /* XXX: discourage people from using these constants. */ 116*4882a593Smuzhiyun #define A_L2_READ_ADDRESS A_L2_READ_TAG 117*4882a593Smuzhiyun #define A_L2_EEC_ADDRESS A_L2_ECC_TAG 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #endif 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* ********************************************************************* 123*4882a593Smuzhiyun * PCI Interface Registers 124*4882a593Smuzhiyun ********************************************************************* */ 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* This PCI/HT only on 1250/112x */ 127*4882a593Smuzhiyun #define A_PCI_TYPE00_HEADER 0x00DE000000 128*4882a593Smuzhiyun #define A_PCI_TYPE01_HEADER 0x00DE000800 129*4882a593Smuzhiyun #endif 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun /* ********************************************************************* 133*4882a593Smuzhiyun * Ethernet DMA and MACs 134*4882a593Smuzhiyun ********************************************************************* */ 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun #define A_MAC_BASE_0 0x0010064000 137*4882a593Smuzhiyun #define A_MAC_BASE_1 0x0010065000 138*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_CHIP(1250) 139*4882a593Smuzhiyun #define A_MAC_BASE_2 0x0010066000 140*4882a593Smuzhiyun #endif /* 1250 */ 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define MAC_SPACING 0x1000 143*4882a593Smuzhiyun #define MAC_DMA_TXRX_SPACING 0x0400 144*4882a593Smuzhiyun #define MAC_DMA_CHANNEL_SPACING 0x0100 145*4882a593Smuzhiyun #define DMA_RX 0 146*4882a593Smuzhiyun #define DMA_TX 1 147*4882a593Smuzhiyun #define MAC_NUM_DMACHAN 2 /* channels per direction */ 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /* XXX: not correct; depends on SOC type. */ 150*4882a593Smuzhiyun #define MAC_NUM_PORTS 3 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define A_MAC_CHANNEL_BASE(macnum) \ 153*4882a593Smuzhiyun (A_MAC_BASE_0 + \ 154*4882a593Smuzhiyun MAC_SPACING*(macnum)) 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define A_MAC_REGISTER(macnum,reg) \ 157*4882a593Smuzhiyun (A_MAC_BASE_0 + \ 158*4882a593Smuzhiyun MAC_SPACING*(macnum) + (reg)) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #define R_MAC_DMA_CHANNELS 0x800 /* Relative to A_MAC_CHANNEL_BASE */ 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun #define A_MAC_DMA_CHANNEL_BASE(macnum, txrx, chan) \ 164*4882a593Smuzhiyun ((A_MAC_CHANNEL_BASE(macnum)) + \ 165*4882a593Smuzhiyun R_MAC_DMA_CHANNELS + \ 166*4882a593Smuzhiyun (MAC_DMA_TXRX_SPACING*(txrx)) + \ 167*4882a593Smuzhiyun (MAC_DMA_CHANNEL_SPACING*(chan))) 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #define R_MAC_DMA_CHANNEL_BASE(txrx, chan) \ 170*4882a593Smuzhiyun (R_MAC_DMA_CHANNELS + \ 171*4882a593Smuzhiyun (MAC_DMA_TXRX_SPACING*(txrx)) + \ 172*4882a593Smuzhiyun (MAC_DMA_CHANNEL_SPACING*(chan))) 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun #define A_MAC_DMA_REGISTER(macnum, txrx, chan, reg) \ 175*4882a593Smuzhiyun (A_MAC_DMA_CHANNEL_BASE(macnum, txrx, chan) + \ 176*4882a593Smuzhiyun (reg)) 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun #define R_MAC_DMA_REGISTER(txrx, chan, reg) \ 179*4882a593Smuzhiyun (R_MAC_DMA_CHANNEL_BASE(txrx, chan) + \ 180*4882a593Smuzhiyun (reg)) 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun /* 183*4882a593Smuzhiyun * DMA channel registers, relative to A_MAC_DMA_CHANNEL_BASE 184*4882a593Smuzhiyun */ 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun #define R_MAC_DMA_CONFIG0 0x00000000 187*4882a593Smuzhiyun #define R_MAC_DMA_CONFIG1 0x00000008 188*4882a593Smuzhiyun #define R_MAC_DMA_DSCR_BASE 0x00000010 189*4882a593Smuzhiyun #define R_MAC_DMA_DSCR_CNT 0x00000018 190*4882a593Smuzhiyun #define R_MAC_DMA_CUR_DSCRA 0x00000020 191*4882a593Smuzhiyun #define R_MAC_DMA_CUR_DSCRB 0x00000028 192*4882a593Smuzhiyun #define R_MAC_DMA_CUR_DSCRADDR 0x00000030 193*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 194*4882a593Smuzhiyun #define R_MAC_DMA_OODPKTLOST_RX 0x00000038 /* rx only */ 195*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun /* 198*4882a593Smuzhiyun * RMON Counters 199*4882a593Smuzhiyun */ 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun #define R_MAC_RMON_TX_BYTES 0x00000000 202*4882a593Smuzhiyun #define R_MAC_RMON_COLLISIONS 0x00000008 203*4882a593Smuzhiyun #define R_MAC_RMON_LATE_COL 0x00000010 204*4882a593Smuzhiyun #define R_MAC_RMON_EX_COL 0x00000018 205*4882a593Smuzhiyun #define R_MAC_RMON_FCS_ERROR 0x00000020 206*4882a593Smuzhiyun #define R_MAC_RMON_TX_ABORT 0x00000028 207*4882a593Smuzhiyun /* Counter #6 (0x30) now reserved */ 208*4882a593Smuzhiyun #define R_MAC_RMON_TX_BAD 0x00000038 209*4882a593Smuzhiyun #define R_MAC_RMON_TX_GOOD 0x00000040 210*4882a593Smuzhiyun #define R_MAC_RMON_TX_RUNT 0x00000048 211*4882a593Smuzhiyun #define R_MAC_RMON_TX_OVERSIZE 0x00000050 212*4882a593Smuzhiyun #define R_MAC_RMON_RX_BYTES 0x00000080 213*4882a593Smuzhiyun #define R_MAC_RMON_RX_MCAST 0x00000088 214*4882a593Smuzhiyun #define R_MAC_RMON_RX_BCAST 0x00000090 215*4882a593Smuzhiyun #define R_MAC_RMON_RX_BAD 0x00000098 216*4882a593Smuzhiyun #define R_MAC_RMON_RX_GOOD 0x000000A0 217*4882a593Smuzhiyun #define R_MAC_RMON_RX_RUNT 0x000000A8 218*4882a593Smuzhiyun #define R_MAC_RMON_RX_OVERSIZE 0x000000B0 219*4882a593Smuzhiyun #define R_MAC_RMON_RX_FCS_ERROR 0x000000B8 220*4882a593Smuzhiyun #define R_MAC_RMON_RX_LENGTH_ERROR 0x000000C0 221*4882a593Smuzhiyun #define R_MAC_RMON_RX_CODE_ERROR 0x000000C8 222*4882a593Smuzhiyun #define R_MAC_RMON_RX_ALIGN_ERROR 0x000000D0 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun /* Updated to spec 0.2 */ 225*4882a593Smuzhiyun #define R_MAC_CFG 0x00000100 226*4882a593Smuzhiyun #define R_MAC_THRSH_CFG 0x00000108 227*4882a593Smuzhiyun #define R_MAC_VLANTAG 0x00000110 228*4882a593Smuzhiyun #define R_MAC_FRAMECFG 0x00000118 229*4882a593Smuzhiyun #define R_MAC_EOPCNT 0x00000120 230*4882a593Smuzhiyun #define R_MAC_FIFO_PTRS 0x00000128 231*4882a593Smuzhiyun #define R_MAC_ADFILTER_CFG 0x00000200 232*4882a593Smuzhiyun #define R_MAC_ETHERNET_ADDR 0x00000208 233*4882a593Smuzhiyun #define R_MAC_PKT_TYPE 0x00000210 234*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 235*4882a593Smuzhiyun #define R_MAC_ADMASK0 0x00000218 236*4882a593Smuzhiyun #define R_MAC_ADMASK1 0x00000220 237*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 || 1480 */ 238*4882a593Smuzhiyun #define R_MAC_HASH_BASE 0x00000240 239*4882a593Smuzhiyun #define R_MAC_ADDR_BASE 0x00000280 240*4882a593Smuzhiyun #define R_MAC_CHLO0_BASE 0x00000300 241*4882a593Smuzhiyun #define R_MAC_CHUP0_BASE 0x00000320 242*4882a593Smuzhiyun #define R_MAC_ENABLE 0x00000400 243*4882a593Smuzhiyun #define R_MAC_STATUS 0x00000408 244*4882a593Smuzhiyun #define R_MAC_INT_MASK 0x00000410 245*4882a593Smuzhiyun #define R_MAC_TXD_CTL 0x00000420 246*4882a593Smuzhiyun #define R_MAC_MDIO 0x00000428 247*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 248*4882a593Smuzhiyun #define R_MAC_STATUS1 0x00000430 249*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 250*4882a593Smuzhiyun #define R_MAC_DEBUG_STATUS 0x00000448 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun #define MAC_HASH_COUNT 8 253*4882a593Smuzhiyun #define MAC_ADDR_COUNT 8 254*4882a593Smuzhiyun #define MAC_CHMAP_COUNT 4 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* ********************************************************************* 258*4882a593Smuzhiyun * DUART Registers 259*4882a593Smuzhiyun ********************************************************************* */ 260*4882a593Smuzhiyun 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* This MC only on 1250 & 112x */ 263*4882a593Smuzhiyun #define R_DUART_NUM_PORTS 2 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun #define A_DUART 0x0010060000 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun #define DUART_CHANREG_SPACING 0x100 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun #define A_DUART_CHANREG(chan, reg) \ 270*4882a593Smuzhiyun (A_DUART + DUART_CHANREG_SPACING * ((chan) + 1) + (reg)) 271*4882a593Smuzhiyun #endif /* 1250 & 112x */ 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define R_DUART_MODE_REG_1 0x000 274*4882a593Smuzhiyun #define R_DUART_MODE_REG_2 0x010 275*4882a593Smuzhiyun #define R_DUART_STATUS 0x020 276*4882a593Smuzhiyun #define R_DUART_CLK_SEL 0x030 277*4882a593Smuzhiyun #define R_DUART_CMD 0x050 278*4882a593Smuzhiyun #define R_DUART_RX_HOLD 0x060 279*4882a593Smuzhiyun #define R_DUART_TX_HOLD 0x070 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 282*4882a593Smuzhiyun #define R_DUART_FULL_CTL 0x040 283*4882a593Smuzhiyun #define R_DUART_OPCR_X 0x080 284*4882a593Smuzhiyun #define R_DUART_AUXCTL_X 0x090 285*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun /* 289*4882a593Smuzhiyun * The IMR and ISR can't be addressed with A_DUART_CHANREG, 290*4882a593Smuzhiyun * so use these macros instead. 291*4882a593Smuzhiyun */ 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* This MC only on 1250 & 112x */ 294*4882a593Smuzhiyun #define DUART_IMRISR_SPACING 0x20 295*4882a593Smuzhiyun #define DUART_INCHNG_SPACING 0x10 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun #define A_DUART_CTRLREG(reg) \ 298*4882a593Smuzhiyun (A_DUART + DUART_CHANREG_SPACING * 3 + (reg)) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define R_DUART_IMRREG(chan) \ 301*4882a593Smuzhiyun (R_DUART_IMR_A + (chan) * DUART_IMRISR_SPACING) 302*4882a593Smuzhiyun #define R_DUART_ISRREG(chan) \ 303*4882a593Smuzhiyun (R_DUART_ISR_A + (chan) * DUART_IMRISR_SPACING) 304*4882a593Smuzhiyun #define R_DUART_INCHREG(chan) \ 305*4882a593Smuzhiyun (R_DUART_IN_CHNG_A + (chan) * DUART_INCHNG_SPACING) 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun #define A_DUART_IMRREG(chan) A_DUART_CTRLREG(R_DUART_IMRREG(chan)) 308*4882a593Smuzhiyun #define A_DUART_ISRREG(chan) A_DUART_CTRLREG(R_DUART_ISRREG(chan)) 309*4882a593Smuzhiyun #define A_DUART_INCHREG(chan) A_DUART_CTRLREG(R_DUART_INCHREG(chan)) 310*4882a593Smuzhiyun #endif /* 1250 & 112x */ 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #define R_DUART_AUX_CTRL 0x010 313*4882a593Smuzhiyun #define R_DUART_ISR_A 0x020 314*4882a593Smuzhiyun #define R_DUART_IMR_A 0x030 315*4882a593Smuzhiyun #define R_DUART_ISR_B 0x040 316*4882a593Smuzhiyun #define R_DUART_IMR_B 0x050 317*4882a593Smuzhiyun #define R_DUART_OUT_PORT 0x060 318*4882a593Smuzhiyun #define R_DUART_OPCR 0x070 319*4882a593Smuzhiyun #define R_DUART_IN_PORT 0x080 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun #define R_DUART_SET_OPR 0x0B0 322*4882a593Smuzhiyun #define R_DUART_CLEAR_OPR 0x0C0 323*4882a593Smuzhiyun #define R_DUART_IN_CHNG_A 0x0D0 324*4882a593Smuzhiyun #define R_DUART_IN_CHNG_B 0x0E0 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun /* 328*4882a593Smuzhiyun * These constants are the absolute addresses. 329*4882a593Smuzhiyun */ 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun #define A_DUART_MODE_REG_1_A 0x0010060100 332*4882a593Smuzhiyun #define A_DUART_MODE_REG_2_A 0x0010060110 333*4882a593Smuzhiyun #define A_DUART_STATUS_A 0x0010060120 334*4882a593Smuzhiyun #define A_DUART_CLK_SEL_A 0x0010060130 335*4882a593Smuzhiyun #define A_DUART_CMD_A 0x0010060150 336*4882a593Smuzhiyun #define A_DUART_RX_HOLD_A 0x0010060160 337*4882a593Smuzhiyun #define A_DUART_TX_HOLD_A 0x0010060170 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun #define A_DUART_MODE_REG_1_B 0x0010060200 340*4882a593Smuzhiyun #define A_DUART_MODE_REG_2_B 0x0010060210 341*4882a593Smuzhiyun #define A_DUART_STATUS_B 0x0010060220 342*4882a593Smuzhiyun #define A_DUART_CLK_SEL_B 0x0010060230 343*4882a593Smuzhiyun #define A_DUART_CMD_B 0x0010060250 344*4882a593Smuzhiyun #define A_DUART_RX_HOLD_B 0x0010060260 345*4882a593Smuzhiyun #define A_DUART_TX_HOLD_B 0x0010060270 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun #define A_DUART_INPORT_CHNG 0x0010060300 348*4882a593Smuzhiyun #define A_DUART_AUX_CTRL 0x0010060310 349*4882a593Smuzhiyun #define A_DUART_ISR_A 0x0010060320 350*4882a593Smuzhiyun #define A_DUART_IMR_A 0x0010060330 351*4882a593Smuzhiyun #define A_DUART_ISR_B 0x0010060340 352*4882a593Smuzhiyun #define A_DUART_IMR_B 0x0010060350 353*4882a593Smuzhiyun #define A_DUART_OUT_PORT 0x0010060360 354*4882a593Smuzhiyun #define A_DUART_OPCR 0x0010060370 355*4882a593Smuzhiyun #define A_DUART_IN_PORT 0x0010060380 356*4882a593Smuzhiyun #define A_DUART_ISR 0x0010060390 357*4882a593Smuzhiyun #define A_DUART_IMR 0x00100603A0 358*4882a593Smuzhiyun #define A_DUART_SET_OPR 0x00100603B0 359*4882a593Smuzhiyun #define A_DUART_CLEAR_OPR 0x00100603C0 360*4882a593Smuzhiyun #define A_DUART_INPORT_CHNG_A 0x00100603D0 361*4882a593Smuzhiyun #define A_DUART_INPORT_CHNG_B 0x00100603E0 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 364*4882a593Smuzhiyun #define A_DUART_FULL_CTL_A 0x0010060140 365*4882a593Smuzhiyun #define A_DUART_FULL_CTL_B 0x0010060240 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun #define A_DUART_OPCR_A 0x0010060180 368*4882a593Smuzhiyun #define A_DUART_OPCR_B 0x0010060280 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun #define A_DUART_INPORT_CHNG_DEBUG 0x00100603F0 371*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /* ********************************************************************* 375*4882a593Smuzhiyun * Synchronous Serial Registers 376*4882a593Smuzhiyun ********************************************************************* */ 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x /* sync serial only on 1250/112x */ 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun #define A_SER_BASE_0 0x0010060400 382*4882a593Smuzhiyun #define A_SER_BASE_1 0x0010060800 383*4882a593Smuzhiyun #define SER_SPACING 0x400 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun #define SER_DMA_TXRX_SPACING 0x80 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun #define SER_NUM_PORTS 2 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun #define A_SER_CHANNEL_BASE(sernum) \ 390*4882a593Smuzhiyun (A_SER_BASE_0 + \ 391*4882a593Smuzhiyun SER_SPACING*(sernum)) 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun #define A_SER_REGISTER(sernum,reg) \ 394*4882a593Smuzhiyun (A_SER_BASE_0 + \ 395*4882a593Smuzhiyun SER_SPACING*(sernum) + (reg)) 396*4882a593Smuzhiyun 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun #define R_SER_DMA_CHANNELS 0 /* Relative to A_SER_BASE_x */ 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun #define A_SER_DMA_CHANNEL_BASE(sernum,txrx) \ 401*4882a593Smuzhiyun ((A_SER_CHANNEL_BASE(sernum)) + \ 402*4882a593Smuzhiyun R_SER_DMA_CHANNELS + \ 403*4882a593Smuzhiyun (SER_DMA_TXRX_SPACING*(txrx))) 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun #define A_SER_DMA_REGISTER(sernum, txrx, reg) \ 406*4882a593Smuzhiyun (A_SER_DMA_CHANNEL_BASE(sernum, txrx) + \ 407*4882a593Smuzhiyun (reg)) 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun /* 411*4882a593Smuzhiyun * DMA channel registers, relative to A_SER_DMA_CHANNEL_BASE 412*4882a593Smuzhiyun */ 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun #define R_SER_DMA_CONFIG0 0x00000000 415*4882a593Smuzhiyun #define R_SER_DMA_CONFIG1 0x00000008 416*4882a593Smuzhiyun #define R_SER_DMA_DSCR_BASE 0x00000010 417*4882a593Smuzhiyun #define R_SER_DMA_DSCR_CNT 0x00000018 418*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCRA 0x00000020 419*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCRB 0x00000028 420*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCRADDR 0x00000030 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun #define R_SER_DMA_CONFIG0_RX 0x00000000 423*4882a593Smuzhiyun #define R_SER_DMA_CONFIG1_RX 0x00000008 424*4882a593Smuzhiyun #define R_SER_DMA_DSCR_BASE_RX 0x00000010 425*4882a593Smuzhiyun #define R_SER_DMA_DSCR_COUNT_RX 0x00000018 426*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_A_RX 0x00000020 427*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_B_RX 0x00000028 428*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_ADDR_RX 0x00000030 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun #define R_SER_DMA_CONFIG0_TX 0x00000080 431*4882a593Smuzhiyun #define R_SER_DMA_CONFIG1_TX 0x00000088 432*4882a593Smuzhiyun #define R_SER_DMA_DSCR_BASE_TX 0x00000090 433*4882a593Smuzhiyun #define R_SER_DMA_DSCR_COUNT_TX 0x00000098 434*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_A_TX 0x000000A0 435*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_B_TX 0x000000A8 436*4882a593Smuzhiyun #define R_SER_DMA_CUR_DSCR_ADDR_TX 0x000000B0 437*4882a593Smuzhiyun 438*4882a593Smuzhiyun #define R_SER_MODE 0x00000100 439*4882a593Smuzhiyun #define R_SER_MINFRM_SZ 0x00000108 440*4882a593Smuzhiyun #define R_SER_MAXFRM_SZ 0x00000110 441*4882a593Smuzhiyun #define R_SER_ADDR 0x00000118 442*4882a593Smuzhiyun #define R_SER_USR0_ADDR 0x00000120 443*4882a593Smuzhiyun #define R_SER_USR1_ADDR 0x00000128 444*4882a593Smuzhiyun #define R_SER_USR2_ADDR 0x00000130 445*4882a593Smuzhiyun #define R_SER_USR3_ADDR 0x00000138 446*4882a593Smuzhiyun #define R_SER_CMD 0x00000140 447*4882a593Smuzhiyun #define R_SER_TX_RD_THRSH 0x00000160 448*4882a593Smuzhiyun #define R_SER_TX_WR_THRSH 0x00000168 449*4882a593Smuzhiyun #define R_SER_RX_RD_THRSH 0x00000170 450*4882a593Smuzhiyun #define R_SER_LINE_MODE 0x00000178 451*4882a593Smuzhiyun #define R_SER_DMA_ENABLE 0x00000180 452*4882a593Smuzhiyun #define R_SER_INT_MASK 0x00000190 453*4882a593Smuzhiyun #define R_SER_STATUS 0x00000188 454*4882a593Smuzhiyun #define R_SER_STATUS_DEBUG 0x000001A8 455*4882a593Smuzhiyun #define R_SER_RX_TABLE_BASE 0x00000200 456*4882a593Smuzhiyun #define SER_RX_TABLE_COUNT 16 457*4882a593Smuzhiyun #define R_SER_TX_TABLE_BASE 0x00000300 458*4882a593Smuzhiyun #define SER_TX_TABLE_COUNT 16 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun /* RMON Counters */ 461*4882a593Smuzhiyun #define R_SER_RMON_TX_BYTE_LO 0x000001C0 462*4882a593Smuzhiyun #define R_SER_RMON_TX_BYTE_HI 0x000001C8 463*4882a593Smuzhiyun #define R_SER_RMON_RX_BYTE_LO 0x000001D0 464*4882a593Smuzhiyun #define R_SER_RMON_RX_BYTE_HI 0x000001D8 465*4882a593Smuzhiyun #define R_SER_RMON_TX_UNDERRUN 0x000001E0 466*4882a593Smuzhiyun #define R_SER_RMON_RX_OVERFLOW 0x000001E8 467*4882a593Smuzhiyun #define R_SER_RMON_RX_ERRORS 0x000001F0 468*4882a593Smuzhiyun #define R_SER_RMON_RX_BADADDR 0x000001F8 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun #endif /* 1250/112x */ 471*4882a593Smuzhiyun 472*4882a593Smuzhiyun /* ********************************************************************* 473*4882a593Smuzhiyun * Generic Bus Registers 474*4882a593Smuzhiyun ********************************************************************* */ 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun #define IO_EXT_CFG_COUNT 8 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun #define A_IO_EXT_BASE 0x0010061000 479*4882a593Smuzhiyun #define A_IO_EXT_REG(r) (A_IO_EXT_BASE + (r)) 480*4882a593Smuzhiyun 481*4882a593Smuzhiyun #define A_IO_EXT_CFG_BASE 0x0010061000 482*4882a593Smuzhiyun #define A_IO_EXT_MULT_SIZE_BASE 0x0010061100 483*4882a593Smuzhiyun #define A_IO_EXT_START_ADDR_BASE 0x0010061200 484*4882a593Smuzhiyun #define A_IO_EXT_TIME_CFG0_BASE 0x0010061600 485*4882a593Smuzhiyun #define A_IO_EXT_TIME_CFG1_BASE 0x0010061700 486*4882a593Smuzhiyun 487*4882a593Smuzhiyun #define IO_EXT_REGISTER_SPACING 8 488*4882a593Smuzhiyun #define A_IO_EXT_CS_BASE(cs) (A_IO_EXT_CFG_BASE+IO_EXT_REGISTER_SPACING*(cs)) 489*4882a593Smuzhiyun #define R_IO_EXT_REG(reg, cs) ((cs)*IO_EXT_REGISTER_SPACING + (reg)) 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun #define R_IO_EXT_CFG 0x0000 492*4882a593Smuzhiyun #define R_IO_EXT_MULT_SIZE 0x0100 493*4882a593Smuzhiyun #define R_IO_EXT_START_ADDR 0x0200 494*4882a593Smuzhiyun #define R_IO_EXT_TIME_CFG0 0x0600 495*4882a593Smuzhiyun #define R_IO_EXT_TIME_CFG1 0x0700 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun 498*4882a593Smuzhiyun #define A_IO_INTERRUPT_STATUS 0x0010061A00 499*4882a593Smuzhiyun #define A_IO_INTERRUPT_DATA0 0x0010061A10 500*4882a593Smuzhiyun #define A_IO_INTERRUPT_DATA1 0x0010061A18 501*4882a593Smuzhiyun #define A_IO_INTERRUPT_DATA2 0x0010061A20 502*4882a593Smuzhiyun #define A_IO_INTERRUPT_DATA3 0x0010061A28 503*4882a593Smuzhiyun #define A_IO_INTERRUPT_ADDR0 0x0010061A30 504*4882a593Smuzhiyun #define A_IO_INTERRUPT_ADDR1 0x0010061A40 505*4882a593Smuzhiyun #define A_IO_INTERRUPT_PARITY 0x0010061A50 506*4882a593Smuzhiyun #define A_IO_PCMCIA_CFG 0x0010061A60 507*4882a593Smuzhiyun #define A_IO_PCMCIA_STATUS 0x0010061A70 508*4882a593Smuzhiyun #define A_IO_DRIVE_0 0x0010061300 509*4882a593Smuzhiyun #define A_IO_DRIVE_1 0x0010061308 510*4882a593Smuzhiyun #define A_IO_DRIVE_2 0x0010061310 511*4882a593Smuzhiyun #define A_IO_DRIVE_3 0x0010061318 512*4882a593Smuzhiyun #define A_IO_DRIVE_BASE A_IO_DRIVE_0 513*4882a593Smuzhiyun #define IO_DRIVE_REGISTER_SPACING 8 514*4882a593Smuzhiyun #define R_IO_DRIVE(x) ((x)*IO_DRIVE_REGISTER_SPACING) 515*4882a593Smuzhiyun #define A_IO_DRIVE(x) (A_IO_DRIVE_BASE + R_IO_DRIVE(x)) 516*4882a593Smuzhiyun 517*4882a593Smuzhiyun #define R_IO_INTERRUPT_STATUS 0x0A00 518*4882a593Smuzhiyun #define R_IO_INTERRUPT_DATA0 0x0A10 519*4882a593Smuzhiyun #define R_IO_INTERRUPT_DATA1 0x0A18 520*4882a593Smuzhiyun #define R_IO_INTERRUPT_DATA2 0x0A20 521*4882a593Smuzhiyun #define R_IO_INTERRUPT_DATA3 0x0A28 522*4882a593Smuzhiyun #define R_IO_INTERRUPT_ADDR0 0x0A30 523*4882a593Smuzhiyun #define R_IO_INTERRUPT_ADDR1 0x0A40 524*4882a593Smuzhiyun #define R_IO_INTERRUPT_PARITY 0x0A50 525*4882a593Smuzhiyun #define R_IO_PCMCIA_CFG 0x0A60 526*4882a593Smuzhiyun #define R_IO_PCMCIA_STATUS 0x0A70 527*4882a593Smuzhiyun 528*4882a593Smuzhiyun /* ********************************************************************* 529*4882a593Smuzhiyun * GPIO Registers 530*4882a593Smuzhiyun ********************************************************************* */ 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun #define A_GPIO_CLR_EDGE 0x0010061A80 533*4882a593Smuzhiyun #define A_GPIO_INT_TYPE 0x0010061A88 534*4882a593Smuzhiyun #define A_GPIO_INPUT_INVERT 0x0010061A90 535*4882a593Smuzhiyun #define A_GPIO_GLITCH 0x0010061A98 536*4882a593Smuzhiyun #define A_GPIO_READ 0x0010061AA0 537*4882a593Smuzhiyun #define A_GPIO_DIRECTION 0x0010061AA8 538*4882a593Smuzhiyun #define A_GPIO_PIN_CLR 0x0010061AB0 539*4882a593Smuzhiyun #define A_GPIO_PIN_SET 0x0010061AB8 540*4882a593Smuzhiyun 541*4882a593Smuzhiyun #define A_GPIO_BASE 0x0010061A80 542*4882a593Smuzhiyun 543*4882a593Smuzhiyun #define R_GPIO_CLR_EDGE 0x00 544*4882a593Smuzhiyun #define R_GPIO_INT_TYPE 0x08 545*4882a593Smuzhiyun #define R_GPIO_INPUT_INVERT 0x10 546*4882a593Smuzhiyun #define R_GPIO_GLITCH 0x18 547*4882a593Smuzhiyun #define R_GPIO_READ 0x20 548*4882a593Smuzhiyun #define R_GPIO_DIRECTION 0x28 549*4882a593Smuzhiyun #define R_GPIO_PIN_CLR 0x30 550*4882a593Smuzhiyun #define R_GPIO_PIN_SET 0x38 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun /* ********************************************************************* 553*4882a593Smuzhiyun * SMBus Registers 554*4882a593Smuzhiyun ********************************************************************* */ 555*4882a593Smuzhiyun 556*4882a593Smuzhiyun #define A_SMB_XTRA_0 0x0010060000 557*4882a593Smuzhiyun #define A_SMB_XTRA_1 0x0010060008 558*4882a593Smuzhiyun #define A_SMB_FREQ_0 0x0010060010 559*4882a593Smuzhiyun #define A_SMB_FREQ_1 0x0010060018 560*4882a593Smuzhiyun #define A_SMB_STATUS_0 0x0010060020 561*4882a593Smuzhiyun #define A_SMB_STATUS_1 0x0010060028 562*4882a593Smuzhiyun #define A_SMB_CMD_0 0x0010060030 563*4882a593Smuzhiyun #define A_SMB_CMD_1 0x0010060038 564*4882a593Smuzhiyun #define A_SMB_START_0 0x0010060040 565*4882a593Smuzhiyun #define A_SMB_START_1 0x0010060048 566*4882a593Smuzhiyun #define A_SMB_DATA_0 0x0010060050 567*4882a593Smuzhiyun #define A_SMB_DATA_1 0x0010060058 568*4882a593Smuzhiyun #define A_SMB_CONTROL_0 0x0010060060 569*4882a593Smuzhiyun #define A_SMB_CONTROL_1 0x0010060068 570*4882a593Smuzhiyun #define A_SMB_PEC_0 0x0010060070 571*4882a593Smuzhiyun #define A_SMB_PEC_1 0x0010060078 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun #define A_SMB_0 0x0010060000 574*4882a593Smuzhiyun #define A_SMB_1 0x0010060008 575*4882a593Smuzhiyun #define SMB_REGISTER_SPACING 0x8 576*4882a593Smuzhiyun #define A_SMB_BASE(idx) (A_SMB_0+(idx)*SMB_REGISTER_SPACING) 577*4882a593Smuzhiyun #define A_SMB_REGISTER(idx, reg) (A_SMB_BASE(idx)+(reg)) 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun #define R_SMB_XTRA 0x0000000000 580*4882a593Smuzhiyun #define R_SMB_FREQ 0x0000000010 581*4882a593Smuzhiyun #define R_SMB_STATUS 0x0000000020 582*4882a593Smuzhiyun #define R_SMB_CMD 0x0000000030 583*4882a593Smuzhiyun #define R_SMB_START 0x0000000040 584*4882a593Smuzhiyun #define R_SMB_DATA 0x0000000050 585*4882a593Smuzhiyun #define R_SMB_CONTROL 0x0000000060 586*4882a593Smuzhiyun #define R_SMB_PEC 0x0000000070 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun /* ********************************************************************* 589*4882a593Smuzhiyun * Timer Registers 590*4882a593Smuzhiyun ********************************************************************* */ 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun /* 593*4882a593Smuzhiyun * Watchdog timers 594*4882a593Smuzhiyun */ 595*4882a593Smuzhiyun 596*4882a593Smuzhiyun #define A_SCD_WDOG_0 0x0010020050 597*4882a593Smuzhiyun #define A_SCD_WDOG_1 0x0010020150 598*4882a593Smuzhiyun #define SCD_WDOG_SPACING 0x100 599*4882a593Smuzhiyun #define SCD_NUM_WDOGS 2 600*4882a593Smuzhiyun #define A_SCD_WDOG_BASE(w) (A_SCD_WDOG_0+SCD_WDOG_SPACING*(w)) 601*4882a593Smuzhiyun #define A_SCD_WDOG_REGISTER(w, r) (A_SCD_WDOG_BASE(w) + (r)) 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun #define R_SCD_WDOG_INIT 0x0000000000 604*4882a593Smuzhiyun #define R_SCD_WDOG_CNT 0x0000000008 605*4882a593Smuzhiyun #define R_SCD_WDOG_CFG 0x0000000010 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun #define A_SCD_WDOG_INIT_0 0x0010020050 608*4882a593Smuzhiyun #define A_SCD_WDOG_CNT_0 0x0010020058 609*4882a593Smuzhiyun #define A_SCD_WDOG_CFG_0 0x0010020060 610*4882a593Smuzhiyun 611*4882a593Smuzhiyun #define A_SCD_WDOG_INIT_1 0x0010020150 612*4882a593Smuzhiyun #define A_SCD_WDOG_CNT_1 0x0010020158 613*4882a593Smuzhiyun #define A_SCD_WDOG_CFG_1 0x0010020160 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun /* 616*4882a593Smuzhiyun * Generic timers 617*4882a593Smuzhiyun */ 618*4882a593Smuzhiyun 619*4882a593Smuzhiyun #define A_SCD_TIMER_0 0x0010020070 620*4882a593Smuzhiyun #define A_SCD_TIMER_1 0x0010020078 621*4882a593Smuzhiyun #define A_SCD_TIMER_2 0x0010020170 622*4882a593Smuzhiyun #define A_SCD_TIMER_3 0x0010020178 623*4882a593Smuzhiyun #define SCD_NUM_TIMERS 4 624*4882a593Smuzhiyun #define A_SCD_TIMER_BASE(w) (A_SCD_TIMER_0+0x08*((w)&1)+0x100*(((w)&2)>>1)) 625*4882a593Smuzhiyun #define A_SCD_TIMER_REGISTER(w, r) (A_SCD_TIMER_BASE(w) + (r)) 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun #define R_SCD_TIMER_INIT 0x0000000000 628*4882a593Smuzhiyun #define R_SCD_TIMER_CNT 0x0000000010 629*4882a593Smuzhiyun #define R_SCD_TIMER_CFG 0x0000000020 630*4882a593Smuzhiyun 631*4882a593Smuzhiyun #define A_SCD_TIMER_INIT_0 0x0010020070 632*4882a593Smuzhiyun #define A_SCD_TIMER_CNT_0 0x0010020080 633*4882a593Smuzhiyun #define A_SCD_TIMER_CFG_0 0x0010020090 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun #define A_SCD_TIMER_INIT_1 0x0010020078 636*4882a593Smuzhiyun #define A_SCD_TIMER_CNT_1 0x0010020088 637*4882a593Smuzhiyun #define A_SCD_TIMER_CFG_1 0x0010020098 638*4882a593Smuzhiyun 639*4882a593Smuzhiyun #define A_SCD_TIMER_INIT_2 0x0010020170 640*4882a593Smuzhiyun #define A_SCD_TIMER_CNT_2 0x0010020180 641*4882a593Smuzhiyun #define A_SCD_TIMER_CFG_2 0x0010020190 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun #define A_SCD_TIMER_INIT_3 0x0010020178 644*4882a593Smuzhiyun #define A_SCD_TIMER_CNT_3 0x0010020188 645*4882a593Smuzhiyun #define A_SCD_TIMER_CFG_3 0x0010020198 646*4882a593Smuzhiyun 647*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 648*4882a593Smuzhiyun #define A_SCD_SCRATCH 0x0010020C10 649*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 650*4882a593Smuzhiyun 651*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 652*4882a593Smuzhiyun #define A_SCD_ZBBUS_CYCLE_COUNT 0x0010030000 653*4882a593Smuzhiyun #define A_SCD_ZBBUS_CYCLE_CP0 0x0010020C00 654*4882a593Smuzhiyun #define A_SCD_ZBBUS_CYCLE_CP1 0x0010020C08 655*4882a593Smuzhiyun #endif 656*4882a593Smuzhiyun 657*4882a593Smuzhiyun /* ********************************************************************* 658*4882a593Smuzhiyun * System Control Registers 659*4882a593Smuzhiyun ********************************************************************* */ 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun #define A_SCD_SYSTEM_REVISION 0x0010020000 662*4882a593Smuzhiyun #define A_SCD_SYSTEM_CFG 0x0010020008 663*4882a593Smuzhiyun #define A_SCD_SYSTEM_MANUF 0x0010038000 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun /* ********************************************************************* 666*4882a593Smuzhiyun * System Address Trap Registers 667*4882a593Smuzhiyun ********************************************************************* */ 668*4882a593Smuzhiyun 669*4882a593Smuzhiyun #define A_ADDR_TRAP_INDEX 0x00100200B0 670*4882a593Smuzhiyun #define A_ADDR_TRAP_REG 0x00100200B8 671*4882a593Smuzhiyun #define A_ADDR_TRAP_UP_0 0x0010020400 672*4882a593Smuzhiyun #define A_ADDR_TRAP_UP_1 0x0010020408 673*4882a593Smuzhiyun #define A_ADDR_TRAP_UP_2 0x0010020410 674*4882a593Smuzhiyun #define A_ADDR_TRAP_UP_3 0x0010020418 675*4882a593Smuzhiyun #define A_ADDR_TRAP_DOWN_0 0x0010020420 676*4882a593Smuzhiyun #define A_ADDR_TRAP_DOWN_1 0x0010020428 677*4882a593Smuzhiyun #define A_ADDR_TRAP_DOWN_2 0x0010020430 678*4882a593Smuzhiyun #define A_ADDR_TRAP_DOWN_3 0x0010020438 679*4882a593Smuzhiyun #define A_ADDR_TRAP_CFG_0 0x0010020440 680*4882a593Smuzhiyun #define A_ADDR_TRAP_CFG_1 0x0010020448 681*4882a593Smuzhiyun #define A_ADDR_TRAP_CFG_2 0x0010020450 682*4882a593Smuzhiyun #define A_ADDR_TRAP_CFG_3 0x0010020458 683*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) || SIBYTE_HDR_FEATURE_CHIP(1480) 684*4882a593Smuzhiyun #define A_ADDR_TRAP_REG_DEBUG 0x0010020460 685*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 || 1480 */ 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun #define ADDR_TRAP_SPACING 8 688*4882a593Smuzhiyun #define NUM_ADDR_TRAP 4 689*4882a593Smuzhiyun #define A_ADDR_TRAP_UP(n) (A_ADDR_TRAP_UP_0 + ((n) * ADDR_TRAP_SPACING)) 690*4882a593Smuzhiyun #define A_ADDR_TRAP_DOWN(n) (A_ADDR_TRAP_DOWN_0 + ((n) * ADDR_TRAP_SPACING)) 691*4882a593Smuzhiyun #define A_ADDR_TRAP_CFG(n) (A_ADDR_TRAP_CFG_0 + ((n) * ADDR_TRAP_SPACING)) 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun 694*4882a593Smuzhiyun /* ********************************************************************* 695*4882a593Smuzhiyun * System Interrupt Mapper Registers 696*4882a593Smuzhiyun ********************************************************************* */ 697*4882a593Smuzhiyun 698*4882a593Smuzhiyun #define A_IMR_CPU0_BASE 0x0010020000 699*4882a593Smuzhiyun #define A_IMR_CPU1_BASE 0x0010022000 700*4882a593Smuzhiyun #define IMR_REGISTER_SPACING 0x2000 701*4882a593Smuzhiyun #define IMR_REGISTER_SPACING_SHIFT 13 702*4882a593Smuzhiyun 703*4882a593Smuzhiyun #define A_IMR_MAPPER(cpu) (A_IMR_CPU0_BASE+(cpu)*IMR_REGISTER_SPACING) 704*4882a593Smuzhiyun #define A_IMR_REGISTER(cpu, reg) (A_IMR_MAPPER(cpu)+(reg)) 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun #define R_IMR_INTERRUPT_DIAG 0x0010 707*4882a593Smuzhiyun #define R_IMR_INTERRUPT_LDT 0x0018 708*4882a593Smuzhiyun #define R_IMR_INTERRUPT_MASK 0x0028 709*4882a593Smuzhiyun #define R_IMR_INTERRUPT_TRACE 0x0038 710*4882a593Smuzhiyun #define R_IMR_INTERRUPT_SOURCE_STATUS 0x0040 711*4882a593Smuzhiyun #define R_IMR_LDT_INTERRUPT_SET 0x0048 712*4882a593Smuzhiyun #define R_IMR_LDT_INTERRUPT 0x0018 713*4882a593Smuzhiyun #define R_IMR_LDT_INTERRUPT_CLR 0x0020 714*4882a593Smuzhiyun #define R_IMR_MAILBOX_CPU 0x00c0 715*4882a593Smuzhiyun #define R_IMR_ALIAS_MAILBOX_CPU 0x1000 716*4882a593Smuzhiyun #define R_IMR_MAILBOX_SET_CPU 0x00C8 717*4882a593Smuzhiyun #define R_IMR_ALIAS_MAILBOX_SET_CPU 0x1008 718*4882a593Smuzhiyun #define R_IMR_MAILBOX_CLR_CPU 0x00D0 719*4882a593Smuzhiyun #define R_IMR_INTERRUPT_STATUS_BASE 0x0100 720*4882a593Smuzhiyun #define R_IMR_INTERRUPT_STATUS_COUNT 7 721*4882a593Smuzhiyun #define R_IMR_INTERRUPT_MAP_BASE 0x0200 722*4882a593Smuzhiyun #define R_IMR_INTERRUPT_MAP_COUNT 64 723*4882a593Smuzhiyun 724*4882a593Smuzhiyun /* 725*4882a593Smuzhiyun * these macros work together to build the address of a mailbox 726*4882a593Smuzhiyun * register, e.g., A_MAILBOX_REGISTER(R_IMR_MAILBOX_SET_CPU,1) 727*4882a593Smuzhiyun * for mbox_0_set_cpu2 returns 0x00100240C8 728*4882a593Smuzhiyun */ 729*4882a593Smuzhiyun #define A_MAILBOX_REGISTER(reg,cpu) \ 730*4882a593Smuzhiyun (A_IMR_CPU0_BASE + (cpu * IMR_REGISTER_SPACING) + reg) 731*4882a593Smuzhiyun 732*4882a593Smuzhiyun /* ********************************************************************* 733*4882a593Smuzhiyun * System Performance Counter Registers 734*4882a593Smuzhiyun ********************************************************************* */ 735*4882a593Smuzhiyun 736*4882a593Smuzhiyun #define A_SCD_PERF_CNT_CFG 0x00100204C0 737*4882a593Smuzhiyun #define A_SCD_PERF_CNT_0 0x00100204D0 738*4882a593Smuzhiyun #define A_SCD_PERF_CNT_1 0x00100204D8 739*4882a593Smuzhiyun #define A_SCD_PERF_CNT_2 0x00100204E0 740*4882a593Smuzhiyun #define A_SCD_PERF_CNT_3 0x00100204E8 741*4882a593Smuzhiyun 742*4882a593Smuzhiyun #define SCD_NUM_PERF_CNT 4 743*4882a593Smuzhiyun #define SCD_PERF_CNT_SPACING 8 744*4882a593Smuzhiyun #define A_SCD_PERF_CNT(n) (A_SCD_PERF_CNT_0+(n*SCD_PERF_CNT_SPACING)) 745*4882a593Smuzhiyun 746*4882a593Smuzhiyun /* ********************************************************************* 747*4882a593Smuzhiyun * System Bus Watcher Registers 748*4882a593Smuzhiyun ********************************************************************* */ 749*4882a593Smuzhiyun 750*4882a593Smuzhiyun #define A_SCD_BUS_ERR_STATUS 0x0010020880 751*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 752*4882a593Smuzhiyun #define A_SCD_BUS_ERR_STATUS_DEBUG 0x00100208D0 753*4882a593Smuzhiyun #define A_BUS_ERR_STATUS_DEBUG 0x00100208D0 754*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 755*4882a593Smuzhiyun #define A_BUS_ERR_DATA_0 0x00100208A0 756*4882a593Smuzhiyun #define A_BUS_ERR_DATA_1 0x00100208A8 757*4882a593Smuzhiyun #define A_BUS_ERR_DATA_2 0x00100208B0 758*4882a593Smuzhiyun #define A_BUS_ERR_DATA_3 0x00100208B8 759*4882a593Smuzhiyun #define A_BUS_L2_ERRORS 0x00100208C0 760*4882a593Smuzhiyun #define A_BUS_MEM_IO_ERRORS 0x00100208C8 761*4882a593Smuzhiyun 762*4882a593Smuzhiyun /* ********************************************************************* 763*4882a593Smuzhiyun * System Debug Controller Registers 764*4882a593Smuzhiyun ********************************************************************* */ 765*4882a593Smuzhiyun 766*4882a593Smuzhiyun #define A_SCD_JTAG_BASE 0x0010000000 767*4882a593Smuzhiyun 768*4882a593Smuzhiyun /* ********************************************************************* 769*4882a593Smuzhiyun * System Trace Buffer Registers 770*4882a593Smuzhiyun ********************************************************************* */ 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun #define A_SCD_TRACE_CFG 0x0010020A00 773*4882a593Smuzhiyun #define A_SCD_TRACE_READ 0x0010020A08 774*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_0 0x0010020A20 775*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_1 0x0010020A28 776*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_2 0x0010020A30 777*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_3 0x0010020A38 778*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_0 0x0010020A40 779*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_1 0x0010020A48 780*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_2 0x0010020A50 781*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_3 0x0010020A58 782*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_4 0x0010020A60 783*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_5 0x0010020A68 784*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_6 0x0010020A70 785*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT_7 0x0010020A78 786*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_4 0x0010020A80 787*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_5 0x0010020A88 788*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_6 0x0010020A90 789*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE_7 0x0010020A98 790*4882a593Smuzhiyun 791*4882a593Smuzhiyun #define TRACE_REGISTER_SPACING 8 792*4882a593Smuzhiyun #define TRACE_NUM_REGISTERS 8 793*4882a593Smuzhiyun #define A_SCD_TRACE_EVENT(n) (((n) & 4) ? \ 794*4882a593Smuzhiyun (A_SCD_TRACE_EVENT_4 + (((n) & 3) * TRACE_REGISTER_SPACING)) : \ 795*4882a593Smuzhiyun (A_SCD_TRACE_EVENT_0 + ((n) * TRACE_REGISTER_SPACING))) 796*4882a593Smuzhiyun #define A_SCD_TRACE_SEQUENCE(n) (((n) & 4) ? \ 797*4882a593Smuzhiyun (A_SCD_TRACE_SEQUENCE_4 + (((n) & 3) * TRACE_REGISTER_SPACING)) : \ 798*4882a593Smuzhiyun (A_SCD_TRACE_SEQUENCE_0 + ((n) * TRACE_REGISTER_SPACING))) 799*4882a593Smuzhiyun 800*4882a593Smuzhiyun /* ********************************************************************* 801*4882a593Smuzhiyun * System Generic DMA Registers 802*4882a593Smuzhiyun ********************************************************************* */ 803*4882a593Smuzhiyun 804*4882a593Smuzhiyun #define A_DM_0 0x0010020B00 805*4882a593Smuzhiyun #define A_DM_1 0x0010020B20 806*4882a593Smuzhiyun #define A_DM_2 0x0010020B40 807*4882a593Smuzhiyun #define A_DM_3 0x0010020B60 808*4882a593Smuzhiyun #define DM_REGISTER_SPACING 0x20 809*4882a593Smuzhiyun #define DM_NUM_CHANNELS 4 810*4882a593Smuzhiyun #define A_DM_BASE(idx) (A_DM_0 + ((idx) * DM_REGISTER_SPACING)) 811*4882a593Smuzhiyun #define A_DM_REGISTER(idx, reg) (A_DM_BASE(idx) + (reg)) 812*4882a593Smuzhiyun 813*4882a593Smuzhiyun #define R_DM_DSCR_BASE 0x0000000000 814*4882a593Smuzhiyun #define R_DM_DSCR_COUNT 0x0000000008 815*4882a593Smuzhiyun #define R_DM_CUR_DSCR_ADDR 0x0000000010 816*4882a593Smuzhiyun #define R_DM_DSCR_BASE_DEBUG 0x0000000018 817*4882a593Smuzhiyun 818*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 819*4882a593Smuzhiyun #define A_DM_PARTIAL_0 0x0010020ba0 820*4882a593Smuzhiyun #define A_DM_PARTIAL_1 0x0010020ba8 821*4882a593Smuzhiyun #define A_DM_PARTIAL_2 0x0010020bb0 822*4882a593Smuzhiyun #define A_DM_PARTIAL_3 0x0010020bb8 823*4882a593Smuzhiyun #define DM_PARTIAL_REGISTER_SPACING 0x8 824*4882a593Smuzhiyun #define A_DM_PARTIAL(idx) (A_DM_PARTIAL_0 + ((idx) * DM_PARTIAL_REGISTER_SPACING)) 825*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 826*4882a593Smuzhiyun 827*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 828*4882a593Smuzhiyun #define A_DM_CRC_0 0x0010020b80 829*4882a593Smuzhiyun #define A_DM_CRC_1 0x0010020b90 830*4882a593Smuzhiyun #define DM_CRC_REGISTER_SPACING 0x10 831*4882a593Smuzhiyun #define DM_CRC_NUM_CHANNELS 2 832*4882a593Smuzhiyun #define A_DM_CRC_BASE(idx) (A_DM_CRC_0 + ((idx) * DM_CRC_REGISTER_SPACING)) 833*4882a593Smuzhiyun #define A_DM_CRC_REGISTER(idx, reg) (A_DM_CRC_BASE(idx) + (reg)) 834*4882a593Smuzhiyun 835*4882a593Smuzhiyun #define R_CRC_DEF_0 0x00 836*4882a593Smuzhiyun #define R_CTCP_DEF_0 0x08 837*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 838*4882a593Smuzhiyun 839*4882a593Smuzhiyun /* ********************************************************************* 840*4882a593Smuzhiyun * Physical Address Map 841*4882a593Smuzhiyun ********************************************************************* */ 842*4882a593Smuzhiyun 843*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_1250_112x 844*4882a593Smuzhiyun #define A_PHYS_MEMORY_0 _SB_MAKE64(0x0000000000) 845*4882a593Smuzhiyun #define A_PHYS_MEMORY_SIZE _SB_MAKE64((256*1024*1024)) 846*4882a593Smuzhiyun #define A_PHYS_SYSTEM_CTL _SB_MAKE64(0x0010000000) 847*4882a593Smuzhiyun #define A_PHYS_IO_SYSTEM _SB_MAKE64(0x0010060000) 848*4882a593Smuzhiyun #define A_PHYS_GENBUS _SB_MAKE64(0x0010090000) 849*4882a593Smuzhiyun #define A_PHYS_GENBUS_END _SB_MAKE64(0x0040000000) 850*4882a593Smuzhiyun #define A_PHYS_LDTPCI_IO_MATCH_BYTES_32 _SB_MAKE64(0x0040000000) 851*4882a593Smuzhiyun #define A_PHYS_LDTPCI_IO_MATCH_BITS_32 _SB_MAKE64(0x0060000000) 852*4882a593Smuzhiyun #define A_PHYS_MEMORY_1 _SB_MAKE64(0x0080000000) 853*4882a593Smuzhiyun #define A_PHYS_MEMORY_2 _SB_MAKE64(0x0090000000) 854*4882a593Smuzhiyun #define A_PHYS_MEMORY_3 _SB_MAKE64(0x00C0000000) 855*4882a593Smuzhiyun #define A_PHYS_L2_CACHE_TEST _SB_MAKE64(0x00D0000000) 856*4882a593Smuzhiyun #define A_PHYS_LDT_SPECIAL_MATCH_BYTES _SB_MAKE64(0x00D8000000) 857*4882a593Smuzhiyun #define A_PHYS_LDTPCI_IO_MATCH_BYTES _SB_MAKE64(0x00DC000000) 858*4882a593Smuzhiyun #define A_PHYS_LDTPCI_CFG_MATCH_BYTES _SB_MAKE64(0x00DE000000) 859*4882a593Smuzhiyun #define A_PHYS_LDT_SPECIAL_MATCH_BITS _SB_MAKE64(0x00F8000000) 860*4882a593Smuzhiyun #define A_PHYS_LDTPCI_IO_MATCH_BITS _SB_MAKE64(0x00FC000000) 861*4882a593Smuzhiyun #define A_PHYS_LDTPCI_CFG_MATCH_BITS _SB_MAKE64(0x00FE000000) 862*4882a593Smuzhiyun #define A_PHYS_MEMORY_EXP _SB_MAKE64(0x0100000000) 863*4882a593Smuzhiyun #define A_PHYS_MEMORY_EXP_SIZE _SB_MAKE64((508*1024*1024*1024)) 864*4882a593Smuzhiyun #define A_PHYS_LDT_EXP _SB_MAKE64(0x8000000000) 865*4882a593Smuzhiyun #define A_PHYS_PCI_FULLACCESS_BYTES _SB_MAKE64(0xF000000000) 866*4882a593Smuzhiyun #define A_PHYS_PCI_FULLACCESS_BITS _SB_MAKE64(0xF100000000) 867*4882a593Smuzhiyun #define A_PHYS_RESERVED _SB_MAKE64(0xF200000000) 868*4882a593Smuzhiyun #define A_PHYS_RESERVED_SPECIAL_LDT _SB_MAKE64(0xFD00000000) 869*4882a593Smuzhiyun 870*4882a593Smuzhiyun #define A_PHYS_L2CACHE_WAY_SIZE _SB_MAKE64(0x0000020000) 871*4882a593Smuzhiyun #define PHYS_L2CACHE_NUM_WAYS 4 872*4882a593Smuzhiyun #define A_PHYS_L2CACHE_TOTAL_SIZE _SB_MAKE64(0x0000080000) 873*4882a593Smuzhiyun #define A_PHYS_L2CACHE_WAY0 _SB_MAKE64(0x00D0180000) 874*4882a593Smuzhiyun #define A_PHYS_L2CACHE_WAY1 _SB_MAKE64(0x00D01A0000) 875*4882a593Smuzhiyun #define A_PHYS_L2CACHE_WAY2 _SB_MAKE64(0x00D01C0000) 876*4882a593Smuzhiyun #define A_PHYS_L2CACHE_WAY3 _SB_MAKE64(0x00D01E0000) 877*4882a593Smuzhiyun #endif 878*4882a593Smuzhiyun 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun #endif 881