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@amd.com> 6 * 7 * Based on Configuration for Versatile Express 8 */ 9 10#ifndef __XILINX_ZYNQMP_H 11#define __XILINX_ZYNQMP_H 12 13/* Generic Interrupt Controller Definitions */ 14#define GICD_BASE 0xF9010000 15#define GICC_BASE 0xF9020000 16 17/* Serial setup */ 18#define CFG_SYS_BAUDRATE_TABLE \ 19 { 4800, 9600, 19200, 38400, 57600, 115200 } 20 21/* GUIDs for capsule updatable firmware images */ 22#define XILINX_BOOT_IMAGE_GUID \ 23 EFI_GUID(0xde6066e8, 0x0256, 0x4fad, 0x82, 0x38, \ 24 0xe4, 0x06, 0xe2, 0x74, 0xc4, 0xcf) 25 26#define XILINX_UBOOT_IMAGE_GUID \ 27 EFI_GUID(0xcf9ecfd4, 0x938b, 0x41c5, 0x85, 0x51, \ 28 0x1f, 0x88, 0x3a, 0xb7, 0xdc, 0x18) 29 30/* Miscellaneous configurable options */ 31 32#if defined(CONFIG_USB_STORAGE) 33#define DFU_DEFAULT_POLL_TIMEOUT 300 34 35# define PARTS_DEFAULT \ 36 "partitions=uuid_disk=${uuid_gpt_disk};" \ 37 "name=""boot"",size=16M,uuid=${uuid_gpt_boot};" \ 38 "name=""Linux"",size=-M,uuid=${uuid_gpt_Linux}\0" 39#endif 40 41#if !defined(PARTS_DEFAULT) 42# define PARTS_DEFAULT 43#endif 44 45/* Console I/O Buffer Size */ 46 47/* Ethernet driver */ 48#if defined(CONFIG_ZYNQ_GEM) 49# define PHY_ANEG_TIMEOUT 20000 50#endif 51 52#define ENV_MEM_LAYOUT_SETTINGS \ 53 "fdt_addr_r=0x40000000\0" \ 54 "fdt_size_r=0x400000\0" \ 55 "pxefile_addr_r=0x10000000\0" \ 56 "kernel_addr_r=0x18000000\0" \ 57 "kernel_size_r=0x10000000\0" \ 58 "kernel_comp_addr_r=0x30000000\0" \ 59 "kernel_comp_size=0x3C00000\0" \ 60 "ramdisk_addr_r=0x02100000\0" \ 61 "script_size_f=0x80000\0" \ 62 "stdin=serial\0" \ 63 "stdout=serial,vidconsole\0" \ 64 "stderr=serial,vidconsole\0" \ 65 66#if defined(CONFIG_DISTRO_DEFAULTS) 67 68#if defined(CONFIG_MMC_SDHCI_ZYNQ) 69# define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) func(MMC, mmc, 1) 70#else 71# define BOOT_TARGET_DEVICES_MMC(func) 72#endif 73 74#if defined(CONFIG_SATA_CEVA) 75# define BOOT_TARGET_DEVICES_SCSI(func) func(SCSI, scsi, 0) 76#else 77# define BOOT_TARGET_DEVICES_SCSI(func) 78#endif 79 80#if defined(CONFIG_USB_STORAGE) 81# define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) func(USB, usb, 1) 82#else 83# define BOOT_TARGET_DEVICES_USB(func) 84#endif 85 86#if defined(CONFIG_CMD_PXE) && defined(CONFIG_CMD_DHCP) 87# define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na) 88#else 89# define BOOT_TARGET_DEVICES_PXE(func) 90#endif 91 92#if defined(CONFIG_CMD_DHCP) 93# define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na) 94#else 95# define BOOT_TARGET_DEVICES_DHCP(func) 96#endif 97 98#if defined(CONFIG_ZYNQMP_GQSPI) 99# define BOOT_TARGET_DEVICES_QSPI(func) func(QSPI, qspi, 0) 100#else 101# define BOOT_TARGET_DEVICES_QSPI(func) 102#endif 103 104#if defined(CONFIG_NAND_ARASAN) 105# define BOOT_TARGET_DEVICES_NAND(func) func(NAND, nand, 0) 106#else 107# define BOOT_TARGET_DEVICES_NAND(func) 108#endif 109 110#define BOOTENV_DEV_QSPI(devtypeu, devtypel, instance) \ 111 "bootcmd_" #devtypel #instance "=sf probe " #instance " 0 0 && " \ 112 "sf read $scriptaddr $script_offset_f $script_size_f && " \ 113 "echo QSPI: Trying to boot script at ${scriptaddr} && " \ 114 "source ${scriptaddr}; echo QSPI: SCRIPT FAILED: continuing...;\0" 115 116#define BOOTENV_DEV_NAME_QSPI(devtypeu, devtypel, instance) \ 117 #devtypel #instance " " 118 119#define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \ 120 "bootcmd_" #devtypel #instance "= nand info && " \ 121 "nand read $scriptaddr $script_offset_f $script_size_f && " \ 122 "echo NAND: Trying to boot script at ${scriptaddr} && " \ 123 "source ${scriptaddr}; echo NAND: SCRIPT FAILED: continuing...;\0" 124 125#define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \ 126 #devtypel #instance " " 127 128#define BOOT_TARGET_DEVICES_JTAG(func) func(JTAG, jtag, na) 129 130#define BOOTENV_DEV_JTAG(devtypeu, devtypel, instance) \ 131 "bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && " \ 132 "source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...;\0" 133 134#define BOOTENV_DEV_NAME_JTAG(devtypeu, devtypel, instance) \ 135 "jtag " 136 137#define BOOT_TARGET_DEVICES_USB_DFU(func) \ 138 func(USB_DFU, usb_dfu, 0) func(USB_DFU, usb_dfu, 1) 139 140#define BOOTENV_DEV_USB_DFU(devtypeu, devtypel, instance) \ 141 "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \ 142 "$scriptaddr $script_size_f && " \ 143 "dfu " #instance " ram " #instance " 60 && " \ 144 "echo DFU" #instance ": Trying to boot script at ${scriptaddr} && " \ 145 "source ${scriptaddr}; " \ 146 "echo DFU" #instance ": SCRIPT FAILED: continuing...;\0" 147 148#define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance) \ 149 "" 150 151#define BOOT_TARGET_DEVICES_USB_THOR(func) \ 152 func(USB_THOR, usb_thor, 0) func(USB_THOR, usb_thor, 1) 153 154#define BOOTENV_DEV_USB_THOR(devtypeu, devtypel, instance) \ 155 "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \ 156 "$scriptaddr $script_size_f && " \ 157 "thordown " #instance " ram " #instance " && " \ 158 "echo THOR" #instance ": Trying to boot script at ${scriptaddr} && " \ 159 "source ${scriptaddr}; " \ 160 "echo THOR" #instance ": SCRIPT FAILED: continuing...;\0" 161 162#define BOOTENV_DEV_NAME_USB_THOR(devtypeu, devtypel, instance) \ 163 "" 164 165#define BOOT_TARGET_DEVICES(func) \ 166 BOOT_TARGET_DEVICES_JTAG(func) \ 167 BOOT_TARGET_DEVICES_MMC(func) \ 168 BOOT_TARGET_DEVICES_QSPI(func) \ 169 BOOT_TARGET_DEVICES_NAND(func) \ 170 BOOT_TARGET_DEVICES_USB_DFU(func) \ 171 BOOT_TARGET_DEVICES_USB_THOR(func) \ 172 BOOT_TARGET_DEVICES_USB(func) \ 173 BOOT_TARGET_DEVICES_SCSI(func) \ 174 BOOT_TARGET_DEVICES_PXE(func) \ 175 BOOT_TARGET_DEVICES_DHCP(func) 176 177#include <config_distro_bootcmd.h> 178 179#else /* CONFIG_DISTRO_DEFAULTS */ 180# define BOOTENV 181#endif /* CONFIG_DISTRO_DEFAULTS */ 182 183/* Initial environment variables */ 184#ifndef CFG_EXTRA_ENV_SETTINGS 185#define CFG_EXTRA_ENV_SETTINGS \ 186 ENV_MEM_LAYOUT_SETTINGS \ 187 BOOTENV 188#endif 189 190/* SPL can't handle all huge variables - define just DFU */ 191#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU) 192#undef CFG_EXTRA_ENV_SETTINGS 193# define CFG_EXTRA_ENV_SETTINGS \ 194 "dfu_alt_info_ram=uboot.bin ram 0x8000000 0x1000000;" \ 195 "atf-uboot.ub ram 0x10000000 0x1000000;" \ 196 "Image ram 0x80000 0x3f80000;" \ 197 "system.dtb ram 0x4000000 0x100000\0" \ 198 "dfu_bufsiz=0x1000\0" 199#endif 200 201#if defined(CONFIG_SPL_SPI_FLASH_SUPPORT) 202# define CFG_SYS_SPI_KERNEL_OFFS 0x80000 203# define CFG_SYS_SPI_ARGS_OFFS 0xa0000 204# define CFG_SYS_SPI_ARGS_SIZE 0xa0000 205#endif 206 207/* u-boot is like dtb */ 208 209/* ATF is my kernel image */ 210 211#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE 212# error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used" 213#endif 214 215#endif /* __XILINX_ZYNQMP_H */ 216