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

VxWorks

开发平台:

C/C++

  1. /*
  2.     Copyright 2001, Broadcom Corporation
  3.     All Rights Reserved.
  4.     This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
  5.     the contents of this file may not be disclosed to third parties, copied or
  6.     duplicated in any form, in whole or in part, without the prior written
  7.     permission of Broadcom Corporation.
  8. */
  9. /*
  10.  * Hardware-specific "chipcommon" core definitions
  11.  * for the Broadcom HNBU family of SiliconBackplane-based chips.
  12.  *
  13.  * The chipcommon core provides chip identification, control and debugging.
  14.  *
  15.  * It includes 0, 1 or 2 uarts, a jtag port that allows direct access
  16.  * to the silicon backplane and an interface for two different types of
  17.  * serial flashes. It also contains clock frequency control, a watchdog
  18.  * interrupt timer, and a GPIO interface.
  19.  *
  20.  * Copyright(c) 2002 Broadcom Corporation
  21.  *
  22.  * $Id: sbchipc.h,v 1.1 Broadcom SDK $
  23.  */
  24. #ifndef _SBCHIPC_H
  25. #define _SBCHIPC_H
  26. /* cpp contortions to concatenate w/arg prescan */
  27. #ifndef PAD
  28. #define _PADLINE(line) pad ## line
  29. #define _XSTR(line) _PADLINE(line)
  30. #define PAD _XSTR(__LINE__)
  31. #endif /* PAD */
  32. typedef volatile struct {
  33. uint32 chipid;
  34. uint32 capabilities;
  35. uint32 corecontrol; /* corerev >= 1 */
  36. uint32 PAD[5];
  37. /* Interrupt control */
  38. uint32 intstatus;
  39. uint32 intmask;
  40. uint32 PAD[6];
  41. /* serial flash interface registers */
  42. uint32 flashcontrol;
  43. uint32 flashaddress;
  44. uint32 flashdata;
  45. uint32 PAD[1];
  46. /* Silicon backplane configuration broadcast control */
  47. uint32 broadcastaddress;
  48. uint32 broadcastdata;
  49. uint32 PAD[2];
  50. /* gpio - cleared only by power-on-reset */
  51. uint32 gpioin;
  52. uint32 gpioout;
  53. uint32 gpioouten;
  54. uint32 gpiocontrol;
  55. uint32 gpiointpolarity;
  56. uint32 gpiointmask;
  57. uint32 PAD[2];
  58. /* Watchdog timer */
  59. uint32 watchdog;
  60. uint32 PAD[3];
  61. /* clock control */
  62. uint32 clockcontrol_n;
  63. uint32 clockcontrol_sb;
  64. uint32 clockcontrol_pci;
  65. uint32 clockcontrol_uart;
  66. uint32 PAD[152];
  67. /* XXX little-endian only */
  68. /* uarts */
  69. uint8 uart0data;
  70. uint8 uart0imr;
  71. uint8 uart0fcr;
  72. uint8 uart0lcr;
  73. uint8 uart0mcr;
  74. uint8 uart0lsr;
  75. uint8 uart0msr;
  76. uint8 uart0scratch;
  77. uint8 PAD[248]; /* corerev >= 1 */
  78. uint8 uart1data;
  79. uint8 uart1imr;
  80. uint8 uart1fcr;
  81. uint8 uart1lcr;
  82. uint8 uart1mcr;
  83. uint8 uart1lsr;
  84. uint8 uart1msr;
  85. uint8 uart1scratch;
  86. } chipcregs_t;
  87. /* chipid */
  88. #define CID_ID_MASK 0x0000ffff /* Chip Id mask */
  89. #define CID_REV_MASK 0x000f0000 /* Chip Revision mask */
  90. #define CID_REV_SHIFT 16 /* Chip Revision shift */
  91. #define CID_PKG_MASK 0x00f00000 /* Package Option mask */
  92. #define CID_PKG_SHIFT 20 /* Package Option shift */
  93. /* capabilities */
  94. #define CAP_UARTS_MASK 0x00000003 /* Number of uarts */
  95. #define CAP_MIPSEB 0x00000004 /* MIPS is in big-endian mode */
  96. #define UCLK_INT 0x00000008 /* UART driven by internal divided clock */
  97. #define CAP_SFLASH_MASK 0x00000700 /* Type of Serial flash */
  98. #define CAP_PLL_MASK 0x00030000 /* Type of PLL */
  99. #define PLL_NONE 0x00000000
  100. #define PLL_N3M 0x00010000
  101. /* corecontrol */
  102. #define CC_UARTCLKO 0x00000001 /* Drive UART with internal clock */
  103. /* clockcontrol_n */
  104. #define CN_N1_MASK 0x3f /* n1 control */
  105. #define CN_N2_MASK 0x1f00 /* n2 control */
  106. #define CN_N2_SHIFT 8
  107. /* clockcontrol_sb/pci/uart */
  108. #define CC_M1_MASK 0x3f /* m1 control */
  109. #define CC_M2_MASK 0x1f00 /* m2 control */
  110. #define CC_M2_SHIFT 8
  111. #define CC_M3_MASK 0x3f0000 /* m3 control */
  112. #define CC_M3_SHIFT 16
  113. #define CC_MC_MASK 0x1f000000 /* mux control */
  114. #define CC_MC_SHIFT 24
  115. /* Clock control values for 125Mhz */
  116. #define CC_125_N 0x0802 /* Default values for bcm4310 */
  117. #define CC_125_M 0x04020009
  118. #define CC_125_M25 0x11090009
  119. #define CC_125_M33 0x11090005
  120. /* Clock control magic field values */
  121. #define CC_F6_2 0x02 /* A factor of 2 in */
  122. #define CC_F6_3 0x03 /* 6-bit fields like */
  123. #define CC_F6_4 0x05 /* N1, M1 or M3 */
  124. #define CC_F6_5 0x09
  125. #define CC_F6_6 0x11
  126. #define CC_F6_7 0x21
  127. #define CC_F5_BIAS 5 /* 5-bit fields get this added */
  128. #define CC_MC_BYPASS 0x08
  129. #define CC_MC_M1 0x04
  130. #define CC_MC_M1M2 0x02
  131. #define CC_MC_M1M2M3 0x01
  132. #define CC_MC_M1M3 0x11
  133. #define CC_CLOCK_BASE 24000000 /* Half the clock freq */
  134. /* Flash types in the chipcommon capabilities register */
  135. #define SFLASH_NONE 0x000
  136. #define SFLASH_ST 0x100
  137. #define SFLASH_AT 0x200
  138. /* Start/busy bit in flashcontrol */
  139. #define SFLASH_START 0x80000000
  140. #define SFLASH_BUSY SFLASH_START
  141. /* flashcontrol opcodes for ST flashes */
  142. #define SFLASH_ST_WREN 0x0006 /* Write Enable */
  143. #define SFLASH_ST_WRDIS 0x0004 /* Write Disable */
  144. #define SFLASH_ST_RDSR 0x0105 /* Read Status Register */
  145. #define SFLASH_ST_WRSR 0x0101 /* Write Status Register */
  146. #define SFLASH_ST_READ 0x0303 /* Read Data Bytes */
  147. #define SFLASH_ST_PP 0x0302 /* Page Program */
  148. #define SFLASH_ST_SE 0x02d8 /* Sector Erase */
  149. #define SFLASH_ST_BE 0x00c7 /* Bulk Erase */
  150. #define SFLASH_ST_DP 0x00b9 /* Deep Power-down */
  151. #define SFLASH_ST_RES 0x03ab /* Read Electronic Signature */
  152. /* Status register bits for ST flashes */
  153. #define SFLASH_ST_WIP 0x01 /* Write In Progress */
  154. #define SFLASH_ST_WEL 0x02 /* Write Enable Latch */
  155. #define SFLASH_ST_BP_MASK 0x1c /* Block Protect */
  156. #define SFLASH_ST_BP_SHIFT 2
  157. #define SFLASH_ST_SRWD 0x80 /* Status Register Write Disable */
  158. /* flashcontrol opcodes for Atmel flashes */
  159. #define SFLASH_AT_READ                          0x07e8
  160. #define SFLASH_AT_PAGE_READ                     0x07d2
  161. /* PR9631: impossible to specify Atmel Buffer Read command */
  162. #define SFLASH_AT_BUF1_READ
  163. #define SFLASH_AT_BUF2_READ
  164. #define SFLASH_AT_STATUS                        0x01d7
  165. #define SFLASH_AT_BUF1_WRITE                    0x0384
  166. #define SFLASH_AT_BUF2_WRITE                    0x0387
  167. #define SFLASH_AT_BUF1_ERASE_PROGRAM            0x0283
  168. #define SFLASH_AT_BUF2_ERASE_PROGRAM            0x0286
  169. #define SFLASH_AT_BUF1_PROGRAM                  0x0288
  170. #define SFLASH_AT_BUF2_PROGRAM                  0x0289
  171. #define SFLASH_AT_PAGE_ERASE                    0x0281
  172. #define SFLASH_AT_BLOCK_ERASE                   0x0250
  173. #define SFLASH_AT_BUF1_WRITE_ERASE_PROGRAM      0x0382
  174. #define SFLASH_AT_BUF2_WRITE_ERASE_PROGRAM      0x0385
  175. #define SFLASH_AT_BUF1_LOAD                     0x0253
  176. #define SFLASH_AT_BUF2_LOAD                     0x0255
  177. #define SFLASH_AT_BUF1_COMPARE                  0x0260
  178. #define SFLASH_AT_BUF2_COMPARE                  0x0261
  179. #define SFLASH_AT_BUF1_REPROGRAM                0x0258
  180. #define SFLASH_AT_BUF2_REPROGRAM                0x0259
  181. /* Status register bits for Atmel flashes */
  182. #define SFLASH_AT_READY 0x80
  183. #define SFLASH_AT_MISMATCH 0x40
  184. #define SFLASH_AT_ID_MASK 0x38
  185. #define SFLASH_AT_ID_SHIFT 3
  186. #endif /* _SBCHIPC_H */