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

VxWorks

开发平台:

C/C++

  1. /*
  2.     Copyright 2001, Broadcom Corporation
  3.     All Rights Reserved.
  4.     
  5.     This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
  6.     the contents of this file may not be disclosed to third parties, copied or
  7.     duplicated in any form, in whole or in part, without the prior written
  8.     permission of Broadcom Corporation.
  9. */
  10. /*
  11.  * Hardware-specific External Interface I/O core definitions
  12.  * for the BCM47xx family of SiliconBackplane-based chips.
  13.  *
  14.  * The External Interface core supports a total of three external chip selects
  15.  * supporting external interfaces. One of the external chip selects is
  16.  * used for Flash, one is used for PCMCIA, and the other may be
  17.  * programmed to support either a synchronous interface or an
  18.  * asynchronous interface. The asynchronous interface can be used to
  19.  * support external devices such as UARTs and the BCM2019 Bluetooth
  20.  * baseband processor.
  21.  * The external interface core also contains 2 on-chip 16550 UARTs, clock
  22.  * frequency control, a watchdog interrupt timer, and a GPIO interface.
  23.  *
  24.  * Copyright(c) 2001 Broadcom Corporation
  25.  * $Id: sbextif.h,v 1.1 Broadcom SDK $
  26.  */
  27. #ifndef _SBEXTIF_H
  28. #define _SBEXTIF_H
  29. /* external interface address space */
  30. #define EXTIF_PCMCIA_MEMBASE(x) (x)
  31. #define EXTIF_PCMCIA_IOBASE(x) ((x) + 0x100000)
  32. #define EXTIF_PCMCIA_CFGBASE(x) ((x) + 0x200000)
  33. #define EXTIF_CFGIF_BASE(x) ((x) + 0x800000)
  34. #define EXTIF_FLASH_BASE(x) ((x) + 0xc00000)
  35. /* cpp contortions to concatenate w/arg prescan */
  36. #ifndef PAD
  37. #define _PADLINE(line) pad ## line
  38. #define _XSTR(line) _PADLINE(line)
  39. #define PAD _XSTR(__LINE__)
  40. #endif /* PAD */
  41. /*
  42.  * The multiple instances of output and output enable registers
  43.  * are present to allow driver software for multiple cores to control
  44.  * gpio outputs without needing to share a single register pair.
  45.  */
  46. struct gpiouser {
  47. uint32 out;
  48. uint32 outen;
  49. };
  50. #define NGPIOUSER 5
  51. typedef volatile struct {
  52. uint32 corecontrol;
  53. uint32 extstatus;
  54. uint32 PAD[2];
  55. /* pcmcia control registers */
  56. uint32 pcmcia_config;
  57. uint32 pcmcia_memwait;
  58. uint32 pcmcia_attrwait;
  59. uint32 pcmcia_iowait;
  60. /* programmable interface control registers */
  61. uint32 prog_config;
  62. uint32 prog_waitcount;
  63. /* flash control registers */
  64. uint32 flash_config;
  65. uint32 flash_waitcount;
  66. uint32 PAD[4];
  67. uint32 watchdog;
  68. /* clock control */
  69. uint32 clockcontrol_n;
  70. uint32 clockcontrol_sb;
  71. uint32 clockcontrol_pci;
  72. uint32 clockcontrol_mii;
  73. uint32 PAD[3];
  74. /* gpio */
  75. uint32 gpioin;
  76. struct gpiouser gpio[NGPIOUSER];
  77. uint32 PAD;
  78. uint32 ejtagouten;
  79. uint32 gpiointpolarity;
  80. uint32 gpiointmask;
  81. uint32 PAD[153];
  82. /* uart XXX: Little endian only */
  83. uint8 uartdata;
  84. uint8 PAD[3];
  85. uint8 uartimer;
  86. uint8 PAD[3];
  87. uint8 uartfcr;
  88. uint8 PAD[3];
  89. uint8 uartlcr;
  90. uint8 PAD[3];
  91. uint8 uartmcr;
  92. uint8 PAD[3];
  93. uint8 uartlsr;
  94. uint8 PAD[3];
  95. uint8 uartmsr;
  96. uint8 PAD[3];
  97. uint8 uartscratch;
  98. uint8 PAD[3];
  99. } extifregs_t;
  100. /* corecontrol */
  101. #define CC_UE (1 << 0) /* uart enable */
  102. /* extstatus */
  103. #define ES_EM (1 << 0) /* endian mode (ro) */
  104. #define ES_EI (1 << 1) /* external interrupt pin (ro) */
  105. #define ES_GI (1 << 1) /* gpio interrupt pin (ro) */
  106. /* pcmcia/prog/flash_config */
  107. #define CF_EN (1 << 0) /* enable */
  108. #define CF_EM_MASK 0xe /* mode */
  109. #define CF_EM_SHIFT 1
  110. #define CF_EM_FLASH 0x0 /* flash/asynchronous mode */
  111. #define CF_EM_SYNC 0x2 /* synchronous mode */
  112. #define CF_EM_PCMCIA 0x4 /* pcmcia mode */
  113. #define CF_DS (1 << 4) /* destsize:  0=8bit, 1=16bit */
  114. #define CF_BS (1 << 5) /* byteswap */
  115. #define CF_CD_MASK 0xc0 /* clock divider */
  116. #define CF_CD_SHIFT 6
  117. #define CF_CD_DIV2 0x0 /* backplane/2 */
  118. #define CF_CD_DIV3 0x40 /* backplane/3 */
  119. #define CF_CD_DIV4 0x80 /* backplane/4 */
  120. #define CF_CE (1 << 8) /* clock enable */
  121. #define CF_SB (1 << 9) /* size/bytestrobe (synch only) */
  122. /* pcmcia_memwait */
  123. #define PM_W0_MASK 0x3f /* waitcount0 */
  124. #define PM_W1_MASK 0x1f00 /* waitcount1 */
  125. #define PM_W1_SHIFT 8
  126. #define PM_W2_MASK 0x1f0000 /* waitcount2 */
  127. #define PM_W2_SHIFT 16
  128. #define PM_W3_MASK 0x1f000000 /* waitcount3 */
  129. #define PM_W3_SHIFT 24
  130. /* pcmcia_attrwait */
  131. #define PA_W0_MASK 0x3f /* waitcount0 */
  132. #define PA_W1_MASK 0x1f00 /* waitcount1 */
  133. #define PA_W1_SHIFT 8
  134. #define PA_W2_MASK 0x1f0000 /* waitcount2 */
  135. #define PA_W2_SHIFT 16
  136. #define PA_W3_MASK 0x1f000000 /* waitcount3 */
  137. #define PA_W3_SHIFT 24
  138. /* pcmcia_iowait */
  139. #define PI_W0_MASK 0x3f /* waitcount0 */
  140. #define PI_W1_MASK 0x1f00 /* waitcount1 */
  141. #define PI_W1_SHIFT 8
  142. #define PI_W2_MASK 0x1f0000 /* waitcount2 */
  143. #define PI_W2_SHIFT 16
  144. #define PI_W3_MASK 0x1f000000 /* waitcount3 */
  145. #define PI_W3_SHIFT 24
  146. /* prog_waitcount */
  147. #define PW_W0_MASK 0x0000001f /* waitcount0 */
  148. #define PW_W1_MASK 0x00001f00 /* waitcount1 */
  149. #define PW_W1_SHIFT 8
  150. #define PW_W2_MASK 0x001f0000 /* waitcount2 */
  151. #define PW_W2_SHIFT 16
  152. #define PW_W3_MASK 0x1f000000 /* waitcount3 */
  153. #define PW_W3_SHIFT 24
  154. #define PW_W0       0x0000000c
  155. #define PW_W1       0x00000a00
  156. #define PW_W2       0x00020000
  157. #define PW_W3       0x01000000
  158. /* flash_waitcount */
  159. #define FW_W0_MASK 0x1f /* waitcount0 */
  160. #define FW_W1_MASK 0x1f00 /* waitcount1 */
  161. #define FW_W1_SHIFT 8
  162. #define FW_W2_MASK 0x1f0000 /* waitcount2 */
  163. #define FW_W2_SHIFT 16
  164. #define FW_W3_MASK 0x1f000000 /* waitcount3 */
  165. #define FW_W3_SHIFT 24
  166. /* watchdog */
  167. #define WATCHDOG_CLOCK 48000000 /* Hz */
  168. /* clockcontrol_n */
  169. #define CN_N1_MASK 0x3f /* n1 control */
  170. #define CN_N2_MASK 0x1f00 /* n2 control */
  171. #define CN_N2_SHIFT 8
  172. /* clockcontrol_sb/pci/mii */
  173. #define CC_M1_MASK 0x3f /* m1 control */
  174. #define CC_M2_MASK 0x1f00 /* m2 control */
  175. #define CC_M2_SHIFT 8
  176. #define CC_M3_MASK 0x3f0000 /* m3 control */
  177. #define CC_M3_SHIFT 16
  178. #define CC_MC_MASK 0x1f000000 /* mux control */
  179. #define CC_MC_SHIFT 24
  180. /* Clock control default values */
  181. #define CC_DEF_N 0x0009 /* Default values for bcm4710 */
  182. #define CC_DEF_100 0x04020011
  183. #define CC_DEF_33 0x11030011
  184. #define CC_DEF_25 0x11050011
  185. /* Clock control values for 125Mhz */
  186. #define CC_125_N 0x0802
  187. #define CC_125_M 0x04020009
  188. #define CC_125_M25 0x11090009
  189. #define CC_125_M33 0x11090005
  190. /* Clock control magic field values */
  191. #define CC_F6_2 0x02 /* A factor of 2 in */
  192. #define CC_F6_3 0x03 /*  6-bit fields like */
  193. #define CC_F6_4 0x05 /*  N1, M1 or M3 */
  194. #define CC_F6_5 0x09
  195. #define CC_F6_6 0x11
  196. #define CC_F6_7 0x21
  197. #define CC_F5_BIAS 5 /* 5-bit fields get this added */
  198. #define CC_MC_BYPASS 0x08
  199. #define CC_MC_M1 0x04
  200. #define CC_MC_M1M2 0x02
  201. #define CC_MC_M1M2M3 0x01
  202. #define CC_MC_M1M3 0x11
  203. #define CC_CLOCK_BASE 24000000 /* Half the clock freq. in the 4710 */
  204. #endif /* _SBEXTIF_H */