1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2012 Michal Simek <monstr@monstr.eu> 3*4882a593Smuzhiyun * (C) Copyright 2013 Xilinx, Inc. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Common configuration options for all Zynq boards. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __CONFIG_ZYNQ_COMMON_H 11*4882a593Smuzhiyun #define __CONFIG_ZYNQ_COMMON_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* CPU clock */ 14*4882a593Smuzhiyun #ifndef CONFIG_CPU_FREQ_HZ 15*4882a593Smuzhiyun # define CONFIG_CPU_FREQ_HZ 800000000 16*4882a593Smuzhiyun #endif 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* Cache options */ 19*4882a593Smuzhiyun #define CONFIG_SYS_L2CACHE_OFF 20*4882a593Smuzhiyun #ifndef CONFIG_SYS_L2CACHE_OFF 21*4882a593Smuzhiyun # define CONFIG_SYS_L2_PL310 22*4882a593Smuzhiyun # define CONFIG_SYS_PL310_BASE 0xf8f02000 23*4882a593Smuzhiyun #endif 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define ZYNQ_SCUTIMER_BASEADDR 0xF8F00600 26*4882a593Smuzhiyun #define CONFIG_SYS_TIMERBASE ZYNQ_SCUTIMER_BASEADDR 27*4882a593Smuzhiyun #define CONFIG_SYS_TIMER_COUNTS_DOWN 28*4882a593Smuzhiyun #define CONFIG_SYS_TIMER_COUNTER (CONFIG_SYS_TIMERBASE + 0x4) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* Serial drivers */ 31*4882a593Smuzhiyun /* The following table includes the supported baudrates */ 32*4882a593Smuzhiyun #define CONFIG_SYS_BAUDRATE_TABLE \ 33*4882a593Smuzhiyun {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400} 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define CONFIG_ARM_DCC 36*4882a593Smuzhiyun #define CONFIG_ZYNQ_SERIAL 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun /* Ethernet driver */ 39*4882a593Smuzhiyun #if defined(CONFIG_ZYNQ_GEM) 40*4882a593Smuzhiyun # define CONFIG_MII 41*4882a593Smuzhiyun # define CONFIG_SYS_FAULT_ECHO_LINK_DOWN 42*4882a593Smuzhiyun # define CONFIG_PHY_MARVELL 43*4882a593Smuzhiyun # define CONFIG_PHY_REALTEK 44*4882a593Smuzhiyun # define CONFIG_PHY_XILINX 45*4882a593Smuzhiyun # define CONFIG_BOOTP_BOOTPATH 46*4882a593Smuzhiyun # define CONFIG_BOOTP_GATEWAY 47*4882a593Smuzhiyun # define CONFIG_BOOTP_HOSTNAME 48*4882a593Smuzhiyun # define CONFIG_BOOTP_MAY_FAIL 49*4882a593Smuzhiyun #endif 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* SPI */ 52*4882a593Smuzhiyun #ifdef CONFIG_ZYNQ_SPI 53*4882a593Smuzhiyun #endif 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* QSPI */ 56*4882a593Smuzhiyun #ifdef CONFIG_ZYNQ_QSPI 57*4882a593Smuzhiyun # define CONFIG_SF_DEFAULT_SPEED 30000000 58*4882a593Smuzhiyun #endif 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* NOR */ 61*4882a593Smuzhiyun #ifdef CONFIG_MTD_NOR_FLASH 62*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_BASE 0xE2000000 63*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_SIZE (16 * 1024 * 1024) 64*4882a593Smuzhiyun # define CONFIG_SYS_MAX_FLASH_BANKS 1 65*4882a593Smuzhiyun # define CONFIG_SYS_MAX_FLASH_SECT 512 66*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_ERASE_TOUT 1000 67*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_WRITE_TOUT 5000 68*4882a593Smuzhiyun # define CONFIG_FLASH_SHOW_PROGRESS 10 69*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_CFI 70*4882a593Smuzhiyun # undef CONFIG_SYS_FLASH_EMPTY_INFO 71*4882a593Smuzhiyun # define CONFIG_FLASH_CFI_DRIVER 72*4882a593Smuzhiyun # undef CONFIG_SYS_FLASH_PROTECTION 73*4882a593Smuzhiyun # define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 74*4882a593Smuzhiyun #endif 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun #ifdef CONFIG_NAND_ZYNQ 77*4882a593Smuzhiyun #define CONFIG_SYS_MAX_NAND_DEVICE 1 78*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ONFI_DETECTION 79*4882a593Smuzhiyun #endif 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* MMC */ 82*4882a593Smuzhiyun #if defined(CONFIG_MMC_SDHCI_ZYNQ) 83*4882a593Smuzhiyun # define CONFIG_ZYNQ_SDHCI_MAX_FREQ 52000000 84*4882a593Smuzhiyun #endif 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun #ifdef CONFIG_USB_EHCI_ZYNQ 87*4882a593Smuzhiyun # define CONFIG_EHCI_IS_TDI 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun # define CONFIG_SYS_DFU_DATA_BUF_SIZE 0x600000 90*4882a593Smuzhiyun # define DFU_DEFAULT_POLL_TIMEOUT 300 91*4882a593Smuzhiyun # define CONFIG_USB_CABLE_CHECK 92*4882a593Smuzhiyun # define CONFIG_THOR_RESET_OFF 93*4882a593Smuzhiyun # define CONFIG_USB_FUNCTION_THOR 94*4882a593Smuzhiyun # define DFU_ALT_INFO_RAM \ 95*4882a593Smuzhiyun "dfu_ram_info=" \ 96*4882a593Smuzhiyun "set dfu_alt_info " \ 97*4882a593Smuzhiyun "${kernel_image} ram 0x3000000 0x500000\\\\;" \ 98*4882a593Smuzhiyun "${devicetree_image} ram 0x2A00000 0x20000\\\\;" \ 99*4882a593Smuzhiyun "${ramdisk_image} ram 0x2000000 0x600000\0" \ 100*4882a593Smuzhiyun "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \ 101*4882a593Smuzhiyun "thor_ram=run dfu_ram_info && thordown 0 ram 0\0" 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun # if defined(CONFIG_MMC_SDHCI_ZYNQ) 104*4882a593Smuzhiyun # define DFU_ALT_INFO_MMC \ 105*4882a593Smuzhiyun "dfu_mmc_info=" \ 106*4882a593Smuzhiyun "set dfu_alt_info " \ 107*4882a593Smuzhiyun "${kernel_image} fat 0 1\\\\;" \ 108*4882a593Smuzhiyun "${devicetree_image} fat 0 1\\\\;" \ 109*4882a593Smuzhiyun "${ramdisk_image} fat 0 1\0" \ 110*4882a593Smuzhiyun "dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0\0" \ 111*4882a593Smuzhiyun "thor_mmc=run dfu_mmc_info && thordown 0 mmc 0\0" 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun # define DFU_ALT_INFO \ 114*4882a593Smuzhiyun DFU_ALT_INFO_RAM \ 115*4882a593Smuzhiyun DFU_ALT_INFO_MMC 116*4882a593Smuzhiyun # else 117*4882a593Smuzhiyun # define DFU_ALT_INFO \ 118*4882a593Smuzhiyun DFU_ALT_INFO_RAM 119*4882a593Smuzhiyun # endif 120*4882a593Smuzhiyun #endif 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #if !defined(DFU_ALT_INFO) 123*4882a593Smuzhiyun # define DFU_ALT_INFO 124*4882a593Smuzhiyun #endif 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun #if defined(CONFIG_MMC_SDHCI_ZYNQ) || defined(CONFIG_ZYNQ_USB) 127*4882a593Smuzhiyun # define CONFIG_SUPPORT_VFAT 128*4882a593Smuzhiyun #endif 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun #if defined(CONFIG_ZYNQ_I2C0) || defined(CONFIG_ZYNQ_I2C1) 131*4882a593Smuzhiyun #define CONFIG_SYS_I2C_ZYNQ 132*4882a593Smuzhiyun #endif 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun /* I2C */ 135*4882a593Smuzhiyun #if defined(CONFIG_SYS_I2C_ZYNQ) 136*4882a593Smuzhiyun # define CONFIG_SYS_I2C 137*4882a593Smuzhiyun # define CONFIG_SYS_I2C_ZYNQ_SPEED 100000 138*4882a593Smuzhiyun # define CONFIG_SYS_I2C_ZYNQ_SLAVE 0 139*4882a593Smuzhiyun #endif 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun /* EEPROM */ 142*4882a593Smuzhiyun #ifdef CONFIG_ZYNQ_EEPROM 143*4882a593Smuzhiyun # define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 144*4882a593Smuzhiyun # define CONFIG_SYS_I2C_EEPROM_ADDR 0x54 145*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4 146*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5 147*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_SIZE 1024 /* Bytes */ 148*4882a593Smuzhiyun #endif 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun /* Total Size of Environment Sector */ 151*4882a593Smuzhiyun #define CONFIG_ENV_SIZE (128 << 10) 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun /* Allow to overwrite serial and ethaddr */ 154*4882a593Smuzhiyun #define CONFIG_ENV_OVERWRITE 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun /* Environment */ 157*4882a593Smuzhiyun #ifndef CONFIG_ENV_IS_NOWHERE 158*4882a593Smuzhiyun # ifdef CONFIG_MTD_NOR_FLASH 159*4882a593Smuzhiyun /* Environment in NOR flash */ 160*4882a593Smuzhiyun # elif defined(CONFIG_ZYNQ_QSPI) 161*4882a593Smuzhiyun /* Environment in Serial Flash */ 162*4882a593Smuzhiyun # endif 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun # define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE 165*4882a593Smuzhiyun # define CONFIG_ENV_OFFSET 0xE0000 166*4882a593Smuzhiyun #endif 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun /* enable preboot to be loaded before CONFIG_BOOTDELAY */ 169*4882a593Smuzhiyun #define CONFIG_PREBOOT 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* Boot configuration */ 172*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND "run $modeboot || run distro_bootcmd" 173*4882a593Smuzhiyun #define CONFIG_SYS_LOAD_ADDR 0 /* default? */ 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun /* Distro boot enablement */ 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun #ifdef CONFIG_SPL_BUILD 178*4882a593Smuzhiyun #define BOOTENV 179*4882a593Smuzhiyun #else 180*4882a593Smuzhiyun #include <config_distro_defaults.h> 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun #ifdef CONFIG_CMD_MMC 183*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) 184*4882a593Smuzhiyun #else 185*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_MMC(func) 186*4882a593Smuzhiyun #endif 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #ifdef CONFIG_CMD_USB 189*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) 190*4882a593Smuzhiyun #else 191*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_USB(func) 192*4882a593Smuzhiyun #endif 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun #if defined(CONFIG_CMD_PXE) 195*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na) 196*4882a593Smuzhiyun #else 197*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_PXE(func) 198*4882a593Smuzhiyun #endif 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun #if defined(CONFIG_CMD_DHCP) 201*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na) 202*4882a593Smuzhiyun #else 203*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES_DHCP(func) 204*4882a593Smuzhiyun #endif 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES(func) \ 207*4882a593Smuzhiyun BOOT_TARGET_DEVICES_MMC(func) \ 208*4882a593Smuzhiyun BOOT_TARGET_DEVICES_USB(func) \ 209*4882a593Smuzhiyun BOOT_TARGET_DEVICES_PXE(func) \ 210*4882a593Smuzhiyun BOOT_TARGET_DEVICES_DHCP(func) 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun #include <config_distro_bootcmd.h> 213*4882a593Smuzhiyun #endif /* CONFIG_SPL_BUILD */ 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun /* Default environment */ 216*4882a593Smuzhiyun #ifndef CONFIG_EXTRA_ENV_SETTINGS 217*4882a593Smuzhiyun #define CONFIG_EXTRA_ENV_SETTINGS \ 218*4882a593Smuzhiyun "fit_image=fit.itb\0" \ 219*4882a593Smuzhiyun "load_addr=0x2000000\0" \ 220*4882a593Smuzhiyun "fit_size=0x800000\0" \ 221*4882a593Smuzhiyun "flash_off=0x100000\0" \ 222*4882a593Smuzhiyun "nor_flash_off=0xE2100000\0" \ 223*4882a593Smuzhiyun "fdt_high=0x20000000\0" \ 224*4882a593Smuzhiyun "initrd_high=0x20000000\0" \ 225*4882a593Smuzhiyun "loadbootenv_addr=0x2000000\0" \ 226*4882a593Smuzhiyun "fdt_addr_r=0x1f00000\0" \ 227*4882a593Smuzhiyun "pxefile_addr_r=0x2000000\0" \ 228*4882a593Smuzhiyun "kernel_addr_r=0x2000000\0" \ 229*4882a593Smuzhiyun "scriptaddr=0x3000000\0" \ 230*4882a593Smuzhiyun "ramdisk_addr_r=0x3100000\0" \ 231*4882a593Smuzhiyun "bootenv=uEnv.txt\0" \ 232*4882a593Smuzhiyun "bootenv_dev=mmc\0" \ 233*4882a593Smuzhiyun "loadbootenv=load ${bootenv_dev} 0 ${loadbootenv_addr} ${bootenv}\0" \ 234*4882a593Smuzhiyun "importbootenv=echo Importing environment from ${bootenv_dev} ...; " \ 235*4882a593Smuzhiyun "env import -t ${loadbootenv_addr} $filesize\0" \ 236*4882a593Smuzhiyun "bootenv_existence_test=test -e ${bootenv_dev} 0 /${bootenv}\0" \ 237*4882a593Smuzhiyun "setbootenv=if env run bootenv_existence_test; then " \ 238*4882a593Smuzhiyun "if env run loadbootenv; then " \ 239*4882a593Smuzhiyun "env run importbootenv; " \ 240*4882a593Smuzhiyun "fi; " \ 241*4882a593Smuzhiyun "fi; \0" \ 242*4882a593Smuzhiyun "sd_loadbootenv=set bootenv_dev mmc && " \ 243*4882a593Smuzhiyun "run setbootenv \0" \ 244*4882a593Smuzhiyun "usb_loadbootenv=set bootenv_dev usb && usb start && run setbootenv \0" \ 245*4882a593Smuzhiyun "preboot=if test $modeboot = sdboot; then " \ 246*4882a593Smuzhiyun "run sd_loadbootenv; " \ 247*4882a593Smuzhiyun "echo Checking if uenvcmd is set ...; " \ 248*4882a593Smuzhiyun "if test -n $uenvcmd; then " \ 249*4882a593Smuzhiyun "echo Running uenvcmd ...; " \ 250*4882a593Smuzhiyun "run uenvcmd; " \ 251*4882a593Smuzhiyun "fi; " \ 252*4882a593Smuzhiyun "fi; \0" \ 253*4882a593Smuzhiyun "norboot=echo Copying FIT from NOR flash to RAM... && " \ 254*4882a593Smuzhiyun "cp.b ${nor_flash_off} ${load_addr} ${fit_size} && " \ 255*4882a593Smuzhiyun "bootm ${load_addr}\0" \ 256*4882a593Smuzhiyun "sdboot=echo Copying FIT from SD to RAM... && " \ 257*4882a593Smuzhiyun "load mmc 0 ${load_addr} ${fit_image} && " \ 258*4882a593Smuzhiyun "bootm ${load_addr}\0" \ 259*4882a593Smuzhiyun "jtagboot=echo TFTPing FIT to RAM... && " \ 260*4882a593Smuzhiyun "tftpboot ${load_addr} ${fit_image} && " \ 261*4882a593Smuzhiyun "bootm ${load_addr}\0" \ 262*4882a593Smuzhiyun "usbboot=if usb start; then " \ 263*4882a593Smuzhiyun "echo Copying FIT from USB to RAM... && " \ 264*4882a593Smuzhiyun "load usb 0 ${load_addr} ${fit_image} && " \ 265*4882a593Smuzhiyun "bootm ${load_addr}; fi\0" \ 266*4882a593Smuzhiyun DFU_ALT_INFO \ 267*4882a593Smuzhiyun BOOTENV 268*4882a593Smuzhiyun #endif 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun /* Miscellaneous configurable options */ 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun #define CONFIG_CMDLINE_EDITING 273*4882a593Smuzhiyun #define CONFIG_AUTO_COMPLETE 274*4882a593Smuzhiyun #define CONFIG_SYS_LONGHELP 275*4882a593Smuzhiyun #define CONFIG_CLOCKS 276*4882a593Smuzhiyun #define CONFIG_SYS_MAXARGS 32 /* max number of command args */ 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun #ifndef CONFIG_NR_DRAM_BANKS 279*4882a593Smuzhiyun # define CONFIG_NR_DRAM_BANKS 1 280*4882a593Smuzhiyun #endif 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_START 0 283*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_END 0x1000 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun #define CONFIG_SYS_MALLOC_LEN 0x1400000 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun #define CONFIG_SYS_INIT_RAM_ADDR 0xFFFF0000 288*4882a593Smuzhiyun #define CONFIG_SYS_INIT_RAM_SIZE 0x1000 289*4882a593Smuzhiyun #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 290*4882a593Smuzhiyun CONFIG_SYS_INIT_RAM_SIZE - \ 291*4882a593Smuzhiyun GENERATED_GBL_DATA_SIZE) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun /* Enable the PL to be downloaded */ 294*4882a593Smuzhiyun #define CONFIG_FPGA 295*4882a593Smuzhiyun #define CONFIG_FPGA_XILINX 296*4882a593Smuzhiyun #define CONFIG_FPGA_ZYNQPL 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun /* FIT support */ 299*4882a593Smuzhiyun #define CONFIG_IMAGE_FORMAT_LEGACY /* enable also legacy image format */ 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun /* FDT support */ 302*4882a593Smuzhiyun #define CONFIG_DISPLAY_BOARDINFO_LATE 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun /* Extend size of kernel image for uncompression */ 305*4882a593Smuzhiyun #define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024) 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun /* Boot FreeBSD/vxWorks from an ELF image */ 308*4882a593Smuzhiyun #define CONFIG_SYS_MMC_MAX_DEVICE 1 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun #define CONFIG_SYS_LDSCRIPT "arch/arm/mach-zynq/u-boot.lds" 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun /* Commands */ 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun /* SPL part */ 315*4882a593Smuzhiyun #define CONFIG_SPL_FRAMEWORK 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun /* MMC support */ 318*4882a593Smuzhiyun #ifdef CONFIG_MMC_SDHCI_ZYNQ 319*4882a593Smuzhiyun #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 320*4882a593Smuzhiyun #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" 321*4882a593Smuzhiyun #endif 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun /* Disable dcache for SPL just for sure */ 324*4882a593Smuzhiyun #ifdef CONFIG_SPL_BUILD 325*4882a593Smuzhiyun #define CONFIG_SYS_DCACHE_OFF 326*4882a593Smuzhiyun #undef CONFIG_FPGA 327*4882a593Smuzhiyun #endif 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun /* Address in RAM where the parameters must be copied by SPL. */ 330*4882a593Smuzhiyun #define CONFIG_SYS_SPL_ARGS_ADDR 0x10000000 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun #define CONFIG_SPL_FS_LOAD_ARGS_NAME "system.dtb" 333*4882a593Smuzhiyun #define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage" 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun /* Not using MMC raw mode - just for compilation purpose */ 336*4882a593Smuzhiyun #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0 337*4882a593Smuzhiyun #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0 338*4882a593Smuzhiyun #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun /* qspi mode is working fine */ 341*4882a593Smuzhiyun #ifdef CONFIG_ZYNQ_QSPI 342*4882a593Smuzhiyun #define CONFIG_SPL_SPI_LOAD 343*4882a593Smuzhiyun #define CONFIG_SYS_SPI_U_BOOT_OFFS 0x100000 344*4882a593Smuzhiyun #define CONFIG_SYS_SPI_ARGS_OFFS 0x200000 345*4882a593Smuzhiyun #define CONFIG_SYS_SPI_ARGS_SIZE 0x80000 346*4882a593Smuzhiyun #define CONFIG_SYS_SPI_KERNEL_OFFS (CONFIG_SYS_SPI_ARGS_OFFS + \ 347*4882a593Smuzhiyun CONFIG_SYS_SPI_ARGS_SIZE) 348*4882a593Smuzhiyun #endif 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /* for booting directly linux */ 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun /* SP location before relocation, must use scratch RAM */ 353*4882a593Smuzhiyun #define CONFIG_SPL_TEXT_BASE 0x0 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun /* 3 * 64kB blocks of OCM - one is on the top because of bootrom */ 356*4882a593Smuzhiyun #define CONFIG_SPL_MAX_SIZE 0x30000 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun /* The highest 64k OCM address */ 359*4882a593Smuzhiyun #define OCM_HIGH_ADDR 0xffff0000 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun /* On the top of OCM space */ 362*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_START OCM_HIGH_ADDR 363*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_SIZE 0x2000 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun /* 366*4882a593Smuzhiyun * SPL stack position - and stack goes down 367*4882a593Smuzhiyun * 0xfffffe00 is used for putting wfi loop. 368*4882a593Smuzhiyun * Set it up as limit for now. 369*4882a593Smuzhiyun */ 370*4882a593Smuzhiyun #define CONFIG_SPL_STACK 0xfffffe00 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun /* BSS setup */ 373*4882a593Smuzhiyun #define CONFIG_SPL_BSS_START_ADDR 0x100000 374*4882a593Smuzhiyun #define CONFIG_SPL_BSS_MAX_SIZE 0x100000 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun #define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun #endif /* __CONFIG_ZYNQ_COMMON_H */ 379