mbz.h
上传用户:yuanda199
上传日期:2022-06-26
资源大小:412k
文件大小:8k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* Copyright 2002 Broadcom Corporation */
  2. /*
  3. modification history
  4. --------------------
  5. 01c,21oct02,jmb  new TOD support, board IDs, bringup printing
  6. 01b,06sep02,jmb  added defined for HINT bridge and pciIntLib
  7. 01a,11aug02,jmb  Written
  8. */
  9. #ifndef MBZ_H
  10. #define MBZ_H
  11. #include "bcm4710.h"
  12. /*******************************************************************************
  13. * Address space for external interface 
  14. *******************************************************************************/
  15. #ifndef KSEG1ADDR
  16. #define KSEG1ADDR(_a) ((unsigned long)(_a) | 0xA0000000)
  17. #endif
  18. #ifndef KSEG1ADDRASM
  19. #define KSEG1ADDRASM(_a) ((_a) | 0xA0000000)
  20. #endif
  21. #define EXTIF_BASE_ADDR      (KSEG1ADDR(BCM4710_EXTIF))
  22. #define EXTIF_BASE_ADDR_ASM      (KSEG1ADDRASM(BCM4710_EXTIF))
  23. /* PCMCIA interface.  Used as an asynchronous interface, not PCMCIA */
  24. #define    PCMCIAIF_BASE_ADDR   EXTIF_BASE_ADDR
  25. #define    PCMCIAIF_BASE_ADDR_ASM   EXTIF_BASE_ADDR_ASM
  26. #define    MBZ_RESET_ADDR    PCMCIAIF_BASE_ADDR
  27. #define    MBZ_PLDREG_BASE   (PCMCIAIF_BASE_ADDR | 0x2000)
  28. #define    MBZ_BOARDID_ADDR  (PCMCIAIF_BASE_ADDR | 0x4000)
  29. #define    MBZ_BOARDID_ADDR_ASM  (PCMCIAIF_BASE_ADDR_ASM | 0x4000)
  30. #define    MBZ_DOC_ADDR      (PCMCIAIF_BASE_ADDR | 0x6000)
  31. #define    MBZ_LED_ADDR      (PCMCIAIF_BASE_ADDR | 0xc000)
  32. #define    MBZ_LED_ADDR_ASM  (PCMCIAIF_BASE_ADDR_ASM | 0xc000)
  33. #define    MBZ_NVRAM_ADDR    (PCMCIAIF_BASE_ADDR | 0xe000)
  34. /* Asynchronous interface.  Just has the external UART (a DUART) */
  35. #define    BCM_47XX_IUART_ADDR  (KSEG1ADDR(BCM4710_UART))
  36. #define    BCM_47XX_IUART_ADDR_ASM  (KSEG1ADDRASM(BCM4710_UART))
  37. #define    ASYNCIF_BASE_ADDR    (EXTIF_BASE_ADDR|0x00800000)
  38. #define    ASYNCIF_BASE_ADDR_ASM    (EXTIF_BASE_ADDR_ASM|0x00800000)
  39. #define    MBZ_DUART_CHAN0   (ASYNCIF_BASE_ADDR|0x8)
  40. #define    MBZ_DUART_CHAN0_ASM   (ASYNCIF_BASE_ADDR_ASM|0x8)
  41. #define    MBZ_DUART_CHAN1   (ASYNCIF_BASE_ADDR)
  42. #define    MBZ_DUART_CHAN1_ASM   (ASYNCIF_BASE_ADDR_ASM)
  43. #define    MBZ_IUART_CHAN0   BCM_47XX_IUART_ADDR
  44. #define    MBZ_IUART_CHAN0_ASM   BCM_47XX_IUART_ADDR_ASM
  45. /* Flash interface interface.  Just has the bootrom */
  46. #define FLASHIF_BASE_ADDR    (EXTIF_BASE_ADDR|0x00c00000)
  47. /* Board IDs */
  48. #define SYS_REVID_GET()      (* (volatile UINT8 *) MBZ_BOARDID_ADDR_ASM)
  49. #define SYS_SLOTID_GET()  (* (volatile UINT8 *) (MBZ_PLDREG_BASE + 0x2))
  50. #define BOARD_ID_MBZ_1 0xfe /* CPCI with 1Mx8 AMD 29LV160B */ 
  51. #define BOARD_ID_MBZ_2 0x80 /* CPCI with 1Mx16 Intel 28F320 */
  52. #define BOARD_ID_LM_1  0x0e /* Line module: 1XBCM5671 + 2XBCM5690 */
  53. #define BOARD_ID_LM_1_32MB  0x0e /*Line module: 1XBCM5671 + 2XBCM5690 32MB RAM*/
  54. #define BOARD_ID_MBZ_32MB   0x81 /* MBZ CPCI module: 32MB RAM*/
  55. #define BOARD_ID_MBZ_5645_REF 0x7f /* BCM5645 with Turbo Stacking Serdes */
  56. /*******************************************************************************/
  57. /* 
  58. * Reset function 
  59. *    Implemented in PLD.  Read or write should trigger hard reset 
  60. */
  61. #define SYS_HARD_RESET()   
  62.     { for (;;) *(volatile unsigned char *)(MBZ_RESET_ADDR) = 0x80; }
  63. /* 
  64. * SERIAL PORT 
  65. *    There is one serial connector on the back of the board
  66. *    The second port is on the board.  It's generally not used
  67. */
  68. #define N_UART_CHANNELS         1  
  69. #define COM1_FREQ            13500000
  70. #define COM1_ADR_INTERVAL    1
  71. #define BCM_47XX_IUART_FREQ  125000000
  72. #define BCM_47XX_IUART_INTERVAL    4
  73. #define COM1_BASE_ADR        MBZ_DUART_CHAN0
  74. #define COM2_FREQ            COM1_FREQ
  75. #define COM2_ADR_INTERVAL    COM1_ADR_INTERVAL
  76. #define COM2_BASE_ADR        MBZ_DUART_CHAN1
  77. #define MBZ_IUART_BASE_ADR   MBZ_IUART_CHAN0
  78. #define MBZ_IUART_ADR_INTERVAL   BCM_47XX_IUART_INTERVAL
  79. #define MBZ_IUART_INT_VEC    IV_IORQ0_VEC
  80. #define MBZ_IUART_INT_LVL    INT_LVL_IORQ0
  81. #define COM1_INT_VEC         IV_IORQ0_VEC
  82. #define COM1_INT_LVL         INT_LVL_IORQ0
  83. /* Fixme!  COM2 interrupt stuff not right */
  84. #define COM2_INT_VEC         IV_IORQ0_VEC
  85. #define COM2_INT_LVL         INT_LVL_IORQ0
  86. /*
  87.  *  NVRAM configuration
  88.  *  NVRAM is implemented via the SGS Thomson M48T59Y
  89.  *  64Kbit (8Kbx8) Timekeeper SRAM.
  90.  *  This 8KB NVRAM also has a TOD. See m48t59y.{h,c} for more information.
  91.  */
  92. #define SYS_TOD_UNPROTECT()
  93. #define SYS_TOD_PROTECT()
  94. #define NV_RAM_SIZE             8176
  95. #define NV_RAM_ADRS             MBZ_NVRAM_ADDR
  96. #define NV_RAM_INTRVL           1
  97. #define NV_RAM_WR_ENBL          SYS_TOD_UNPROTECT()
  98. #define NV_RAM_WR_DSBL          SYS_TOD_PROTECT()
  99. #define NV_OFF_BOOT0            0x0000  /* Boot string 0 (256b) */
  100. #define NV_OFF_BOOT1            0x0100  /* Boot string 1 (256b) */
  101. #define NV_OFF_BOOT2            0x0200  /* Boot string 2 (256b)*/
  102. #define NV_OFF_MACADDR          0x0400  /* 21143 MAC address (6b) */
  103. #define NV_OFF_ACTIVEBOOT       0x0406  /* Active boot string, 0 to 2 (1b) */
  104. #define NV_OFF_UNUSED1          0x0407  /* Unused (1b) */
  105. #define NV_OFF_BINDFIX          0x0408  /* See sysLib.c:sysBindFix() (1b) */
  106. #define NV_OFF_UNUSED2          0x0409  /* Unused (7b) */
  107. #define NV_OFF_TIMEZONE         0x0410  /* TIMEZONE env var (64b) */
  108. #define NV_OFF__next_free       0x0450
  109. #define TOD_REG_BASE            (NV_RAM_ADRS | 0x1ff0)
  110. #define SYS_TOD_PROTECT()
  111. #define SYS_TOD_UNPROTECT()
  112. /* LEDS */
  113. #define LED_REG(x)              (*(volatile UINT8 *) (MBZ_LED_ADDR + (x^3)))
  114. /* Ethernet port parameters */
  115. #define ET0_PHYADDR 2
  116. #define ET0_MDCPORT 0
  117. #define ET1_PHYADDR 1
  118. #define ET1_MDCPORT 1
  119. /* PCI */
  120. /* Generic PCI-PCI (P2P) Bridge configruation parameters */
  121. #define P2P_CLR_STATUS           0xFFFF0000
  122. #define P2P_SEC_BUS_RESET        (0x0040 << 16)
  123. #define P2P_CLK_ENABLE           0x00       /* enable clocks on all slots */
  124. #define P2P_PMC_DISABLE          0
  125. #define P2P_PMC_ENABLE           6
  126. /* MPC8240 Architecture specific settings for PCI-PCI Bridge support */
  127. /* See MPC8240UM Address Map B */
  128. #define P2P_NONPREF_MEM_BASE     0xa8100000  /* PCI non-prefetch mem window */
  129. #define P2P_NONPREF_MEM_SIZE     0x02000000  /* PCI non-prefetch size */
  130. #define P2P_CACHE_LINE_SIZE      8           /* cache line size */
  131. #define P2P_PRIM_LATENCY         0           /* latency */
  132. #define DC21150_VENDOR_ID    0x1011
  133. #define DC21150_DEVICE_ID    0x0022
  134. /* HINT (R) HB4 PCI-PCI Bridge (21150 clone) */
  135. #define HINT_HB4_VENDOR_ID    0x3388
  136. #define HINT_HB4_DEVICE_ID    0x0022
  137. /* Pericom PCI-PCI Bridge (21150 clone) */
  138. #define PERICOM_VENDOR_ID    0x12D8
  139. #define PERICOM_8150_DEV_ID  0x8150
  140. #define PCI_CFG_DEC21150_SEC_CLK   0x68     /* secondary clock control reg */
  141. #define PCI_CFG_DEC21150_SERR_STAT 0x6A
  142. /* Defines for pciIntLib */
  143. #define INT_NUM_IRQ0 65  /* IV_IORQ0_VEC */
  144. #define PCI_IRQ_LINES 5  /* really only 1 line, but it's IRQ4 */
  145. /*
  146. * This macro selects appropriate debug print routine when
  147. * bootrom build with -DBRINGUP option.  Usually it prints
  148. * 4-byte strings to either UART or serial port.
  149. */
  150. #define BPRINT(str)  
  151.         ((bringupPrintRtn == NULL) ? OK :        
  152.          (bringupPrintRtn) ((str) ))
  153. #ifndef _ASMLANGUAGE
  154. /*
  155.  * MBZ-related routines
  156.  */
  157. extern VOIDFUNCPTR      bringupPrintRtn;                /* sysLib.c */
  158. extern void     sysSerialPutc(int c);                   
  159. extern int      sysSerialGetc(void);                   
  160. extern void     sysSerialPrintString(char *s);        
  161. extern void     sysSerialPrintStringNL(char *s);     
  162. extern void     sysSerialPrintHex(UINT32 val, int cr); 
  163. extern void     sysLedDisply(unsigned char *a);      
  164. extern void     sys47xxClocks(int *core, int *sb, int *pci);
  165. int sysTodGetSecond (void);
  166. STATUS sysTodGet (int *pYear, int *pMonth, int *pDay, int *pHour,
  167.     int *pMin, int *pSec);
  168. STATUS sysTodSet (int year, int month, int day, int hour, int min, int sec);
  169. STATUS sysTodInit (UINT8 *addr);
  170. STATUS sysTodWatchdogArm (int usec);
  171. void sysLedDsply(const char* msg);
  172. #endif /* !_ASMLANGUAGE */
  173. #endif /* MBZ_H */