1
2
3
4
5
6
7
8
9
10#ifndef __XILINX_ZYNQMP_H
11#define __XILINX_ZYNQMP_H
12
13#define CONFIG_REMAKE_ELF
14
15
16
17
18#define CONFIG_GICV2
19#define GICD_BASE 0xF9010000
20#define GICC_BASE 0xF9020000
21
22#ifndef CONFIG_SYS_MEMTEST_SCRATCH
23# define CONFIG_SYS_MEMTEST_SCRATCH 0x10800000
24#endif
25
26#define CONFIG_SYS_MEMTEST_START 0
27#define CONFIG_SYS_MEMTEST_END 1000
28
29#define CONFIG_SYS_INIT_SP_ADDR CONFIG_SYS_TEXT_BASE
30
31
32#if !defined(COUNTER_FREQUENCY)
33# define COUNTER_FREQUENCY 100000000
34#endif
35
36
37#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 0x2000000)
38
39
40#define CONFIG_ARM_DCC
41#define CONFIG_CPU_ARMV8
42
43#define CONFIG_SYS_BAUDRATE_TABLE \
44 { 4800, 9600, 19200, 38400, 57600, 115200 }
45
46
47#define CONFIG_BOOTP_BOOTFILESIZE
48#define CONFIG_BOOTP_MAY_FAIL
49
50#if defined(CONFIG_MMC_SDHCI_ZYNQ)
51# define CONFIG_SUPPORT_EMMC_BOOT
52#endif
53
54#ifdef CONFIG_NAND_ARASAN
55# define CONFIG_SYS_MAX_NAND_DEVICE 1
56# define CONFIG_SYS_NAND_ONFI_DETECTION
57#endif
58
59#if !defined(CONFIG_SPL_BUILD)
60#if defined(CONFIG_ZYNQMP_GQSPI)
61
62#define CONFIG_SPI_FLASH_MTD
63#endif
64#endif
65
66#if defined(CONFIG_SPL_BUILD)
67#define CONFIG_ZYNQMP_PSU_INIT_ENABLED
68#endif
69
70
71#define CONFIG_SYS_LOAD_ADDR 0x8000000
72
73#if defined(CONFIG_ZYNQMP_USB)
74#define CONFIG_SYS_DFU_DATA_BUF_SIZE 0x1800000
75#define DFU_DEFAULT_POLL_TIMEOUT 300
76#define CONFIG_USB_CABLE_CHECK
77#define CONFIG_THOR_RESET_OFF
78#define DFU_ALT_INFO_RAM \
79 "dfu_ram_info=" \
80 "setenv dfu_alt_info " \
81 "Image ram $kernel_addr $kernel_size\\\\;" \
82 "system.dtb ram $fdt_addr $fdt_size\0" \
83 "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
84 "thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
85
86#define DFU_ALT_INFO \
87 DFU_ALT_INFO_RAM
88
89#ifndef CONFIG_SPL_BUILD
90# define PARTS_DEFAULT \
91 "partitions=uuid_disk=${uuid_gpt_disk};" \
92 "name=""boot"",size=16M,uuid=${uuid_gpt_boot};" \
93 "name=""Linux"",size=-M,uuid=${uuid_gpt_Linux}\0"
94#endif
95#endif
96
97#if !defined(DFU_ALT_INFO)
98# define DFU_ALT_INFO
99#endif
100
101#if !defined(PARTS_DEFAULT)
102# define PARTS_DEFAULT
103#endif
104
105
106#ifndef CONFIG_EXTRA_ENV_BOARD_SETTINGS
107#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
108 "kernel_addr=0x80000\0" \
109 "initrd_addr=0xa00000\0" \
110 "initrd_size=0x2000000\0" \
111 "fdt_addr=4000000\0" \
112 "fdt_high=0x10000000\0" \
113 "loadbootenv_addr=0x100000\0" \
114 "sdbootdev=0\0"\
115 "kernel_offset=0x280000\0" \
116 "fdt_offset=0x200000\0" \
117 "kernel_size=0x1e00000\0" \
118 "fdt_size=0x80000\0" \
119 "bootenv=uEnv.txt\0" \
120 "partid=auto\0" \
121 "loadbootenv=load mmc $sdbootdev:$partid ${loadbootenv_addr} ${bootenv}\0" \
122 "importbootenv=echo Importing environment from SD ...; " \
123 "env import -t ${loadbootenv_addr} $filesize\0" \
124 "sd_uEnvtxt_existence_test=test -e mmc $sdbootdev:$partid /uEnv.txt\0" \
125 "sata_root=if test $scsidevs -gt 0; then setenv bootargs $bootargs root=/dev/sda rw rootfstype=ext4; fi\0" \
126 "sataboot=run xilinxcmd && load scsi 0 80000 boot/Image && load scsi 0 $fdt_addr boot/system.dtb && booti 80000 - $fdt_addr\0" \
127 "netboot=run xilinxcmd && tftpboot 10000000 image.ub && bootm\0" \
128 "qspiboot=run xilinxcmd && sf probe 0 0 0 && sf read $fdt_addr $fdt_offset $fdt_size && " \
129 "sf read $kernel_addr $kernel_offset $kernel_size && " \
130 "booti $kernel_addr - $fdt_addr\0" \
131 "uenvboot=" \
132 "if run sd_uEnvtxt_existence_test; then " \
133 "run loadbootenv; " \
134 "echo Loaded environment from ${bootenv}; " \
135 "run importbootenv; " \
136 "fi; " \
137 "if test -n $uenvcmd; then " \
138 "echo Running uenvcmd ...; " \
139 "run uenvcmd; " \
140 "fi\0" \
141 "sdboot=run xilinxcmd && mmc dev $sdbootdev && mmcinfo && run uenvboot || run sdroot$sdbootdev; " \
142 "load mmc $sdbootdev:$partid $fdt_addr system.dtb && " \
143 "load mmc $sdbootdev:$partid $kernel_addr Image && " \
144 "booti $kernel_addr - $fdt_addr\0" \
145 "emmcboot=run sdboot\0" \
146 "nandboot=run xilinxcmd && nand info && nand read $fdt_addr $fdt_offset $fdt_size && " \
147 "nand read $kernel_addr $kernel_offset $kernel_size && " \
148 "booti $kernel_addr - $fdt_addr\0" \
149 "xen_prepare_dt=fdt addr $fdt_addr && fdt resize 128 && " \
150 "fdt set /chosen \\\\#address-cells <1> && " \
151 "fdt set /chosen \\\\#size-cells <1> && " \
152 "fdt mknod /chosen dom0 && " \
153 "fdt set /chosen/dom0 compatible \"xen,linux-zimage\" \"xen,multiboot-module\" && " \
154 "fdt set /chosen/dom0 reg <0x80000 0x$filesize> && " \
155 "fdt set /chosen xen,xen-bootargs \"console=dtuart dtuart=serial0 dom0_mem=768M bootscrub=0 maxcpus=1 timer_slop=0\" && " \
156 "fdt set /chosen xen,dom0-bootargs \"console=hvc0 earlycon=xen earlyprintk=xen maxcpus=1 clk_ignore_unused\"\0" \
157 "xen_prepare_dt_qemu=run xen_prepare_dt && " \
158 "fdt set /cpus/cpu@1 device_type \"none\" && " \
159 "fdt set /cpus/cpu@2 device_type \"none\" && " \
160 "fdt set /cpus/cpu@3 device_type \"none\" && " \
161 "fdt rm /cpus/cpu@1 compatible && " \
162 "fdt rm /cpus/cpu@2 compatible && " \
163 "fdt rm /cpus/cpu@3 compatible\0" \
164 "xen=run xilinxcmd && tftpb $fdt_addr system.dtb && tftpb 0x80000 Image &&" \
165 "run xen_prepare_dt && " \
166 "tftpb 6000000 xen.ub && tftpb 0x1000000 image.ub && " \
167 "bootm 6000000 0x1000000 $fdt_addr\0" \
168 "xen_qemu=run xilinxcmd && tftpb $fdt_addr system.dtb && tftpb 0x80000 Image && " \
169 "run xen_prepare_dt_qemu && " \
170 "tftpb 6000000 xen.ub && tftpb 0x1000000 image.ub && " \
171 "bootm 6000000 0x1000000 $fdt_addr\0" \
172 "jtagboot=run xilinxcmd && tftpboot 80000 Image && tftpboot $fdt_addr system.dtb && " \
173 "tftpboot 6000000 rootfs.cpio.ub && booti 80000 6000000 $fdt_addr\0" \
174 "nosmp=setenv bootargs $bootargs maxcpus=1\0" \
175 "nfsroot=setenv bootargs $bootargs root=/dev/nfs nfsroot=$serverip:/mnt/sata,tcp ip=$ipaddr:$serverip:$serverip:255.255.255.0:zynqmp:eth0:off rw\0" \
176 "sdroot0=setenv bootargs $bootargs root=/dev/mmcblk0p2 rw rootwait\0" \
177 "sdroot1=setenv bootargs $bootargs root=/dev/mmcblk1p2 rw rootwait\0" \
178 "android=setenv bootargs $bootargs init=/init androidboot.selinux=disabled androidboot.hardware=$board\0" \
179 "android_debug=run android && setenv bootargs $bootargs video=DP-1:1024x768@60 drm.debug=0xf\0" \
180 "usb_dfu_spl=booti $kernel_addr - $fdt_addr\0" \
181 "usbhostboot=usb start && load usb 0 $fdt_addr system.dtb && " \
182 "load usb 0 $kernel_addr Image && " \
183 "booti $kernel_addr - $fdt_addr\0" \
184 "xilinxcmd=echo !!! && echo !!! Booting cmd is deprecated (will be removed in 2020). && echo !!! Please move to distro bootcmd. && echo !!!\0" \
185 PARTS_DEFAULT
186#endif
187
188
189
190#define CONFIG_SYS_CBSIZE 2048
191#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
192#define CONFIG_PANIC_HANG
193#define CONFIG_SYS_MAXARGS 64
194
195
196#if defined(CONFIG_ZYNQ_GEM)
197# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
198# define PHY_ANEG_TIMEOUT 20000
199#endif
200
201#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024)
202
203#define CONFIG_CLOCKS
204
205#define ENV_MEM_LAYOUT_SETTINGS \
206 "fdt_high=10000000\0" \
207 "initrd_high=10000000\0" \
208 "fdt_addr_r=0x40000000\0" \
209 "pxefile_addr_r=0x10000000\0" \
210 "kernel_addr_r=0x18000000\0" \
211 "scriptaddr=0x02000000\0" \
212 "ramdisk_addr_r=0x02100000\0" \
213 "script_offset_f=0x3e80000\0" \
214 "script_size_f=0x80000\0" \
215
216#if defined(CONFIG_MMC_SDHCI_ZYNQ)
217# define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) func(MMC, mmc, 1)
218#else
219# define BOOT_TARGET_DEVICES_MMC(func)
220#endif
221
222#if defined(CONFIG_SATA_CEVA)
223# define BOOT_TARGET_DEVICES_SCSI(func) func(SCSI, scsi, 0)
224#else
225# define BOOT_TARGET_DEVICES_SCSI(func)
226#endif
227
228#if defined(CONFIG_ZYNQMP_USB)
229# define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) func(USB, usb, 1)
230#else
231# define BOOT_TARGET_DEVICES_USB(func)
232#endif
233
234#if defined(CONFIG_CMD_PXE) && defined(CONFIG_CMD_DHCP)
235# define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na)
236#else
237# define BOOT_TARGET_DEVICES_PXE(func)
238#endif
239
240#if defined(CONFIG_CMD_DHCP)
241# define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na)
242#else
243# define BOOT_TARGET_DEVICES_DHCP(func)
244#endif
245
246#if defined(CONFIG_ZYNQMP_GQSPI)
247# define BOOT_TARGET_DEVICES_QSPI(func) func(QSPI, qspi, 0)
248#else
249# define BOOT_TARGET_DEVICES_QSPI(func)
250#endif
251
252#if defined(CONFIG_NAND_ARASAN)
253# define BOOT_TARGET_DEVICES_NAND(func) func(NAND, nand, 0)
254#else
255# define BOOT_TARGET_DEVICES_NAND(func)
256#endif
257
258#define BOOTENV_DEV_XILINX(devtypeu, devtypel, instance) \
259 "bootcmd_xilinx=run $modeboot\0"
260
261#define BOOTENV_DEV_NAME_XILINX(devtypeu, devtypel, instance) \
262 "xilinx "
263
264#define BOOTENV_DEV_QSPI(devtypeu, devtypel, instance) \
265 "bootcmd_" #devtypel #instance "=sf probe " #instance " 0 0 && " \
266 "sf read $scriptaddr $script_offset_f $script_size_f && " \
267 "source ${scriptaddr}; echo SCRIPT FAILED: continuing...;\0"
268
269#define BOOTENV_DEV_NAME_QSPI(devtypeu, devtypel, instance) \
270 #devtypel #instance " "
271
272#define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \
273 "bootcmd_" #devtypel #instance "= nand info && " \
274 "nand read $scriptaddr $script_offset_f $script_size_f && " \
275 "source ${scriptaddr}; echo SCRIPT FAILED: continuing...;\0"
276
277#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \
278 #devtypel #instance " "
279
280#define BOOT_TARGET_DEVICES(func) \
281 BOOT_TARGET_DEVICES_MMC(func) \
282 BOOT_TARGET_DEVICES_QSPI(func) \
283 BOOT_TARGET_DEVICES_NAND(func) \
284 BOOT_TARGET_DEVICES_USB(func) \
285 BOOT_TARGET_DEVICES_SCSI(func) \
286 BOOT_TARGET_DEVICES_PXE(func) \
287 BOOT_TARGET_DEVICES_DHCP(func) \
288 func(XILINX, xilinx, na)
289
290#include <config_distro_bootcmd.h>
291
292
293#ifndef CONFIG_EXTRA_ENV_SETTINGS
294#define CONFIG_EXTRA_ENV_SETTINGS \
295 CONFIG_EXTRA_ENV_BOARD_SETTINGS \
296 ENV_MEM_LAYOUT_SETTINGS \
297 BOOTENV \
298 DFU_ALT_INFO
299#endif
300
301
302#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU_SUPPORT)
303#undef CONFIG_EXTRA_ENV_SETTINGS
304# define CONFIG_EXTRA_ENV_SETTINGS \
305 "dfu_alt_info_ram=uboot.bin ram 0x8000000 0x1000000;" \
306 "atf-uboot.ub ram 0x10000000 0x1000000;" \
307 "Image ram 0x80000 0x3f80000;" \
308 "system.dtb ram 0x4000000 0x100000\0" \
309 "dfu_bufsiz=0x1000\0"
310#endif
311
312#define CONFIG_SPL_TEXT_BASE 0xfffc0000
313#define CONFIG_SPL_STACK 0xfffffffc
314#define CONFIG_SPL_MAX_SIZE 0x40000
315
316
317#define CONFIG_SPL_BSS_START_ADDR 0x0
318#define CONFIG_SPL_BSS_MAX_SIZE 0x80000
319
320#if defined(CONFIG_SPL_SPI_FLASH_SUPPORT)
321# define CONFIG_SYS_SPI_KERNEL_OFFS 0x80000
322# define CONFIG_SYS_SPI_ARGS_OFFS 0xa0000
323# define CONFIG_SYS_SPI_ARGS_SIZE 0xa0000
324
325# define CONFIG_SYS_SPI_U_BOOT_OFFS 0x170000
326#endif
327
328
329#define CONFIG_SPL_FS_LOAD_ARGS_NAME "u-boot.bin"
330#define CONFIG_SYS_SPL_ARGS_ADDR 0x8000000
331
332
333#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "atf-uboot.ub"
334
335
336#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x10000000
337
338
339#ifdef CONFIG_MMC_SDHCI_ZYNQ
340# define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
341# define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0
342# define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0
343# define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0
344# define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
345#endif
346
347#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU_SUPPORT)
348# undef CONFIG_CMD_BOOTD
349# define CONFIG_SPL_ENV_SUPPORT
350# define CONFIG_SPL_HASH_SUPPORT
351# define CONFIG_ENV_MAX_ENTRIES 10
352#endif
353
354#define CONFIG_SYS_SPL_MALLOC_START 0x20000000
355#define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000
356
357#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
358# error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used"
359#endif
360
361#define CONFIG_BOARD_EARLY_INIT_F
362
363#endif
364