1/* 2 * (C) Copyright 2012 Michal Simek <monstr@monstr.eu> 3 * (C) Copyright 2013 Xilinx, Inc. 4 * 5 * Common configuration options for all Zynq boards. 6 * 7 * SPDX-License-Identifier: GPL-2.0+ 8 */ 9 10#ifndef __CONFIG_ZYNQ_COMMON_H 11#define __CONFIG_ZYNQ_COMMON_H 12 13#define CONFIG_API 14#define CONFIG_NET_RANDOM_ETHADDR 15 16/* CPU clock */ 17#ifndef CONFIG_CPU_FREQ_HZ 18# define CONFIG_CPU_FREQ_HZ 800000000 19#endif 20 21/* Cache options */ 22#define CONFIG_CMD_CACHE 23#define CONFIG_SYS_CACHELINE_SIZE 32 24 25#ifdef CONFIG_SYS_CACHELINE_SIZE 26#define ARCH_DMA_MINALIGN CONFIG_SYS_CACHELINE_SIZE 27#else 28#define ARCH_DMA_MINALIGN 64 29#endif 30 31#define CONFIG_SYS_L2CACHE_OFF 32#ifndef CONFIG_SYS_L2CACHE_OFF 33# define CONFIG_SYS_L2_PL310 34# define CONFIG_SYS_PL310_BASE 0xf8f02000 35#endif 36 37#define ZYNQ_SCUTIMER_BASEADDR 0xF8F00600 38#define CONFIG_SYS_TIMERBASE ZYNQ_SCUTIMER_BASEADDR 39#define CONFIG_SYS_TIMER_COUNTS_DOWN 40#define CONFIG_SYS_TIMER_COUNTER (CONFIG_SYS_TIMERBASE + 0x4) 41 42/* Serial drivers */ 43#define CONFIG_BAUDRATE 115200 44/* The following table includes the supported baudrates */ 45#define CONFIG_SYS_BAUDRATE_TABLE \ 46 {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400} 47 48/* DCC driver */ 49#if defined(CONFIG_ZYNQ_DCC) 50# define CONFIG_ARM_DCC 51#else 52# define CONFIG_ZYNQ_SERIAL 53#endif 54 55#define CONFIG_ZYNQ_GPIO 56 57/* Ethernet driver */ 58#if defined(CONFIG_ZYNQ_GEM0) 59# define ZYNQ_GEM_BASEADDR0 0xE000B000UL 60# define CONFIG_PHYLIB 61# define CONFIG_ZYNQ_GEM 62# define CONFIG_MII 63# define CONFIG_SYS_FAULT_ECHO_LINK_DOWN 64# define CONFIG_PHY_MARVELL 65# define CONFIG_BOOTP_SERVERIP 66# define CONFIG_BOOTP_BOOTPATH 67# define CONFIG_BOOTP_GATEWAY 68# define CONFIG_BOOTP_HOSTNAME 69# define CONFIG_BOOTP_MAY_FAIL 70# if !defined(CONFIG_ZYNQ_GEM_EMIO0) 71# define CONFIG_ZYNQ_GEM_EMIO0 0 72# endif 73# if !defined(CONFIG_ZYNQ_GEM_EMIO1) 74# define CONFIG_ZYNQ_GEM_EMIO1 0 75# endif 76#endif 77 78/* SPI */ 79#ifdef CONFIG_ZYNQ_SPI 80# define CONFIG_CMD_SF 81#endif 82 83/* QSPI */ 84#ifdef CONFIG_ZYNQ_QSPI 85# define CONFIG_SF_DEFAULT_SPEED 30000000 86# define CONFIG_SPI_FLASH_ISSI 87# define CONFIG_SPI_FLASH_BAR 88# define CONFIG_CMD_SF 89#endif 90 91/* NOR */ 92#ifndef CONFIG_SYS_NO_FLASH 93# define CONFIG_SYS_FLASH_BASE 0xE2000000 94# define CONFIG_SYS_FLASH_SIZE (16 * 1024 * 1024) 95# define CONFIG_SYS_MAX_FLASH_BANKS 1 96# define CONFIG_SYS_MAX_FLASH_SECT 512 97# define CONFIG_SYS_FLASH_ERASE_TOUT 1000 98# define CONFIG_SYS_FLASH_WRITE_TOUT 5000 99# define CONFIG_FLASH_SHOW_PROGRESS 10 100# define CONFIG_SYS_FLASH_CFI 101# undef CONFIG_SYS_FLASH_EMPTY_INFO 102# define CONFIG_FLASH_CFI_DRIVER 103# undef CONFIG_SYS_FLASH_PROTECTION 104# define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 105#endif 106 107/* MMC */ 108#if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1) 109# define CONFIG_MMC 110# define CONFIG_GENERIC_MMC 111# define CONFIG_SDHCI 112# define CONFIG_ZYNQ_SDHCI 113# define CONFIG_CMD_MMC 114# define CONFIG_ZYNQ_SDHCI_MAX_FREQ 52000000 115#endif 116 117#ifdef CONFIG_ZYNQ_USB 118# define CONFIG_USB_EHCI 119# define CONFIG_CMD_USB 120# define CONFIG_USB_STORAGE 121# define CONFIG_USB_EHCI_ZYNQ 122# define CONFIG_USB_ULPI_VIEWPORT 123# define CONFIG_USB_ULPI 124# define CONFIG_EHCI_IS_TDI 125# define CONFIG_USB_MAX_CONTROLLER_COUNT 2 126 127# define CONFIG_CI_UDC /* ChipIdea CI13xxx UDC */ 128# define CONFIG_USB_GADGET 129# define CONFIG_USB_GADGET_DUALSPEED 130# define CONFIG_USB_GADGET_DOWNLOAD 131# define CONFIG_SYS_DFU_DATA_BUF_SIZE 0x600000 132# define DFU_DEFAULT_POLL_TIMEOUT 300 133# define CONFIG_USB_FUNCTION_DFU 134# define CONFIG_DFU_RAM 135# define CONFIG_USB_GADGET_VBUS_DRAW 2 136# define CONFIG_G_DNL_VENDOR_NUM 0x03FD 137# define CONFIG_G_DNL_PRODUCT_NUM 0x0300 138# define CONFIG_G_DNL_MANUFACTURER "Xilinx" 139# define CONFIG_USB_GADGET 140# define CONFIG_USB_CABLE_CHECK 141# define CONFIG_CMD_DFU 142# define CONFIG_CMD_THOR_DOWNLOAD 143# define CONFIG_USB_FUNCTION_THOR 144# define DFU_ALT_INFO_RAM \ 145 "dfu_ram_info=" \ 146 "set dfu_alt_info " \ 147 "${kernel_image} ram 0x3000000 0x500000\\\\;" \ 148 "${devicetree_image} ram 0x2A00000 0x20000\\\\;" \ 149 "${ramdisk_image} ram 0x2000000 0x600000\0" \ 150 "dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \ 151 "thor_ram=run dfu_ram_info && thordown 0 ram 0\0" 152 153# if defined(CONFIG_ZYNQ_SDHCI0) || defined(CONFIG_ZYNQ_SDHCI1) 154# define CONFIG_DFU_MMC 155# define DFU_ALT_INFO_MMC \ 156 "dfu_mmc_info=" \ 157 "set dfu_alt_info " \ 158 "${kernel_image} fat 0 1\\\\;" \ 159 "${devicetree_image} fat 0 1\\\\;" \ 160 "${ramdisk_image} fat 0 1\0" \ 161 "dfu_mmc=run dfu_mmc_info && dfu 0 mmc 0\0" \ 162 "thor_mmc=run dfu_mmc_info && thordown 0 mmc 0\0" 163 164# define DFU_ALT_INFO \ 165 DFU_ALT_INFO_RAM \ 166 DFU_ALT_INFO_MMC 167# else 168# define DFU_ALT_INFO \ 169 DFU_ALT_INFO_RAM 170# endif 171#endif 172 173#if !defined(DFU_ALT_INFO) 174# define DFU_ALT_INFO 175#endif 176 177#if defined(CONFIG_ZYNQ_SDHCI) || defined(CONFIG_ZYNQ_USB) 178# define CONFIG_SUPPORT_VFAT 179# define CONFIG_CMD_FAT 180# define CONFIG_CMD_EXT2 181# define CONFIG_FAT_WRITE 182# define CONFIG_DOS_PARTITION 183# define CONFIG_CMD_EXT4 184# define CONFIG_CMD_EXT4_WRITE 185# define CONFIG_CMD_FS_GENERIC 186#endif 187 188#if defined(CONFIG_ZYNQ_I2C0) || defined(CONFIG_ZYNQ_I2C1) 189#define CONFIG_SYS_I2C_ZYNQ 190#endif 191 192/* I2C */ 193#if defined(CONFIG_SYS_I2C_ZYNQ) 194# define CONFIG_CMD_I2C 195# define CONFIG_SYS_I2C 196# define CONFIG_SYS_I2C_ZYNQ_SPEED 100000 197# define CONFIG_SYS_I2C_ZYNQ_SLAVE 0 198#endif 199 200/* EEPROM */ 201#ifdef CONFIG_ZYNQ_EEPROM 202# define CONFIG_CMD_EEPROM 203# define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1 204# define CONFIG_SYS_I2C_EEPROM_ADDR 0x54 205# define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4 206# define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5 207# define CONFIG_SYS_EEPROM_SIZE 1024 /* Bytes */ 208#endif 209 210/* Total Size of Environment Sector */ 211#define CONFIG_ENV_SIZE (128 << 10) 212 213/* Allow to overwrite serial and ethaddr */ 214#define CONFIG_ENV_OVERWRITE 215 216/* Environment */ 217#ifndef CONFIG_ENV_IS_NOWHERE 218# ifndef CONFIG_SYS_NO_FLASH 219# define CONFIG_ENV_IS_IN_FLASH 220# elif defined(CONFIG_SYS_NO_FLASH) 221# define CONFIG_ENV_IS_NOWHERE 222# endif 223 224# define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE 225# define CONFIG_ENV_OFFSET 0xE0000 226#endif 227 228/* Default environment */ 229#define CONFIG_EXTRA_ENV_SETTINGS \ 230 "fit_image=fit.itb\0" \ 231 "load_addr=0x2000000\0" \ 232 "fit_size=0x800000\0" \ 233 "flash_off=0x100000\0" \ 234 "nor_flash_off=0xE2100000\0" \ 235 "fdt_high=0x20000000\0" \ 236 "initrd_high=0x20000000\0" \ 237 "norboot=echo Copying FIT from NOR flash to RAM... && " \ 238 "cp.b ${nor_flash_off} ${load_addr} ${fit_size} && " \ 239 "bootm ${load_addr}\0" \ 240 "sdboot=echo Copying FIT from SD to RAM... && " \ 241 "load mmc 0 ${load_addr} ${fit_image} && " \ 242 "bootm ${load_addr}\0" \ 243 "jtagboot=echo TFTPing FIT to RAM... && " \ 244 "tftpboot ${load_addr} ${fit_image} && " \ 245 "bootm ${load_addr}\0" \ 246 "usbboot=if usb start; then " \ 247 "echo Copying FIT from USB to RAM... && " \ 248 "load usb 0 ${load_addr} ${fit_image} && " \ 249 "bootm ${load_addr}\0" \ 250 "fi\0" \ 251 DFU_ALT_INFO 252 253#define CONFIG_BOOTCOMMAND "run $modeboot" 254#define CONFIG_BOOTDELAY 3 /* -1 to Disable autoboot */ 255#define CONFIG_SYS_LOAD_ADDR 0 /* default? */ 256 257/* Miscellaneous configurable options */ 258#define CONFIG_SYS_HUSH_PARSER 259 260#define CONFIG_CMDLINE_EDITING 261#define CONFIG_AUTO_COMPLETE 262#define CONFIG_BOARD_LATE_INIT 263#define CONFIG_DISPLAY_BOARDINFO 264#define CONFIG_SYS_LONGHELP 265#define CONFIG_CLOCKS 266#define CONFIG_CMD_CLK 267#define CONFIG_SYS_MAXARGS 32 /* max number of command args */ 268#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ 269#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ 270 sizeof(CONFIG_SYS_PROMPT) + 16) 271 272/* Physical Memory map */ 273#define CONFIG_SYS_TEXT_BASE 0x4000000 274 275#define CONFIG_NR_DRAM_BANKS 1 276#define CONFIG_SYS_SDRAM_BASE 0 277 278#define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE 279#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE + 0x1000) 280 281#define CONFIG_SYS_MALLOC_LEN 0x1400000 282#define CONFIG_SYS_INIT_RAM_ADDR CONFIG_SYS_SDRAM_BASE 283#define CONFIG_SYS_INIT_RAM_SIZE CONFIG_SYS_MALLOC_LEN 284#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 285 CONFIG_SYS_INIT_RAM_SIZE - \ 286 GENERATED_GBL_DATA_SIZE) 287 288/* Enable the PL to be downloaded */ 289#define CONFIG_FPGA 290#define CONFIG_FPGA_XILINX 291#define CONFIG_FPGA_ZYNQPL 292#define CONFIG_CMD_FPGA_LOADMK 293#define CONFIG_CMD_FPGA_LOADP 294#define CONFIG_CMD_FPGA_LOADBP 295#define CONFIG_CMD_FPGA_LOADFS 296 297/* Open Firmware flat tree */ 298#define CONFIG_OF_LIBFDT 299 300/* FIT support */ 301#define CONFIG_IMAGE_FORMAT_LEGACY /* enable also legacy image format */ 302 303/* FDT support */ 304#define CONFIG_DISPLAY_BOARDINFO_LATE 305 306/* Extend size of kernel image for uncompression */ 307#define CONFIG_SYS_BOOTM_LEN (60 * 1024 * 1024) 308 309/* Boot FreeBSD/vxWorks from an ELF image */ 310#if defined(CONFIG_ZYNQ_BOOT_FREEBSD) 311# define CONFIG_SYS_MMC_MAX_DEVICE 1 312#endif 313 314#define CONFIG_SYS_LDSCRIPT "arch/arm/mach-zynq/u-boot.lds" 315 316/* Commands */ 317#define CONFIG_CMD_PING 318#define CONFIG_CMD_DHCP 319#define CONFIG_CMD_MII 320#define CONFIG_CMD_TFTPPUT 321 322/* SPL part */ 323#define CONFIG_CMD_SPL 324#define CONFIG_SPL_FRAMEWORK 325#define CONFIG_SPL_LIBCOMMON_SUPPORT 326#define CONFIG_SPL_LIBGENERIC_SUPPORT 327#define CONFIG_SPL_SERIAL_SUPPORT 328#define CONFIG_SPL_BOARD_INIT 329 330#define CONFIG_SPL_LDSCRIPT "arch/arm/mach-zynq/u-boot-spl.lds" 331 332/* MMC support */ 333#ifdef CONFIG_ZYNQ_SDHCI0 334#define CONFIG_SPL_MMC_SUPPORT 335#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 /* address 0x60000 */ 336#define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS 0x200 /* 256 KB */ 337#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 338#define CONFIG_SPL_LIBDISK_SUPPORT 339#define CONFIG_SPL_FAT_SUPPORT 340#ifdef CONFIG_OF_SEPARATE 341# define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot-dtb.img" 342#else 343# define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img" 344#endif 345#endif 346 347/* Disable dcache for SPL just for sure */ 348#ifdef CONFIG_SPL_BUILD 349#define CONFIG_SYS_DCACHE_OFF 350#undef CONFIG_FPGA 351#endif 352 353/* Address in RAM where the parameters must be copied by SPL. */ 354#define CONFIG_SYS_SPL_ARGS_ADDR 0x10000000 355 356#define CONFIG_SPL_FS_LOAD_ARGS_NAME "system.dtb" 357#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage" 358 359/* Not using MMC raw mode - just for compilation purpose */ 360#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0 361#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0 362#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0 363 364/* qspi mode is working fine */ 365#ifdef CONFIG_ZYNQ_QSPI 366#define CONFIG_SPL_SPI_SUPPORT 367#define CONFIG_SPL_SPI_LOAD 368#define CONFIG_SPL_SPI_FLASH_SUPPORT 369#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x100000 370#define CONFIG_SYS_SPI_ARGS_OFFS 0x200000 371#define CONFIG_SYS_SPI_ARGS_SIZE 0x80000 372#define CONFIG_SYS_SPI_KERNEL_OFFS (CONFIG_SYS_SPI_ARGS_OFFS + \ 373 CONFIG_SYS_SPI_ARGS_SIZE) 374#endif 375 376/* for booting directly linux */ 377#define CONFIG_SPL_OS_BOOT 378 379/* SP location before relocation, must use scratch RAM */ 380#define CONFIG_SPL_TEXT_BASE 0x0 381 382/* 3 * 64kB blocks of OCM - one is on the top because of bootrom */ 383#define CONFIG_SPL_MAX_SIZE 0x30000 384 385/* The highest 64k OCM address */ 386#define OCM_HIGH_ADDR 0xffff0000 387 388/* Just define any reasonable size */ 389#define CONFIG_SPL_STACK_SIZE 0x1000 390 391/* SPL stack position - and stack goes down */ 392#define CONFIG_SPL_STACK (OCM_HIGH_ADDR + CONFIG_SPL_STACK_SIZE) 393 394/* On the top of OCM space */ 395#define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_STACK + \ 396 GENERATED_GBL_DATA_SIZE) 397#define CONFIG_SYS_SPL_MALLOC_SIZE 0x1000 398 399/* BSS setup */ 400#define CONFIG_SPL_BSS_START_ADDR 0x100000 401#define CONFIG_SPL_BSS_MAX_SIZE 0x100000 402 403#define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE 404 405 406#endif /* __CONFIG_ZYNQ_COMMON_H */ 407