uboot/include/configs/xilinx_zynqmp.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Configuration for Xilinx ZynqMP
   4 * (C) Copyright 2014 - 2015 Xilinx, Inc.
   5 * Michal Simek <michal.simek@xilinx.com>
   6 *
   7 * Based on Configuration for Versatile Express
   8 */
   9
  10#ifndef __XILINX_ZYNQMP_H
  11#define __XILINX_ZYNQMP_H
  12
  13#define CONFIG_REMAKE_ELF
  14
  15/* #define CONFIG_ARMV8_SWITCH_TO_EL1 */
  16
  17/* Generic Interrupt Controller Definitions */
  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/* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
  32#if !defined(COUNTER_FREQUENCY)
  33# define COUNTER_FREQUENCY              100000000
  34#endif
  35
  36/* Size of malloc() pool */
  37#define CONFIG_SYS_MALLOC_LEN           (CONFIG_ENV_SIZE + 0x2000000)
  38
  39/* Serial setup */
  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/* BOOTP options */
  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/* SPI layer registers with MTD */
  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/* Miscellaneous configurable options */
  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/* Xilinx initial environment variables */
 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/* Monitor Command Prompt */
 189/* Console I/O Buffer Size */
 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/* Ethernet driver */
 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/* Initial environment variables */
 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/* SPL can't handle all huge variables - define just DFU */
 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/* Just random location in OCM */
 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/* u-boot is like dtb */
 329#define CONFIG_SPL_FS_LOAD_ARGS_NAME    "u-boot.bin"
 330#define CONFIG_SYS_SPL_ARGS_ADDR        0x8000000
 331
 332/* ATF is my kernel image */
 333#define CONFIG_SPL_FS_LOAD_KERNEL_NAME  "atf-uboot.ub"
 334
 335/* FIT load address for RAM boot */
 336#define CONFIG_SPL_LOAD_FIT_ADDRESS     0x10000000
 337
 338/* MMC support */
 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 /* unused */
 342# define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0 /* unused */
 343# define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR        0 /* unused */
 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 /* __XILINX_ZYNQMP_H */
 364