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 /* Ethernet driver */ 46 47 #define ENV_MEM_LAYOUT_SETTINGS \ 48 "fdt_addr_r=0x40000000\0" \ 49 "fdt_size_r=0x400000\0" \ 50 "pxefile_addr_r=0x10000000\0" \ 51 "kernel_addr_r=0x18000000\0" \ 52 "kernel_size_r=0x10000000\0" \ 53 "kernel_comp_addr_r=0x30000000\0" \ 54 "kernel_comp_size=0x3C00000\0" \ 55 "ramdisk_addr_r=0x02100000\0" \ 56 "script_size_f=0x80000\0" \ 57 "stdin=serial\0" \ 58 "stdout=serial,vidconsole\0" \ 59 "stderr=serial,vidconsole\0" \ 60 61 #if defined(CONFIG_DISTRO_DEFAULTS) 62 63 #if defined(CONFIG_MMC_SDHCI_ZYNQ) 64 # define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0) func(MMC, mmc, 1) 65 #else 66 # define BOOT_TARGET_DEVICES_MMC(func) 67 #endif 68 69 #if defined(CONFIG_SATA_CEVA) 70 # define BOOT_TARGET_DEVICES_SCSI(func) func(SCSI, scsi, 0) 71 #else 72 # define BOOT_TARGET_DEVICES_SCSI(func) 73 #endif 74 75 #if defined(CONFIG_USB_STORAGE) 76 # define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0) func(USB, usb, 1) 77 #else 78 # define BOOT_TARGET_DEVICES_USB(func) 79 #endif 80 81 #if defined(CONFIG_CMD_PXE) && defined(CONFIG_CMD_DHCP) 82 # define BOOT_TARGET_DEVICES_PXE(func) func(PXE, pxe, na) 83 #else 84 # define BOOT_TARGET_DEVICES_PXE(func) 85 #endif 86 87 #if defined(CONFIG_CMD_DHCP) 88 # define BOOT_TARGET_DEVICES_DHCP(func) func(DHCP, dhcp, na) 89 #else 90 # define BOOT_TARGET_DEVICES_DHCP(func) 91 #endif 92 93 #if defined(CONFIG_ZYNQMP_GQSPI) 94 # define BOOT_TARGET_DEVICES_QSPI(func) func(QSPI, qspi, 0) 95 #else 96 # define BOOT_TARGET_DEVICES_QSPI(func) 97 #endif 98 99 #if defined(CONFIG_NAND_ARASAN) 100 # define BOOT_TARGET_DEVICES_NAND(func) func(NAND, nand, 0) 101 #else 102 # define BOOT_TARGET_DEVICES_NAND(func) 103 #endif 104 105 #define BOOTENV_DEV_QSPI(devtypeu, devtypel, instance) \ 106 "bootcmd_" #devtypel #instance "=sf probe " #instance " 0 0 && " \ 107 "sf read $scriptaddr $script_offset_f $script_size_f && " \ 108 "echo QSPI: Trying to boot script at ${scriptaddr} && " \ 109 "source ${scriptaddr}; echo QSPI: SCRIPT FAILED: continuing...;\0" 110 111 #define BOOTENV_DEV_NAME_QSPI(devtypeu, devtypel, instance) \ 112 #devtypel #instance " " 113 114 #define BOOTENV_DEV_NAND(devtypeu, devtypel, instance) \ 115 "bootcmd_" #devtypel #instance "= nand info && " \ 116 "nand read $scriptaddr $script_offset_f $script_size_f && " \ 117 "echo NAND: Trying to boot script at ${scriptaddr} && " \ 118 "source ${scriptaddr}; echo NAND: SCRIPT FAILED: continuing...;\0" 119 120 #define BOOTENV_DEV_NAME_NAND(devtypeu, devtypel, instance) \ 121 #devtypel #instance " " 122 123 #define BOOT_TARGET_DEVICES_JTAG(func) func(JTAG, jtag, na) 124 125 #define BOOTENV_DEV_JTAG(devtypeu, devtypel, instance) \ 126 "bootcmd_jtag=echo JTAG: Trying to boot script at ${scriptaddr} && " \ 127 "source ${scriptaddr}; echo JTAG: SCRIPT FAILED: continuing...;\0" 128 129 #define BOOTENV_DEV_NAME_JTAG(devtypeu, devtypel, instance) \ 130 "jtag " 131 132 #define BOOT_TARGET_DEVICES_USB_DFU(func) \ 133 func(USB_DFU, usb_dfu, 0) func(USB_DFU, usb_dfu, 1) 134 135 #define BOOTENV_DEV_USB_DFU(devtypeu, devtypel, instance) \ 136 "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \ 137 "$scriptaddr $script_size_f && " \ 138 "dfu " #instance " ram " #instance " 60 && " \ 139 "echo DFU" #instance ": Trying to boot script at ${scriptaddr} && " \ 140 "source ${scriptaddr}; " \ 141 "echo DFU" #instance ": SCRIPT FAILED: continuing...;\0" 142 143 #define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance) \ 144 "" 145 146 #define BOOT_TARGET_DEVICES_USB_THOR(func) \ 147 func(USB_THOR, usb_thor, 0) func(USB_THOR, usb_thor, 1) 148 149 #define BOOTENV_DEV_USB_THOR(devtypeu, devtypel, instance) \ 150 "bootcmd_" #devtypel #instance "=setenv dfu_alt_info boot.scr ram " \ 151 "$scriptaddr $script_size_f && " \ 152 "thordown " #instance " ram " #instance " && " \ 153 "echo THOR" #instance ": Trying to boot script at ${scriptaddr} && " \ 154 "source ${scriptaddr}; " \ 155 "echo THOR" #instance ": SCRIPT FAILED: continuing...;\0" 156 157 #define BOOTENV_DEV_NAME_USB_THOR(devtypeu, devtypel, instance) \ 158 "" 159 160 #define BOOT_TARGET_DEVICES(func) \ 161 BOOT_TARGET_DEVICES_JTAG(func) \ 162 BOOT_TARGET_DEVICES_MMC(func) \ 163 BOOT_TARGET_DEVICES_QSPI(func) \ 164 BOOT_TARGET_DEVICES_NAND(func) \ 165 BOOT_TARGET_DEVICES_USB_DFU(func) \ 166 BOOT_TARGET_DEVICES_USB_THOR(func) \ 167 BOOT_TARGET_DEVICES_USB(func) \ 168 BOOT_TARGET_DEVICES_SCSI(func) \ 169 BOOT_TARGET_DEVICES_PXE(func) \ 170 BOOT_TARGET_DEVICES_DHCP(func) 171 172 #include <config_distro_bootcmd.h> 173 174 #else /* CONFIG_DISTRO_DEFAULTS */ 175 # define BOOTENV 176 #endif /* CONFIG_DISTRO_DEFAULTS */ 177 178 /* Initial environment variables */ 179 #ifndef CFG_EXTRA_ENV_SETTINGS 180 #define CFG_EXTRA_ENV_SETTINGS \ 181 ENV_MEM_LAYOUT_SETTINGS \ 182 "usb_pgood_delay=1000\0" \ 183 BOOTENV 184 #endif 185 186 /* SPL can't handle all huge variables - define just DFU */ 187 #if defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_DFU) 188 #undef CFG_EXTRA_ENV_SETTINGS 189 # define CFG_EXTRA_ENV_SETTINGS \ 190 "dfu_alt_info_ram=uboot.bin ram 0x8000000 0x1000000;" \ 191 "atf-uboot.ub ram 0x10000000 0x1000000;" \ 192 "Image ram 0x80000 0x3f80000;" \ 193 "system.dtb ram 0x4000000 0x100000\0" \ 194 "dfu_bufsiz=0x1000\0" 195 #endif 196 197 #ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE 198 # error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used" 199 #endif 200 201 #endif /* __XILINX_ZYNQMP_H */ 202