xref: /openbmc/u-boot/include/configs/socfpga_stratix10_socdk.h (revision 66c433ed4342e5761ee9b048c85fe47d31130b2e)
1a684729aSLey Foon Tan /* SPDX-License-Identifier: GPL-2.0
2a684729aSLey Foon Tan  *
3a684729aSLey Foon Tan  * Copyright (C) 2017-2018 Intel Corporation <www.intel.com>
4a684729aSLey Foon Tan  *
5a684729aSLey Foon Tan  */
6a684729aSLey Foon Tan 
7a684729aSLey Foon Tan #ifndef __CONFIG_SOCFGPA_STRATIX10_H__
8a684729aSLey Foon Tan #define __CONFIG_SOCFGPA_STRATIX10_H__
9a684729aSLey Foon Tan 
10a684729aSLey Foon Tan #include <asm/arch/base_addr_s10.h>
11a684729aSLey Foon Tan #include <asm/arch/handoff_s10.h>
12a684729aSLey Foon Tan 
13a684729aSLey Foon Tan /*
14a684729aSLey Foon Tan  * U-Boot general configurations
15a684729aSLey Foon Tan  */
16a684729aSLey Foon Tan #define CONFIG_SYS_MONITOR_BASE		CONFIG_SYS_TEXT_BASE
17a684729aSLey Foon Tan #define CONFIG_LOADADDR			0x2000000
18a684729aSLey Foon Tan #define CONFIG_SYS_LOAD_ADDR		CONFIG_LOADADDR
19a684729aSLey Foon Tan #define CONFIG_REMAKE_ELF
20a684729aSLey Foon Tan /* sysmgr.boot_scratch_cold4 & 5 (64bit) will be used for PSCI_CPU_ON call */
21a684729aSLey Foon Tan #define CPU_RELEASE_ADDR		0xFFD12210
22a684729aSLey Foon Tan #define CONFIG_SYS_CACHELINE_SIZE	64
23a684729aSLey Foon Tan #define CONFIG_SYS_MEM_RESERVE_SECURE	0	/* using OCRAM, not DDR */
24a684729aSLey Foon Tan 
25a684729aSLey Foon Tan /*
26a684729aSLey Foon Tan  * U-Boot console configurations
27a684729aSLey Foon Tan  */
28a684729aSLey Foon Tan #define CONFIG_SYS_MAXARGS		64
29a684729aSLey Foon Tan #define CONFIG_SYS_CBSIZE		2048
30a684729aSLey Foon Tan #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
31a684729aSLey Foon Tan 					sizeof(CONFIG_SYS_PROMPT) + 16)
32a684729aSLey Foon Tan #define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE
33a684729aSLey Foon Tan 
34a684729aSLey Foon Tan /* Extend size of kernel image for uncompression */
35a684729aSLey Foon Tan #define CONFIG_SYS_BOOTM_LEN		(32 * 1024 * 1024)
36a684729aSLey Foon Tan 
37a684729aSLey Foon Tan /*
38a684729aSLey Foon Tan  * U-Boot run time memory configurations
39a684729aSLey Foon Tan  */
40a684729aSLey Foon Tan #define CONFIG_SYS_INIT_RAM_ADDR	0xFFE00000
41a684729aSLey Foon Tan #define CONFIG_SYS_INIT_RAM_SIZE	0x40000
42a684729aSLey Foon Tan #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_INIT_RAM_ADDR  \
43a684729aSLey Foon Tan 					+ CONFIG_SYS_INIT_RAM_SIZE \
44a684729aSLey Foon Tan 					- S10_HANDOFF_SIZE)
45a684729aSLey Foon Tan #define CONFIG_SYS_INIT_SP_OFFSET	(CONFIG_SYS_INIT_SP_ADDR)
46a684729aSLey Foon Tan #define CONFIG_SYS_MALLOC_LEN		(5 * 1024 * 1024)
47a684729aSLey Foon Tan 
48a684729aSLey Foon Tan /*
49a684729aSLey Foon Tan  * U-Boot environment configurations
50a684729aSLey Foon Tan  */
51a684729aSLey Foon Tan #define CONFIG_ENV_SIZE			0x1000
52a684729aSLey Foon Tan #define CONFIG_SYS_MMC_ENV_DEV		0	/* device 0 */
53a684729aSLey Foon Tan #define CONFIG_ENV_OFFSET		512	/* just after the MBR */
54a684729aSLey Foon Tan 
55a684729aSLey Foon Tan /*
56a684729aSLey Foon Tan  * QSPI support
57a684729aSLey Foon Tan  */
58a684729aSLey Foon Tan  #ifdef CONFIG_CADENCE_QSPI
59a684729aSLey Foon Tan /* Enable it if you want to use dual-stacked mode */
60a684729aSLey Foon Tan /*#define CONFIG_QSPI_RBF_ADDR		0x720000*/
61a684729aSLey Foon Tan 
62a684729aSLey Foon Tan /* Flash device info */
63a684729aSLey Foon Tan 
64a684729aSLey Foon Tan /*#define CONFIG_ENV_IS_IN_SPI_FLASH*/
65a684729aSLey Foon Tan #ifdef CONFIG_ENV_IS_IN_SPI_FLASH
66a684729aSLey Foon Tan #undef CONFIG_ENV_OFFSET
67a684729aSLey Foon Tan #undef CONFIG_ENV_SIZE
68a684729aSLey Foon Tan #define CONFIG_ENV_OFFSET		0x710000
69a684729aSLey Foon Tan #define CONFIG_ENV_SIZE			(4 * 1024)
70a684729aSLey Foon Tan #define CONFIG_ENV_SECT_SIZE		(4 * 1024)
71a684729aSLey Foon Tan #endif /* CONFIG_ENV_IS_IN_SPI_FLASH */
72a684729aSLey Foon Tan 
73a684729aSLey Foon Tan #ifndef CONFIG_SPL_BUILD
74a684729aSLey Foon Tan #define CONFIG_MTD_DEVICE
75a684729aSLey Foon Tan #define CONFIG_MTD_PARTITIONS
76a684729aSLey Foon Tan #define MTDIDS_DEFAULT			"nor0=ff705000.spi.0"
77a684729aSLey Foon Tan #endif /* CONFIG_SPL_BUILD */
78a684729aSLey Foon Tan 
79a684729aSLey Foon Tan #ifndef __ASSEMBLY__
80a684729aSLey Foon Tan unsigned int cm_get_qspi_controller_clk_hz(void);
81a684729aSLey Foon Tan #define CONFIG_CQSPI_REF_CLK		cm_get_qspi_controller_clk_hz()
82a684729aSLey Foon Tan #endif
83a684729aSLey Foon Tan 
84a684729aSLey Foon Tan #endif /* CONFIG_CADENCE_QSPI */
85a684729aSLey Foon Tan 
86a684729aSLey Foon Tan /*
87a684729aSLey Foon Tan  * Boot arguments passed to the boot command. The value of
88a684729aSLey Foon Tan  * CONFIG_BOOTARGS goes into the environment value "bootargs".
89a684729aSLey Foon Tan  * Do note the value will override also the chosen node in FDT blob.
90a684729aSLey Foon Tan  */
91a684729aSLey Foon Tan #define CONFIG_BOOTARGS "earlycon"
92a684729aSLey Foon Tan #define CONFIG_BOOTCOMMAND "run fatscript; run mmcload;run linux_qspi_enable;" \
93a684729aSLey Foon Tan 			   "run mmcboot"
94a684729aSLey Foon Tan 
95a684729aSLey Foon Tan #define CONFIG_EXTRA_ENV_SETTINGS \
96a684729aSLey Foon Tan 	"loadaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
97a684729aSLey Foon Tan 	"bootfile=Image\0" \
98a684729aSLey Foon Tan 	"fdt_addr=8000000\0" \
99a684729aSLey Foon Tan 	"fdtimage=socfpga_stratix10_socdk.dtb\0" \
100a684729aSLey Foon Tan 	"mmcroot=/dev/mmcblk0p2\0" \
101a684729aSLey Foon Tan 	"mmcboot=setenv bootargs " CONFIG_BOOTARGS \
102a684729aSLey Foon Tan 		" root=${mmcroot} rw rootwait;" \
103a684729aSLey Foon Tan 		"booti ${loadaddr} - ${fdt_addr}\0" \
104a684729aSLey Foon Tan 	"mmcload=mmc rescan;" \
105a684729aSLey Foon Tan 		"load mmc 0:1 ${loadaddr} ${bootfile};" \
106a684729aSLey Foon Tan 		"load mmc 0:1 ${fdt_addr} ${fdtimage}\0" \
107a684729aSLey Foon Tan 	"linux_qspi_enable=if sf probe; then " \
108a684729aSLey Foon Tan 		"echo Enabling QSPI at Linux DTB...;" \
109a684729aSLey Foon Tan 		"fdt addr ${fdt_addr}; fdt resize;" \
110a684729aSLey Foon Tan 		"fdt set /soc/spi@ff8d2000 status okay;" \
111a684729aSLey Foon Tan 		"fdt set /soc/clkmgr/clocks/qspi_clk clock-frequency " \
112a684729aSLey Foon Tan 		" ${qspi_clock}; fi; \0" \
113a684729aSLey Foon Tan 	"scriptaddr=0x02100000\0" \
114a684729aSLey Foon Tan 	"scriptfile=u-boot.scr\0" \
115a684729aSLey Foon Tan 	"fatscript=if fatload mmc 0:1 ${scriptaddr} ${scriptfile};" \
116a684729aSLey Foon Tan 		   "then source ${scriptaddr}; fi\0"
117a684729aSLey Foon Tan 
118a684729aSLey Foon Tan /*
119a684729aSLey Foon Tan  * Generic Interrupt Controller Definitions
120a684729aSLey Foon Tan  */
121a684729aSLey Foon Tan #define CONFIG_GICV2
122a684729aSLey Foon Tan 
123a684729aSLey Foon Tan /*
124a684729aSLey Foon Tan  * External memory configurations
125a684729aSLey Foon Tan  */
126a684729aSLey Foon Tan #define PHYS_SDRAM_1			0x0
127a684729aSLey Foon Tan #define PHYS_SDRAM_1_SIZE		(1 * 1024 * 1024 * 1024)
128a684729aSLey Foon Tan #define CONFIG_SYS_SDRAM_BASE		0
129a684729aSLey Foon Tan #define CONFIG_SYS_MEMTEST_START	0
130a684729aSLey Foon Tan #define CONFIG_SYS_MEMTEST_END		PHYS_SDRAM_1_SIZE - 0x200000
131a684729aSLey Foon Tan 
132a684729aSLey Foon Tan /*
133a684729aSLey Foon Tan  * SDRAM controller
134a684729aSLey Foon Tan  */
135a684729aSLey Foon Tan #define CONFIG_ALTERA_SDRAM
136a684729aSLey Foon Tan 
137a684729aSLey Foon Tan /*
138a684729aSLey Foon Tan  * Serial / UART configurations
139a684729aSLey Foon Tan  */
140a684729aSLey Foon Tan #define CONFIG_SYS_NS16550_CLK		100000000
141a684729aSLey Foon Tan #define CONFIG_SYS_NS16550_MEM32
142a684729aSLey Foon Tan 
143a684729aSLey Foon Tan /*
144a684729aSLey Foon Tan  * Timer & watchdog configurations
145a684729aSLey Foon Tan  */
146a684729aSLey Foon Tan #define COUNTER_FREQUENCY		400000000
147a684729aSLey Foon Tan 
148a684729aSLey Foon Tan /*
149a684729aSLey Foon Tan  * SDMMC configurations
150a684729aSLey Foon Tan  */
151a684729aSLey Foon Tan #ifdef CONFIG_CMD_MMC
152a684729aSLey Foon Tan #define CONFIG_SYS_MMC_MAX_BLK_COUNT	256
153a684729aSLey Foon Tan #endif
154a684729aSLey Foon Tan /*
155a684729aSLey Foon Tan  * Flash configurations
156a684729aSLey Foon Tan  */
157a684729aSLey Foon Tan #define CONFIG_SYS_MAX_FLASH_BANKS	1
158a684729aSLey Foon Tan 
159a684729aSLey Foon Tan /* Ethernet on SoC (EMAC) */
160a684729aSLey Foon Tan #if defined(CONFIG_CMD_NET)
161a684729aSLey Foon Tan #define CONFIG_DW_ALTDESCRIPTOR
162a684729aSLey Foon Tan #endif /* CONFIG_CMD_NET */
163a684729aSLey Foon Tan 
164a684729aSLey Foon Tan /*
165a684729aSLey Foon Tan  * L4 Watchdog
166a684729aSLey Foon Tan  */
167a684729aSLey Foon Tan #ifdef CONFIG_SPL_BUILD
168a684729aSLey Foon Tan #define CONFIG_HW_WATCHDOG
169a684729aSLey Foon Tan #define CONFIG_DESIGNWARE_WATCHDOG
170a684729aSLey Foon Tan #define CONFIG_DW_WDT_BASE		SOCFPGA_L4WD0_ADDRESS
171a684729aSLey Foon Tan #ifndef __ASSEMBLY__
172a684729aSLey Foon Tan unsigned int cm_get_l4_sys_free_clk_hz(void);
173a684729aSLey Foon Tan #define CONFIG_DW_WDT_CLOCK_KHZ		(cm_get_l4_sys_free_clk_hz() / 1000)
174a684729aSLey Foon Tan #endif
175a684729aSLey Foon Tan #define CONFIG_WATCHDOG_TIMEOUT_MSECS	3000
176a684729aSLey Foon Tan #endif
177a684729aSLey Foon Tan 
178a684729aSLey Foon Tan /*
179a684729aSLey Foon Tan  * SPL memory layout
180a684729aSLey Foon Tan  *
181a684729aSLey Foon Tan  * On chip RAM
182a684729aSLey Foon Tan  * 0xFFE0_0000 ...... Start of OCRAM
183a684729aSLey Foon Tan  * SPL code, rwdata
184a684729aSLey Foon Tan  * empty space
185a684729aSLey Foon Tan  * 0xFFEx_xxxx ...... Top of stack (grows down)
186a684729aSLey Foon Tan  * 0xFFEy_yyyy ...... Global Data
187a684729aSLey Foon Tan  * 0xFFEz_zzzz ...... Malloc prior relocation (size CONFIG_SYS_MALLOC_F_LEN)
188a684729aSLey Foon Tan  * 0xFFE3_F000 ...... Hardware handdoff blob (size 4KB)
189a684729aSLey Foon Tan  * 0xFFE3_FFFF ...... End of OCRAM
190a684729aSLey Foon Tan  *
191a684729aSLey Foon Tan  * SDRAM
192a684729aSLey Foon Tan  * 0x0000_0000 ...... Start of SDRAM_1
193a684729aSLey Foon Tan  * unused / empty space for image loading
194a684729aSLey Foon Tan  * Size 64MB   ...... MALLOC (size CONFIG_SYS_SPL_MALLOC_SIZE)
195a684729aSLey Foon Tan  * Size 1MB    ...... BSS (size CONFIG_SPL_BSS_MAX_SIZE)
196a684729aSLey Foon Tan  * 0x8000_0000 ...... End of SDRAM_1 (assume 2GB)
197a684729aSLey Foon Tan  *
198a684729aSLey Foon Tan  */
19935704697SDalon Westergreen #define CONFIG_SPL_TARGET		"spl/u-boot-spl.hex"
200a684729aSLey Foon Tan #define CONFIG_SPL_TEXT_BASE		CONFIG_SYS_INIT_RAM_ADDR
201a684729aSLey Foon Tan #define CONFIG_SPL_MAX_SIZE		CONFIG_SYS_INIT_RAM_SIZE
202a684729aSLey Foon Tan #define CONFIG_SPL_STACK		CONFIG_SYS_INIT_SP_ADDR
203a684729aSLey Foon Tan #define CONFIG_SPL_BSS_MAX_SIZE		0x100000	/* 1 MB */
204a684729aSLey Foon Tan #define CONFIG_SPL_BSS_START_ADDR	(PHYS_SDRAM_1 + PHYS_SDRAM_1_SIZE \
205a684729aSLey Foon Tan 					- CONFIG_SPL_BSS_MAX_SIZE)
206a684729aSLey Foon Tan #define CONFIG_SYS_SPL_MALLOC_SIZE	(CONFIG_SYS_MALLOC_LEN)
207a684729aSLey Foon Tan #define CONFIG_SYS_SPL_MALLOC_START	(CONFIG_SPL_BSS_START_ADDR \
208a684729aSLey Foon Tan 					- CONFIG_SYS_SPL_MALLOC_SIZE)
209a684729aSLey Foon Tan #define CONFIG_SYS_SPI_U_BOOT_OFFS      0x3C00000
210a684729aSLey Foon Tan 
211a684729aSLey Foon Tan /* SPL SDMMC boot support */
212a684729aSLey Foon Tan #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
213*f6d600b3SDalon Westergreen #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME		"u-boot.img"
214a684729aSLey Foon Tan 
215a684729aSLey Foon Tan #endif	/* __CONFIG_H */
216