1
2
3
4
5
6
7
8
9#ifndef __CONFIG_ZYNQ_COMMON_H
10#define __CONFIG_ZYNQ_COMMON_H
11
12
13#ifndef CONFIG_CPU_FREQ_HZ
14# define CONFIG_CPU_FREQ_HZ 800000000
15#endif
16
17#define CONFIG_REMAKE_ELF
18
19
20#define CONFIG_SYS_L2CACHE_OFF
21#ifndef CONFIG_SYS_L2CACHE_OFF
22# define CONFIG_SYS_L2_PL310
23# define CONFIG_SYS_PL310_BASE 0xf8f02000
24#endif
25
26#define ZYNQ_SCUTIMER_BASEADDR 0xF8F00600
27#define CONFIG_SYS_TIMERBASE ZYNQ_SCUTIMER_BASEADDR
28#define CONFIG_SYS_TIMER_COUNTS_DOWN
29#define CONFIG_SYS_TIMER_COUNTER (CONFIG_SYS_TIMERBASE + 0x4)
30
31
32
33#define CONFIG_SYS_BAUDRATE_TABLE \
34 {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
35
36#define CONFIG_ARM_DCC
37
38
39#if defined(CONFIG_ZYNQ_GEM)
40# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
41# define CONFIG_BOOTP_MAY_FAIL
42#endif
43
44
45#ifdef CONFIG_ZYNQ_QSPI
46# define CONFIG_SF_DEFAULT_SPEED 30000000
47#endif
48
49
50#ifdef CONFIG_MTD_NOR_FLASH
51# define CONFIG_SYS_FLASH_BASE 0xE2000000
52# define CONFIG_SYS_FLASH_SIZE (16 * 1024 * 1024)
53# define CONFIG_SYS_MAX_FLASH_BANKS 1
54# define CONFIG_SYS_MAX_FLASH_SECT 512
55# define CONFIG_SYS_FLASH_ERASE_TOUT 1000
56# define CONFIG_SYS_FLASH_WRITE_TOUT 5000
57# define CONFIG_FLASH_SHOW_PROGRESS 10
58# undef CONFIG_SYS_FLASH_EMPTY_INFO
59#endif
60
61#ifdef CONFIG_NAND_ZYNQ
62#define CONFIG_SYS_MAX_NAND_DEVICE 1
63#define CONFIG_SYS_NAND_ONFI_DETECTION
64#endif
65
66#ifdef CONFIG_USB_EHCI_ZYNQ
67# define CONFIG_EHCI_IS_TDI
68
69# define CONFIG_SYS_DFU_DATA_BUF_SIZE 0x600000
70# define DFU_DEFAULT_POLL_TIMEOUT 300
71# define CONFIG_THOR_RESET_OFF
72# define DFU_ALT_INFO_RAM \
73 "dfu_ram_info=" \
74 "set dfu_alt_info " \
75 "${kernel_image} ram 0x3000000 0x500000\\\\;" \
76 "${devicetree_image} ram 0x2A00000 0x20000\\\\;" \
77 "${ramdisk_image} ram 0x2000000 0x600000\0" \
78 "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
79 "thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
80
81# if defined(CONFIG_MMC_SDHCI_ZYNQ)
82# define DFU_ALT_INFO_MMC \
83 "dfu_mmc_info=" \
84 "set dfu_alt_info " \
85 "${kernel_image} fat 0 1\\\\;" \
86 "${devicetree_image} fat 0 1\\\\;" \
87 "${ramdisk_image} fat 0 1\0" \
88 "dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0\0" \
89 "thor_mmc=run dfu_mmc_info && thordown 0 mmc 0\0"
90
91# define DFU_ALT_INFO \
92 DFU_ALT_INFO_RAM \
93 DFU_ALT_INFO_MMC
94# else
95# define DFU_ALT_INFO \
96 DFU_ALT_INFO_RAM
97# endif
98#endif
99
100#if !defined(DFU_ALT_INFO)
101# define DFU_ALT_INFO
102#endif
103
104
105#if defined(CONFIG_SYS_I2C_ZYNQ)
106# define CONFIG_SYS_I2C
107#endif
108
109
110#ifdef CONFIG_ENV_IS_IN_EEPROM
111# define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
112# define CONFIG_SYS_I2C_EEPROM_ADDR 0x54
113# define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4
114# define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
115# define CONFIG_SYS_EEPROM_SIZE 1024
116# define CONFIG_SYS_I2C_MUX_ADDR 0x74
117# define CONFIG_SYS_I2C_MUX_EEPROM_SEL 0x4
118
119
120# define CONFIG_EXTRA_ENV_SETTINGS
121#endif
122
123
124#define CONFIG_ENV_OVERWRITE
125
126
127#define CONFIG_PREBOOT
128
129
130#define CONFIG_SYS_LOAD_ADDR 0
131
132#ifdef CONFIG_SPL_BUILD
133#define BOOTENV
134#else
135
136#ifdef CONFIG_CMD_MMC
137#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0)
138#else
139#define BOOT_TARGET_DEVICES_MMC(func)
140#endif
141
142#ifdef CONFIG_CMD_USB
143#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0)
144#else
145#define BOOT_TARGET_DEVICES_USB(func)
146#endif
147
148#if defined(CONFIG_CMD_PXE) && defined(CONFIG_CMD_DHCP)
149#define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na)
150#else
151#define BOOT_TARGET_DEVICES_PXE(func)
152#endif
153
154#if defined(CONFIG_CMD_DHCP)
155#define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na)
156#else
157#define BOOT_TARGET_DEVICES_DHCP(func)
158#endif
159
160#if defined(CONFIG_ZYNQ_QSPI)
161# define BOOT_TARGET_DEVICES_QSPI(func) func(QSPI, qspi, na)
162#else
163# define BOOT_TARGET_DEVICES_QSPI(func)
164#endif
165
166#if defined(CONFIG_NAND_ZYNQ)
167# define BOOT_TARGET_DEVICES_NAND(func) func(NAND, nand, na)
168#else
169# define BOOT_TARGET_DEVICES_NAND(func)
170#endif
171
172#if defined(CONFIG_MTD_NOR_FLASH)
173# define BOOT_TARGET_DEVICES_NOR(func) func(NOR, nor, na)
174#else
175# define BOOT_TARGET_DEVICES_NOR(func)
176#endif
177
178#define BOOTENV_DEV_XILINX(devtypeu, devtypel, instance) \
179 "bootcmd_xilinx=run $modeboot\0"
180
181#define BOOTENV_DEV_NAME_XILINX(devtypeu, devtypel, instance) \
182 "xilinx "
183
184#define BOOTENV_DEV_QSPI(devtypeu, devtypel, instance) \
185 "bootcmd_qspi=sf probe 0 0 0 && " \
186 "sf read $scriptaddr $script_offset_f $script_size_f && " \
187 "source ${scriptaddr}; echo SCRIPT FAILED: continuing...;\0"
188
189#define BOOTENV_DEV_NAME_QSPI(devtypeu, devtypel, instance) \
190 "qspi "
191
192#define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \
193 "bootcmd_nand=nand info && " \
194 "nand read $scriptaddr $script_offset_f $script_size_f && " \
195 "source ${scriptaddr}; echo SCRIPT FAILED: continuing...;\0"
196
197#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \
198 "nand "
199
200#define BOOTENV_DEV_NOR(devtypeu, devtypel, instance) \
201 "bootcmd_nor=cp.b $scropt_offset_nor $scriptaddr $script_size_f && " \
202 "source ${scriptaddr}; echo SCRIPT FAILED: continuing...;\0"
203
204#define BOOTENV_DEV_NAME_NOR(devtypeu, devtypel, instance) \
205 "nor "
206
207#define BOOT_TARGET_DEVICES(func) \
208 BOOT_TARGET_DEVICES_MMC(func) \
209 BOOT_TARGET_DEVICES_QSPI(func) \
210 BOOT_TARGET_DEVICES_NAND(func) \
211 BOOT_TARGET_DEVICES_NOR(func) \
212 BOOT_TARGET_DEVICES_USB(func) \
213 BOOT_TARGET_DEVICES_PXE(func) \
214 BOOT_TARGET_DEVICES_DHCP(func) \
215 func(XILINX, xilinx, na)
216
217#include <config_distro_bootcmd.h>
218#endif
219
220
221#ifndef CONFIG_EXTRA_ENV_SETTINGS
222#define CONFIG_EXTRA_ENV_SETTINGS \
223 "kernel_image=uImage\0" \
224 "kernel_load_address=0x2080000\0" \
225 "ramdisk_image=uramdisk.image.gz\0" \
226 "ramdisk_load_address=0x4000000\0" \
227 "devicetree_image=devicetree.dtb\0" \
228 "devicetree_load_address=0x2000000\0" \
229 "bitstream_image=system.bit.bin\0" \
230 "boot_image=BOOT.bin\0" \
231 "loadbit_addr=0x100000\0" \
232 "loadbootenv_addr=0x2000000\0" \
233 "kernel_size=0x500000\0" \
234 "devicetree_size=0x20000\0" \
235 "ramdisk_size=0x5E0000\0" \
236 "boot_size=0xF00000\0" \
237 "fdt_high=0x20000000\0" \
238 "initrd_high=0x20000000\0" \
239 "scriptaddr=0x20000\0" \
240 "script_offser_nor=0xE2FC0000\0" \
241 "script_offset_f=0xFC0000\0" \
242 "script_size_f=0x40000\0" \
243 "bootenv=uEnv.txt\0" \
244 "pxefile_addr_r=0x10000000\0" \
245 "kernel_addr_r=0x80000\0" \
246 "fdt_addr_r=0x1000\0" \
247 "loadbootenv=load mmc 0 ${loadbootenv_addr} ${bootenv}\0" \
248 "importbootenv=echo Importing environment from SD ...; " \
249 "env import -t ${loadbootenv_addr} $filesize\0" \
250 "sd_uEnvtxt_existence_test=test -e mmc 0 /uEnv.txt\0" \
251 "preboot=if test $modeboot = sdboot && env run sd_uEnvtxt_existence_test; " \
252 "then if env run loadbootenv; " \
253 "then env run importbootenv; " \
254 "fi; " \
255 "fi; \0" \
256 "mmc_loadbit=echo Loading bitstream from SD/MMC/eMMC to RAM.. && " \
257 "mmcinfo && " \
258 "load mmc 0 ${loadbit_addr} ${bitstream_image} && " \
259 "fpga load 0 ${loadbit_addr} ${filesize}\0" \
260 "norboot=run xilinxcmd && " \
261 "echo Copying Linux from NOR flash to RAM... && " \
262 "cp.b 0xE2100000 ${kernel_load_address} ${kernel_size} && " \
263 "cp.b 0xE2600000 ${devicetree_load_address} ${devicetree_size} && " \
264 "echo Copying ramdisk... && " \
265 "cp.b 0xE2620000 ${ramdisk_load_address} ${ramdisk_size} && " \
266 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
267 "qspiboot=run xilinxcmd && " \
268 " echo Copying Linux from QSPI flash to RAM... && " \
269 "sf probe 0 0 0 && " \
270 "sf read ${kernel_load_address} 0x100000 ${kernel_size} && " \
271 "sf read ${devicetree_load_address} 0x600000 ${devicetree_size} && " \
272 "echo Copying ramdisk... && " \
273 "sf read ${ramdisk_load_address} 0x620000 ${ramdisk_size} && " \
274 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
275 "uenvboot=" \
276 "if run loadbootenv; then " \
277 "echo Loaded environment from ${bootenv}; " \
278 "run importbootenv; " \
279 "fi; " \
280 "if test -n $uenvcmd; then " \
281 "echo Running uenvcmd ...; " \
282 "run uenvcmd; " \
283 "fi\0" \
284 "sdboot=run xilinxcmd && if mmcinfo; then " \
285 "run uenvboot; " \
286 "echo Copying Linux from SD to RAM... && " \
287 "load mmc 0 ${kernel_load_address} ${kernel_image} && " \
288 "load mmc 0 ${devicetree_load_address} ${devicetree_image} && " \
289 "load mmc 0 ${ramdisk_load_address} ${ramdisk_image} && " \
290 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}; " \
291 "fi\0" \
292 "usbboot=run xilinxcmd && if usb start; then " \
293 "run uenvboot; " \
294 "echo Copying Linux from USB to RAM... && " \
295 "load usb 0 ${kernel_load_address} ${kernel_image} && " \
296 "load usb 0 ${devicetree_load_address} ${devicetree_image} && " \
297 "load usb 0 ${ramdisk_load_address} ${ramdisk_image} && " \
298 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}; " \
299 "fi\0" \
300 "nandboot=run xilinxcmd && " \
301 "echo Copying Linux from NAND flash to RAM... && " \
302 "nand read ${kernel_load_address} 0x100000 ${kernel_size} && " \
303 "nand read ${devicetree_load_address} 0x600000 ${devicetree_size} && " \
304 "echo Copying ramdisk... && " \
305 "nand read ${ramdisk_load_address} 0x620000 ${ramdisk_size} && " \
306 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
307 "jtagboot=run xilinxcmd && echo TFTPing Linux to RAM... && " \
308 "tftpboot ${kernel_load_address} ${kernel_image} && " \
309 "tftpboot ${devicetree_load_address} ${devicetree_image} && " \
310 "tftpboot ${ramdisk_load_address} ${ramdisk_image} && " \
311 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
312 "rsa_norboot=run xilinxcmd && " \
313 "echo Copying Image from NOR flash to RAM... && " \
314 "cp.b 0xE2100000 0x100000 ${boot_size} && " \
315 "zynqrsa 0x100000 && " \
316 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
317 "rsa_nandboot=run xilinxcmd && " \
318 "echo Copying Image from NAND flash to RAM... && " \
319 "nand read 0x100000 0x0 ${boot_size} && " \
320 "zynqrsa 0x100000 && " \
321 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
322 "rsa_qspiboot=run xilinxcmd && " \
323 "echo Copying Image from QSPI flash to RAM... && " \
324 "sf probe 0 0 0 && " \
325 "sf read 0x100000 0x0 ${boot_size} && " \
326 "zynqrsa 0x100000 && " \
327 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
328 "rsa_sdboot=run xilinxcmd && echo Copying Image from SD to RAM... && " \
329 "load mmc 0 0x100000 ${boot_image} && " \
330 "zynqrsa 0x100000 && " \
331 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
332 "rsa_jtagboot=run xilinxcmd && echo TFTPing Image to RAM... && " \
333 "tftpboot 0x100000 ${boot_image} && " \
334 "zynqrsa 0x100000 && " \
335 "bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0" \
336 DFU_ALT_INFO \
337 "xilinxcmd=echo !!! && " \
338 "echo !!! Booting cmd is deprecated (will be removed in 2020). && " \
339 "echo !!! Please move to distro bootcmd. && echo !!!\0" \
340 BOOTENV
341#endif
342
343
344
345#define CONFIG_CLOCKS
346#define CONFIG_SYS_MAXARGS 32
347#define CONFIG_SYS_CBSIZE 2048
348#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
349 sizeof(CONFIG_SYS_PROMPT) + 16)
350
351#define CONFIG_SYS_MEMTEST_START 0
352#define CONFIG_SYS_MEMTEST_END 0x1000
353
354#define CONFIG_SYS_INIT_RAM_ADDR 0xFFFF0000
355#define CONFIG_SYS_INIT_RAM_SIZE 0x2000
356#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
357 CONFIG_SYS_INIT_RAM_SIZE - \
358 GENERATED_GBL_DATA_SIZE)
359
360
361
362#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024)
363
364
365#define CONFIG_SYS_MMC_MAX_DEVICE 1
366
367#define CONFIG_SYS_LDSCRIPT "arch/arm/mach-zynq/u-boot.lds"
368
369#undef CONFIG_BOOTM_NETBSD
370
371
372#ifdef CONFIG_MMC_SDHCI_ZYNQ
373#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
374#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
375#endif
376
377
378#ifdef CONFIG_SPL_BUILD
379#define CONFIG_SYS_DCACHE_OFF
380#endif
381
382
383#define CONFIG_SYS_SPL_ARGS_ADDR 0x10000000
384
385#define CONFIG_SPL_FS_LOAD_ARGS_NAME "system.dtb"
386#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
387
388
389#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0
390#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0
391#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0
392
393
394#ifdef CONFIG_ZYNQ_QSPI
395#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x100000
396#define CONFIG_SYS_SPI_ARGS_OFFS 0x200000
397#define CONFIG_SYS_SPI_ARGS_SIZE 0x80000
398#define CONFIG_SYS_SPI_KERNEL_OFFS (CONFIG_SYS_SPI_ARGS_OFFS + \
399 CONFIG_SYS_SPI_ARGS_SIZE)
400#endif
401
402
403#define CONFIG_SPL_TEXT_BASE 0x0
404
405
406#define CONFIG_SPL_MAX_SIZE 0x30000
407
408
409#define CONFIG_SYS_SPL_MALLOC_START CONFIG_SPL_STACK_R_ADDR
410#define CONFIG_SYS_SPL_MALLOC_SIZE 0x2000000
411
412
413
414
415
416
417#define CONFIG_SPL_STACK 0xfffffe00
418
419
420#define CONFIG_SPL_BSS_START_ADDR 0x100000
421#define CONFIG_SPL_BSS_MAX_SIZE 0x100000
422
423#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x10000000
424
425#define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE
426
427#endif
428