idt79pmc438.h
上传用户:yingyi0918
上传日期:2022-06-26
资源大小:214k
文件大小:29k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* idt79pmc438.h - Integrated Device Technologies IDT79PMC438 CPU Board header */
  2. /* Copyright 1984-2002 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5.  * This file has been developed or significantly modified by the
  6.  * MIPS Center of Excellence Dedicated Engineering Staff.
  7.  * This notice is as per the MIPS Center of Excellence Master Partner
  8.  * Agreement, do not remove this notice without checking first with
  9.  * WR/Platforms MIPS Center of Excellence engineering management.
  10.  */
  11. /*
  12. modification history
  13. --------------------
  14.  
  15. 01a,14Oct02,krao  New file from IDT for IDT79PMC438 Board.
  16. */
  17. /*
  18. DESCRIPTION
  19. This file contains constants for initialization and configuration of
  20. vxWorks on the IDT79PMC438 board. The Evaluation Board Manuals and
  21. IDT79RC32438 User Reference Manual contain full descriptions of the
  22. following registers and their uses.
  23. The register offsets and bit masks for the CPU are defined in a
  24. separate file (rc32438.h) so that they can be shared with other BSPs.
  25. This file contains constants that are specific to the board and BSP.
  26. */
  27. #ifndef __INCidt79pmc438h
  28. #define __INCidt79pmc438h
  29. #ifdef __cplusplus
  30. extern "C" {
  31. #endif   /* __cplusplus */
  32. /* includes */
  33. #include "vxWorks.h"
  34. #include "rc32438.h"
  35. /*defines*/
  36.  
  37. /* Rc32438 CPU Register Settings */
  38. #define BUS                     0           /* no PCI, VME, or MULTI BUS      */
  39. #define CPU_CLOCK_RATE          100000000   /* CPU clock crystal rate (Hertz) */
  40. #define ERR_CNTL_STATUS         0xB8030030  /* Register to disable watchdog   */
  41. #define ERR_CNTL_VALUE          0x00000000  /* Mask to disable watchdog       */
  42. #define SYS_WB_FLUSH                        /* Enable calls to sysWbFlush ()  */
  43.  
  44. /* Rc32438 Device Controller Settings */
  45.  
  46. #define DEV_CTL_BASE            0xB8010000  /* Device controller Base         */
  47. #define DEV0BASE_OFF            0x00        /* Device 0 Base offset           */
  48. #define DEV0MASK_OFF            0x04        /* Device 0 Mask offset           */
  49. #define DEV0C_OFF               0x08        /* Device 0 Control offset        */
  50. #define DEV0TC_OFF              0x0C        /* Device 0 Timing Conf  offset   */
  51. #define DEV1BASE_OFF            0x10        /* Device 1 Base offset           */
  52. #define DEV1MASK_OFF            0x14        /* Device 1 Mask offset           */
  53. #define DEV1C_OFF               0x18        /* Device 1 Control offset        */
  54. #define DEV1TC_OFF              0x1C        /* Device 1 Timing Conf offset    */
  55. #define DEV2BASE_OFF            0x20        /* Device 2 Base offset           */
  56. #define DEV2MASK_OFF            0x24        /* Device 2 Mask offset           */
  57. #define DEV2C_OFF               0x28        /* Device 2 Control offset        */
  58. #define DEV2TC_OFF              0x2C        /* Device 2 Timing Conf offset    */
  59. #define DEV3BASE_OFF            0x30        /* Device 3 Base offset           */
  60. #define DEV3MASK_OFF            0x34        /* Device 3 Mask offset           */
  61. #define DEV3C_OFF               0x38        /* Device 3 Control offset        */
  62. #define DEV3TC_OFF              0x3C        /* Device 3 Timing Conf offset    */
  63. #undef  EIGHT_BIT_EPROM                     /* Select default Boot device CS0 */
  64. /*Various chip select values */
  65. #ifdef EIGHT_BIT_EPROM                      /* If boot device is 8 bit eprom  */  
  66. #define MCR_CS0_BS              0x1FC00000  /* Device 0 Base Value            */
  67. #define MCR_CS0_MASK            0xFFE00000  /* Device 0 Mask Value            */
  68. #define MCR_CS0_CTRL            0x06183324  /* Device 0 Control Value         */
  69. #define MCR_CS0_TC              0x00000922  /* Device 0 Timing Conf Value     */
  70. #define MCR_CS1_BS              0x08000000  /* Device 1 Base Value            */
  71. #define MCR_CS1_MASK            0xFFC00000  /* Device 1 Mask Value            */
  72. #define MCR_CS1_CTRL            0x06183325  /* Device 1 Control Value         */
  73. #define MCR_CS1_TC              0x00000922  /* Device 1 Timing Conf Value     */
  74. #else 
  75. /* If boot device is 16 bit flash */
  76. #define MCR_CS0_BS              0x1FC00000  /* Device 0 Base Value            */
  77. #define MCR_CS0_MASK            0xFFE00000  /* Device 0 Mask Value            */
  78. #define MCR_CS0_CTRL            0x06183325  /* Device 0 Control Value         */
  79. #define MCR_CS0_TC              0x00000922  /* Device 0 Timing Conf Value     */
  80. #define MCR_CS1_BS              0x08000000  /* Device 1 Base Value            */
  81. #define MCR_CS1_MASK            0xFFE00000  /* Device 1 Mask Value            */
  82. #define MCR_CS1_CTRL            0x00000000  /* Device 1 Control  Value        */
  83. #define MCR_CS1_TC              0x00000922  /* Device 1 Timing Conf Value     */
  84. #endif
  85. /* Eight bit port setting for CS2 */
  86. #define MCR_CS2_BS              0x11000000  /* Device 2 Base Value            */
  87. #define MCR_CS2_MASK            0xFFE00000  /* Device 2 Mask Value            */
  88. #define MCR_CS2_CTRL            0x06183325  /* Device 2 Control Value         */
  89. #define MCR_CS2_TC              0x00000922  /* Device 2 Timing Conf Value     */
  90. /* Sixteen bit port setting for CS3 */
  91. #define MCR_CS3_BS              0x0c080000  /* Device 3 Base Value            */
  92. #define MCR_CS3_MASK            0xFFFF0000  /* Device 3 Mask Value            */
  93. #define MCR_CS3_CTRL            0x06183324  /* Device 3 Control Value         */
  94. #define MCR_CS3_TC              0x00000922  /* Device 3 Timing Conf Value     */
  95.  
  96. #define TIMER_BASE_ADDR         0xB8028000  /* Timer Base address             */
  97. #define DISABLE_TIMER           0x0         /* Disable Timer value            */
  98. #define ENABLE_TIMER            0x1         /* Enable Timer value             */
  99. #define WTC_CTL_REG             0xB803003C  /* Watchdog Control Register      */
  100. #define BT_TIMER_COMPARE        0xB8010064  /* Bus Transaction Timer compare  */
  101. #define PMC438_REG_BASE         0xB0000000  /* 32438 Register Base - for PCI  */
  102.  
  103. /* GPIO Registers */
  104. #define GPIO_BASE_REG           0xB8048000              /* GPIO Base          */
  105. #define GPIO_FUNC_REG           GPIO_BASE_REG + 0x00    /* GPIO Function      */
  106. #define GPIO_CFG_REG            GPIO_BASE_REG + 0x04    /* GPIO Config        */
  107. #define GPIO_DATA_REG           GPIO_BASE_REG + 0x08    /* GPIO Data          */
  108. #define GPIO_INT_LVL            GPIO_BASE_REG + 0x0C    /* GPIO Interrupt lvl */
  109. #define GPIO_INTR_STAT          GPIO_BASE_REG + 0x10    /* GPIO Interrupt Stat*/
  110. #define GPIO_NMI_ENBL           GPIO_BASE_REG + 0x14    /* GPIO NMI Enable    */
  111. #define GPIO_PCI_INTR_MASK       0x00000F00      /* GPIO Status Mask for PCI */
  112.  
  113. /* task default status register */
  114. #define INITIAL_SR              (SR_CU0 | SR_BEV)
  115. #define INITIAL_CFG             0x0002E880
  116.  
  117. #define INT_LVL_SR_IMASK        ( INT_LVL_GRP6 | INT_LVL_GRP5 | INT_LVL_GRP4 | 
  118.                                 INT_LVL_GRP3 |INT_LVL_GRP2 | INT_LVL_SW0 |     
  119.                                 INT_LVL_SW1)
  120. #define RC32438_SR              (SR_CU0 | INT_LVL_SR_IMASK |
  121.                                 INT_LVL_TIMER | SR_IE)
  122. /* interrupt priority */
  123. #define INT_PRIO_MSB            TRUE        /* interrupt priority msb highest */
  124. /* interrupt levels */
  125. #define INT_LVL_TIMER           SR_IBIT8    /* RC32438 timer (fixed)          */
  126. #define INT_LVL_GRP6            SR_IBIT7    /* IORQ 4                         */
  127. #define INT_LVL_GRP5            SR_IBIT6    /* IORQ 3                         */
  128. #define INT_LVL_GRP4            SR_IBIT5    /* IORQ 2                         */
  129. #define INT_LVL_GRP3            SR_IBIT4    /* IORQ 1                         */
  130. #define INT_LVL_GRP2            SR_IBIT3    /* IORQ 0                         */
  131. #define INT_LVL_SW1             SR_IBIT2    /* sw interrupt 1 (fixed)         */
  132. #define INT_LVL_SW0             SR_IBIT1    /* sw interrupt 0 (fixed)         */
  133. /* interrupt indexes */
  134. #define INT_INDX_TIMER          7           /* RC32438 timer (fixed)          */
  135. #define INT_INDX_IORQ4          6           /* IORQ 4                         */
  136. #define INT_INDX_IORQ3          5           /* IORQ 3                         */
  137. #define INT_INDX_IORQ2          4           /* IORQ 2                         */
  138. #define INT_INDX_IORQ1          3           /* IORQ 1                         */
  139. #define INT_INDX_IORQ0          2           /* IORQ 0                         */
  140. #define INT_INDX_SW1            1           /* sw interrupt 1                 */
  141. #define INT_INDX_SW0            0           /* sw interrupt 0                 */
  142.  
  143. /* interrupt vectors */
  144. #define INT_NUM_BASE            0x40 /* Base for all BSP-defined int nums */
  145. #define IV_TIMER_VEC            72          /* RC32438 timer (fixed)          */
  146. #define IV_IORQ2_VEC            71          /*               - IORQ 4         */
  147. #define COM1_INT_NUM            70          /* Serial port 1                  */
  148. #define COM2_INT_NUM            69          /* Serial port 2                  */
  149. #define ETH_OVR_NUM0            68          /* Ethernet over run              */
  150. #define ETH_OVR_NUM1            60          /* Ethernet over run              */
  151. #define INT_NUM_PCI_ABCD        (INT_NUM_BASE + 3)
  152.                                             /*               - IORQ 2         */
  153. #define IV_IORQ1_VEC            66          /*               - IORQ 1         */
  154. #define IV_IORQ0_VEC            65          /* Timer0        - IORQ 0         */
  155. #define TMR0_INT_NUM 64
  156. #define INT_VEC_GRP2            IV_IORQ0_VEC
  157. #define INT_VEC_GRP3            IV_IORQ1_VEC
  158. #define INT_VEC_GRP4            IV_IORQ2_VEC
  159. #define INT_VEC_GRP5            IV_IORQ3_VEC
  160. #define INT_VEC_GRP6            INT_NUM_PCI_ABCD
  161. #define INT_VEC_GRP7            IV_TIMER_VEC
  162. #define INT_NUM_IRQ0            (INT_NUM_BASE + 2)
  163. /* misc hardware defines */
  164. #if CPU==RC32438
  165.     #define MAX_PHYS_MEMORY     0x04000000  /* 64 MByte */
  166. #endif
  167. /* Miscellaneous */
  168. #ifdef _ASMLANGUAGE
  169.     #define CAST(c)
  170. #else
  171.     #define CAST(c) (c)
  172. #endif
  173. #define N_SIO_CHANNELS          1           /* Number of serial I/O channels */
  174. #define N_UART_CHANNELS         1           /* Number of serial I/O channels */
  175. /* Baud rate Oscillator clock */
  176. #define NS16550_XTAL_FREQ       CPU_CLOCK_RATE     /* UART input frequencey */
  177. #define UART_DEFAULT_BAUD_RATE  9600               /* default baud rate     */
  178. /* The UARTs are inherently little endian devices. This offset is added to
  179.  * the UART base addresses. It is necessary because the code is big-endian.
  180.  * If this BSP were to support little endian code, this #define would
  181.  * have to be conditional on the endiannes of the code.
  182.  */
  183. #define UART_ENDIAN_OFFSET      3
  184. /* Rc32438 Internal Uart definitions */
  185. #define UART0_BASE              0xB8050000      /* Base address of UART0      */
  186. #define UART1_BASE              0xB8050020      /* Base address of UART1      */
  187. #define UART_REG_ADDR_INTERVAL  4
  188. #define UART_DEFAULT_BAUD_RATE  9600
  189. /* PIO definition for Internal Uart   */
  190. #define PIO_FUNCSEL_REG         0xB8048000
  191. #define PIO_FUNCSEL_VAL         0x00f00303
  192. /* Rc32438 Interrupt controller settings for Uart */
  193. #define UART0_GENERAL_INTR_MASK 0x00000001
  194. #define UART1_GENERAL_INTR_MASK 0x00000008
  195. /* Rc32438 Timer0(used as Auxiliary clock)interrupts */
  196. #define AUX_TIMER_INTR_PEND     0xB8038000      /* Aux timer interrupt pend   */
  197. #define AUX_TIMER_INTR_TEST     0xB8038004      /* Aux timer interrupt test   */
  198. #define AUX_TIMER_INTR_MASK     0xB8038008      /* Aux timer interrupt mask   */
  199. #define AUX_TIMER_CNTL_REG      0xB8028014      /* Aux timer control reg      */
  200. #define AUX_TIMER_CNT_REG       0xB802800c      /* Aux timer count reg        */
  201. #define AUX_TIMER_CMP_REG       0xB8028010      /* Aux timer compare reg      */
  202. #define AUX_CLOCK_FREQ          NS16550_XTAL_FREQ  
  203. /* defines used for Timer Interrupts */ 
  204. #define CNTR_TMR0_MASK          0x01            /* Counter timer 0 mask       */
  205. #define CNTR_TMR1_MASK          0x02            /* Counter timer 1 mask       */
  206. #define CNTR_TMR2_MASK          0x04            /* Counter timer 2 mask       */
  207. #define REFRESH_TIMER_MASK      0x08            /* Refresh timer mask         */
  208. #define WDOG_TMR_TO_MASK        0x10            /* Watchdog timer mask        */
  209. #define UNDEC_CPU_WR_MASK       0x20            /* Undecoded CPU write mask   */
  210. #define CNTR_TMR0_ENBL          0x01            /* Counter timer 0 enable     */
  211. #define INTR_MASK_TIMER0        0x00000001      /* Interrupt mask timer 0     */
  212. /* counter timer 0 registers */
  213. #define CNTR_TMR0_COUNTREG      0xB8028000      /* Cntr timer 0 count reg     */
  214. #define CNTR_TMR0_COMPREG       0xB8028004      /* Cntr timer 0 compare reg   */
  215. #define CNTR_TMR0_CTRLREG       0xB8028008      /* Cntr timer 0 control reg   */
  216. #define TIMEOUT_COUNT           0x0000FFFF
  217.  
  218. /* RTC-NVRAM Base Address */
  219. #define NVRAM_BASE_ADDR         0xAC080000      /* NVRAM Base address         */
  220.  
  221. #define MAX_DMA_INTRS           13              /* Max num of DMA interrupt   */
  222. #define ETH_INTFC0              0xB8058000      /* Ethernet interface 0 Base  */
  223. #define ETH_INTFC1              0xB8060000      /* Ethernet interface 1 Base  */
  224. #define INTR_MASK_ETH1_OVR      0x00008000      /* Ethernet 1 mask overrun    */
  225. #define INTR_MASK_ETH0_OVR      0x00001000      /* Ethernet 0 mask overrun    */
  226. /* I2C Interface related defines */
  227. #define PSL_75CLK_100KBPS       94              /* Prescalar clock value      */
  228. #define I2C_MASTER_INT_MASK     0xF             /* I2C Master interrupt mask  */
  229. #define I2C_SLAVE_INT_MASK      0x7F            /* I2C Slave interrupt mask   */
  230. #define I2C_24LC64_CNTL_BYTE    0xA0            /* I2C Ctrl byte for eeprom   */
  231. #define I2C_24LC64_RD_EN        0x01            /* I2C Read enable            */
  232. #define I2C_MEM_SIZE            8192            /* 8K Bytes of I2C Space      */
  233. #define I2C_READ_WRITE_ADRS     0x0             /* beginning address of I2C   */
  234. /* "NVRAM" related defines  (I2C serial EEPROM is used for NVRAM) */
  235. #define NV_RAM_SIZE             512  /* 512 bytes in I2C are used for Nvram */
  236. #define NV_RAM_READ_WRITE_ADRS  0x0  /* beginning address of I2C for "NVRAM" */
  237.  
  238. /* Mask Generation Macro */
  239. #ifndef MSK
  240. #define MSK(n)                  ((1 << (n)) - 1)
  241. #endif
  242. /* REFRESH Counter registers */
  243. #define RCOUNT                  0xB8028024
  244. /* Cache related definitions */
  245.  
  246. #define IDT32438_CONFIG1_DA_SHF   7
  247. #define IDT32438_CONFIG1_DA_MSK   (MSK(3) << IDT32438_CONFIG1_DA_SHF)
  248. #define IDT32438_CONFIG1_DL_SHF   10
  249. #define IDT32438_CONFIG1_DL_MSK   (MSK(3) << IDT32438_CONFIG1_DL_SHF)
  250. #define IDT32438_CONFIG1_DS_SHF   13
  251. #define IDT32438_CONFIG1_DS_MSK   (MSK(3) << IDT32438_CONFIG1_DS_SHF)
  252. #define IDT32438_CONFIG1_IA_SHF   16
  253. #define IDT32438_CONFIG1_IA_MSK   (MSK(3) << IDT32438_CONFIG1_IA_SHF)
  254. #define IDT32438_CONFIG1_IL_SHF   19
  255. #define IDT32438_CONFIG1_IL_MSK   (MSK(3) << IDT32438_CONFIG1_IL_SHF)
  256. #define IDT32438_CONFIG1_IS_SHF   22
  257. #define IDT32438_CONFIG1_IS_MSK   (MSK(3) << IDT32438_CONFIG1_IS_SHF)
  258. /* DDR Registers */
  259. #define DDRC_VAL_AT_INIT        0x232A4980      /* DDR Control at init        */
  260. #if(CPU_CLOCK_RATE == 133000000)
  261. #define DDRC_VAL_NORMAL         0xa32a4980      /* DDR Control value normal   */
  262. #define I2C_DELAY_MULT          2
  263. #else
  264. #define DDRC_VAL_NORMAL         0x82984940      /* DDR Control value normal   */
  265. #define I2C_DELAY_MULT          2
  266. #endif
  267. /*DDR Base and Mask registers */
  268. #define DDR_BASE                0xB8018000      /* DDR Base                   */
  269. #define DDR0_BASE_VAL           0x00000000      /* DDR0 Base value            */
  270. #define DDR0_MASK_VAL           0xFC000000      /* DDR0 Mask value            */
  271. #define DDR1_BASE_VAL           0x04000000      /* DDR1 Base value            */
  272. #define DDR1_MASK_VAL           0xFC000000      /* DDR1 Mask value            */
  273. #define DDR0_ABASE_VAL          0x08000000      /* DDR0 Alternate Base value  */
  274. #define DDR0_AMASK_VAL          0x00000000      /* DDR0 Alternate Mask value  */
  275.  
  276. #define  DDR_REF_CMP_FAST       0x0100          /* DDR fast Refresh compare   */
  277. #define  DDR_REF_CMP_VAL        0x0130          /* DDR Refresh Normal         */
  278. #define  DDR_REF_CONTL_VAL      0x0001          /* Enable counter             */
  279. #define  DDR_REF_COUNT_VAL      0x0000          /* DDR Refresh count value    */
  280. /* Hidden register for RC32438 DDR */
  281. #define DDRD_LLC_REG 0xB801C004
  282. #define DDRD_LLC_VAL 0x00020183
  283. /* DDR device specific  for MT46V16M16 commands */
  284. #define DDR_CUST_NOP            0x003F          /* DDR Custom NOP             */
  285. #define DDR_CUST_PRECHARGE      0x0033          /* DDR Custom Precharge       */
  286. #define DDR_CUST_REFRESH        0x0027          /* DDR Custom refresh         */
  287. #define DDR_LD_MODE_REG         0x0023          /* DDR load mode register     */
  288. #define DDR_LD_EMODE_REG        0x0063          /* DDR load emode register    */
  289. #define DDR_EMODE_VAL           0x0000          /* DDR Emode value            */
  290. #define DDR_DLL_RES_MODE_VAL    0x0584          /* DDR DLL Reset mode value   */
  291. #define DDR_DLL_MODE_VAL        0x0184          /* DDR DLL Mode value         */
  292. #define DELAY_200USEC           25000           /* Delay value                */
  293. #define DATA_PATTERN            0xAA556996      /* Data pattern               */
  294. /* IPBus arbiter control register */
  295. #define IPAC                    0xb8044054     /* IPBus arbiter control       */
  296. #define IPAC_VALUE              0x4            /* Disable write trans merging */
  297. /* PCI Specific defines */
  298. #define PCI_MAX_LATENCY         0xFFF           /* Max PCI latency            */
  299. #define INTR_PCI_ABCD_MASK      0x00000F00      /* Mask value PCI interrupt   */
  300. #define PCIM_SHFT               0x6             /* PCI Mode (PCIM) shift bit  */
  301. #define PCIM_BIT_LEN            0x7             /* PCIM Bit Length            */
  302. #define PCIM_H_EA               0x3             /* PCIM Host with Ext Arbiter */
  303. #define PCIM_H_IA_FIX           0x4             /* ",Int Arb,fix priority     */
  304. #define PCIM_H_IA_RR            0x5             /* ",Int Arb,round robin      */
  305. #define PCI_ADDR_START          0x40000000      /* PCI Start address          */
  306. #define CPUTOPCI_MEM_WIN        0x08000000      /* 32 MB Window               */
  307. #define CPUTOPCI_IO_WIN         0x00100000      /* 1 MB I/O Window            */
  308. #define SIZE_128MB              0x1B
  309. #define SIZE_32MB               0x19            /* 2 to the power of 19 =32MB */
  310. #define SIZE_1MB                0x14            /* 2 to the power of 14 =1MB  */
  311. #define SIZE_256                0x08            /* 2 to the power of 08 =256B */
  312. /* PCI Host Bridge Configuration Registers */
  313. #define IDT32438_CONFIG0_ADDR   0x80000000      /* PCI Config 0 address       */
  314. #define IDT32438_CONFIG1_ADDR   0x80000004      /* PCI Config 1 address       */
  315. #define IDT32438_CONFIG2_ADDR   0x80000008      /* PCI Config 2 address       */
  316. #define IDT32438_CONFIG3_ADDR   0x8000000C      /* PCI Config 3 address       */
  317. #define IDT32438_CONFIG4_ADDR   0x80000010      /* PCI Config 4 address       */
  318. #define IDT32438_CONFIG5_ADDR   0x80000014      /* PCI Config 5 address       */
  319. #define IDT32438_CONFIG6_ADDR   0x80000018      /* PCI Config 6 address       */
  320. #define IDT32438_CONFIG7_ADDR   0x8000001C      /* PCI Config 7 address       */
  321. #define IDT32438_CONFIG8_ADDR   0x80000020      /* PCI Config 8 address       */
  322. #define IDT32438_CONFIG9_ADDR   0x80000024      /* PCI Config 9 address       */
  323. #define IDT32438_CONFIG10_ADDR  0x80000028      /* PCI Config 10 address      */
  324. #define IDT32438_CONFIG11_ADDR  0x8000002C      /* PCI Config 11 address      */
  325. #define IDT32438_CONFIG12_ADDR  0x80000030      /* PCI Config 12 address      */
  326. #define IDT32438_CONFIG13_ADDR  0x80000034      /* PCI Config 13 address      */
  327. #define IDT32438_CONFIG14_ADDR  0x80000038      /* PCI Config 14 address      */
  328. #define IDT32438_CONFIG15_ADDR  0x8000003C      /* PCI Config 15 address      */
  329. #define IDT32438_CONFIG16_ADDR  0x80000040      /* PCI Config 16 address      */
  330. #define IDT32438_CONFIG17_ADDR  0x80000044      /* PCI Config 17 address      */
  331. #define IDT32438_CONFIG18_ADDR  0x80000048      /* PCI Config 18 address      */
  332. #define IDT32438_CONFIG19_ADDR  0x8000004C      /* PCI Config 19 address      */
  333. #define IDT32438_CONFIG20_ADDR  0x80000050      /* PCI Config 20 address      */
  334. #define IDT32438_CONFIG21_ADDR  0x80000054      /* PCI Config 21 address      */
  335. #define IDT32438_CONFIG22_ADDR  0x80000058      /* PCI Config 22 address      */
  336. #define IDT32438_CONFIG23_ADDR  0x8000005C      /* PCI Config 23 address      */
  337. #define IDT32438_CONFIG24_ADDR  0x80000060      /* PCI Config 24 address      */
  338. #define IDT32438_CONFIG25_ADDR  0x80000064      /* PCI Config 25 address      */
  339. /* PCI Host Bridge Configuration Header values */
  340.   
  341. #define IDT32438_CMD            (COMMAND_IO  | 
  342.                                  COMMAND_MEM | 
  343.                                  COMMAND_BM  | 
  344.                                  COMMAND_MWI | 
  345.                                  COMMAND_PEN | 
  346.                                  COMMAND_SEN)
  347.  
  348. #define IDT32438_STAT           (STATUS_MDPE | 
  349.                                  STATUS_STA  | 
  350.                                  STATUS_RTA  | 
  351.                                  STATUS_RMA  | 
  352.                                  STATUS_SSE  | 
  353.                                  STATUS_PE)
  354. #define IDT32438_DEV_VEND       0x0207111d      /* Device ID & Vendor ID      */
  355. #define IDT32438_PCI_CONFIG0    IDT32438_DEV_VEND   
  356. #define IDT32438_CNFG0          IDT32438_DEV_VEND 
  357.                          
  358. #define IDT32438_CNFG1          ((IDT32438_STAT<<16)|IDT32438_CMD)
  359. #define IDT32438_REVID          0
  360. #define IDT32438_CLASS_CODE     0
  361. #define IDT32438_CNFG2          ((IDT32438_CLASS_CODE<<8) | 
  362.                                 IDT32438_REVID)
  363. #define IDT32438_MASTER_LAT     0x3c
  364. #define IDT32438_HEADER_TYPE    0
  365. #define IDT32438_BIST           0
  366. #define IDT32438_CACHE_LINE_SIZE   4
  367. #define IDT32438_CNFG3          ((IDT32438_BIST<<24) | 
  368.                                 (IDT32438_HEADER_TYPE<<16) | 
  369.                                 (IDT32438_MASTER_LAT<<8) | 
  370.                                 IDT32438_CACHE_LINE_SIZE )
  371. #define IDT32438_BAR0           0x00000008        /* 128 MB Memory            */
  372. #define IDT32438_BAR1           0x08000001        /* 2 MB IO Window           */
  373. #define IDT32438_BAR2           0x08200001        /* 2 MB IO window for 32438 */
  374.                                                   /* internal Registers       */
  375. #define IDT32438_BAR3           0x0               /* Spare 128 MB Memory      */
  376. #define IDT32438_CNFG4          IDT32438_BAR0
  377. #define IDT32438_CNFG5          IDT32438_BAR1
  378. #define IDT32438_CNFG6          IDT32438_BAR2
  379. #define IDT32438_CNFG7          IDT32438_BAR3
  380. #define IDT32438_SUBSYSTEM_ID   0
  381. #define IDT32438_CNFG8          0
  382. #define IDT32438_CNFG9          0
  383. #define IDT32438_CNFG10         0
  384. #define IDT32438_SUBSYS_VENDOR_ID  0
  385. #define IDT32438_CNFG11         ((IDT32438_SUBSYS_VENDOR_ID<<16) | 
  386.                                 IDT32438_SUBSYSTEM_ID)
  387.                                 
  388. #define IDT32438_INT_LINE       1
  389. #define IDT32438_INT_PIN        1
  390. #define IDT32438_MIN_GNT        8
  391. #define IDT32438_MAX_LAT        0x38
  392. #define IDT32438_CNFG12         0
  393. #define IDT32438_CNFG13         0
  394. #define IDT32438_CNFG14         0
  395. #define IDT32438_CNFG15         ((IDT32438_MAX_LAT<<24) | 
  396.                                 (IDT32438_MIN_GNT<<16) | 
  397.                                 (IDT32438_INT_PIN<<8)  | 
  398.                                 IDT32438_INT_LINE)
  399. #define IDT32438_RETRY_LIMIT    0x80
  400. #define IDT32438_TRDY_LIMIT     0x80
  401. #define IDT32438_CNFG16         ((IDT32438_RETRY_LIMIT<<8) | 
  402.                                 IDT32438_TRDY_LIMIT)
  403. #define PCI_PBAXC_R             0x0
  404. #define PCI_PBAXC_RL            0x1
  405. #define PCI_PBAXC_RM            0x2
  406. #define SIZE_128MB              0x1B
  407. #define SIZE_2MB                0x15
  408. #define SIZE_SHFT               2
  409. #define PBAXC_MR_RL             1
  410. #define IDT32438_PBA0C          (PBAXC_MRL | 
  411.                                 PBAXC_MR(PBAXC_MR_RL) | 
  412.                                 PBAXC_PP | 
  413.                                 PBAXC_SIZE(SIZE_128MB)| 
  414.                                 PBAXC_P | 
  415.                                 PBAXC_SB)
  416. #define IDT32438_CNFG17         IDT32438_PBA0C
  417. #define IDT32438_PBA0M          0x0
  418. #define IDT32438_CNFG18         IDT32438_PBA0M
  419. #define IDT32438_PBA1C          (PBAXC_SIZE(SIZE_1MB) | 
  420.                                 PBAXC_MSI| 
  421.                                 PBAXC_SB)
  422.                         
  423. #define IDT32438_CNFG19         IDT32438_PBA1C
  424. #define IDT32438_PBA1M          0x0
  425. #define IDT32438_CNFG20         IDT32438_PBA1M
  426. #define IDT32438_PBA2C          (PBAXC_SIZE(SIZE_2MB) | 
  427.                                 PBAXC_MSI | 
  428.                                 PBAXC_SB)
  429.                          
  430. #define IDT32438_CNFG21         IDT32438_PBA2C
  431. #define IDT32438_PBA2M          0x18000000
  432. #define IDT32438_CNFG22         IDT32438_PBA2M
  433. #define IDT32438_PBA3C          0
  434. #define IDT32438_CNFG23         IDT32438_PBA3C
  435. #define IDT32438_PBA3M          0
  436. #define IDT32438_CNFG24         IDT32438_PBA3M 
  437. /* define an unsigned array for the PCI registers */
  438. #if !defined(_ASMLANGUAGE)
  439. #endif
  440.  
  441. #define PCITC_DTIMER_VAL        8
  442. #define PCITC_RTIMER_VAL        0x10
  443. /*
  444.  * BusErrCntReg is used to disable/Enable BusError thrown on PCI bus
  445.  * on scanning
  446.  */
  447.  
  448. /* RC32438 PCI host bridge register addresses */
  449. #define PMC438_PCI_BASE          0xB8080000                /* PCI BASE ADDRESS */
  450. #define PMC438_PCI_MEM_BAR0      (PMC438_PCI_BASE + 0x1C)
  451. #define PMC438_PCI_MEM_BAR1      (PMC438_PCI_BASE + 0x28)
  452. #define PMC438_PCI_MEM_BAR2      (PMC438_PCI_BASE + 0x34)
  453. #define PMC438_PCI_MEM_BAR3      (PMC438_PCI_BASE + 0x40)
  454. #define PMC438_PCI_CONFIG_ADDR   (PMC438_PCI_BASE + 0x000C)
  455. #define PMC438_PCI_CONFIG_DATA   (PMC438_PCI_BASE + 0x0010)
  456. /*
  457.  * PCI memory constants: Memory area 1 and 2 are the same size -
  458.  * (twice the PCI_TLB_PAGE_SIZE). The definition of
  459.  * CPU_TO_PCI_MEM_SIZE is coupled with the TLB setup routine
  460.  * sysLib.c/sysTlbInit(), in that it assumes that 2 pages of size
  461.  * PCI_TLB_PAGE_SIZE are set up in the TLB for each PCI memory space.
  462.  */
  463.  
  464. #define CPU_TO_PCI_MEM_BASE1    0xE0000000
  465. #define CPU_TO_PCI_MEM_SIZE1    (2*PCI_TLB_PAGE_SIZE)
  466. #define CPU_TO_PCI_MEM_BASE2    0xF0000000
  467. #define CPU_TO_PCI_MEM_SIZE2    (2*PCI_TLB_PAGE_SIZE)
  468. #define CPU_TO_PCI_MEM_BASE3    0xB8C00000
  469. #define CPU_TO_PCI_MEM_SIZE3    0x00400000
  470. #define CPU_TO_PCI_IO_BASE      0xB8800000
  471. #define CPU_TO_PCI_IO_SIZE      0x00100000      /* Total IO space             */
  472. #define CPU_TO_PCI_IO16_SIZE    0x00010000      /* 16-bit Portion of IO space */
  473. #define PCI_TO_CPU_MEM_BASE     0xa0000008
  474. #define PCI_TO_CPU_IO_BASE      0x00000000
  475. #define PCI_BRIDGE_ENABLE       0x00000001      /* Rdy/internal arb/fixed pri */
  476. #define PCI_BRIDGE_DISABLE      0x00000004      /* NOT Ready                  */
  477.  
  478. /* TLB attributes for PCI transactions */
  479. #define PCI_MMU_PAGEMASK        0x00000FFF
  480. #define MMU_PAGE_UNCACHED       0x00000010
  481. #define MMU_PAGE_DIRTY          0x00000004
  482. #define MMU_PAGE_VALID          0x00000002
  483. #define MMU_PAGE_GLOBAL         0x00000001
  484. #define PCI_MMU_PAGEATTRIB      (MMU_PAGE_UNCACHED|MMU_PAGE_DIRTY|
  485.                                  MMU_PAGE_VALID|MMU_PAGE_GLOBAL)
  486. #define PCI_MEMORY_SPACE1_VIRT  0xE0000000      /* Used for non-prefet  mem   */
  487. #define PCI_MEMORY_SPACE1_PHYS  0x40000000
  488. #define PCI_MEMORY_SPACE2_VIRT  0xF0000000      /* Used for prefetable memory */
  489. #define PCI_MEMORY_SPACE2_PHYS  0x60000000
  490. #define PCI_IO_SPACE1_PHYS 0x18800000
  491. #define PCI_IO_SPACE1_VIRT 0xb8800000
  492. #define PCI_TLB_PAGE_SIZE       0x01000000
  493. #define TLB_HI_MASK             0xFFFFE000
  494. #define TLB_LO_MASK             0x3FFFFFFF
  495. #define PAGEMASK_SHIFT          13
  496. #define TLB_LO_SHIFT            6
  497.                                  
  498. /* config reg value to be written at cold reset */
  499. #define KSEG0_CACHE_MODE        3               /* cached                     */
  500. /* PCI-PCI support */
  501. /* Generic PCI-PCI (P2P) Bridge configruation parameters */
  502. #define P2P_CLR_STATUS           0xFFFF0000
  503. #define P2P_SEC_BUS_RESET        (0x0040 << 16)
  504. #define P2P_CLK_ENABLE           0x00       /* enable clocks on all slots */
  505. #define P2P_PMC_DISABLE          0
  506. #define P2P_PMC_ENABLE           6
  507. /* IDT438 Architecture specific settings for PCI-PCI Bridge support */
  508. #define P2P_NONPREF_MEM_BASE     0xe1000000  /* PCI non-prefetch mem window */
  509. #define P2P_NONPREF_MEM_SIZE  0x01000000  /* PCI non-prefetch size */
  510. #define P2P_CACHE_LINE_SIZE      8           /* cache line size */
  511. #define P2P_PRIM_LATENCY         0           /* latency */
  512. /*
  513.  * Segment PCI-PCI bridge memory space into 4K windows
  514.  * which are inclusive of the mapping setup above.
  515.  */
  516. #define P2P_4K_PCI_MEM_ADDR(x)    (P2P_PREF_MEM_BASE + 0x1000*(x))
  517. /* Generic Bridge specific settings */
  518. /* DEC 21150 Specific Registers and Values */
  519. #define DC21150_VENDOR_ID    0x1011
  520. #define DC21150_DEVICE_ID    0x0022
  521. #define PCI_CFG_DEC21150_CHIP_CTRL 0x40
  522. #define PCI_CFG_DEC21150_DIAG_CTRL 0x41
  523. #define PCI_CFG_DEC21150_ARB_CTRL  0x42
  524. #define PCI_CFG_DEC21150_EVNT_DSBL 0x64
  525. #define PCI_CFG_DEC21150_GPIO_DOUT 0x65
  526. #define PCI_CFG_DEC21150_GPIO_CTRL 0x66
  527. #define PCI_CFG_DEC21150_GPIO_DIN  0x67
  528. #define PCI_CFG_DEC21150_SEC_CLK   0x68     /* secondary clock control reg */
  529. #define PCI_CFG_DEC21150_SERR_STAT 0x6A
  530. /* HINT (R) HB4 PCI-PCI Bridge (21150 clone) */
  531. #define HINT_HB4_VENDOR_ID    0x3388
  532. #define HINT_HB4_DEVICE_ID    0x0022
  533. /* Pericom PCI-PCI Bridge (21150 clone) */
  534. #define PERICOM_VENDOR_ID    0x12D8
  535. #define PERICOM_8150_DEV_ID  0x8150
  536. #endif  /* __INCidtpmc438h */