yucca.h 14 KB

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