xref: /openbmc/u-boot/include/configs/xilinx_zynqmp.h (revision ef11ed8239bf02b347e7fb9fc6d980aec0c7810a)
1  /*
2   * Configuration for Xilinx ZynqMP
3   * (C) Copyright 2014 - 2015 Xilinx, Inc.
4   * Michal Simek <michal.simek@xilinx.com>
5   *
6   * Based on Configuration for Versatile Express
7   *
8   * SPDX-License-Identifier:	GPL-2.0+
9   */
10  
11  #ifndef __XILINX_ZYNQMP_H
12  #define __XILINX_ZYNQMP_H
13  
14  #define CONFIG_REMAKE_ELF
15  
16  /* #define CONFIG_ARMV8_SWITCH_TO_EL1 */
17  
18  /* Generic Interrupt Controller Definitions */
19  #define CONFIG_GICV2
20  #define GICD_BASE	0xF9010000
21  #define GICC_BASE	0xF9020000
22  
23  #define CONFIG_SYS_ALT_MEMTEST
24  #define CONFIG_SYS_MEMTEST_SCRATCH	0xfffc0000
25  
26  #ifndef CONFIG_NR_DRAM_BANKS
27  # define CONFIG_NR_DRAM_BANKS		2
28  #endif
29  #define CONFIG_SYS_MEMTEST_START	0
30  #define CONFIG_SYS_MEMTEST_END		1000
31  
32  #define CONFIG_SYS_INIT_SP_ADDR		CONFIG_SYS_TEXT_BASE
33  
34  /* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
35  #if !defined(COUNTER_FREQUENCY)
36  # define COUNTER_FREQUENCY		100000000
37  #endif
38  
39  /* Size of malloc() pool */
40  #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 0x2000000)
41  
42  /* Serial setup */
43  #define CONFIG_ARM_DCC
44  #define CONFIG_CPU_ARMV8
45  
46  #define CONFIG_CONS_INDEX		0
47  #define CONFIG_SYS_BAUDRATE_TABLE \
48  	{ 4800, 9600, 19200, 38400, 57600, 115200 }
49  
50  /* Command line configuration */
51  #define CONFIG_MP
52  
53  /* BOOTP options */
54  #define CONFIG_BOOTP_BOOTFILESIZE
55  #define CONFIG_BOOTP_BOOTPATH
56  #define CONFIG_BOOTP_GATEWAY
57  #define CONFIG_BOOTP_HOSTNAME
58  #define CONFIG_BOOTP_MAY_FAIL
59  #define CONFIG_BOOTP_DNS
60  #define CONFIG_BOOTP_PXE
61  #define CONFIG_BOOTP_SUBNETMASK
62  
63  /* Diff from config_distro_defaults.h */
64  #define CONFIG_SUPPORT_RAW_INITRD
65  #if !defined(CONFIG_SPL_BUILD)
66  #define CONFIG_ENV_VARS_UBOOT_CONFIG
67  #endif
68  #define CONFIG_AUTO_COMPLETE
69  
70  #if defined(CONFIG_MMC_SDHCI_ZYNQ)
71  # define CONFIG_SUPPORT_EMMC_BOOT
72  # ifndef CONFIG_ZYNQ_SDHCI_MAX_FREQ
73  #  define CONFIG_ZYNQ_SDHCI_MAX_FREQ	200000000
74  # endif
75  #endif
76  
77  #ifdef CONFIG_NAND_ARASAN
78  # define CONFIG_SYS_MAX_NAND_DEVICE	1
79  # define CONFIG_SYS_NAND_SELF_INIT
80  # define CONFIG_SYS_NAND_ONFI_DETECTION
81  # define CONFIG_MTD_DEVICE
82  #endif
83  
84  /* Miscellaneous configurable options */
85  #define CONFIG_SYS_LOAD_ADDR		0x8000000
86  
87  #if defined(CONFIG_ZYNQMP_USB)
88  #define CONFIG_SYS_DFU_DATA_BUF_SIZE	0x1800000
89  #define DFU_DEFAULT_POLL_TIMEOUT	300
90  #define CONFIG_USB_CABLE_CHECK
91  #define CONFIG_USB_FUNCTION_THOR
92  #define CONFIG_THOR_RESET_OFF
93  #define DFU_ALT_INFO_RAM \
94  	"dfu_ram_info=" \
95  	"setenv dfu_alt_info " \
96  	"Image ram $kernel_addr $kernel_size\\\\;" \
97  	"system.dtb ram $fdt_addr $fdt_size\0" \
98  	"dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
99  	"thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
100  
101  #define DFU_ALT_INFO  \
102  		DFU_ALT_INFO_RAM
103  
104  #ifndef CONFIG_SPL_BUILD
105  # define PARTS_DEFAULT \
106  	"partitions=uuid_disk=${uuid_gpt_disk};" \
107  	"name=""boot"",size=16M,uuid=${uuid_gpt_boot};" \
108  	"name=""Linux"",size=-M,uuid=${uuid_gpt_Linux}\0"
109  #endif
110  #endif
111  
112  #if !defined(DFU_ALT_INFO)
113  # define DFU_ALT_INFO
114  #endif
115  
116  #if !defined(PARTS_DEFAULT)
117  # define PARTS_DEFAULT
118  #endif
119  
120  /* Do not preserve environment */
121  #define CONFIG_ENV_SIZE			0x8000
122  
123  /* Monitor Command Prompt */
124  /* Console I/O Buffer Size */
125  #define CONFIG_SYS_CBSIZE		2048
126  #define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE
127  #define CONFIG_SYS_LONGHELP
128  #define CONFIG_CMDLINE_EDITING
129  #define CONFIG_SYS_MAXARGS		64
130  
131  /* Ethernet driver */
132  #if defined(CONFIG_ZYNQ_GEM)
133  # define CONFIG_MII
134  # define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
135  # define CONFIG_PHY_MARVELL
136  # define CONFIG_PHY_NATSEMI
137  # define CONFIG_PHY_TI
138  # define CONFIG_PHY_VITESSE
139  # define CONFIG_PHY_REALTEK
140  # define PHY_ANEG_TIMEOUT       20000
141  #endif
142  
143  /* I2C */
144  #if defined(CONFIG_SYS_I2C_ZYNQ)
145  # define CONFIG_SYS_I2C
146  # define CONFIG_SYS_I2C_ZYNQ_SPEED		100000
147  # define CONFIG_SYS_I2C_ZYNQ_SLAVE		0
148  #endif
149  
150  /* EEPROM */
151  #ifdef CONFIG_ZYNQMP_EEPROM
152  # define CONFIG_SYS_I2C_EEPROM_ADDR_LEN		2
153  # define CONFIG_SYS_I2C_EEPROM_ADDR		0x54
154  # define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS	4
155  # define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS	5
156  # define CONFIG_SYS_EEPROM_SIZE			(64 * 1024)
157  #endif
158  
159  #ifdef CONFIG_SATA_CEVA
160  #define CONFIG_LIBATA
161  #define CONFIG_SCSI_AHCI
162  #define CONFIG_SYS_SCSI_MAX_SCSI_ID	2
163  #define CONFIG_SYS_SCSI_MAX_LUN		1
164  #define CONFIG_SYS_SCSI_MAX_DEVICE	(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
165  					 CONFIG_SYS_SCSI_MAX_LUN)
166  #endif
167  
168  #define CONFIG_SYS_BOOTM_LEN	(60 * 1024 * 1024)
169  
170  #define CONFIG_BOARD_EARLY_INIT_R
171  #define CONFIG_CLOCKS
172  
173  #define ENV_MEM_LAYOUT_SETTINGS \
174  	"fdt_high=10000000\0" \
175  	"initrd_high=10000000\0" \
176  	"fdt_addr_r=0x40000000\0" \
177  	"pxefile_addr_r=0x10000000\0" \
178  	"kernel_addr_r=0x18000000\0" \
179  	"scriptaddr=0x02000000\0" \
180  	"ramdisk_addr_r=0x02100000\0" \
181  
182  #if defined(CONFIG_MMC_SDHCI_ZYNQ)
183  # define BOOT_TARGET_DEVICES_MMC(func)	func(MMC, mmc, 0) func(MMC, mmc, 1)
184  #else
185  # define BOOT_TARGET_DEVICES_MMC(func)
186  #endif
187  
188  #if defined(CONFIG_SATA_CEVA)
189  # define BOOT_TARGET_DEVICES_SCSI(func)	func(SCSI, scsi, 0)
190  #else
191  # define BOOT_TARGET_DEVICES_SCSI(func)
192  #endif
193  
194  #if defined(CONFIG_ZYNQMP_USB)
195  # define BOOT_TARGET_DEVICES_USB(func)	func(USB, usb, 0) func(USB, usb, 1)
196  #else
197  # define BOOT_TARGET_DEVICES_USB(func)
198  #endif
199  
200  #define BOOT_TARGET_DEVICES(func) \
201  	BOOT_TARGET_DEVICES_MMC(func) \
202  	BOOT_TARGET_DEVICES_USB(func) \
203  	BOOT_TARGET_DEVICES_SCSI(func) \
204  	func(PXE, pxe, na) \
205  	func(DHCP, dhcp, na)
206  
207  #include <config_distro_bootcmd.h>
208  
209  /* Initial environment variables */
210  #ifndef CONFIG_EXTRA_ENV_SETTINGS
211  #define CONFIG_EXTRA_ENV_SETTINGS \
212  	ENV_MEM_LAYOUT_SETTINGS \
213  	BOOTENV \
214  	DFU_ALT_INFO
215  #endif
216  
217  /* SPL can't handle all huge variables - define just DFU */
218  #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU_SUPPORT)
219  #undef CONFIG_EXTRA_ENV_SETTINGS
220  # define CONFIG_EXTRA_ENV_SETTINGS \
221  	"dfu_alt_info_ram=uboot.bin ram 0x8000000 0x1000000;" \
222  			  "atf-uboot.ub ram 0x10000000 0x1000000;" \
223  			  "Image ram 0x80000 0x3f80000;" \
224  			  "system.dtb ram 0x4000000 0x100000\0" \
225  	"dfu_bufsiz=0x1000\0"
226  #endif
227  
228  #define CONFIG_SPL_TEXT_BASE		0xfffc0000
229  #define CONFIG_SPL_STACK		0xfffffffc
230  #define CONFIG_SPL_MAX_SIZE		0x40000
231  
232  /* Just random location in OCM */
233  #define CONFIG_SPL_BSS_START_ADDR	0x0
234  #define CONFIG_SPL_BSS_MAX_SIZE		0x80000
235  
236  #define CONFIG_SPL_FRAMEWORK
237  
238  /* u-boot is like dtb */
239  #define CONFIG_SPL_FS_LOAD_ARGS_NAME	"u-boot.bin"
240  #define CONFIG_SYS_SPL_ARGS_ADDR	0x8000000
241  
242  /* ATF is my kernel image */
243  #define CONFIG_SPL_FS_LOAD_KERNEL_NAME	"atf-uboot.ub"
244  
245  /* FIT load address for RAM boot */
246  #define CONFIG_SPL_LOAD_FIT_ADDRESS	0x10000000
247  
248  /* MMC support */
249  #ifdef CONFIG_MMC_SDHCI_ZYNQ
250  # define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
251  # define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR	0 /* unused */
252  # define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS	0 /* unused */
253  # define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR	0 /* unused */
254  # define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME	"u-boot.img"
255  #endif
256  
257  #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU_SUPPORT)
258  # undef CONFIG_CMD_BOOTD
259  # define CONFIG_SPL_ENV_SUPPORT
260  # define CONFIG_SPL_HASH_SUPPORT
261  # define CONFIG_ENV_MAX_ENTRIES	10
262  
263  # define CONFIG_SYS_SPL_MALLOC_START	0x20000000
264  # define CONFIG_SYS_SPL_MALLOC_SIZE	0x100000
265  
266  #ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
267  # error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used"
268  #endif
269  #endif
270  
271  #define CONFIG_BOARD_EARLY_INIT_F
272  
273  #endif /* __XILINX_ZYNQMP_H */
274