yucca.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /*
  2. * (C) Copyright 2006
  3. * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4. *
  5. * See file CREDITS for list of people who contributed to this
  6. * project.
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License as
  10. * published by the Free Software Foundation; either version 2 of
  11. * the License, or (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21. * MA 02111-1307 USA
  22. */
  23. #ifndef __YUCCA_H_
  24. #define __YUCCA_H_
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. /*----------------------------------------------------------------------------+
  29. | Defines
  30. +----------------------------------------------------------------------------*/
  31. #define TMR_FREQ_EXT 25000000
  32. #define BOARD_UART_CLOCK 11059200
  33. #define BOARD_OPTION_SELECTED 1
  34. #define BOARD_OPTION_NOT_SELECTED 0
  35. #define ENGINEERING_CLOCK_CHECKING "clk_chk"
  36. #define ENGINEERING_EXTERNAL_CLOCK "ext_clk"
  37. #define ENGINEERING_CLOCK_CHECKING_DATA 1
  38. #define ENGINEERING_EXTERNAL_CLOCK_DATA 2
  39. /* ethernet definition */
  40. #define MAX_ENETMODE_PARM 3
  41. #define ENETMODE_NEG 0
  42. #define ENETMODE_SPEED 1
  43. #define ENETMODE_DUPLEX 2
  44. #define ENETMODE_AUTONEG 0
  45. #define ENETMODE_NO_AUTONEG 1
  46. #define ENETMODE_10 2
  47. #define ENETMODE_100 3
  48. #define ENETMODE_1000 4
  49. #define ENETMODE_HALF 5
  50. #define ENETMODE_FULL 6
  51. #define NUM_TLB_ENTRIES 64
  52. /* MICRON SPD JEDEC ID Code (first byte) - SPD data byte [64] */
  53. #define MICRON_SPD_JEDEC_ID 0x2c
  54. /*----------------------------------------------------------------------------+
  55. | TLB specific defines.
  56. +----------------------------------------------------------------------------*/
  57. #define TLB_256MB_ALIGN_MASK 0xF0000000
  58. #define TLB_16MB_ALIGN_MASK 0xFF000000
  59. #define TLB_1MB_ALIGN_MASK 0xFFF00000
  60. #define TLB_256KB_ALIGN_MASK 0xFFFC0000
  61. #define TLB_64KB_ALIGN_MASK 0xFFFF0000
  62. #define TLB_16KB_ALIGN_MASK 0xFFFFC000
  63. #define TLB_4KB_ALIGN_MASK 0xFFFFF000
  64. #define TLB_1KB_ALIGN_MASK 0xFFFFFC00
  65. #define TLB_256MB_SIZE 0x10000000
  66. #define TLB_16MB_SIZE 0x01000000
  67. #define TLB_1MB_SIZE 0x00100000
  68. #define TLB_256KB_SIZE 0x00040000
  69. #define TLB_64KB_SIZE 0x00010000
  70. #define TLB_16KB_SIZE 0x00004000
  71. #define TLB_4KB_SIZE 0x00001000
  72. #define TLB_1KB_SIZE 0x00000400
  73. #define TLB_WORD0_EPN_MASK 0xFFFFFC00
  74. #define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)
  75. #define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)
  76. #define TLB_WORD0_V_MASK 0x00000200
  77. #define TLB_WORD0_V_ENABLE 0x00000200
  78. #define TLB_WORD0_V_DISABLE 0x00000000
  79. #define TLB_WORD0_TS_MASK 0x00000100
  80. #define TLB_WORD0_TS_1 0x00000100
  81. #define TLB_WORD0_TS_0 0x00000000
  82. #define TLB_WORD0_SIZE_MASK 0x000000F0
  83. #define TLB_WORD0_SIZE_1KB 0x00000000
  84. #define TLB_WORD0_SIZE_4KB 0x00000010
  85. #define TLB_WORD0_SIZE_16KB 0x00000020
  86. #define TLB_WORD0_SIZE_64KB 0x00000030
  87. #define TLB_WORD0_SIZE_256KB 0x00000040
  88. #define TLB_WORD0_SIZE_1MB 0x00000050
  89. #define TLB_WORD0_SIZE_16MB 0x00000070
  90. #define TLB_WORD0_SIZE_256MB 0x00000090
  91. #define TLB_WORD0_TPAR_MASK 0x0000000F
  92. #define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)
  93. #define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)
  94. #define TLB_WORD1_RPN_MASK 0xFFFFFC00
  95. #define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00)
  96. #define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00)
  97. #define TLB_WORD1_PAR1_MASK 0x00000300
  98. #define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n))&0x03)<<8)
  99. #define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n))>>8)&0x03)
  100. #define TLB_WORD1_PAR1_0 0x00000000
  101. #define TLB_WORD1_PAR1_1 0x00000100
  102. #define TLB_WORD1_PAR1_2 0x00000200
  103. #define TLB_WORD1_PAR1_3 0x00000300
  104. #define TLB_WORD1_ERPN_MASK 0x0000000F
  105. #define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0)
  106. #define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n))>>0)&0x0F)
  107. #define TLB_WORD2_PAR2_MASK 0xC0000000
  108. #define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n))&0x03)<<30)
  109. #define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n))>>30)&0x03)
  110. #define TLB_WORD2_PAR2_0 0x00000000
  111. #define TLB_WORD2_PAR2_1 0x40000000
  112. #define TLB_WORD2_PAR2_2 0x80000000
  113. #define TLB_WORD2_PAR2_3 0xC0000000
  114. #define TLB_WORD2_U0_MASK 0x00008000
  115. #define TLB_WORD2_U0_ENABLE 0x00008000
  116. #define TLB_WORD2_U0_DISABLE 0x00000000
  117. #define TLB_WORD2_U1_MASK 0x00004000
  118. #define TLB_WORD2_U1_ENABLE 0x00004000
  119. #define TLB_WORD2_U1_DISABLE 0x00000000
  120. #define TLB_WORD2_U2_MASK 0x00002000
  121. #define TLB_WORD2_U2_ENABLE 0x00002000
  122. #define TLB_WORD2_U2_DISABLE 0x00000000
  123. #define TLB_WORD2_U3_MASK 0x00001000
  124. #define TLB_WORD2_U3_ENABLE 0x00001000
  125. #define TLB_WORD2_U3_DISABLE 0x00000000
  126. #define TLB_WORD2_W_MASK 0x00000800
  127. #define TLB_WORD2_W_ENABLE 0x00000800
  128. #define TLB_WORD2_W_DISABLE 0x00000000
  129. #define TLB_WORD2_I_MASK 0x00000400
  130. #define TLB_WORD2_I_ENABLE 0x00000400
  131. #define TLB_WORD2_I_DISABLE 0x00000000
  132. #define TLB_WORD2_M_MASK 0x00000200
  133. #define TLB_WORD2_M_ENABLE 0x00000200
  134. #define TLB_WORD2_M_DISABLE 0x00000000
  135. #define TLB_WORD2_G_MASK 0x00000100
  136. #define TLB_WORD2_G_ENABLE 0x00000100
  137. #define TLB_WORD2_G_DISABLE 0x00000000
  138. #define TLB_WORD2_E_MASK 0x00000080
  139. #define TLB_WORD2_E_ENABLE 0x00000080
  140. #define TLB_WORD2_E_DISABLE 0x00000000
  141. #define TLB_WORD2_UX_MASK 0x00000020
  142. #define TLB_WORD2_UX_ENABLE 0x00000020
  143. #define TLB_WORD2_UX_DISABLE 0x00000000
  144. #define TLB_WORD2_UW_MASK 0x00000010
  145. #define TLB_WORD2_UW_ENABLE 0x00000010
  146. #define TLB_WORD2_UW_DISABLE 0x00000000
  147. #define TLB_WORD2_UR_MASK 0x00000008
  148. #define TLB_WORD2_UR_ENABLE 0x00000008
  149. #define TLB_WORD2_UR_DISABLE 0x00000000
  150. #define TLB_WORD2_SX_MASK 0x00000004
  151. #define TLB_WORD2_SX_ENABLE 0x00000004
  152. #define TLB_WORD2_SX_DISABLE 0x00000000
  153. #define TLB_WORD2_SW_MASK 0x00000002
  154. #define TLB_WORD2_SW_ENABLE 0x00000002
  155. #define TLB_WORD2_SW_DISABLE 0x00000000
  156. #define TLB_WORD2_SR_MASK 0x00000001
  157. #define TLB_WORD2_SR_ENABLE 0x00000001
  158. #define TLB_WORD2_SR_DISABLE 0x00000000
  159. /*----------------------------------------------------------------------------+
  160. | Board specific defines.
  161. +----------------------------------------------------------------------------*/
  162. #define NONCACHE_MEMORY_SIZE (64*1024)
  163. #define NONCACHE_AREA0_ENDOFFSET (64*1024)
  164. #define NONCACHE_AREA1_ENDOFFSET (32*1024)
  165. #define FLASH_SECTORSIZE 0x00010000
  166. /* SDRAM MICRON */
  167. #define SDRAM_MICRON 0x2C
  168. #define SDRAM_TRUE 1
  169. #define SDRAM_FALSE 0
  170. #define SDRAM_DDR1 1
  171. #define SDRAM_DDR2 2
  172. #define SDRAM_NONE 0
  173. #define MAXDIMMS 2 /* Changes le 12/01/05 pour 1.6 */
  174. #define MAXRANKS 4 /* Changes le 12/01/05 pour 1.6 */
  175. #define MAXBANKSPERDIMM 2
  176. #define MAXRANKSPERDIMM 2
  177. #define MAXBXCF 4 /* Changes le 12/01/05 pour 1.6 */
  178. #define MAXSDRAMMEMORY 0xFFFFFFFF /* 4GB */
  179. #define ERROR_STR_LENGTH 256
  180. #define MAX_SPD_BYTES 256 /* Max number of bytes on the DIMM's SPD EEPROM */
  181. /*----------------------------------------------------------------------------+
  182. | SDR Configuration registers
  183. +----------------------------------------------------------------------------*/
  184. /* Serial Device Strap Reg 0 */
  185. #define sdr_pstrp0 0x0040
  186. #define SDR0_SDSTP1_EBC_ROM_BS_MASK 0x00000080 /* EBC Boot bus width Mask */
  187. #define SDR0_SDSTP1_EBC_ROM_BS_16BIT 0x00000080 /* EBC 16 Bits */
  188. #define SDR0_SDSTP1_EBC_ROM_BS_8BIT 0x00000000 /* EBC 8 Bits */
  189. #define SDR0_SDSTP1_BOOT_SEL_MASK 0x00080000 /* Boot device Selection Mask */
  190. #define SDR0_SDSTP1_BOOT_SEL_EBC 0x00000000 /* EBC */
  191. #define SDR0_SDSTP1_BOOT_SEL_PCI 0x00080000 /* PCI */
  192. #define SDR0_SDSTP1_EBC_SIZE_MASK 0x00000060 /* Boot rom size Mask */
  193. #define SDR0_SDSTP1_BOOT_SIZE_16MB 0x00000060 /* 16 MB */
  194. #define SDR0_SDSTP1_BOOT_SIZE_8MB 0x00000040 /* 8 MB */
  195. #define SDR0_SDSTP1_BOOT_SIZE_4MB 0x00000020 /* 4 MB */
  196. #define SDR0_SDSTP1_BOOT_SIZE_2MB 0x00000000 /* 2 MB */
  197. /* Serial Device Enabled - Addr = 0xA8 */
  198. #define SDR0_PSTRP0_BOOTSTRAP_IIC_A8_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS5
  199. /* Serial Device Enabled - Addr = 0xA4 */
  200. #define SDR0_PSTRP0_BOOTSTRAP_IIC_A4_EN SDR0_PSTRP0_BOOTSTRAP_SETTINGS7
  201. /* Pin Straps Reg */
  202. #define SDR0_PSTRP0 0x0040
  203. #define SDR0_PSTRP0_BOOTSTRAP_MASK 0xE0000000 /* Strap Bits */
  204. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS0 0x00000000 /* Default strap settings 0 */
  205. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS1 0x20000000 /* Default strap settings 1 */
  206. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS2 0x40000000 /* Default strap settings 2 */
  207. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS3 0x60000000 /* Default strap settings 3 */
  208. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS4 0x80000000 /* Default strap settings 4 */
  209. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS5 0xA0000000 /* Default strap settings 5 */
  210. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS6 0xC0000000 /* Default strap settings 6 */
  211. #define SDR0_PSTRP0_BOOTSTRAP_SETTINGS7 0xE0000000 /* Default strap settings 7 */
  212. /* fpgareg - defines are in include/config/YUCCA.h */
  213. #define SDR0_CUST0_ENET3_MASK 0x00000080
  214. #define SDR0_CUST0_ENET3_COPPER 0x00000000
  215. #define SDR0_CUST0_ENET3_FIBER 0x00000080
  216. #define SDR0_CUST0_RGMII3_MASK 0x00000070
  217. #define SDR0_CUST0_RGMII3_ENCODE(n) ((((unsigned long)(n))&0x7)<<4)
  218. #define SDR0_CUST0_RGMII3_DECODE(n) ((((unsigned long)(n))>>4)&0x07)
  219. #define SDR0_CUST0_RGMII3_DISAB 0x00000000
  220. #define SDR0_CUST0_RGMII3_RTBI 0x00000040
  221. #define SDR0_CUST0_RGMII3_RGMII 0x00000050
  222. #define SDR0_CUST0_RGMII3_TBI 0x00000060
  223. #define SDR0_CUST0_RGMII3_GMII 0x00000070
  224. #define SDR0_CUST0_ENET2_MASK 0x00000008
  225. #define SDR0_CUST0_ENET2_COPPER 0x00000000
  226. #define SDR0_CUST0_ENET2_FIBER 0x00000008
  227. #define SDR0_CUST0_RGMII2_MASK 0x00000007
  228. #define SDR0_CUST0_RGMII2_ENCODE(n) ((((unsigned long)(n))&0x7)<<0)
  229. #define SDR0_CUST0_RGMII2_DECODE(n) ((((unsigned long)(n))>>0)&0x07)
  230. #define SDR0_CUST0_RGMII2_DISAB 0x00000000
  231. #define SDR0_CUST0_RGMII2_RTBI 0x00000004
  232. #define SDR0_CUST0_RGMII2_RGMII 0x00000005
  233. #define SDR0_CUST0_RGMII2_TBI 0x00000006
  234. #define SDR0_CUST0_RGMII2_GMII 0x00000007
  235. #define ONE_MILLION 1000000
  236. #define ONE_BILLION 1000000000
  237. /*----------------------------------------------------------------------------+
  238. | X
  239. | XX
  240. | XX XXX XXXXX XX XXX XXXXX
  241. | XX XX X XXX XX XX
  242. | XX XX XXXXXX XX XX
  243. | XX XX X XX XX XX XX
  244. | XXX XX XXXXX X XXXX XXX
  245. +----------------------------------------------------------------------------*/
  246. /*----------------------------------------------------------------------------+
  247. | Declare Configuration values
  248. +----------------------------------------------------------------------------*/
  249. typedef enum config_selection {
  250. CONFIG_NOT_SELECTED,
  251. CONFIG_SELECTED
  252. } config_selection_t;
  253. typedef enum config_list {
  254. UART2_IN_SERVICE_MODE,
  255. CPU_TRACE_MODE,
  256. UART1_CTS_RTS,
  257. CONFIG_NB
  258. } config_list_t;
  259. #define MAX_CONFIG_SELECT_NB 3
  260. #define BOARD_INFO_UART2_IN_SERVICE_MODE 1
  261. #define BOARD_INFO_CPU_TRACE_MODE 2
  262. #define BOARD_INFO_UART1_CTS_RTS_MODE 4
  263. void force_bup_config_selection(config_selection_t *confgi_select_P);
  264. void update_config_selection_table(config_selection_t *config_select_P);
  265. void display_config_selection(config_selection_t *config_select_P);
  266. /*----------------------------------------------------------------------------+
  267. | XX
  268. |
  269. | XXXX XX XXX XXX XXXX
  270. | XX XX XX XX XX XX
  271. | XX XXX XX XX XX XX XX
  272. | XX XX XXXXX XX XX XX
  273. | XXXX XX XXXX XXXX
  274. | XXXX
  275. |
  276. |
  277. |
  278. | +------------------------------------------------------------------+
  279. | | GPIO/Secondary func | Primary Function | I/O | Alternate1 | I/O |
  280. | +----------------------+------------------+-----+------------+-----+
  281. | | | | | | |
  282. | | GPIO0_0 | PCIX0REQ2_N | I/O | TRCCLK | |
  283. | | GPIO0_1 | PCIX0REQ3_N | I/O | TRCBS0 | |
  284. | | GPIO0_2 | PCIX0GNT2_N | I/O | TRCBS1 | |
  285. | | GPIO0_3 | PCIX0GNT3_N | I/O | TRCBS2 | |
  286. | | GPIO0_4 | PCIX1REQ2_N | I/O | TRCES0 | |
  287. | | GPIO0_5 | PCIX1REQ3_N | I/O | TRCES1 | |
  288. | | GPIO0_6 | PCIX1GNT2_N | I/O | TRCES2 | NA |
  289. | | GPIO0_7 | PCIX1GNT3_N | I/O | TRCES3 | NA |
  290. | | GPIO0_8 | PERREADY | I | TRCES4 | NA |
  291. | | GPIO0_9 | PERCS1_N | O | TRCTS0 | NA |
  292. | | GPIO0_10 | PERCS2_N | O | TRCTS1 | NA |
  293. | | GPIO0_11 | IRQ0 | I | TRCTS2 | NA |
  294. | | GPIO0_12 | IRQ1 | I | TRCTS3 | NA |
  295. | | GPIO0_13 | IRQ2 | I | TRCTS4 | NA |
  296. | | GPIO0_14 | IRQ3 | I | TRCTS5 | NA |
  297. | | GPIO0_15 | IRQ4 | I | TRCTS6 | NA |
  298. | | GPIO0_16 | IRQ5 | I | UART2RX | I |
  299. | | GPIO0_17 | PERBE0_N | O | UART2TX | O |
  300. | | GPIO0_18 | PCI0GNT0_N | I/O | NA | NA |
  301. | | GPIO0_19 | PCI0GNT1_N | I/O | NA | NA |
  302. | | GPIO0_20 | PCI0REQ0_N | I/O | NA | NA |
  303. | | GPIO0_21 | PCI0REQ1_N | I/O | NA | NA |
  304. | | GPIO0_22 | PCI1GNT0_N | I/O | NA | NA |
  305. | | GPIO0_23 | PCI1GNT1_N | I/O | NA | NA |
  306. | | GPIO0_24 | PCI1REQ0_N | I/O | NA | NA |
  307. | | GPIO0_25 | PCI1REQ1_N | I/O | NA | NA |
  308. | | GPIO0_26 | PCI2GNT0_N | I/O | NA | NA |
  309. | | GPIO0_27 | PCI2GNT1_N | I/O | NA | NA |
  310. | | GPIO0_28 | PCI2REQ0_N | I/O | NA | NA |
  311. | | GPIO0_29 | PCI2REQ1_N | I/O | NA | NA |
  312. | | GPIO0_30 | UART1RX | I | NA | NA |
  313. | | GPIO0_31 | UART1TX | O | NA | NA |
  314. | | | | | | |
  315. | +----------------------+------------------+-----+------------+-----+
  316. |
  317. +----------------------------------------------------------------------------*/
  318. unsigned long auto_calc_speed(void);
  319. /*----------------------------------------------------------------------------+
  320. | Prototypes
  321. +----------------------------------------------------------------------------*/
  322. void print_evb440spe_info(void);
  323. int onboard_pci_arbiter_selected(int core_pci);
  324. #ifdef __cplusplus
  325. }
  326. #endif
  327. #endif /* __YUCCA_H_ */