bcm1250Lib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:137k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* bcm1250Lib.h - BCM1250 systems-on-chip header file */
  2. /* Copyright 2002 Wind River Systems, Inc. */
  3. /*********************************************************************
  4. *
  5. *  Copyright 2000,2001
  6. *  Broadcom Corporation. All rights reserved.
  7. *
  8. *  This software is furnished under license to Wind River Systems, Inc.
  9. *  and may be used only in accordance with the terms and conditions
  10. *  of this license.  No title or ownership is transferred hereby.
  11. ********************************************************************* */
  12. /*
  13.  * This file has been developed or significantly modified by the
  14.  * MIPS Center of Excellence Dedicated Engineering Staff.
  15.  * This notice is as per the MIPS Center of Excellence Master Partner
  16.  * Agreement, do not remove this notice without checking first with
  17.  * WR/Platforms MIPS Center of Excellence engineering management.
  18.  */
  19. /*
  20. modification history
  21. --------------------
  22. 01d,31may02,pgh  Fix the address definitions for R_MAC_CHLO0_BASE and
  23.                  R_MAC_CHUP0_BASE.
  24. 01c,10may02,tlc  Add C++ header protection.
  25. 01b,17dec01,agf  Replace __ASSEMBLER__ with _ASMLANGUAGE
  26. 01a,05dec01,agf  created
  27. */
  28. /*
  29. DESCRIPTION
  30. This file contains constants for the BCM 1250.  Register address
  31. definitions for the various subsystems are provided, and most (but
  32. not all) register field definitions are provided.
  33. Naming schemes for the BCM 1250 constants are:
  34.   M_xxx           MASK constant (identifies bits in a register). 
  35.                   For multi-bit fields, all bits in the field will
  36.                   be set.
  37.   K_xxx           "Code" constant (value for data in a multi-bit
  38.                   field).  The value is right justified.
  39.   V_xxx           "Value" constant.  This is the same as the 
  40.                   corresponding "K_xxx" constant, except it is
  41.                   shifted to the correct position in the register.
  42.   S_xxx           SHIFT constant.  This is the number of bits that
  43.                   a field value (code) needs to be shifted 
  44.                   (towards the left) to put the value in the right
  45.                   position for the register.
  46.   A_xxx           ADDRESS constant.  This will be a physical 
  47.                   address.  Use the PHYS_TO_K1 macro to generate
  48.                   a K1SEG address.
  49.   R_xxx           RELATIVE offset constant.  This is an offset from
  50.                   an A_xxx constant (usually the first register in
  51.                   a group).
  52.   
  53.   G_xxx(X)        GET value.  This macro obtains a multi-bit field
  54.                   from a register, masks it, and shifts it to
  55.                   the bottom of the register (retrieving a K_xxx
  56.                   value, for example).
  57.   V_xxx(X)        VALUE.  This macro computes the value of a
  58.                   K_xxx constant shifted to the correct position
  59.                   in the register.
  60. */
  61. #ifndef __INCbcm1250Libh
  62. #define __INCbcm1250Libh
  63. #ifdef __cplusplus
  64. extern "C" {
  65. #endif
  66. #include "vxWorks.h"
  67.          /* macros */
  68. /*
  69.  * Cast to 64-bit number.  Presumably the syntax is different in 
  70.  * assembly language.
  71.  *
  72.  */
  73. #if !defined(_ASMLANGUAGE)
  74. #define _SB_MAKE64(x) ((UINT64)(x))
  75. #define _SB_MAKE32(x) ((UINT32)(x))
  76. #else
  77. #define _SB_MAKE64(x) (x)
  78. #define _SB_MAKE32(x) (x)
  79. #endif
  80. /*
  81.  * Make a mask for 1 bit at position 'n'
  82.  */
  83. #define _SB_MAKEMASK1(n) (_SB_MAKE64(1) << _SB_MAKE64(n))
  84. #define _SB_MAKEMASK1_32(n) (_SB_MAKE32(1) << _SB_MAKE32(n))
  85. /*
  86.  * Make a mask for 'v' bits at position 'n'
  87.  */
  88. #define _SB_MAKEMASK(v,n) (_SB_MAKE64((_SB_MAKE64(1)<<(v))-1) << _SB_MAKE64(n))
  89. #define _SB_MAKEMASK_32(v,n) (_SB_MAKE32((_SB_MAKE32(1)<<(v))-1) << _SB_MAKE32(n))
  90. /*
  91.  * Make a value at 'v' at bit position 'n'
  92.  */
  93. #define _SB_MAKEVALUE(v,n) (_SB_MAKE64(v) << _SB_MAKE64(n))
  94. #define _SB_MAKEVALUE_32(v,n) (_SB_MAKE32(v) << _SB_MAKE32(n))
  95. #define _SB_GETVALUE(v,n,m) ((_SB_MAKE64(v) & _SB_MAKE64(m)) >> _SB_MAKE64(n))
  96. #define _SB_GETVALUE_32(v,n,m) ((_SB_MAKE32(v) & _SB_MAKE32(m)) >> _SB_MAKE32(n))
  97. /*
  98.  * Macros to read/write on-chip registers
  99.  */
  100. #if !defined(_ASMLANGUAGE)
  101. #define SBWRITECSR(csr,val) *((volatile UINT64 *) PHYS_TO_K1(csr)) = (val)
  102. #define SBREADCSR(csr) (*((volatile UINT64 *) PHYS_TO_K1(csr)))
  103. #endif /* _ASMLANGUAGE*/
  104.          /* defines */
  105. /*  *********************************************************************
  106.     *  Some general notes:
  107.     *  
  108.     *  For the most part, when there is more than one peripheral
  109.     *  of the same type on the SOC, the constants below will be
  110.     *  offsets from the base of each peripheral.  For example,
  111.     *  the MAC registers are described as offsets from the first
  112.     *  MAC register, and there will be a MAC_REGISTER() macro
  113.     *  to calculate the base address of a given MAC.  
  114.     *  
  115.     *  The information in this file is based on the BCM1250 SOC
  116.     *  manual version 0.2, July 2000.
  117.     ********************************************************************* */
  118. /*  ********************************************************************* 
  119.     * Memory Controller Registers
  120.     ********************************************************************* */
  121. #define A_MC_BASE_0                 0x0010051000
  122. #define A_MC_BASE_1                 0x0010052000
  123. #define MC_REGISTER_SPACING         0x1000
  124. #define A_MC_BASE(ctlid)            ((ctlid)*MC_REGISTER_SPACING+A_MC_BASE_0)
  125. #define A_MC_REGISTER(ctlid,reg)    (A_MC_BASE(ctlid)+(reg))
  126. #define R_MC_CONFIG                 0x0000000100
  127. #define R_MC_DRAMCMD                0x0000000120
  128. #define R_MC_DRAMMODE               0x0000000140
  129. #define R_MC_TIMING1                0x0000000160
  130. #define R_MC_TIMING2                0x0000000180
  131. #define R_MC_CS_START               0x00000001A0
  132. #define R_MC_CS_END                 0x00000001C0
  133. #define R_MC_CS_INTERLEAVE          0x00000001E0
  134. #define S_MC_CS_STARTEND            16
  135. #define R_MC_CSX_BASE               0x0000000200
  136. #define R_MC_CSX_ROW                0x0000000000 /* relative to CSX_BASE, above */
  137. #define R_MC_CSX_COL                0x0000000020 /* relative to CSX_BASE, above */
  138. #define R_MC_CSX_BA                 0x0000000040 /* relative to CSX_BASE, above */
  139. #define MC_CSX_SPACING              0x0000000060 /* relative to CSX_BASE, above */
  140. #define R_MC_CS0_ROW                0x0000000200
  141. #define R_MC_CS0_COL                0x0000000220
  142. #define R_MC_CS0_BA                 0x0000000240
  143. #define R_MC_CS1_ROW                0x0000000260
  144. #define R_MC_CS1_COL                0x0000000280
  145. #define R_MC_CS1_BA                 0x00000002A0
  146. #define R_MC_CS2_ROW                0x00000002C0
  147. #define R_MC_CS2_COL                0x00000002E0
  148. #define R_MC_CS2_BA                 0x0000000300
  149. #define R_MC_CS3_ROW                0x0000000320
  150. #define R_MC_CS3_COL                0x0000000340
  151. #define R_MC_CS3_BA                 0x0000000360
  152. #define R_MC_CS_ATTR                0x0000000380
  153. #define R_MC_TEST_DATA              0x0000000400
  154. #define R_MC_TEST_ECC               0x0000000420
  155. #define R_MC_MCLK_CFG               0x0000000500
  156. /*  ********************************************************************* 
  157.     * L2 Cache Control Registers
  158.     ********************************************************************* */
  159. #define A_L2_READ_ADDRESS           0x0010040018
  160. #define A_L2_EEC_ADDRESS            0x0010040038
  161. #define A_L2_WAY_DISABLE            0x0010041000
  162. #define A_L2_MAKEDISABLE(x)         (A_L2_WAY_DISABLE | (((~(x))&0x0F) << 8))
  163. #define A_L2_MGMT_TAG_BASE          0x00D0000000
  164. /*  ********************************************************************* 
  165.     * PCI Interface Registers
  166.     ********************************************************************* */
  167. #define A_PCI_TYPE00_HEADER         0x00DE000000
  168. #define A_PCI_TYPE01_HEADER         0x00DE000800
  169. /*  ********************************************************************* 
  170.     * Ethernet DMA and MACs
  171.     ********************************************************************* */
  172. #define A_MAC_BASE_0                0x0010064000
  173. #define A_MAC_BASE_1                0x0010065000
  174. #define A_MAC_BASE_2                0x0010066000
  175. #define MAC_SPACING                 0x1000
  176. #define MAC_DMA_TXRX_SPACING        0x0400
  177. #define MAC_DMA_CHANNEL_SPACING     0x0100
  178. #define DMA_RX                      0
  179. #define DMA_TX                      1
  180. #define MAC_NUM_DMACHAN     2     /* channels per direction */
  181. #define MAC_NUM_PORTS               3
  182. #define A_MAC_CHANNEL_BASE(macnum)                  
  183.             (A_MAC_BASE_0 +                         
  184.              MAC_SPACING*(macnum))
  185. #define A_MAC_REGISTER(macnum,reg)                  
  186.             (A_MAC_BASE_0 +                         
  187.              MAC_SPACING*(macnum) + (reg))
  188. #define R_MAC_DMA_CHANNELS 0x800 /* Relative to A_MAC_CHANNEL_BASE */
  189. #define A_MAC_DMA_CHANNEL_BASE(macnum,txrx,chan)    
  190.              ((A_MAC_CHANNEL_BASE(macnum)) +        
  191.              R_MAC_DMA_CHANNELS +                   
  192.              (MAC_DMA_TXRX_SPACING*(txrx)) +        
  193.              (MAC_DMA_CHANNEL_SPACING*(chan)))
  194. #define R_MAC_DMA_CHANNEL_BASE(txrx,chan)    
  195.              (R_MAC_DMA_CHANNELS +                   
  196.              (MAC_DMA_TXRX_SPACING*(txrx)) +        
  197.              (MAC_DMA_CHANNEL_SPACING*(chan)))
  198. #define A_MAC_DMA_REGISTER(macnum,txrx,chan,reg)           
  199.             (A_MAC_DMA_CHANNEL_BASE(macnum,txrx,chan) +    
  200.             (reg))
  201. #define R_MAC_DMA_REGISTER(txrx,chan,reg)           
  202.             (R_MAC_DMA_CHANNEL_BASE(txrx,chan) +    
  203.             (reg))
  204. /* 
  205.  * DMA channel registers, relative to A_MAC_DMA_CHANNEL_BASE
  206.  */
  207. #define R_MAC_DMA_CONFIG0               0x00000000
  208. #define R_MAC_DMA_CONFIG1               0x00000008
  209. #define R_MAC_DMA_DSCR_BASE             0x00000010
  210. #define R_MAC_DMA_DSCR_CNT              0x00000018
  211. #define R_MAC_DMA_CUR_DSCRA             0x00000020
  212. #define R_MAC_DMA_CUR_DSCRB             0x00000028
  213. #define R_MAC_DMA_CUR_DSCRADDR          0x00000030
  214. /*
  215.  * RMON Counters
  216.  */
  217. #define R_MAC_RMON_TX_BYTES             0x00000000
  218. #define R_MAC_RMON_COLLISIONS           0x00000008
  219. #define R_MAC_RMON_LATE_COL             0x00000010
  220. #define R_MAC_RMON_EX_COL               0x00000018
  221. #define R_MAC_RMON_FCS_ERROR            0x00000020
  222. #define R_MAC_RMON_TX_ABORT             0x00000028
  223. /* Counter #6 (0x30) now reserved */
  224. #define R_MAC_RMON_TX_BAD               0x00000038
  225. #define R_MAC_RMON_TX_GOOD              0x00000040
  226. #define R_MAC_RMON_TX_RUNT              0x00000048
  227. #define R_MAC_RMON_TX_OVERSIZE          0x00000050
  228. #define R_MAC_RMON_RX_BYTES             0x00000080
  229. #define R_MAC_RMON_RX_MCAST             0x00000088
  230. #define R_MAC_RMON_RX_BCAST             0x00000090
  231. #define R_MAC_RMON_RX_BAD               0x00000098
  232. #define R_MAC_RMON_RX_GOOD              0x000000A0
  233. #define R_MAC_RMON_RX_RUNT              0x000000A8
  234. #define R_MAC_RMON_RX_OVERSIZE          0x000000B0
  235. #define R_MAC_RMON_RX_FCS_ERROR         0x000000B8
  236. #define R_MAC_RMON_RX_LENGTH_ERROR      0x000000C0
  237. #define R_MAC_RMON_RX_CODE_ERROR        0x000000C8
  238. #define R_MAC_RMON_RX_ALIGN_ERROR       0x000000D0
  239. /* Updated to spec 0.2 */
  240. #define R_MAC_CFG                       0x00000100
  241. #define R_MAC_THRSH_CFG                 0x00000108
  242. #define R_MAC_VLANTAG                   0x00000110
  243. #define R_MAC_FRAMECFG                  0x00000118
  244. #define R_MAC_EOPCNT                    0x00000120
  245. #define R_MAC_FIFO_PTRS                 0x00000130
  246. #define R_MAC_ADFILTER_CFG              0x00000200
  247. #define R_MAC_ETHERNET_ADDR             0x00000208
  248. #define R_MAC_PKT_TYPE                  0x00000210
  249. #define R_MAC_HASH_BASE                 0x00000240
  250. #define R_MAC_ADDR_BASE                 0x00000280
  251. #define R_MAC_CHUP0_BASE                0x00000300
  252. #define R_MAC_CHLO0_BASE                0x00000320
  253. #define R_MAC_ENABLE                    0x00000400
  254. #define R_MAC_STATUS                    0x00000408
  255. #define R_MAC_INT_MASK                  0x00000410
  256. #define R_MAC_TXD_CTL                   0x00000420
  257. #define R_MAC_MDIO                      0x00000428
  258. #define R_MAC_DEBUG_STATUS              0x00000448
  259. #define MAC_HASH_COUNT 8
  260. #define MAC_ADDR_COUNT 8
  261. #define MAC_CHMAP_COUNT 4
  262. /*  ********************************************************************* 
  263.     * DUART Registers
  264.     ********************************************************************* */
  265. #define R_DUART_NUM_PORTS           2
  266. #define A_DUART                     0x0010060000
  267. #define A_DUART_REG(r)
  268. #define DUART_CHANREG_SPACING       0x100
  269. #define A_DUART_CHANREG(chan,reg)   (A_DUART + DUART_CHANREG_SPACING*(chan) + (reg))
  270. #define R_DUART_CHANREG(chan,reg)   (DUART_CHANREG_SPACING*(chan) + (reg))
  271. #define R_DUART_MODE_REG_1     0x100
  272. #define R_DUART_MODE_REG_2     0x110
  273. #define R_DUART_STATUS              0x120
  274. #define R_DUART_CLK_SEL             0x130
  275. #define R_DUART_CMD                 0x150
  276. #define R_DUART_RX_HOLD             0x160
  277. #define R_DUART_TX_HOLD             0x170
  278. /*
  279.  * The IMR and ISR can't be addressed with A_DUART_CHANREG,
  280.  * so use this macro instead.
  281.  */
  282. #define R_DUART_AUX_CTRL            0x310
  283. #define R_DUART_ISR_A               0x320
  284. #define R_DUART_IMR_A               0x330
  285. #define R_DUART_ISR_B               0x340
  286. #define R_DUART_IMR_B               0x350
  287. #define R_DUART_OUT_PORT            0x360
  288. #define R_DUART_OPCR                0x370
  289. #define R_DUART_SET_OPR     0x3B0
  290. #define R_DUART_CLEAR_OPR     0x3C0
  291. #define DUART_IMRISR_SPACING        0x20
  292. #define R_DUART_IMRREG(chan)     (R_DUART_IMR_A + (chan)*DUART_IMRISR_SPACING)
  293. #define R_DUART_ISRREG(chan)     (R_DUART_ISR_A + (chan)*DUART_IMRISR_SPACING)
  294. #define A_DUART_IMRREG(chan)     (A_DUART + R_DUART_IMRREG(chan))
  295. #define A_DUART_ISRREG(chan)     (A_DUART + R_DUART_ISRREG(chan))
  296. /*
  297.  * These constants are the absolute addresses.
  298.  */
  299. #define A_DUART_MODE_REG_1_A        0x0010060100
  300. #define A_DUART_MODE_REG_2_A        0x0010060110
  301. #define A_DUART_STATUS_A            0x0010060120
  302. #define A_DUART_CLK_SEL_A           0x0010060130
  303. #define A_DUART_CMD_A               0x0010060150
  304. #define A_DUART_RX_HOLD_A           0x0010060160
  305. #define A_DUART_TX_HOLD_A           0x0010060170
  306. #define A_DUART_MODE_REG_1_B        0x0010060200
  307. #define A_DUART_MODE_REG_2_B        0x0010060210
  308. #define A_DUART_STATUS_B            0x0010060220
  309. #define A_DUART_CLK_SEL_B           0x0010060230
  310. #define A_DUART_CMD_B               0x0010060250
  311. #define A_DUART_RX_HOLD_B           0x0010060260
  312. #define A_DUART_TX_HOLD_B           0x0010060270
  313. #define A_DUART_INPORT_CHNG         0x0010060300
  314. #define A_DUART_AUX_CTRL            0x0010060310
  315. #define A_DUART_ISR_A               0x0010060320
  316. #define A_DUART_IMR_A               0x0010060330
  317. #define A_DUART_ISR_B               0x0010060340
  318. #define A_DUART_IMR_B               0x0010060350
  319. #define A_DUART_OUT_PORT            0x0010060360
  320. #define A_DUART_OPCR                0x0010060370
  321. #define A_DUART_IN_PORT             0x0010060380
  322. #define A_DUART_ISR                 0x0010060390
  323. #define A_DUART_IMR                 0x00100603A0
  324. #define A_DUART_SET_OPR             0x00100603B0
  325. #define A_DUART_CLEAR_OPR           0x00100603C0
  326. #define A_DUART_INPORT_CHNG_A       0x00100603D0
  327. #define A_DUART_INPORT_CHNG_B       0x00100603E0
  328. /*  ********************************************************************* 
  329.     * Synchronous Serial Registers
  330.     ********************************************************************* */
  331. #define A_SER_BASE_0                0x0010060400
  332. #define A_SER_BASE_1                0x0010060800
  333. #define SER_SPACING                 0x400
  334. #define SER_DMA_TXRX_SPACING        0x80
  335. #define SER_NUM_PORTS               2
  336. #define A_SER_CHANNEL_BASE(sernum)                  
  337.             (A_SER_BASE_0 +                         
  338.              SER_SPACING*(sernum))
  339. #define A_SER_REGISTER(sernum,reg)                  
  340.             (A_SER_BASE_0 +                         
  341.              SER_SPACING*(sernum) + (reg))
  342. #define R_SER_DMA_CHANNELS 0   /* Relative to A_SER_BASE_x */
  343. #define A_SER_DMA_CHANNEL_BASE(sernum,txrx)    
  344.              ((A_SER_CHANNEL_BASE(sernum)) +        
  345.              R_SER_DMA_CHANNELS +                   
  346.              (SER_DMA_TXRX_SPACING*(txrx)))
  347. #define A_SER_DMA_REGISTER(sernum,txrx,reg)           
  348.             (A_SER_DMA_CHANNEL_BASE(sernum,txrx) +    
  349.             (reg))
  350. /* 
  351.  * DMA channel registers, relative to A_SER_DMA_CHANNEL_BASE
  352.  */
  353. #define R_SER_DMA_CONFIG0           0x00000000
  354. #define R_SER_DMA_CONFIG1           0x00000008
  355. #define R_SER_DMA_DSCR_BASE         0x00000010
  356. #define R_SER_DMA_DSCR_CNT          0x00000018
  357. #define R_SER_DMA_CUR_DSCRA         0x00000020
  358. #define R_SER_DMA_CUR_DSCRB         0x00000028
  359. #define R_SER_DMA_CUR_DSCRADDR      0x00000030
  360. #define R_SER_DMA_CONFIG0_RX        0x00000000
  361. #define R_SER_DMA_CONFIG1_RX        0x00000008
  362. #define R_SER_DMA_DSCR_BASE_RX      0x00000010
  363. #define R_SER_DMA_DSCR_COUNT_RX     0x00000018
  364. #define R_SER_DMA_CUR_DSCR_A_RX     0x00000020
  365. #define R_SER_DMA_CUR_DSCR_B_RX     0x00000028
  366. #define R_SER_DMA_CUR_DSCR_ADDR_RX  0x00000030
  367. #define R_SER_DMA_CONFIG0_TX        0x00000080
  368. #define R_SER_DMA_CONFIG1_TX        0x00000088
  369. #define R_SER_DMA_DSCR_BASE_TX      0x00000090
  370. #define R_SER_DMA_DSCR_COUNT_TX     0x00000098
  371. #define R_SER_DMA_CUR_DSCR_A_TX     0x000000A0
  372. #define R_SER_DMA_CUR_DSCR_B_TX     0x000000A8
  373. #define R_SER_DMA_CUR_DSCR_ADDR_TX  0x000000B0
  374. #define R_SER_MODE                  0x00000100
  375. #define R_SER_MINFRM_SZ             0x00000108
  376. #define R_SER_MAXFRM_SZ             0x00000110
  377. #define R_SER_ADDR                  0x00000118
  378. #define R_SER_USR0_ADDR             0x00000120
  379. #define R_SER_USR1_ADDR             0x00000128
  380. #define R_SER_USR2_ADDR             0x00000130
  381. #define R_SER_USR3_ADDR             0x00000138
  382. #define R_SER_CMD                   0x00000140
  383. #define R_SER_TX_RD_THRSH           0x00000160
  384. #define R_SER_TX_WR_THRSH           0x00000168
  385. #define R_SER_RX_RD_THRSH           0x00000170
  386. #define R_SER_LINE_MODE     0x00000178
  387. #define R_SER_DMA_ENABLE            0x00000180
  388. #define R_SER_INT_MASK              0x00000190
  389. #define R_SER_STATUS                0x00000188
  390. #define R_SER_STATUS_DEBUG          0x000001A8
  391. #define R_SER_RX_TABLE_BASE         0x00000200
  392. #define SER_RX_TABLE_COUNT          16
  393. #define R_SER_TX_TABLE_BASE         0x00000300
  394. #define SER_TX_TABLE_COUNT          16
  395. /* RMON Counters */
  396. #define R_SER_RMON_TX_BYTE_LO       0x000001C0
  397. #define R_SER_RMON_TX_BYTE_HI       0x000001C8
  398. #define R_SER_RMON_RX_BYTE_LO       0x000001D0
  399. #define R_SER_RMON_RX_BYTE_HI       0x000001D8
  400. #define R_SER_RMON_TX_UNDERRUN      0x000001E0
  401. #define R_SER_RMON_RX_OVERFLOW      0x000001E8
  402. #define R_SER_RMON_RX_ERRORS        0x000001F0
  403. #define R_SER_RMON_RX_BADADDR       0x000001F8
  404. /*  ********************************************************************* 
  405.     * Generic Bus Registers
  406.     ********************************************************************* */
  407. #define IO_EXT_CFG_COUNT            8
  408. #define A_IO_EXT_BASE     0x0010061000
  409. #define A_IO_EXT_REG(r)     (A_IO_EXT_BASE + (r))
  410. #define A_IO_EXT_CFG_BASE           0x0010061000
  411. #define A_IO_EXT_MULT_SIZE_BASE     0x0010061100
  412. #define A_IO_EXT_START_ADDR_BASE    0x0010061200
  413. #define A_IO_EXT_TIME_CFG0_BASE     0x0010061600
  414. #define A_IO_EXT_TIME_CFG1_BASE     0x0010061700
  415. #define IO_EXT_REGISTER_SPACING     8
  416. #define A_IO_EXT_CS_BASE(cs)     (A_IO_EXT_CFG_BASE+IO_EXT_REGISTER_SPACING*(cs))
  417. #define R_IO_EXT_REG(reg,cs)     ((cs)*IO_EXT_REGISTER_SPACING + (reg))
  418. #define R_IO_EXT_CFG     0x0000
  419. #define R_IO_EXT_MULT_SIZE          0x0100
  420. #define R_IO_EXT_START_ADDR     0x0200
  421. #define R_IO_EXT_TIME_CFG0          0x0600
  422. #define R_IO_EXT_TIME_CFG1          0x0700
  423. #define A_IO_INTERRUPT_STATUS       0x0010061A00
  424. #define A_IO_INTERRUPT_DATA0        0x0010061A10
  425. #define A_IO_INTERRUPT_DATA1        0x0010061A18
  426. #define A_IO_INTERRUPT_DATA2        0x0010061A20
  427. #define A_IO_INTERRUPT_DATA3        0x0010061A28
  428. #define A_IO_INTERRUPT_ADDR0        0x0010061A30
  429. #define A_IO_INTERRUPT_ADDR1        0x0010061A40
  430. #define A_IO_INTERRUPT_PARITY       0x0010061A50
  431. #define A_IO_PCMCIA_CFG             0x0010061A60
  432. #define A_IO_PCMCIA_STATUS          0x0010061A70
  433. #define A_IO_DRIVE_0     0x0010061300
  434. #define A_IO_DRIVE_1     0x0010061308
  435. #define A_IO_DRIVE_2     0x0010061310
  436. #define A_IO_DRIVE_3     0x0010061318
  437. #define R_IO_INTERRUPT_STATUS       0x0A00
  438. #define R_IO_INTERRUPT_DATA0        0x0A10
  439. #define R_IO_INTERRUPT_DATA1        0x0A18
  440. #define R_IO_INTERRUPT_DATA2        0x0A20
  441. #define R_IO_INTERRUPT_DATA3        0x0A28
  442. #define R_IO_INTERRUPT_ADDR0        0x0A30
  443. #define R_IO_INTERRUPT_ADDR1        0x0A40
  444. #define R_IO_INTERRUPT_PARITY       0x0A50
  445. #define R_IO_PCMCIA_CFG             0x0A60
  446. #define R_IO_PCMCIA_STATUS          0x0A70
  447. /*  ********************************************************************* 
  448.     * GPIO Registers
  449.     ********************************************************************* */
  450. #define A_GPIO_CLR_EDGE             0x0010061A80
  451. #define A_GPIO_INT_TYPE             0x0010061A88
  452. #define A_GPIO_INPUT_INVERT         0x0010061A90
  453. #define A_GPIO_GLITCH               0x0010061A98
  454. #define A_GPIO_READ                 0x0010061AA0
  455. #define A_GPIO_DIRECTION            0x0010061AA8
  456. #define A_GPIO_PIN_CLR              0x0010061AB0
  457. #define A_GPIO_PIN_SET              0x0010061AB8
  458. #define A_GPIO_BASE     0x0010061A80
  459. #define R_GPIO_CLR_EDGE             0x00
  460. #define R_GPIO_INT_TYPE             0x08
  461. #define R_GPIO_INPUT_INVERT         0x10
  462. #define R_GPIO_GLITCH               0x18
  463. #define R_GPIO_READ                 0x20
  464. #define R_GPIO_DIRECTION            0x28
  465. #define R_GPIO_PIN_CLR              0x30
  466. #define R_GPIO_PIN_SET              0x38
  467. /*  ********************************************************************* 
  468.     * SMBus Registers
  469.     ********************************************************************* */
  470. #define A_SMB_XTRA_0                0x0010060000
  471. #define A_SMB_XTRA_1                0x0010060008
  472. #define A_SMB_FREQ_0                0x0010060010
  473. #define A_SMB_FREQ_1                0x0010060018
  474. #define A_SMB_STATUS_0              0x0010060020
  475. #define A_SMB_STATUS_1              0x0010060028
  476. #define A_SMB_CMD_0                 0x0010060030
  477. #define A_SMB_CMD_1                 0x0010060038
  478. #define A_SMB_START_0               0x0010060040
  479. #define A_SMB_START_1               0x0010060048
  480. #define A_SMB_DATA_0                0x0010060050
  481. #define A_SMB_DATA_1                0x0010060058
  482. #define A_SMB_CONTROL_0             0x0010060060
  483. #define A_SMB_CONTROL_1             0x0010060068
  484. #define A_SMB_PEC_0                 0x0010060070
  485. #define A_SMB_PEC_1                 0x0010060078
  486. #define A_SMB_0                     0x0010060000
  487. #define A_SMB_1                     0x0010060008
  488. #define SMB_REGISTER_SPACING        0x8
  489. #define A_SMB_BASE(idx)             (A_SMB_0+(idx)*SMB_REGISTER_SPACING)
  490. #define A_SMB_REGISTER(idx,reg)     (A_SMB_BASE(idx)+(reg))
  491. #define R_SMB_XTRA                  0x0000000000
  492. #define R_SMB_FREQ                  0x0000000010
  493. #define R_SMB_STATUS                0x0000000020
  494. #define R_SMB_CMD                   0x0000000030
  495. #define R_SMB_START                 0x0000000040
  496. #define R_SMB_DATA                  0x0000000050
  497. #define R_SMB_CONTROL               0x0000000060
  498. #define R_SMB_PEC                   0x0000000070
  499. /*  ********************************************************************* 
  500.     * Timer Registers
  501.     ********************************************************************* */
  502. /*
  503.  * Watchdog timers
  504.  */
  505. #define A_SCD_WDOG_0     0x0010020050
  506. #define A_SCD_WDOG_1                0x0010020150
  507. #define SCD_WDOG_SPACING            0x100
  508. #define SCD_NUM_WDOGS     2
  509. #define A_SCD_WDOG_BASE(w)          (A_SCD_WDOG_0+SCD_WDOG_SPACING*(w))
  510. #define A_SCD_WDOG_REGISTER(w,r)    (A_SCD_WDOG_BASE(w) + (r))
  511. #define R_SCD_WDOG_INIT     0x0000000000
  512. #define R_SCD_WDOG_CNT     0x0000000008
  513. #define R_SCD_WDOG_CFG     0x0000000010
  514. #define A_SCD_WDOG_INIT_0           0x0010020050
  515. #define A_SCD_WDOG_CNT_0            0x0010020058
  516. #define A_SCD_WDOG_CFG_0            0x0010020060
  517. #define A_SCD_WDOG_INIT_1           0x0010020150
  518. #define A_SCD_WDOG_CNT_1            0x0010020158
  519. #define A_SCD_WDOG_CFG_1            0x0010020160
  520. /*
  521.  * Generic timers
  522.  */
  523. #define A_SCD_TIMER_0     0x0010020070
  524. #define A_SCD_TIMER_1               0x0010020078
  525. #define A_SCD_TIMER_2     0x0010020170
  526. #define A_SCD_TIMER_3               0x0010020178
  527. #define SCD_NUM_TIMERS     4
  528. #define A_SCD_TIMER_BASE(w)         (A_SCD_TIMER_0+0x08*((w)&1)+0x100*(((w)&2)>>1))
  529. #define A_SCD_TIMER_REGISTER(w,r)   (A_SCD_TIMER_BASE(w) + (r))
  530. #define R_SCD_TIMER_INIT     0x0000000000
  531. #define R_SCD_TIMER_CNT     0x0000000010
  532. #define R_SCD_TIMER_CFG     0x0000000020
  533. #define A_SCD_TIMER_INIT_0          0x0010020070
  534. #define A_SCD_TIMER_CNT_0           0x0010020080
  535. #define A_SCD_TIMER_CFG_0           0x0010020090
  536. #define A_SCD_TIMER_INIT_1          0x0010020078
  537. #define A_SCD_TIMER_CNT_1           0x0010020088
  538. #define A_SCD_TIMER_CFG_1           0x0010020098
  539. #define A_SCD_TIMER_INIT_2          0x0010020170
  540. #define A_SCD_TIMER_CNT_2           0x0010020180
  541. #define A_SCD_TIMER_CFG_2           0x0010020190
  542. #define A_SCD_TIMER_INIT_3          0x0010020178
  543. #define A_SCD_TIMER_CNT_3           0x0010020188
  544. #define A_SCD_TIMER_CFG_3           0x0010020198
  545. /*  ********************************************************************* 
  546.     * System Control Registers
  547.     ********************************************************************* */
  548. #define A_SCD_SYSTEM_REVISION       0x0010020000
  549. #define A_SCD_SYSTEM_CFG            0x0010020008
  550. #define A_SCD_SCRATCH     0x0010020C10 /* PASS2 */
  551. /*  ********************************************************************* 
  552.     * System Address Trap Registers
  553.     ********************************************************************* */
  554. #define A_ADDR_TRAP_INDEX           0x00100200B0
  555. #define A_ADDR_TRAP_REG             0x00100200B8
  556. #define A_ADDR_TRAP_UP_0            0x0010020400
  557. #define A_ADDR_TRAP_UP_1            0x0010020408
  558. #define A_ADDR_TRAP_UP_2            0x0010020410
  559. #define A_ADDR_TRAP_UP_3            0x0010020418
  560. #define A_ADDR_TRAP_DOWN_0          0x0010020420
  561. #define A_ADDR_TRAP_DOWN_1          0x0010020428
  562. #define A_ADDR_TRAP_DOWN_2          0x0010020430
  563. #define A_ADDR_TRAP_DOWN_3          0x0010020438
  564. #define A_ADDR_TRAP_CFG_0           0x0010020440
  565. #define A_ADDR_TRAP_CFG_1           0x0010020448
  566. #define A_ADDR_TRAP_CFG_2           0x0010020450
  567. #define A_ADDR_TRAP_CFG_3           0x0010020458
  568. /*  ********************************************************************* 
  569.     * System Interrupt Mapper Registers
  570.     ********************************************************************* */
  571. #define A_IMR_CPU0_BASE                 0x0010020000
  572. #define A_IMR_CPU1_BASE                 0x0010022000
  573. #define IMR_REGISTER_SPACING            0x2000
  574. #define A_IMR_MAPPER(cpu) (A_IMR_CPU0_BASE+(cpu)*IMR_REGISTER_SPACING)
  575. #define A_IMR_REGISTER(cpu,reg) (A_IMR_MAPPER(cpu)+(reg))
  576. #define R_IMR_INTERRUPT_DIAG            0x0010
  577. #define R_IMR_INTERRUPT_MASK            0x0028
  578. #define R_IMR_INTERRUPT_TRACE           0x0038
  579. #define R_IMR_INTERRUPT_SOURCE_STATUS   0x0040
  580. #define R_IMR_LDT_INTERRUPT_SET         0x0048
  581. #define R_IMR_LDT_INTERRUPT             0x0018
  582. #define R_IMR_LDT_INTERRUPT_CLR         0x0020
  583. #define R_IMR_MAILBOX_CPU               0x00c0
  584. #define R_IMR_ALIAS_MAILBOX_CPU         0x1000
  585. #define R_IMR_MAILBOX_SET_CPU           0x00C8
  586. #define R_IMR_ALIAS_MAILBOX_SET_CPU     0x1008
  587. #define R_IMR_MAILBOX_CLR_CPU           0x00D0
  588. #define R_IMR_INTERRUPT_STATUS_BASE     0x0100
  589. #define R_IMR_INTERRUPT_STATUS_COUNT    7
  590. #define R_IMR_INTERRUPT_MAP_BASE        0x0200
  591. #define R_IMR_INTERRUPT_MAP_COUNT       64
  592. /*  ********************************************************************* 
  593.     * System Performance Counter Registers
  594.     ********************************************************************* */
  595. #define A_SCD_PERF_CNT_CFG          0x00100204C0
  596. #define A_SCD_PERF_CNT_0            0x00100204D0
  597. #define A_SCD_PERF_CNT_1            0x00100204D8
  598. #define A_SCD_PERF_CNT_2            0x00100204E0
  599. #define A_SCD_PERF_CNT_3            0x00100204E8
  600. /*  ********************************************************************* 
  601.     * System Bus Watcher Registers
  602.     ********************************************************************* */
  603. #define A_SCD_BUS_ERR_STATUS        0x0010020880
  604. #define A_BUS_ERR_DATA_0            0x00100208A0
  605. #define A_BUS_ERR_DATA_1            0x00100208A8
  606. #define A_BUS_ERR_DATA_2            0x00100208B0
  607. #define A_BUS_ERR_DATA_3            0x00100208B8
  608. #define A_BUS_L2_ERRORS             0x00100208C0
  609. #define A_BUS_MEM_IO_ERRORS         0x00100208C8
  610. /*  ********************************************************************* 
  611.     * System Debug Controller Registers
  612.     ********************************************************************* */
  613. #define A_SCD_JTAG_BASE             0x0010000000
  614. /*  ********************************************************************* 
  615.     * System Trace Buffer Registers
  616.     ********************************************************************* */
  617. #define A_SCD_TRACE_CFG             0x0010020A00
  618. #define A_SCD_TRACE_READ            0x0010020A08
  619. #define A_SCD_TRACE_EVENT_0         0x0010020A20
  620. #define A_SCD_TRACE_EVENT_1         0x0010020A28
  621. #define A_SCD_TRACE_EVENT_2         0x0010020A30
  622. #define A_SCD_TRACE_EVENT_3         0x0010020A38
  623. #define A_SCD_TRACE_SEQUENCE_0      0x0010020A40
  624. #define A_SCD_TRACE_SEQUENCE_1      0x0010020A48
  625. #define A_SCD_TRACE_SEQUENCE_2      0x0010020A50
  626. #define A_SCD_TRACE_SEQUENCE_3      0x0010020A58
  627. #define A_SCD_TRACE_EVENT_4         0x0010020A60
  628. #define A_SCD_TRACE_EVENT_5         0x0010020A68
  629. #define A_SCD_TRACE_EVENT_6         0x0010020A70
  630. #define A_SCD_TRACE_EVENT_7         0x0010020A78
  631. #define A_SCD_TRACE_SEQUENCE_4      0x0010020A80
  632. #define A_SCD_TRACE_SEQUENCE_5      0x0010020A88
  633. #define A_SCD_TRACE_SEQUENCE_6      0x0010020A90
  634. #define A_SCD_TRACE_SEQUENCE_7      0x0010020A98
  635. /*  ********************************************************************* 
  636.     * System Generic DMA Registers
  637.     ********************************************************************* */
  638. #define A_DM_0        0x0010020B00
  639. #define A_DM_1        0x0010020B20
  640. #define A_DM_2     0x0010020B40
  641. #define A_DM_3     0x0010020B60
  642. #define DM_REGISTER_SPACING     0x20
  643. #define DM_NUM_CHANNELS     4
  644. #define A_DM_BASE(idx) (A_DM_0 + ((idx) * DM_REGISTER_SPACING))
  645. #define A_DM_REGISTER(idx,reg) (A_DM_BASE(idx) + (reg))
  646. #define R_DM_DSCR_BASE     0x0000000000
  647. #define R_DM_DSCR_COUNT     0x0000000008
  648. #define R_DM_CUR_DSCR_ADDR     0x0000000010
  649. #define R_DM_DSCR_BASE_DEBUG     0x0000000018
  650. /*  *********************************************************************
  651.     *  Physical Address Map
  652.     ********************************************************************* */
  653. #define A_PHYS_MEMORY_0                 _SB_MAKE64(0x0000000000)
  654. #define A_PHYS_MEMORY_SIZE              _SB_MAKE64((256*1024*1024))
  655. #define A_PHYS_SYSTEM_CTL               _SB_MAKE64(0x0010000000)
  656. #define A_PHYS_IO_SYSTEM                _SB_MAKE64(0x0010060000)
  657. #define A_PHYS_GENBUS _SB_MAKE64(0x0010090000)
  658. #define A_PHYS_GENBUS_END _SB_MAKE64(0x0040000000)
  659. #define A_PHYS_LDTPCI_IO_MATCH_BYTES_32 _SB_MAKE64(0x0040000000)
  660. #define A_PHYS_LDTPCI_IO_MATCH_BITS_32  _SB_MAKE64(0x0060000000)
  661. #define A_PHYS_MEMORY_1                 _SB_MAKE64(0x0080000000)
  662. #define A_PHYS_MEMORY_2                 _SB_MAKE64(0x0090000000)
  663. #define A_PHYS_MEMORY_3                 _SB_MAKE64(0x00C0000000)
  664. #define A_PHYS_L2_CACHE_TEST            _SB_MAKE64(0x00D0000000)
  665. #define A_PHYS_LDT_SPECIAL_MATCH_BYTES  _SB_MAKE64(0x00D8000000)
  666. #define A_PHYS_LDTPCI_IO_MATCH_BYTES    _SB_MAKE64(0x00DC000000)
  667. #define A_PHYS_LDTPCI_CFG_MATCH_BYTES   _SB_MAKE64(0x00DE000000)
  668. #define A_PHYS_LDT_SPECIAL_MATCH_BITS   _SB_MAKE64(0x00F8000000)
  669. #define A_PHYS_LDTPCI_IO_MATCH_BITS     _SB_MAKE64(0x00FC000000)
  670. #define A_PHYS_LDTPCI_CFG_MATCH_BITS    _SB_MAKE64(0x00FE000000)
  671. #define A_PHYS_MEMORY_EXP               _SB_MAKE64(0x0100000000)
  672. #define A_PHYS_MEMORY_EXP_SIZE          _SB_MAKE64((508*1024*1024*1024))
  673. #define A_PHYS_LDT_EXP                  _SB_MAKE64(0x8000000000)
  674. #define A_PHYS_PCI_FULLACCESS_BYTES     _SB_MAKE64(0xF000000000)
  675. #define A_PHYS_PCI_FULLACCESS_BITS      _SB_MAKE64(0xF100000000)
  676. #define A_PHYS_RESERVED                 _SB_MAKE64(0xF200000000)
  677. #define A_PHYS_RESERVED_SPECIAL_LDT     _SB_MAKE64(0xFD00000000)
  678. #define A_PHYS_L2CACHE_WAY_SIZE         _SB_MAKE64(0x0000020000)
  679. #define PHYS_L2CACHE_NUM_WAYS           4
  680. #define A_PHYS_L2CACHE_TOTAL_SIZE       _SB_MAKE64(0x0000080000)
  681. #define A_PHYS_L2CACHE_WAY0             _SB_MAKE64(0x00D0180000)
  682. #define A_PHYS_L2CACHE_WAY1             _SB_MAKE64(0x00D01A0000)
  683. #define A_PHYS_L2CACHE_WAY2             _SB_MAKE64(0x00D01C0000)
  684. #define A_PHYS_L2CACHE_WAY3             _SB_MAKE64(0x00D01E0000)
  685. /*  *********************************************************************
  686.     *
  687.     *  The remainder are field definitions within the SOC registers
  688.     *
  689.     *  The information in this file is based on the BCM1250 SOC
  690.     *  manual version 0.2, July 2000.
  691.     ********************************************************************* */
  692. /*  *********************************************************************
  693.     *  System control/debug register constants
  694.     ********************************************************************* */
  695. /*
  696.  * System Revision Register (Table 4-1)
  697.  */
  698. #define M_SYS_RESERVED     _SB_MAKEMASK(8,0)
  699. #define S_SYS_REVISION              _SB_MAKE64(8)
  700. #define M_SYS_REVISION              _SB_MAKEMASK(8,S_SYS_REVISION)
  701. #define V_SYS_REVISION(x)           _SB_MAKEVALUE(x,S_SYS_REVISION)
  702. #define G_SYS_REVISION(x)           _SB_GETVALUE(x,S_SYS_REVISION,M_SYS_REVISION)
  703. #define K_SYS_REVISION_PASS1     1
  704. #define K_SYS_REVISION_PASS2     3
  705. #define K_SYS_REVISION_PASS3     4 /* XXX Unknown */
  706. #define S_SYS_PART                  _SB_MAKE64(16)
  707. #define M_SYS_PART                  _SB_MAKEMASK(16,S_SYS_PART)
  708. #define V_SYS_PART(x)               _SB_MAKEVALUE(x,S_SYS_PART)
  709. #define G_SYS_PART(x)               _SB_GETVALUE(x,S_SYS_PART,M_SYS_PART)
  710. #define K_SYS_PART_BCM1250           0x1250
  711. #define K_SYS_PART_SB1125           0x1125 
  712. #define S_SYS_WID                   _SB_MAKE64(32)
  713. #define M_SYS_WID                   _SB_MAKEMASK(32,S_SYS_WID)
  714. #define V_SYS_WID(x)                _SB_MAKEVALUE(x,S_SYS_WID)
  715. #define G_SYS_WID(x)                _SB_GETVALUE(x,S_SYS_WID,M_SYS_WID)
  716. /*
  717.  * System Config Register (Table 4-2)
  718.  * Register: SCD_SYSTEM_CFG
  719.  */
  720. #define M_SYS_LDT_PLL_BYP           _SB_MAKEMASK1(3)
  721. #define M_SYS_PCI_SYNC_TEST_MODE    _SB_MAKEMASK1(4)
  722. #define M_SYS_IOB0_DIV              _SB_MAKEMASK1(5)
  723. #define M_SYS_IOB1_DIV              _SB_MAKEMASK1(6)
  724. #define S_SYS_PLL_DIV               _SB_MAKE64(7)
  725. #define M_SYS_PLL_DIV               _SB_MAKEMASK(5,S_SYS_PLL_DIV)
  726. #define V_SYS_PLL_DIV(x)            _SB_MAKEVALUE(x,S_SYS_PLL_DIV)
  727. #define G_SYS_PLL_DIV(x)            _SB_GETVALUE(x,S_SYS_PLL_DIV,M_SYS_PLL_DIV)
  728. #define M_SYS_SER0_ENABLE           _SB_MAKEMASK1(12)
  729. #define M_SYS_SER0_RSTB_EN          _SB_MAKEMASK1(13)
  730. #define M_SYS_SER1_ENABLE           _SB_MAKEMASK1(14)
  731. #define M_SYS_SER1_RSTB_EN          _SB_MAKEMASK1(15)
  732. #define M_SYS_PCMCIA_ENABLE         _SB_MAKEMASK1(16)
  733. #define S_SYS_BOOT_MODE             _SB_MAKE64(17)
  734. #define M_SYS_BOOT_MODE             _SB_MAKEMASK(2,S_SYS_BOOT_MODE)
  735. #define V_SYS_BOOT_MODE(x)          _SB_MAKEVALUE(x,S_SYS_BOOT_MODE)
  736. #define G_SYS_BOOT_MODE(x)          _SB_GETVALUE(x,S_SYS_BOOT_MODE,M_SYS_BOOT_MODE)
  737. #define K_SYS_BOOT_MODE_ROM32       0
  738. #define K_SYS_BOOT_MODE_ROM8        1
  739. #define K_SYS_BOOT_MODE_SMBUS_SMALL 2
  740. #define K_SYS_BOOT_MODE_SMBUS_BIG   3
  741. #define M_SYS_PCI_HOST              _SB_MAKEMASK1(19)
  742. #define M_SYS_PCI_ARBITER           _SB_MAKEMASK1(20)
  743. #define M_SYS_SOUTH_ON_LDT          _SB_MAKEMASK1(21)
  744. #define M_SYS_BIG_ENDIAN            _SB_MAKEMASK1(22)
  745. #define M_SYS_GENCLK_EN             _SB_MAKEMASK1(23)
  746. #define M_SYS_LDT_TEST_EN           _SB_MAKEMASK1(24)
  747. #define M_SYS_GEN_PARITY_EN         _SB_MAKEMASK1(25)
  748. #define S_SYS_CONFIG                26
  749. #define M_SYS_CONFIG                _SB_MAKEMASK(6,S_SYS_CONFIG)
  750. #define V_SYS_CONFIG(x)             _SB_MAKEVALUE(x,S_SYS_CONFIG)
  751. #define G_SYS_CONFIG(x)             _SB_GETVALUE(x,S_SYS_CONFIG,M_SYS_CONFIG)
  752. /* The following bits are writeable by JTAG only. */
  753. #define M_SYS_CLKSTOP               _SB_MAKEMASK1(32)
  754. #define M_SYS_CLKSTEP               _SB_MAKEMASK1(33)
  755. #define S_SYS_CLKCOUNT              34
  756. #define M_SYS_CLKCOUNT              _SB_MAKEMASK(8,S_SYS_CLKCOUNT)
  757. #define V_SYS_CLKCOUNT(x)           _SB_MAKEVALUE(x,S_SYS_CLKCOUNT)
  758. #define G_SYS_CLKCOUNT(x)           _SB_GETVALUE(x,S_SYS_CLKCOUNT,M_SYS_CLKCOUNT)
  759. #define M_SYS_PLL_BYPASS            _SB_MAKEMASK1(42)
  760. #define S_SYS_PLL_IREF     43
  761. #define M_SYS_PLL_IREF     _SB_MAKEMASK(2,S_SYS_PLL_IREF)
  762. #define S_SYS_PLL_VCO     45
  763. #define M_SYS_PLL_VCO     _SB_MAKEMASK(2,S_SYS_PLL_VCO)
  764. #define S_SYS_PLL_VREG     47
  765. #define M_SYS_PLL_VREG     _SB_MAKEMASK(2,S_SYS_PLL_VREG)
  766. #define M_SYS_MEM_RESET             _SB_MAKEMASK1(49)
  767. #define M_SYS_L2C_RESET             _SB_MAKEMASK1(50)
  768. #define M_SYS_IO_RESET_0            _SB_MAKEMASK1(51)
  769. #define M_SYS_IO_RESET_1            _SB_MAKEMASK1(52)
  770. #define M_SYS_SCD_RESET             _SB_MAKEMASK1(53)
  771. /* End of bits writable by JTAG only. */
  772. #define M_SYS_CPU_RESET_0           _SB_MAKEMASK1(54)
  773. #define M_SYS_CPU_RESET_1           _SB_MAKEMASK1(55)
  774. #define M_SYS_UNICPU0               _SB_MAKEMASK1(56)
  775. #define M_SYS_UNICPU1               _SB_MAKEMASK1(57)
  776. #define M_SYS_SB_SOFTRES            _SB_MAKEMASK1(58)
  777. #define M_SYS_EXT_RESET             _SB_MAKEMASK1(59)
  778. #define M_SYS_SYSTEM_RESET          _SB_MAKEMASK1(60)
  779. #define M_SYS_MISR_MODE             _SB_MAKEMASK1(61)
  780. #define M_SYS_MISR_RESET            _SB_MAKEMASK1(62)
  781. /*
  782.  * Mailbox Registers (Table 4-3)
  783.  * Registers: SCD_MBOX_CPU_x
  784.  */
  785. #define S_MBOX_INT_3                0
  786. #define M_MBOX_INT_3                _SB_MAKEMASK(16,S_MBOX_INT_3)
  787. #define S_MBOX_INT_2                16
  788. #define M_MBOX_INT_2                _SB_MAKEMASK(16,S_MBOX_INT_2)
  789. #define S_MBOX_INT_1                32
  790. #define M_MBOX_INT_1                _SB_MAKEMASK(16,S_MBOX_INT_1)
  791. #define S_MBOX_INT_0                48
  792. #define M_MBOX_INT_0                _SB_MAKEMASK(16,S_MBOX_INT_0)
  793. /*
  794.  * Watchdog Registers (Table 4-8) (Table 4-9) (Table 4-10)
  795.  * Registers: SCD_WDOG_INIT_CNT_x
  796.  */
  797. #define V_SCD_WDOG_FREQ             1000000
  798. #define S_SCD_WDOG_INIT             0
  799. #define M_SCD_WDOG_INIT             _SB_MAKEMASK(13,S_SCD_WDOG_INIT)
  800. #define S_SCD_WDOG_CNT              0
  801. #define M_SCD_WDOG_CNT              _SB_MAKEMASK(13,S_SCD_WDOG_CNT)
  802. #define M_SCD_WDOG_ENABLE           _SB_MAKEMASK1(0)
  803. /*
  804.  * Timer Registers (Table 4-11) (Table 4-12) (Table 4-13)
  805.  */
  806. #define V_SCD_TIMER_FREQ            1000000
  807. #define S_SCD_TIMER_INIT            0
  808. #define M_SCD_TIMER_INIT            _SB_MAKEMASK(20,S_SCD_TIMER_INIT)
  809. #define V_SCD_TIMER_INIT(x)         _SB_MAKEVALUE(x,S_SCD_TIMER_INIT)
  810. #define G_SCD_TIMER_INIT(x)         _SB_GETVALUE(x,S_SCD_TIMER_INIT,M_SCD_TIMER_INIT)
  811. #define S_SCD_TIMER_CNT             0
  812. #define M_SCD_TIMER_CNT             _SB_MAKEMASK(20,S_SCD_TIMER_CNT)
  813. #define V_SCD_TIMER_CNT(x)         _SB_MAKEVALUE(x,S_SCD_TIMER_CNT)
  814. #define G_SCD_TIMER_CNT(x)         _SB_GETVALUE(x,S_SCD_TIMER_CNT,M_SCD_TIMER_CNT)
  815. #define M_SCD_TIMER_ENABLE          _SB_MAKEMASK1(0)
  816. #define M_SCD_TIMER_MODE            _SB_MAKEMASK1(1)
  817. #define M_SCD_TIMER_MODE_CONTINUOUS M_SCD_TIMER_MODE
  818. /*
  819.  * System Performance Counters
  820.  */
  821. #define S_SPC_CFG_SRC0            0
  822. #define M_SPC_CFG_SRC0            _SB_MAKEMASK(8,S_SPC_CFG_SRC0)
  823. #define V_SPC_CFG_SRC0(x)         _SB_MAKEVALUE(x,S_SPC_CFG_SRC0)
  824. #define G_SPC_CFG_SRC0(x)         _SB_GETVALUE(x,S_SPC_CFG_SRC0,M_SPC_CFG_SRC0)
  825. #define S_SPC_CFG_SRC1            8
  826. #define M_SPC_CFG_SRC1            _SB_MAKEMASK(8,S_SPC_CFG_SRC1)
  827. #define V_SPC_CFG_SRC1(x)         _SB_MAKEVALUE(x,S_SPC_CFG_SRC1)
  828. #define G_SPC_CFG_SRC1(x)         _SB_GETVALUE(x,S_SPC_CFG_SRC1,M_SPC_CFG_SRC1)
  829. #define S_SPC_CFG_SRC2            16
  830. #define M_SPC_CFG_SRC2            _SB_MAKEMASK(8,S_SPC_CFG_SRC2)
  831. #define V_SPC_CFG_SRC2(x)         _SB_MAKEVALUE(x,S_SPC_CFG_SRC2)
  832. #define G_SPC_CFG_SRC2(x)         _SB_GETVALUE(x,S_SPC_CFG_SRC2,M_SPC_CFG_SRC2)
  833. #define S_SPC_CFG_SRC3            24
  834. #define M_SPC_CFG_SRC3            _SB_MAKEMASK(8,S_SPC_CFG_SRC3)
  835. #define V_SPC_CFG_SRC3(x)         _SB_MAKEVALUE(x,S_SPC_CFG_SRC3)
  836. #define G_SPC_CFG_SRC3(x)         _SB_GETVALUE(x,S_SPC_CFG_SRC3,M_SPC_CFG_SRC3)
  837. #define M_SPC_CFG_CLEAR _SB_MAKEMASK1(32)
  838. #define M_SPC_CFG_ENABLE _SB_MAKEMASK1(33)
  839. /*
  840.  * Bus Watcher
  841.  */
  842. #define S_SCD_BERR_TID            8
  843. #define M_SCD_BERR_TID            _SB_MAKEMASK(10,S_SCD_BERR_TID)
  844. #define V_SCD_BERR_TID(x)         _SB_MAKEVALUE(x,S_SCD_BERR_TID)
  845. #define G_SCD_BERR_TID(x)         _SB_GETVALUE(x,S_SCD_BERR_TID,M_SCD_BERR_TID)
  846. #define S_SCD_BERR_RID            18
  847. #define M_SCD_BERR_RID            _SB_MAKEMASK(4,S_SCD_BERR_RID)
  848. #define V_SCD_BERR_RID(x)         _SB_MAKEVALUE(x,S_SCD_BERR_RID)
  849. #define G_SCD_BERR_RID(x)         _SB_GETVALUE(x,S_SCD_BERR_RID,M_SCD_BERR_RID)
  850. #define S_SCD_BERR_DCODE            22
  851. #define M_SCD_BERR_DCODE            _SB_MAKEMASK(3,S_SCD_BERR_DCODE)
  852. #define V_SCD_BERR_DCODE(x)         _SB_MAKEVALUE(x,S_SCD_BERR_DCODE)
  853. #define G_SCD_BERR_DCODE(x)         _SB_GETVALUE(x,S_SCD_BERR_DCODE,M_SCD_BERR_DCODE)
  854. #define M_SCD_BERR_MULTERRS _SB_MAKEMASK1(30)
  855. #define S_SCD_L2ECC_CORR_D            0
  856. #define M_SCD_L2ECC_CORR_D            _SB_MAKEMASK(8,S_SCD_L2ECC_CORR_D)
  857. #define V_SCD_L2ECC_CORR_D(x)         _SB_MAKEVALUE(x,S_SCD_L2ECC_CORR_D)
  858. #define G_SCD_L2ECC_CORR_D(x)         _SB_GETVALUE(x,S_SCD_L2ECC_CORR_D,M_SCD_L2ECC_CORR_D)
  859. #define S_SCD_L2ECC_BAD_D            8
  860. #define M_SCD_L2ECC_BAD_D            _SB_MAKEMASK(8,S_SCD_L2ECC_BAD_D)
  861. #define V_SCD_L2ECC_BAD_D(x)         _SB_MAKEVALUE(x,S_SCD_L2ECC_BAD_D)
  862. #define G_SCD_L2ECC_BAD_D(x)         _SB_GETVALUE(x,S_SCD_L2ECC_BAD_D,M_SCD_L2ECC_BAD_D)
  863. #define S_SCD_L2ECC_CORR_T            16
  864. #define M_SCD_L2ECC_CORR_T            _SB_MAKEMASK(8,S_SCD_L2ECC_CORR_T)
  865. #define V_SCD_L2ECC_CORR_T(x)         _SB_MAKEVALUE(x,S_SCD_L2ECC_CORR_T)
  866. #define G_SCD_L2ECC_CORR_T(x)         _SB_GETVALUE(x,S_SCD_L2ECC_CORR_T,M_SCD_L2ECC_CORR_T)
  867. #define S_SCD_L2ECC_BAD_T            24
  868. #define M_SCD_L2ECC_BAD_T            _SB_MAKEMASK(8,S_SCD_L2ECC_BAD_T)
  869. #define V_SCD_L2ECC_BAD_T(x)         _SB_MAKEVALUE(x,S_SCD_L2ECC_BAD_T)
  870. #define G_SCD_L2ECC_BAD_T(x)         _SB_GETVALUE(x,S_SCD_L2ECC_BAD_T,M_SCD_L2ECC_BAD_T)
  871. #define S_SCD_MEM_ECC_CORR            0
  872. #define M_SCD_MEM_ECC_CORR            _SB_MAKEMASK(8,S_SCD_MEM_ECC_CORR)
  873. #define V_SCD_MEM_ECC_CORR(x)         _SB_MAKEVALUE(x,S_SCD_MEM_ECC_CORR)
  874. #define G_SCD_MEM_ECC_CORR(x)         _SB_GETVALUE(x,S_SCD_MEM_ECC_CORR,M_SCD_MEM_ECC_CORR)
  875. #define S_SCD_MEM_ECC_BAD            16
  876. #define M_SCD_MEM_ECC_BAD            _SB_MAKEMASK(8,S_SCD_MEM_ECC_BAD)
  877. #define V_SCD_MEM_ECC_BAD(x)         _SB_MAKEVALUE(x,S_SCD_MEM_ECC_BAD)
  878. #define G_SCD_MEM_ECC_BAD(x)         _SB_GETVALUE(x,S_SCD_MEM_ECC_BAD,M_SCD_MEM_ECC_BAD)
  879. #define S_SCD_MEM_BUSERR            24
  880. #define M_SCD_MEM_BUSERR            _SB_MAKEMASK(8,S_SCD_MEM_BUSERR)
  881. #define V_SCD_MEM_BUSERR(x)         _SB_MAKEVALUE(x,S_SCD_MEM_BUSERR)
  882. #define G_SCD_MEM_BUSERR(x)         _SB_GETVALUE(x,S_SCD_MEM_BUSERR,M_SCD_MEM_BUSERR)
  883. /*
  884.  * Address Trap Registers
  885.  */
  886. #define M_ATRAP_INDEX   _SB_MAKEMASK(4,0)
  887. #define M_ATRAP_ADDRESS   _SB_MAKEMASK(40,0)
  888. #define S_ATRAP_CFG_CNT            0
  889. #define M_ATRAP_CFG_CNT            _SB_MAKEMASK(3,S_ATRAP_CFG_CNT)
  890. #define V_ATRAP_CFG_CNT(x)         _SB_MAKEVALUE(x,S_ATRAP_CFG_CNT)
  891. #define G_ATRAP_CFG_CNT(x)         _SB_GETVALUE(x,S_ATRAP_CFG_CNT,M_ATRAP_CFG_CNT)
  892. #define M_ATRAP_CFG_WRITE    _SB_MAKEMASK1(3)
  893. #define M_ATRAP_CFG_ALL       _SB_MAKEMASK1(4)
  894. #define M_ATRAP_CFG_INV        _SB_MAKEMASK1(5)
  895. #define M_ATRAP_CFG_USESRC    _SB_MAKEMASK1(6)
  896. #define M_ATRAP_CFG_SRCINV    _SB_MAKEMASK1(7)
  897. #define S_ATRAP_CFG_AGENTID     8
  898. #define M_ATRAP_CFG_AGENTID     _SB_MAKEMASK(4,S_ATRAP_CFG_AGENTID)
  899. #define V_ATRAP_CFG_AGENTID(x)  _SB_MAKEVALUE(x,S_ATRAP_CFG_AGENTID)
  900. #define G_ATRAP_CFG_AGENTID(x)  _SB_GETVALUE(x,S_ATRAP_CFG_AGENTID,M_ATRAP_CFG_AGENTID)
  901. #define K_BUS_AGENT_CPU0 0
  902. #define K_BUS_AGENT_CPU1 1
  903. #define K_BUS_AGENT_IOB0 2
  904. #define K_BUS_AGENT_IOB1 3
  905. #define K_BUS_AGENT_SCD 4
  906. #define K_BUS_AGENT_RESERVED 5
  907. #define K_BUS_AGENT_L2C 6
  908. #define K_BUS_AGENT_MC 7
  909. #define S_ATRAP_CFG_CATTR     12
  910. #define M_ATRAP_CFG_CATTR     _SB_MAKEMASK(3,S_ATRAP_CFG_CATTR)
  911. #define V_ATRAP_CFG_CATTR(x)  _SB_MAKEVALUE(x,S_ATRAP_CFG_CATTR)
  912. #define G_ATRAP_CFG_CATTR(x)  _SB_GETVALUE(x,S_ATRAP_CFG_CATTR,M_ATRAP_CFG_CATTR)
  913. #define K_ATRAP_CFG_CATTR_IGNORE 0
  914. #define K_ATRAP_CFG_CATTR_UNC     1
  915. #define K_ATRAP_CFG_CATTR_CACHEABLE 2
  916. #define K_ATRAP_CFG_CATTR_NONCOH   3
  917. #define K_ATRAP_CFG_CATTR_COHERENT 4
  918. #define K_ATRAP_CFG_CATTR_NOTUNC 5
  919. #define K_ATRAP_CFG_CATTR_NOTNONCOH 6
  920. #define K_ATRAP_CFG_CATTR_NOTCOHERENT   7
  921. /*
  922.  * Trace Buffer Config register
  923.  */
  924. #define M_SCD_TRACE_CFG_RESET           _SB_MAKEMASK1(0)
  925. #define M_SCD_TRACE_CFG_START_READ      _SB_MAKEMASK1(1)
  926. #define M_SCD_TRACE_CFG_START           _SB_MAKEMASK1(2)
  927. #define M_SCD_TRACE_CFG_STOP            _SB_MAKEMASK1(3)
  928. #define M_SCD_TRACE_CFG_FREEZE          _SB_MAKEMASK1(4)
  929. #define M_SCD_TRACE_CFG_FREEZE_FULL     _SB_MAKEMASK1(5)
  930. #define M_SCD_TRACE_CFG_DEBUG_FULL      _SB_MAKEMASK1(6)
  931. #define M_SCD_TRACE_CFG_FULL            _SB_MAKEMASK1(7)
  932. #define S_SCD_TRACE_CFG_CUR_ADDR        10
  933. #define M_SCD_TRACE_CFG_CUR_ADDR        _SB_MAKEMASK(8,S_SCD_TRACE_CFG_CUR_ADDR)
  934. #define V_SCD_TRACE_CFG_CUR_ADDR(x)     _SB_MAKEVALUE(x,S_SCD_TRACE_CFG_CUR_ADDR)
  935. #define G_SCD_TRACE_CFG_CUR_ADDR(x)     _SB_GETVALUE(x,S_SCD_TRACE_CFG_CUR_ADDR,M_SCD_TRACE_CFG_CUR_ADDR)
  936. /*
  937.  * Trace Event registers
  938.  */
  939. #define S_SCD_TREVT_ADDR_MATCH          0
  940. #define M_SCD_TREVT_ADDR_MATCH          _SB_MAKEMASK(4,S_SCD_TREVT_ADDR_MATCH)
  941. #define V_SCD_TREVT_ADDR_MATCH(x)       _SB_MAKEVALUE(x,S_SCD_TREVT_ADDR_MATCH)
  942. #define G_SCD_TREVT_ADDR_MATCH(x)       _SB_GETVALUE(x,S_SCD_TREVT_ADDR_MATCH,M_SCD_TREVT_ADDR_MATCH)
  943. #define M_SCD_TREVT_REQID_MATCH         _SB_MAKEMASK1(4)
  944. #define M_SCD_TREVT_DATAID_MATCH        _SB_MAKEMASK1(5)
  945. #define M_SCD_TREVT_RESPID_MATCH        _SB_MAKEMASK1(6)
  946. #define M_SCD_TREVT_INTERRUPT           _SB_MAKEMASK1(7)
  947. #define M_SCD_TREVT_DEBUG_PIN           _SB_MAKEMASK1(9)
  948. #define M_SCD_TREVT_WRITE               _SB_MAKEMASK1(10)
  949. #define M_SCD_TREVT_READ                _SB_MAKEMASK1(11)
  950. #define S_SCD_TREVT_REQID               12
  951. #define M_SCD_TREVT_REQID               _SB_MAKEMASK(4,S_SCD_TREVT_REQID)
  952. #define V_SCD_TREVT_REQID(x)            _SB_MAKEVALUE(x,S_SCD_TREVT_REQID)
  953. #define G_SCD_TREVT_REQID(x)            _SB_GETVALUE(x,S_SCD_TREVT_REQID,M_SCD_TREVT_REQID)
  954. #define S_SCD_TREVT_RESPID              16
  955. #define M_SCD_TREVT_RESPID              _SB_MAKEMASK(4,S_SCD_TREVT_RESPID)
  956. #define V_SCD_TREVT_RESPID(x)           _SB_MAKEVALUE(x,S_SCD_TREVT_RESPID)
  957. #define G_SCD_TREVT_RESPID(x)           _SB_GETVALUE(x,S_SCD_TREVT_RESPID,M_SCD_TREVT_RESPID)
  958. #define S_SCD_TREVT_DATAID              20
  959. #define M_SCD_TREVT_DATAID              _SB_MAKEMASK(4,S_SCD_TREVT_DATAID)
  960. #define V_SCD_TREVT_DATAID(x)           _SB_MAKEVALUE(x,S_SCD_TREVT_DATAID)
  961. #define G_SCD_TREVT_DATAID(x)           _SB_GETVALUE(x,S_SCD_TREVT_DATAID,M_SCD_TREVT_DATID)
  962. #define S_SCD_TREVT_COUNT               24
  963. #define M_SCD_TREVT_COUNT               _SB_MAKEMASK(8,S_SCD_TREVT_COUNT)
  964. #define V_SCD_TREVT_COUNT(x)            _SB_MAKEVALUE(x,S_SCD_TREVT_COUNT)
  965. #define G_SCD_TREVT_COUNT(x)            _SB_GETVALUE(x,S_SCD_TREVT_COUNT,M_SCD_TREVT_COUNT)
  966. /*
  967.  * Trace Sequence registers
  968.  */
  969. #define S_SCD_TRSEQ_EVENT4              0
  970. #define M_SCD_TRSEQ_EVENT4              _SB_MAKEMASK(4,S_SCD_TRSEQ_EVENT4)
  971. #define V_SCD_TRSEQ_EVENT4(x)           _SB_MAKEVALUE(x,S_SCD_TRSEQ_EVENT4)
  972. #define G_SCD_TRSEQ_EVENT4(x)           _SB_GETVALUE(x,S_SCD_TRSEQ_EVENT4,M_SCD_TRSEQ_EVENT4)
  973. #define S_SCD_TRSEQ_EVENT3              4
  974. #define M_SCD_TRSEQ_EVENT3              _SB_MAKEMASK(4,S_SCD_TRSEQ_EVENT3)
  975. #define V_SCD_TRSEQ_EVENT3(x)           _SB_MAKEVALUE(x,S_SCD_TRSEQ_EVENT3)
  976. #define G_SCD_TRSEQ_EVENT3(x)           _SB_GETVALUE(x,S_SCD_TRSEQ_EVENT3,M_SCD_TRSEQ_EVENT3)
  977. #define S_SCD_TRSEQ_EVENT2              8
  978. #define M_SCD_TRSEQ_EVENT2              _SB_MAKEMASK(4,S_SCD_TRSEQ_EVENT2)
  979. #define V_SCD_TRSEQ_EVENT2(x)           _SB_MAKEVALUE(x,S_SCD_TRSEQ_EVENT2)
  980. #define G_SCD_TRSEQ_EVENT2(x)           _SB_GETVALUE(x,S_SCD_TRSEQ_EVENT2,M_SCD_TRSEQ_EVENT2)
  981. #define S_SCD_TRSEQ_EVENT1              12
  982. #define M_SCD_TRSEQ_EVENT1              _SB_MAKEMASK(4,S_SCD_TRSEQ_EVENT1)
  983. #define V_SCD_TRSEQ_EVENT1(x)           _SB_MAKEVALUE(x,S_SCD_TRSEQ_EVENT1)
  984. #define G_SCD_TRSEQ_EVENT1(x)           _SB_GETVALUE(x,S_SCD_TRSEQ_EVENT1,M_SCD_TRSEQ_EVENT1)
  985. #define K_SCD_TRSEQ_E0                  0
  986. #define K_SCD_TRSEQ_E1                  1
  987. #define K_SCD_TRSEQ_E2                  2
  988. #define K_SCD_TRSEQ_E3                  3
  989. #define K_SCD_TRSEQ_E0_E1               4
  990. #define K_SCD_TRSEQ_E1_E2               5
  991. #define K_SCD_TRSEQ_E2_E3               6
  992. #define K_SCD_TRSEQ_E0_E1_E2            7
  993. #define K_SCD_TRSEQ_E0_E1_E2_E3         8
  994. #define K_SCD_TRSEQ_E0E1                9
  995. #define K_SCD_TRSEQ_E0E1E2              10
  996. #define K_SCD_TRSEQ_E0E1E2E3            11
  997. #define K_SCD_TRSEQ_E0E1_E2             12
  998. #define K_SCD_TRSEQ_E0E1_E2E3           13
  999. #define K_SCD_TRSEQ_E0E1_E2_E3          14
  1000. #define K_SCD_TRSEQ_IGNORED             15
  1001. #define K_SCD_TRSEQ_TRIGGER_ALL         (V_SCD_TRSEQ_EVENT1(K_SCD_TRSEQ_IGNORED) | 
  1002.                                          V_SCD_TRSEQ_EVENT2(K_SCD_TRSEQ_IGNORED) | 
  1003.                                          V_SCD_TRSEQ_EVENT3(K_SCD_TRSEQ_IGNORED) | 
  1004.                                          V_SCD_TRSEQ_EVENT4(K_SCD_TRSEQ_IGNORED))
  1005. #define S_SCD_TRSEQ_FUNCTION            16
  1006. #define M_SCD_TRSEQ_FUNCTION            _SB_MAKEMASK(4,S_SCD_TRSEQ_FUNCTION)
  1007. #define V_SCD_TRSEQ_FUNCTION(x)         _SB_MAKEVALUE(x,S_SCD_TRSEQ_FUNCTION)
  1008. #define G_SCD_TRSEQ_FUNCTION(x)         _SB_GETVALUE(x,S_SCD_TRSEQ_FUNCTION,M_SCD_TRSEQ_FUNCTION)
  1009. #define K_SCD_TRSEQ_FUNC_NOP            0
  1010. #define K_SCD_TRSEQ_FUNC_START          1
  1011. #define K_SCD_TRSEQ_FUNC_STOP           2
  1012. #define K_SCD_TRSEQ_FUNC_FREEZE         3
  1013. #define V_SCD_TRSEQ_FUNC_NOP            V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_NOP)
  1014. #define V_SCD_TRSEQ_FUNC_START          V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_START)
  1015. #define V_SCD_TRSEQ_FUNC_STOP           V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_STOP)
  1016. #define V_SCD_TRSEQ_FUNC_FREEZE         V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_FREEZE)
  1017. #define M_SCD_TRSEQ_ASAMPLE             _SB_MAKEMASK1(18)
  1018. #define M_SCD_TRSEQ_DSAMPLE             _SB_MAKEMASK1(19)
  1019. #define M_SCD_TRSEQ_DEBUGPIN            _SB_MAKEMASK1(20)
  1020. #define M_SCD_TRSEQ_DEBUGCPU            _SB_MAKEMASK1(21)
  1021. #define M_SCD_TRSEQ_CLEARUSE            _SB_MAKEMASK1(22)
  1022. /*  *********************************************************************
  1023.     *  Interrupt Mapper Constants
  1024.     ********************************************************************* */
  1025. /*
  1026.  * Interrupt sources (Table 4-8, UM 0.2)
  1027.  * 
  1028.  * First, the interrupt numbers.
  1029.  */
  1030. #define K_INT_WATCHDOG_TIMER_0      0
  1031. #define K_INT_WATCHDOG_TIMER_1      1
  1032. #define K_INT_TIMER_0               2
  1033. #define K_INT_TIMER_1               3
  1034. #define K_INT_TIMER_2               4
  1035. #define K_INT_TIMER_3               5
  1036. #define K_INT_SMB_0                 6
  1037. #define K_INT_SMB_1                 7
  1038. #define K_INT_UART_0                8
  1039. #define K_INT_UART_1                9
  1040. #define K_INT_SER_0                 10
  1041. #define K_INT_SER_1                 11
  1042. #define K_INT_PCMCIA                12
  1043. #define K_INT_ADDR_TRAP             13
  1044. #define K_INT_PERF_CNT              14
  1045. #define K_INT_TRACE_FREEZE          15
  1046. #define K_INT_BAD_ECC               16
  1047. #define K_INT_COR_ECC               17
  1048. #define K_INT_IO_BUS                18
  1049. #define K_INT_MAC_0                 19
  1050. #define K_INT_MAC_1                 20
  1051. #define K_INT_MAC_2                 21
  1052. #define K_INT_DM_CH_0               22
  1053. #define K_INT_DM_CH_1               23
  1054. #define K_INT_DM_CH_2               24
  1055. #define K_INT_DM_CH_3               25
  1056. #define K_INT_MBOX_0                26
  1057. #define K_INT_MBOX_1                27
  1058. #define K_INT_MBOX_2                28
  1059. #define K_INT_MBOX_3                29
  1060. #define K_INT_SPARE_0               30
  1061. #define K_INT_SPARE_1               31
  1062. #define K_INT_GPIO_0                32
  1063. #define K_INT_GPIO_1                33
  1064. #define K_INT_GPIO_2                34
  1065. #define K_INT_GPIO_3                35
  1066. #define K_INT_GPIO_4                36
  1067. #define K_INT_GPIO_5                37
  1068. #define K_INT_GPIO_6                38
  1069. #define K_INT_GPIO_7                39
  1070. #define K_INT_GPIO_8                40
  1071. #define K_INT_GPIO_9                41
  1072. #define K_INT_GPIO_10               42
  1073. #define K_INT_GPIO_11               43
  1074. #define K_INT_GPIO_12               44
  1075. #define K_INT_GPIO_13               45
  1076. #define K_INT_GPIO_14               46
  1077. #define K_INT_GPIO_15               47
  1078. #define K_INT_LDT_FATAL             48
  1079. #define K_INT_LDT_NONFATAL          49
  1080. #define K_INT_LDT_SMI               50
  1081. #define K_INT_LDT_NMI               51
  1082. #define K_INT_LDT_INIT              52
  1083. #define K_INT_LDT_STARTUP           53
  1084. #define K_INT_LDT_EXT               54
  1085. #define K_INT_PCI_ERROR             55
  1086. #define K_INT_PCI_INTA              56
  1087. #define K_INT_PCI_INTB              57
  1088. #define K_INT_PCI_INTC              58
  1089. #define K_INT_PCI_INTD              59
  1090. #define K_INT_SPARE_2               60
  1091. #define K_INT_SPARE_3               61
  1092. #define K_INT_SPARE_4               62
  1093. #define K_INT_SPARE_5               63
  1094. /*
  1095.  * Mask values for each interrupt
  1096.  */
  1097. #define M_INT_WATCHDOG_TIMER_0      _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_0)
  1098. #define M_INT_WATCHDOG_TIMER_1      _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_1)
  1099. #define M_INT_TIMER_0               _SB_MAKEMASK1(K_INT_TIMER_0)
  1100. #define M_INT_TIMER_1               _SB_MAKEMASK1(K_INT_TIMER_1)
  1101. #define M_INT_TIMER_2               _SB_MAKEMASK1(K_INT_TIMER_2)
  1102. #define M_INT_TIMER_3               _SB_MAKEMASK1(K_INT_TIMER_3)
  1103. #define M_INT_SMB_0                 _SB_MAKEMASK1(K_INT_SMB_0)
  1104. #define M_INT_SMB_1                 _SB_MAKEMASK1(K_INT_SMB_1)
  1105. #define M_INT_UART_0                _SB_MAKEMASK1(K_INT_UART_0)
  1106. #define M_INT_UART_1                _SB_MAKEMASK1(K_INT_UART_1)
  1107. #define M_INT_SER_0                 _SB_MAKEMASK1(K_INT_SER_0)
  1108. #define M_INT_SER_1                 _SB_MAKEMASK1(K_INT_SER_1)
  1109. #define M_INT_PCMCIA                _SB_MAKEMASK1(K_INT_PCMCIA)
  1110. #define M_INT_ADDR_TRAP             _SB_MAKEMASK1(K_INT_ADDR_TRAP)
  1111. #define M_INT_PERF_CNT              _SB_MAKEMASK1(K_INT_PERF_CNT)
  1112. #define M_INT_TRACE_FREEZE          _SB_MAKEMASK1(K_INT_TRACE_FREEZE)
  1113. #define M_INT_BAD_ECC               _SB_MAKEMASK1(K_INT_BAD_ECC)
  1114. #define M_INT_COR_ECC               _SB_MAKEMASK1(K_INT_COR_ECC)
  1115. #define M_INT_IO_BUS                _SB_MAKEMASK1(K_INT_IO_BUS)
  1116. #define M_INT_MAC_0                 _SB_MAKEMASK1(K_INT_MAC_0)
  1117. #define M_INT_MAC_1                 _SB_MAKEMASK1(K_INT_MAC_1)
  1118. #define M_INT_MAC_2                 _SB_MAKEMASK1(K_INT_MAC_2)
  1119. #define M_INT_DM_CH_0               _SB_MAKEMASK1(K_INT_DM_CH_0)
  1120. #define M_INT_DM_CH_1               _SB_MAKEMASK1(K_INT_DM_CH_1)
  1121. #define M_INT_DM_CH_2               _SB_MAKEMASK1(K_INT_DM_CH_2)
  1122. #define M_INT_DM_CH_3               _SB_MAKEMASK1(K_INT_DM_CH_3)
  1123. #define M_INT_MBOX_0                _SB_MAKEMASK1(K_INT_MBOX_0)
  1124. #define M_INT_MBOX_1                _SB_MAKEMASK1(K_INT_MBOX_1)
  1125. #define M_INT_MBOX_2                _SB_MAKEMASK1(K_INT_MBOX_2)
  1126. #define M_INT_MBOX_3                _SB_MAKEMASK1(K_INT_MBOX_3)
  1127. #define M_INT_SPARE_0               _SB_MAKEMASK1(K_INT_SPARE_0)
  1128. #define M_INT_SPARE_1               _SB_MAKEMASK1(K_INT_SPARE_1)
  1129. #define M_INT_GPIO_0                _SB_MAKEMASK1(K_INT_GPIO_0)
  1130. #define M_INT_GPIO_1                _SB_MAKEMASK1(K_INT_GPIO_1)
  1131. #define M_INT_GPIO_2                _SB_MAKEMASK1(K_INT_GPIO_2)
  1132. #define M_INT_GPIO_3                _SB_MAKEMASK1(K_INT_GPIO_3)
  1133. #define M_INT_GPIO_4                _SB_MAKEMASK1(K_INT_GPIO_4)
  1134. #define M_INT_GPIO_5                _SB_MAKEMASK1(K_INT_GPIO_5)
  1135. #define M_INT_GPIO_6                _SB_MAKEMASK1(K_INT_GPIO_6)
  1136. #define M_INT_GPIO_7                _SB_MAKEMASK1(K_INT_GPIO_7)
  1137. #define M_INT_GPIO_8                _SB_MAKEMASK1(K_INT_GPIO_8)
  1138. #define M_INT_GPIO_9                _SB_MAKEMASK1(K_INT_GPIO_9)
  1139. #define M_INT_GPIO_10               _SB_MAKEMASK1(K_INT_GPIO_10)
  1140. #define M_INT_GPIO_11               _SB_MAKEMASK1(K_INT_GPIO_11)
  1141. #define M_INT_GPIO_12               _SB_MAKEMASK1(K_INT_GPIO_12)
  1142. #define M_INT_GPIO_13               _SB_MAKEMASK1(K_INT_GPIO_13)
  1143. #define M_INT_GPIO_14               _SB_MAKEMASK1(K_INT_GPIO_14)
  1144. #define M_INT_GPIO_15               _SB_MAKEMASK1(K_INT_GPIO_15)
  1145. #define M_INT_LDT_FATAL             _SB_MAKEMASK1(K_INT_LDT_FATAL)
  1146. #define M_INT_LDT_NONFATAL          _SB_MAKEMASK1(K_INT_LDT_NONFATAL)
  1147. #define M_INT_LDT_SMI               _SB_MAKEMASK1(K_INT_LDT_SMI)
  1148. #define M_INT_LDT_NMI               _SB_MAKEMASK1(K_INT_LDT_NMI)
  1149. #define M_INT_LDT_INIT              _SB_MAKEMASK1(K_INT_LDT_INIT)
  1150. #define M_INT_LDT_STARTUP           _SB_MAKEMASK1(K_INT_LDT_STARTUP)
  1151. #define M_INT_LDT_EXT               _SB_MAKEMASK1(K_INT_LDT_EXT)
  1152. #define M_INT_PCI_ERROR             _SB_MAKEMASK1(K_INT_PCI_ERROR)
  1153. #define M_INT_PCI_INTA              _SB_MAKEMASK1(K_INT_PCI_INTA)
  1154. #define M_INT_PCI_INTB              _SB_MAKEMASK1(K_INT_PCI_INTB)
  1155. #define M_INT_PCI_INTC              _SB_MAKEMASK1(K_INT_PCI_INTC)
  1156. #define M_INT_PCI_INTD              _SB_MAKEMASK1(K_INT_PCI_INTD)
  1157. #define M_INT_SPARE_2               _SB_MAKEMASK1(K_INT_SPARE_2)
  1158. #define M_INT_SPARE_3               _SB_MAKEMASK1(K_INT_SPARE_3)
  1159. #define M_INT_SPARE_4               _SB_MAKEMASK1(K_INT_SPARE_4)
  1160. #define M_INT_SPARE_5               _SB_MAKEMASK1(K_INT_SPARE_5)
  1161. /*
  1162.  * Interrupt mappings
  1163.  */
  1164. #define K_INT_MAP_I0 0 /* interrupt pins on processor */
  1165. #define K_INT_MAP_I1 1
  1166. #define K_INT_MAP_I2 2
  1167. #define K_INT_MAP_I3 3
  1168. #define K_INT_MAP_I4 4
  1169. #define K_INT_MAP_I5 5
  1170. #define K_INT_MAP_NMI 6 /* nonmaskable */
  1171. #define K_INT_MAP_DINT 7 /* debug interrupt */
  1172. /*
  1173.  * LDT Interrupt Set Register (table 4-5)
  1174.  */
  1175. #define S_INT_LDT_INTMSG       0
  1176. #define M_INT_LDT_INTMSG              _SB_MAKEMASK(3,S_INT_LDT_INTMSG)
  1177. #define V_INT_LDT_INTMSG(x)           _SB_MAKEVALUE(x,S_INT_LDT_INTMSG)
  1178. #define G_INT_LDT_INTMSG(x)           _SB_GETVALUE(x,S_INT_LDT_INTMSG,M_INT_LDT_INTMSG)
  1179. #define K_INT_LDT_INTMSG_FIXED       0
  1180. #define K_INT_LDT_INTMSG_ARBITRATED   1
  1181. #define K_INT_LDT_INTMSG_SMI       2
  1182. #define K_INT_LDT_INTMSG_NMI       3
  1183. #define K_INT_LDT_INTMSG_INIT       4
  1184. #define K_INT_LDT_INTMSG_STARTUP      5
  1185. #define K_INT_LDT_INTMSG_EXTINT       6
  1186. #define K_INT_LDT_INTMSG_RESERVED     7
  1187. #define M_INT_LDT_EDGETRIGGER         0
  1188. #define M_INT_LDT_LEVELTRIGGER        _SB_MAKEMASK1(3)
  1189. #define M_INT_LDT_PHYSICALDEST        0
  1190. #define M_INT_LDT_LOGICALDEST         _SB_MAKEMASK1(4)
  1191. #define S_INT_LDT_INTDEST             5
  1192. #define M_INT_LDT_INTDEST             _SB_MAKEMASK(10,S_INT_LDT_INTDEST)
  1193. #define V_INT_LDT_INTDEST(x)          _SB_MAKEVALUE(x,S_INT_LDT_INTDEST)
  1194. #define G_INT_LDT_INTDEST(x)          _SB_GETVALUE(x,S_INT_LDT_INTDEST,M_INT_LDT_INTDEST)
  1195. #define S_INT_LDT_VECTOR              13
  1196. #define M_INT_LDT_VECTOR              _SB_MAKEMASK(8,S_INT_LDT_VECTOR)
  1197. #define V_INT_LDT_VECTOR(x)           _SB_MAKEVALUE(x,S_INT_LDT_VECTOR)
  1198. #define G_INT_LDT_VECTOR(x)           _SB_GETVALUE(x,S_INT_LDT_VECTOR,M_INT_LDT_VECTOR)
  1199. /*
  1200.  * Vector format (Table 4-6)
  1201.  */
  1202. #define M_LDTVECT_RAISEINT 0x00
  1203. #define M_LDTVECT_RAISEMBOX             0x40
  1204. /*  *********************************************************************
  1205.     *  Level 2 Cache constants
  1206.     ********************************************************************* */
  1207. /*
  1208.  * Level 2 Cache Tag register (Table 5-3)
  1209.  */
  1210. #define S_L2C_TAG_MBZ               0
  1211. #define M_L2C_TAG_MBZ               _SB_MAKEMASK(5,S_L2C_TAG_MBZ)
  1212. #define S_L2C_TAG_INDEX             5
  1213. #define M_L2C_TAG_INDEX             _SB_MAKEMASK(12,S_L2C_TAG_INDEX)
  1214. #define V_L2C_TAG_INDEX(x)          _SB_MAKEVALUE(x,S_L2C_TAG_INDEX)
  1215. #define G_L2C_TAG_INDEX(x)          _SB_GETVALUE(x,S_L2C_TAG_INDEX,M_L2C_TAG_INDEX)
  1216. #define S_L2C_TAG_TAG               17
  1217. #define M_L2C_TAG_TAG               _SB_MAKEMASK(23,S_L2C_TAG_TAG)
  1218. #define V_L2C_TAG_TAG(x)            _SB_MAKEVALUE(x,S_L2C_TAG_TAG)
  1219. #define G_L2C_TAG_TAG(x)            _SB_GETVALUE(x,S_L2C_TAG_TAG,M_L2C_TAG_TAG)
  1220. #define S_L2C_TAG_ECC               40
  1221. #define M_L2C_TAG_ECC               _SB_MAKEMASK(6,S_L2C_TAG_ECC)
  1222. #define V_L2C_TAG_ECC(x)            _SB_MAKEVALUE(x,S_L2C_TAG_ECC)
  1223. #define G_L2C_TAG_ECC(x)            _SB_GETVALUE(x,S_L2C_TAG_ECC,M_L2C_TAG_ECC)
  1224. #define S_L2C_TAG_WAY               46
  1225. #define M_L2C_TAG_WAY               _SB_MAKEMASK(2,S_L2C_TAG_WAY)
  1226. #define V_L2C_TAG_WAY(x)            _SB_MAKEVALUE(x,S_L2C_TAG_WAY)
  1227. #define G_L2C_TAG_WAY(x)            _SB_GETVALUE(x,S_L2C_TAG_WAY,M_L2C_TAG_WAY)
  1228. #define M_L2C_TAG_DIRTY             _SB_MAKEMASK1(48)
  1229. #define M_L2C_TAG_VALID             _SB_MAKEMASK1(49)
  1230. /*
  1231.  * Format of level 2 cache management address (table 5-2)
  1232.  */
  1233. #define S_L2C_MGMT_INDEX            5
  1234. #define M_L2C_MGMT_INDEX            _SB_MAKEMASK(12,S_L2C_MGMT_INDEX)
  1235. #define V_L2C_MGMT_INDEX(x)         _SB_MAKEVALUE(x,S_L2C_MGMT_INDEX)
  1236. #define G_L2C_MGMT_INDEX(x)         _SB_GETVALUE(x,S_L2C_MGMT_INDEX,M_L2C_MGMT_INDEX)
  1237. #define S_L2C_MGMT_WAY              17
  1238. #define M_L2C_MGMT_WAY              _SB_MAKEMASK(2,S_L2C_MGMT_WAY)
  1239. #define V_L2C_MGMT_WAY(x)           _SB_MAKEVALUE(x,S_L2C_MGMT_WAY)
  1240. #define G_L2C_MGMT_WAY(x)           _SB_GETVALUE(x,S_L2C_MGMT_WAY,M_L2C_MGMT_WAY)
  1241. #define S_L2C_MGMT_TAG              21
  1242. #define M_L2C_MGMT_TAG              _SB_MAKEMASK(6,S_L2C_MGMT_TAG)
  1243. #define V_L2C_MGMT_TAG(x)           _SB_MAKEVALUE(x,S_L2C_MGMT_TAG)
  1244. #define G_L2C_MGMT_TAG(x)           _SB_GETVALUE(x,S_L2C_MGMT_TAG,M_L2C_MGMT_TAG)
  1245. #define M_L2C_MGMT_DIRTY            _SB_MAKEMASK1(19)
  1246. #define M_L2C_MGMT_VALID            _SB_MAKEMASK1(20)
  1247. #define A_L2C_MGMT_TAG_BASE         0x00D0000000
  1248. /*  *********************************************************************
  1249.     *  Memory Channel constants
  1250.     ********************************************************************* */
  1251. /*
  1252.  * Memory Channel Config Register (table 6-14)
  1253.  */
  1254. #define S_MC_RESERVED0              0
  1255. #define M_MC_RESERVED0              _SB_MAKEMASK(8,S_MC_RESERVED0)
  1256. #define S_MC_CHANNEL_SEL            8
  1257. #define M_MC_CHANNEL_SEL            _SB_MAKEMASK(8,S_MC_CHANNEL_SEL)
  1258. #define V_MC_CHANNEL_SEL(x)         _SB_MAKEVALUE(x,S_MC_CHANNEL_SEL)
  1259. #define G_MC_CHANNEL_SEL(x)         _SB_GETVALUE(x,S_MC_CHANNEL_SEL,M_MC_CHANNEL_SEL)
  1260. #define S_MC_BANK0_MAP              16
  1261. #define M_MC_BANK0_MAP              _SB_MAKEMASK(4,S_MC_BANK0_MAP)
  1262. #define V_MC_BANK0_MAP(x)           _SB_MAKEVALUE(x,S_MC_BANK0_MAP)
  1263. #define G_MC_BANK0_MAP(x)           _SB_GETVALUE(x,S_MC_BANK0_MAP,M_MC_BANK0_MAP)
  1264. #define K_MC_BANK0_MAP_DEFAULT      0x00
  1265. #define V_MC_BANK0_MAP_DEFAULT      V_MC_BANK0_MAP(K_MC_BANK0_MAP_DEFAULT)
  1266. #define S_MC_BANK1_MAP              20
  1267. #define M_MC_BANK1_MAP              _SB_MAKEMASK(4,S_MC_BANK1_MAP)
  1268. #define V_MC_BANK1_MAP(x)           _SB_MAKEVALUE(x,S_MC_BANK1_MAP)
  1269. #define G_MC_BANK1_MAP(x)           _SB_GETVALUE(x,S_MC_BANK1_MAP,M_MC_BANK1_MAP)
  1270. #define K_MC_BANK1_MAP_DEFAULT      0x08
  1271. #define V_MC_BANK1_MAP_DEFAULT      V_MC_BANK1_MAP(K_MC_BANK1_MAP_DEFAULT)
  1272. #define S_MC_BANK2_MAP              24
  1273. #define M_MC_BANK2_MAP              _SB_MAKEMASK(4,S_MC_BANK2_MAP)
  1274. #define V_MC_BANK2_MAP(x)           _SB_MAKEVALUE(x,S_MC_BANK2_MAP)
  1275. #define G_MC_BANK2_MAP(x)           _SB_GETVALUE(x,S_MC_BANK2_MAP,M_MC_BANK2_MAP)
  1276. #define K_MC_BANK2_MAP_DEFAULT      0x09
  1277. #define V_MC_BANK2_MAP_DEFAULT      V_MC_BANK2_MAP(K_MC_BANK2_MAP_DEFAULT)
  1278. #define S_MC_BANK3_MAP              28
  1279. #define M_MC_BANK3_MAP              _SB_MAKEMASK(4,S_MC_BANK3_MAP)
  1280. #define V_MC_BANK3_MAP(x)           _SB_MAKEVALUE(x,S_MC_BANK3_MAP)
  1281. #define G_MC_BANK3_MAP(x)           _SB_GETVALUE(x,S_MC_BANK3_MAP,M_MC_BANK3_MAP)
  1282. #define K_MC_BANK3_MAP_DEFAULT      0x0C
  1283. #define V_MC_BANK3_MAP_DEFAULT      V_MC_BANK3_MAP(K_MC_BANK3_MAP_DEFAULT)
  1284. #define M_MC_RESERVED1              _SB_MAKEMASK(8,32)
  1285. #define S_MC_QUEUE_SIZE     40
  1286. #define M_MC_QUEUE_SIZE             _SB_MAKEMASK(4,S_MC_QUEUE_SIZE)
  1287. #define V_MC_QUEUE_SIZE(x)          _SB_MAKEVALUE(x,S_MC_QUEUE_SIZE)
  1288. #define G_MC_QUEUE_SIZE(x)          _SB_GETVALUE(x,S_MC_QUEUE_SIZE,M_MC_QUEUE_SIZE)
  1289. #define V_MC_QUEUE_SIZE_DEFAULT     V_MC_QUEUE_SIZE(0x0A)
  1290. #define S_MC_AGE_LIMIT              44
  1291. #define M_MC_AGE_LIMIT              _SB_MAKEMASK(4,S_MC_AGE_LIMIT)
  1292. #define V_MC_AGE_LIMIT(x)           _SB_MAKEVALUE(x,S_MC_AGE_LIMIT)
  1293. #define G_MC_AGE_LIMIT(x)           _SB_GETVALUE(x,S_MC_AGE_LIMIT,M_MC_AGE_LIMIT)
  1294. #define V_MC_AGE_LIMIT_DEFAULT      V_MC_AGE_LIMIT(8)
  1295. #define S_MC_WR_LIMIT               48
  1296. #define M_MC_WR_LIMIT               _SB_MAKEMASK(4,S_MC_WR_LIMIT)
  1297. #define V_MC_WR_LIMIT(x)            _SB_MAKEVALUE(x,S_MC_WR_LIMIT)
  1298. #define G_MC_WR_LIMIT(x)            _SB_GETVALUE(x,S_MC_WR_LIMIT,M_MC_WR_LIMIT)
  1299. #define V_MC_WR_LIMIT_DEFAULT       V_MC_WR_LIMIT(5)
  1300. #define M_MC_IOB1HIGHPRIORITY     _SB_MAKEMASK1(52)
  1301. #define M_MC_RESERVED2              _SB_MAKEMASK(3,53)
  1302. #define S_MC_CS_MODE                56
  1303. #define M_MC_CS_MODE                _SB_MAKEMASK(4,S_MC_CS_MODE)
  1304. #define V_MC_CS_MODE(x)             _SB_MAKEVALUE(x,S_MC_CS_MODE)
  1305. #define G_MC_CS_MODE(x)             _SB_GETVALUE(x,S_MC_CS_MODE,M_MC_CS_MODE)
  1306. #define K_MC_CS_MODE_MSB_CS         0
  1307. #define K_MC_CS_MODE_INTLV_CS       15
  1308. #define K_MC_CS_MODE_MIXED_CS_10    12
  1309. #define K_MC_CS_MODE_MIXED_CS_30    6
  1310. #define K_MC_CS_MODE_MIXED_CS_32    3
  1311. #define V_MC_CS_MODE_MSB_CS         V_MC_CS_MODE(K_MC_CS_MODE_MSB_CS)
  1312. #define V_MC_CS_MODE_INTLV_CS       V_MC_CS_MODE(K_MC_CS_MODE_INTLV_CS)
  1313. #define V_MC_CS_MODE_MIXED_CS_10    V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_10)
  1314. #define V_MC_CS_MODE_MIXED_CS_30    V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_30)
  1315. #define V_MC_CS_MODE_MIXED_CS_32    V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_32)
  1316. #define M_MC_ECC_DISABLE            _SB_MAKEMASK1(60)
  1317. #define M_MC_BERR_DISABLE           _SB_MAKEMASK1(61)
  1318. #define M_MC_FORCE_SEQ              _SB_MAKEMASK1(62)
  1319. #define M_MC_DEBUG                  _SB_MAKEMASK1(63)
  1320. #define V_MC_CONFIG_DEFAULT     V_MC_WR_LIMIT_DEFAULT | V_MC_AGE_LIMIT_DEFAULT | 
  1321. V_MC_BANK0_MAP_DEFAULT | V_MC_BANK1_MAP_DEFAULT | 
  1322. V_MC_BANK2_MAP_DEFAULT | V_MC_BANK3_MAP_DEFAULT | V_MC_CHANNEL_SEL(0) | 
  1323.                                 M_MC_IOB1HIGHPRIORITY | V_MC_QUEUE_SIZE_DEFAULT
  1324. /*
  1325.  * Memory clock config register (Table 6-15)
  1326.  *
  1327.  * Note: this field has been updated to be consistent with the errata to 0.2
  1328.  */
  1329. #define S_MC_CLK_RATIO              0
  1330. #define M_MC_CLK_RATIO              _SB_MAKEMASK(4,S_MC_CLK_RATIO)
  1331. #define V_MC_CLK_RATIO(x)           _SB_MAKEVALUE(x,S_MC_CLK_RATIO)
  1332. #define G_MC_CLK_RATIO(x)           _SB_GETVALUE(x,S_MC_CLK_RATIO,M_MC_CLK_RATIO)
  1333. #define K_MC_CLK_RATIO_2X           4
  1334. #define K_MC_CLK_RATIO_25X          5
  1335. #define K_MC_CLK_RATIO_3X           6
  1336. #define K_MC_CLK_RATIO_35X          7
  1337. #define K_MC_CLK_RATIO_4X           8
  1338. #define K_MC_CLK_RATIO_45X     9
  1339. #define V_MC_CLK_RATIO_2X     V_MC_CLK_RATIO(K_MC_CLK_RATIO_2X)
  1340. #define V_MC_CLK_RATIO_25X          V_MC_CLK_RATIO(K_MC_CLK_RATIO_25X)
  1341. #define V_MC_CLK_RATIO_3X           V_MC_CLK_RATIO(K_MC_CLK_RATIO_3X)
  1342. #define V_MC_CLK_RATIO_35X          V_MC_CLK_RATIO(K_MC_CLK_RATIO_35X)
  1343. #define V_MC_CLK_RATIO_4X           V_MC_CLK_RATIO(K_MC_CLK_RATIO_4X)
  1344. #define V_MC_CLK_RATIO_45X          V_MC_CLK_RATIO(K_MC_CLK_RATIO_45X)
  1345. #define V_MC_CLK_RATIO_DEFAULT      V_MC_CLK_RATIO_25X
  1346. #define S_MC_REF_RATE                8
  1347. #define M_MC_REF_RATE                _SB_MAKEMASK(8,S_MC_REF_RATE)
  1348. #define V_MC_REF_RATE(x)             _SB_MAKEVALUE(x,S_MC_REF_RATE)
  1349. #define G_MC_REF_RATE(x)             _SB_GETVALUE(x,S_MC_REF_RATE,M_MC_REF_RATE)
  1350. #define K_MC_REF_RATE_100MHz         0x62
  1351. #define K_MC_REF_RATE_133MHz         0x81
  1352. #define K_MC_REF_RATE_200MHz         0xC4 
  1353. #define V_MC_REF_RATE_100MHz         V_MC_REF_RATE(K_MC_REF_RATE_100MHz)
  1354. #define V_MC_REF_RATE_133MHz         V_MC_REF_RATE(K_MC_REF_RATE_133MHz)
  1355. #define V_MC_REF_RATE_200MHz         V_MC_REF_RATE(K_MC_REF_RATE_200MHz)
  1356. #define V_MC_REF_RATE_DEFAULT        V_MC_REF_RATE_100MHz
  1357. #define S_MC_CLOCK_DRIVE             16
  1358. #define M_MC_CLOCK_DRIVE             _SB_MAKEMASK(4,S_MC_CLOCK_DRIVE)
  1359. #define V_MC_CLOCK_DRIVE(x)          _SB_MAKEVALUE(x,S_MC_CLOCK_DRIVE)
  1360. #define G_MC_CLOCK_DRIVE(x)          _SB_GETVALUE(x,S_MC_CLOCK_DRIVE,M_MC_CLOCK_DRIVE)
  1361. #define V_MC_CLOCK_DRIVE_DEFAULT     V_MC_CLOCK_DRIVE(0xF)
  1362. #define S_MC_DATA_DRIVE              20
  1363. #define M_MC_DATA_DRIVE              _SB_MAKEMASK(4,S_MC_DATA_DRIVE)
  1364. #define V_MC_DATA_DRIVE(x)           _SB_MAKEVALUE(x,S_MC_DATA_DRIVE)
  1365. #define G_MC_DATA_DRIVE(x)           _SB_GETVALUE(x,S_MC_DATA_DRIVE,M_MC_DATA_DRIVE)
  1366. #define V_MC_DATA_DRIVE_DEFAULT      V_MC_DATA_DRIVE(0x0)
  1367. #define S_MC_ADDR_DRIVE              24
  1368. #define M_MC_ADDR_DRIVE              _SB_MAKEMASK(4,S_MC_ADDR_DRIVE)
  1369. #define V_MC_ADDR_DRIVE(x)           _SB_MAKEVALUE(x,S_MC_ADDR_DRIVE)
  1370. #define G_MC_ADDR_DRIVE(x)           _SB_GETVALUE(x,S_MC_ADDR_DRIVE,M_MC_ADDR_DRIVE)
  1371. #define V_MC_ADDR_DRIVE_DEFAULT      V_MC_ADDR_DRIVE(0x0)
  1372. #define M_MC_DLL_BYPASS              _SB_MAKEMASK1(31)
  1373. #define S_MC_DQI_SKEW               32
  1374. #define M_MC_DQI_SKEW               _SB_MAKEMASK(8,S_MC_DQI_SKEW)
  1375. #define V_MC_DQI_SKEW(x)            _SB_MAKEVALUE(x,S_MC_DQI_SKEW)
  1376. #define G_MC_DQI_SKEW(x)            _SB_GETVALUE(x,S_MC_DQI_SKEW,M_MC_DQI_SKEW)
  1377. #define V_MC_DQI_SKEW_DEFAULT       V_MC_DQI_SKEW(0)
  1378. #define S_MC_DQO_SKEW               40
  1379. #define M_MC_DQO_SKEW               _SB_MAKEMASK(8,S_MC_DQO_SKEW)
  1380. #define V_MC_DQO_SKEW(x)            _SB_MAKEVALUE(x,S_MC_DQO_SKEW)
  1381. #define G_MC_DQO_SKEW(x)            _SB_GETVALUE(x,S_MC_DQO_SKEW,M_MC_DQO_SKEW)
  1382. #define V_MC_DQO_SKEW_DEFAULT       V_MC_DQO_SKEW(0)
  1383. #define S_MC_ADDR_SKEW               48
  1384. #define M_MC_ADDR_SKEW               _SB_MAKEMASK(8,S_MC_ADDR_SKEW)
  1385. #define V_MC_ADDR_SKEW(x)            _SB_MAKEVALUE(x,S_MC_ADDR_SKEW)
  1386. #define G_MC_ADDR_SKEW(x)            _SB_GETVALUE(x,S_MC_ADDR_SKEW,M_MC_ADDR_SKEW)
  1387. #define V_MC_ADDR_SKEW_DEFAULT       V_MC_ADDR_SKEW(0x0F)
  1388. #define S_MC_DLL_DEFAULT             56
  1389. #define M_MC_DLL_DEFAULT             _SB_MAKEMASK(8,S_MC_DLL_DEFAULT)
  1390. #define V_MC_DLL_DEFAULT(x)          _SB_MAKEVALUE(x,S_MC_DLL_DEFAULT)
  1391. #define G_MC_DLL_DEFAULT(x)          _SB_GETVALUE(x,S_MC_DLL_DEFAULT,M_MC_DLL_DEFAULT)
  1392. #define V_MC_DLL_DEFAULT_DEFAULT     V_MC_DLL_DEFAULT(0x10)
  1393. #define V_MC_CLKCONFIG_DEFAULT       V_MC_DLL_DEFAULT_DEFAULT |  
  1394.                                      V_MC_ADDR_SKEW_DEFAULT | 
  1395.                                      V_MC_DQO_SKEW_DEFAULT | 
  1396.                                      V_MC_DQI_SKEW_DEFAULT | 
  1397.                                      V_MC_ADDR_DRIVE_DEFAULT | 
  1398.                                      V_MC_DATA_DRIVE_DEFAULT | 
  1399.                                      V_MC_CLOCK_DRIVE_DEFAULT | 
  1400.                                      V_MC_REF_RATE_DEFAULT 
  1401. /*
  1402.  * DRAM Command Register (Table 6-13)
  1403.  */
  1404. #define S_MC_COMMAND                0
  1405. #define M_MC_COMMAND                _SB_MAKEMASK(4,S_MC_COMMAND)
  1406. #define V_MC_COMMAND(x)             _SB_MAKEVALUE(x,S_MC_COMMAND)
  1407. #define G_MC_COMMAND(x)             _SB_GETVALUE(x,S_MC_COMMAND,M_MC_COMMAND)
  1408. #define K_MC_COMMAND_EMRS           0
  1409. #define K_MC_COMMAND_MRS            1
  1410. #define K_MC_COMMAND_PRE            2
  1411. #define K_MC_COMMAND_AR             3
  1412. #define K_MC_COMMAND_SETRFSH        4
  1413. #define K_MC_COMMAND_CLRRFSH        5
  1414. #define K_MC_COMMAND_SETPWRDN       6
  1415. #define K_MC_COMMAND_CLRPWRDN       7
  1416. #define V_MC_COMMAND_EMRS           V_MC_COMMAND(K_MC_COMMAND_EMRS)
  1417. #define V_MC_COMMAND_MRS            V_MC_COMMAND(K_MC_COMMAND_MRS)
  1418. #define V_MC_COMMAND_PRE            V_MC_COMMAND(K_MC_COMMAND_PRE)
  1419. #define V_MC_COMMAND_AR             V_MC_COMMAND(K_MC_COMMAND_AR)
  1420. #define V_MC_COMMAND_SETRFSH        V_MC_COMMAND(K_MC_COMMAND_SETRFSH)
  1421. #define V_MC_COMMAND_CLRRFSH        V_MC_COMMAND(K_MC_COMMAND_CLRRFSH)
  1422. #define V_MC_COMMAND_SETPWRDN       V_MC_COMMAND(K_MC_COMMAND_SETPWRDN)
  1423. #define V_MC_COMMAND_CLRPWRDN       V_MC_COMMAND(K_MC_COMMAND_CLRPWRDN)
  1424. #define M_MC_CS0                    _SB_MAKEMASK1(4)
  1425. #define M_MC_CS1                    _SB_MAKEMASK1(5)
  1426. #define M_MC_CS2                    _SB_MAKEMASK1(6)
  1427. #define M_MC_CS3                    _SB_MAKEMASK1(7)
  1428. /*
  1429.  * DRAM Mode Register (Table 6-14)
  1430.  */