/* * Copyright Altera Corporation (C) 2013. All rights reserved * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ #ifndef __CONFIG_COMMON_H #define __CONFIG_COMMON_H #include #include /* Enabled for U-Boot debug message printout? */ /*#define DEBUG*/ /* if panic, will call hang as watchdog will come and trigger warm reset */ #if defined(DEBUG) && defined(CONFIG_SPL_BUILD) #define CONFIG_PANIC_HANG #endif /* * Quick tips for debugging * > Before relocation, load elf for debugger as normal usage * > After relocation, you need to type below command at gdb * (gdb) symbol-file * (gdb) add-symbol-file u-boot * * > you can get the offset from "bdinfo" console command under reloc_off */ /* * High level configuration */ /* Running on virtual target? */ #undef CONFIG_SOCFPGA_VIRTUAL_TARGET /* ARMv7 CPU Core */ #define CONFIG_ARMV7 /* Cache policy for CA-9 is write back, write allocate */ #define CONFIG_SYS_ARM_CACHE_WRITEBACK_WRITEALLOCATE /* Support for IRQs - for ocram and SDRAM ECC */ #ifndef CONFIG_SOCFPGA_VIRTUAL_TARGET #define CONFIG_USE_IRQ #endif /* miscellaneous platform dependent initialisations */ #define CONFIG_MISC_INIT_R /* Use as single bootloader where no boot ROM and preloader */ #define CONFIG_SINGLE_BOOTLOADER /* SOCFPGA Specific function */ #define CONFIG_SOCFPGA /* base address for .text section */ #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET #define CONFIG_SYS_TEXT_BASE 0x08000040 #else /* #define CONFIG_SYS_TEXT_BASE 0x01000040 ATTO CHANGE BELOW*/ #define CONFIG_SYS_TEXT_BASE 0x0FFF0000 #endif /* Default load address */ #define CONFIG_SYS_LOAD_ADDR 0x8000 #ifdef CONFIG_USE_IRQ /* Enable board late init for ECC setup if IRQ enabled */ #define CONFIG_BOARD_LATE_INIT #endif /* Enable THUMB2 mode to reduce software size which yield better boot time */ #define CONFIG_SYS_THUMB_BUILD /* * Display CPU and Board Info */ #define CONFIG_DISPLAY_CPUINFO #define CONFIG_DISPLAY_BOARDINFO /* * Enable early stage initialization at C environment */ #define CONFIG_BOARD_EARLY_INIT_F /* * Kernel Info */ /* flat device tree */ #define CONFIG_OF_LIBFDT /* skip updating the FDT blob */ #define CONFIG_FDT_BLOB_SKIP_UPDATE /* Initial Memory map size for Linux, minus 4k alignment for DFT blob */ #define CONFIG_SYS_BOOTMAPSZ (64 * 1024 * 1024) /* * Memory allocation (MALLOC) */ /* Room required on the stack for the environment data */ #define CONFIG_ENV_SIZE 4096 /* Size of DRAM reserved for malloc() use */ #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 256 * 1024) /* * Stack setup */ #ifdef CONFIG_USE_IRQ /* IRQ stack */ #define CONFIG_STACKSIZE_IRQ (1 << 10) /* FIQ stack */ #define CONFIG_STACKSIZE_FIQ (1 << 10) #endif /* SP location before relocation, must use scratch RAM */ #define CONFIG_SYS_INIT_RAM_ADDR 0xFFFF0000 /* Reserving 0x100 space at back of scratch RAM for debug info */ #define CONFIG_SYS_INIT_RAM_SIZE (0x10000 - 0x100) /* Stack pointer prior relocation, must situated at on-chip RAM */ #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ CONFIG_SYS_INIT_RAM_SIZE - \ GENERATED_GBL_DATA_SIZE) /* * Command line configuration. */ #define CONFIG_SYS_NO_FLASH #include /* FAT file system support */ #define CONFIG_CMD_FAT /* Enable FAT write support */ #define CONFIG_FAT_WRITE /* EXT2 file system support */ #define CONFIG_CMD_EXT2 /* MMC support */ #define CONFIG_CMD_MMC /* * Misc */ /* Enable DOS partition */ #define CONFIG_DOS_PARTITION 1 /* OSE operating system support */ #define CONFIG_BOOTM_OSE /* Support loading of zImage */ #define CONFIG_CMD_BOOTZ /* * Environment setup */ /* Delay before automatically booting the default image */ #define CONFIG_BOOTDELAY 5 /* write protection for vendor parameters is completely disabled */ #define CONFIG_ENV_OVERWRITE /* Enable auto completion of commands using TAB */ #define CONFIG_AUTO_COMPLETE /* Enable editing and history functions for interactive CLI operations */ #define CONFIG_CMDLINE_EDITING /* Additional help message */ #define CONFIG_SYS_LONGHELP /* use "hush" command parser */ #define CONFIG_SYS_HUSH_PARSER #define CONFIG_SYS_PROMPT_HUSH_PS2 "> " #define CONFIG_CMD_RUN #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET #define CONFIG_BOOTCOMMAND "run ramboot" #else #define CONFIG_BOOTCOMMAND "run callscript; run mmcload; run mmcboot" #endif /* * arguments passed to the bootz command. The value of * CONFIG_BOOTARGS goes into the environment value "bootargs". * Do note the value will overide also the chosen node in FDT blob. */ #define CONFIG_BOOTARGS "console=ttyS0," __stringify(CONFIG_BAUDRATE) #define CONFIG_EXTRA_ENV_SETTINGS \ "verify=n\0" \ "loadaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ "fdtaddr=0x00000100\0" \ "bootimage=zImage\0" \ "bootimagesize=0x600000\0" \ "fdtimage=socfpga.dtb\0" \ "fdtimagesize=0x7000\0" \ "mmcloadcmd=fatload\0" \ "mmcloadpart=1\0" \ "mmcroot=/dev/mmcblk0p2\0" \ "qspiloadcs=0\0" \ "qspibootimageaddr=0xa0000\0" \ "qspifdtaddr=0x50000\0" \ "qspiroot=/dev/mtdblock1\0" \ "qspirootfstype=jffs2\0" \ "nandbootimageaddr=0x120000\0" \ "nandfdtaddr=0xA0000\0" \ "nandroot=/dev/mtdblock1\0" \ "nandrootfstype=jffs2\0" \ "ramboot=setenv bootargs " CONFIG_BOOTARGS ";" \ "bootz ${loadaddr} - ${fdtaddr}\0" \ "mmcload=mmc rescan;" \ "${mmcloadcmd} mmc 0:${mmcloadpart} ${loadaddr} ${bootimage};" \ "${mmcloadcmd} mmc 0:${mmcloadpart} ${fdtaddr} ${fdtimage}\0" \ "mmcboot=setenv bootargs " CONFIG_BOOTARGS \ " root=${mmcroot} rw rootwait;" \ "bootz ${loadaddr} - ${fdtaddr}\0" \ "netboot=dhcp ${bootimage} ; " \ "tftp ${fdtaddr} ${fdtimage} ; run ramboot\0" \ "qspiload=sf probe ${qspiloadcs};" \ "sf read ${loadaddr} ${qspibootimageaddr} ${bootimagesize};" \ "sf read ${fdtaddr} ${qspifdtaddr} ${fdtimagesize};\0" \ "qspiboot=setenv bootargs " CONFIG_BOOTARGS \ " root=${qspiroot} rw rootfstype=${qspirootfstype};"\ "bootz ${loadaddr} - ${fdtaddr}\0" \ "nandload=nand read ${loadaddr} ${nandbootimageaddr} ${bootimagesize};"\ "nand read ${fdtaddr} ${nandfdtaddr} ${fdtimagesize}\0" \ "nandboot=setenv bootargs " CONFIG_BOOTARGS \ " root=${nandroot} rw rootfstype=${nandrootfstype};"\ "bootz ${loadaddr} - ${fdtaddr}\0" \ "fpga=0\0" \ "fpgadata=0x2000000\0" \ "fpgadatasize=0x700000\0" \ CONFIG_KSZ9021_CLK_SKEW_ENV "=" \ __stringify(CONFIG_KSZ9021_CLK_SKEW_VAL) "\0" \ CONFIG_KSZ9021_DATA_SKEW_ENV "=" \ __stringify(CONFIG_KSZ9021_DATA_SKEW_VAL) "\0" \ "scriptfile=u-boot.scr\0" \ "callscript=if fatload mmc 0:1 $fpgadata $scriptfile;" \ "then source $fpgadata; " \ "else " \ "echo Optional boot script not found. " \ "Continuing to boot normally; " \ "fi;\0" /* * Environment setup */ /* using environment setting for stdin, stdout, stderr */ #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Enable the call to overwrite_console() */ #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE /* Enable overwrite of previous console environment settings */ #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE /* Environment will save to boot device/flash */ #if (CONFIG_PRELOADER_BOOT_FROM_SDMMC == 1) /* Store envirnoment in MMC card */ #define CONFIG_ENV_IS_IN_MMC #elif (CONFIG_PRELOADER_BOOT_FROM_NAND == 1) /* Store envirnoment in NAND flash */ #define CONFIG_ENV_IS_IN_NAND #else /* Store envirnoment in SPI flash */ #define CONFIG_ENV_IS_IN_SPI_FLASH #endif /* environment setting for SPI flash */ #ifdef CONFIG_ENV_IS_IN_SPI_FLASH #define CONFIG_ENV_OFFSET (0x00040000) #define CONFIG_ENV_SECT_SIZE (64 * 1024) #define CONFIG_ENV_SPI_BUS 0 #define CONFIG_ENV_SPI_CS 0 #define CONFIG_ENV_SPI_MODE SPI_MODE_3 #define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED #endif /* environment setting for MMC */ #ifdef CONFIG_ENV_IS_IN_MMC #define CONFIG_SYS_MMC_ENV_DEV 0 /* device 0 */ #define CONFIG_ENV_OFFSET 512 /* just after the MBR */ #endif /* environment setting for NAND */ #ifdef CONFIG_ENV_IS_IN_NAND #define CONFIG_ENV_OFFSET (0x00080000) #endif /* * Console setup */ /* Console I/O Buffer Size */ #define CONFIG_SYS_CBSIZE 256 /* Print Buffer Size */ #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ sizeof(CONFIG_SYS_PROMPT) + 16) /* max number of command args */ #define CONFIG_SYS_MAXARGS 16 /* Boot Argument Buffer Size */ #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* * Hardware drivers */ /* * SDRAM Memory Map */ /* We have 1 bank of DRAM */ #define CONFIG_NR_DRAM_BANKS 1 /* SDRAM Bank #1 */ #define CONFIG_SYS_SDRAM_BASE 0x00000000 /* SDRAM memory size */ /* * Enable auto calculation of sdram size. Code will ignore PHYS_SDRAM_1_SIZE * Auto calculation can be disabled for use case where user want to * utilize portion of SDRAM only (PHYS_SDRAM_1_SIZE will be used then) */ #define CONFIG_SDRAM_CALCULATE_SIZE /* * Remain PHYS_SDRAM_1_SIZE as its still used by U-Boot memory test (mtest) * when user didn't specify mtest end address in console */ #ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET #define PHYS_SDRAM_1_SIZE 0x80000000 #else /* Put to 32MB as the smallest SDRAM size to prevent mtest from failing */ #define PHYS_SDRAM_1_SIZE 0x02000000 #endif /* SDRAM Bank #1 base address */ #define PHYS_SDRAM_1 CONFIG_SYS_SDRAM_BASE /* U-Boot memtest setup */ /* Begin and end addresses of the area used by the simple memory test.c */ #define CONFIG_SYS_MEMTEST_START 0x00000000 #define CONFIG_SYS_MEMTEST_END PHYS_SDRAM_1_SIZE /* * L2 PL-310 */ /* for configuring L2 address filtering start address in assembly */ #define SOCFPGA_MPUL2_ADRFLTR_START (0xC00) /* * Generic Interrupt Controller from ARM */ #define SOCFPGA_GIC_CPU_IF (SOCFPGA_MPUSCU_ADDRESS + 0x100) #define SOCFPGA_GIC_DIC (SOCFPGA_MPUSCU_ADDRESS + 0x1000) /* * SCU Non-secure Access Control */ #define SOCFPGA_SCU_SNSAC (SOCFPGA_MPUSCU_ADDRESS + 0x54) /* * NS16550 Configuration */ #define CONFIG_SYS_NS16550 #ifdef CONFIG_SYS_NS16550 #define UART0_BASE SOCFPGA_UART0_ADDRESS #define CONFIG_SYS_NS16550_SERIAL #define CONFIG_SYS_NS16550_REG_SIZE -4 #define CONFIG_CONS_INDEX 1 #define CONFIG_SYS_NS16550_COM1 UART0_BASE #define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600, 115200} #if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET) #define CONFIG_SYS_NS16550_CLK 1000000 #else #define CONFIG_SYS_NS16550_CLK (cm_l4_sp_clock) #endif #define CONFIG_BAUDRATE 115200 #endif /* CONFIG_SYS_NS16550 */ /* * FLASH */ #define CONFIG_SYS_NO_FLASH /* * USB */ #define CONFIG_SYS_USB_ADDRESS SOCFPGA_USB1_ADDRESS #define CONFIG_CMD_USB #define CONFIG_USB_DWC2_OTG #define CONFIG_USB_STORAGE #define CONFIG_USB_HOST_ETHER #define CONFIG_USB_ETHER_ASIX /* * L4 OSC1 Timer 0 */ /* This timer use eosc1 where the clock frequency is fixed * throughout any condition */ #define CONFIG_SYS_TIMERBASE SOCFPGA_OSC1TIMER0_ADDRESS /* reload value when timer count to zero */ #define TIMER_LOAD_VAL 0xFFFFFFFF /* Timer info */ #define CONFIG_SYS_HZ 1000 /* Clocks source frequency to timer */ #if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET) #define CONFIG_TIMER_CLOCK_KHZ 2400 #else /* Preloader and U-Boot need to know the clock source frequency from handoff*/ #define CONFIG_TIMER_CLOCK_KHZ (CONFIG_HPS_CLK_OSC1_HZ / 1000) #endif /* * L4 Watchdog */ #define CONFIG_HW_WATCHDOG #define CONFIG_HW_WATCHDOG_TIMEOUT_MS (2000) #define CONFIG_DESIGNWARE_WATCHDOG #define CONFIG_DW_WDT_BASE SOCFPGA_L4WD0_ADDRESS /* Clocks source frequency to watchdog timer */ #if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET) #define CONFIG_DW_WDT_CLOCK_KHZ 2400 #else /* Preloader and U-Boot need to know the clock source frequency from handoff*/ #define CONFIG_DW_WDT_CLOCK_KHZ (CONFIG_HPS_CLK_OSC1_HZ / 1000) #endif /* * network support */ #ifndef CONFIG_SOCFPGA_VIRTUAL_TARGET #define CONFIG_DESIGNWARE_ETH 1 #endif #ifdef CONFIG_DESIGNWARE_ETH #define CONFIG_EMAC0_BASE SOCFPGA_EMAC0_ADDRESS #define CONFIG_EMAC1_BASE SOCFPGA_EMAC1_ADDRESS /* console support for network */ #define CONFIG_CMD_DHCP #define CONFIG_CMD_MII #define CONFIG_CMD_NET #define CONFIG_CMD_PING /* designware */ #define CONFIG_NET_MULTI #define CONFIG_DW_ALTDESCRIPTOR #define CONFIG_DW_SEARCH_PHY #define CONFIG_MII #define CONFIG_PHY_GIGE #define CONFIG_DW_AUTONEG #define CONFIG_AUTONEG_TIMEOUT (15 * CONFIG_SYS_HZ) #define CONFIG_PHYLIB #define CONFIG_PHY_MICREL #define CONFIG_PHY_MICREL_KSZ9021 /* phy */ #define CONFIG_EPHY0_PHY_ADDR 0 #define CONFIG_EPHY1_PHY_ADDR 4 #define CONFIG_KSZ9021_CLK_SKEW_ENV "micrel-ksz9021-clk-skew" #define CONFIG_KSZ9021_CLK_SKEW_VAL 0xf0f0 #define CONFIG_KSZ9021_DATA_SKEW_ENV "micrel-ksz9021-data-skew" #define CONFIG_KSZ9021_DATA_SKEW_VAL 0x0 /* Type of PHY available */ #define SOCFPGA_PHYSEL_ENUM_GMII 0x0 #define SOCFPGA_PHYSEL_ENUM_MII 0x1 #define SOCFPGA_PHYSEL_ENUM_RGMII 0x2 #define SOCFPGA_PHYSEL_ENUM_RMII 0x3 #endif /* CONFIG_DESIGNWARE_ETH */ /* * MMC support */ #define CONFIG_MMC #ifdef CONFIG_MMC #define CONFIG_SDMMC_BASE (SOCFPGA_SDMMC_ADDRESS) #define CONFIG_SDMMC_HOST_HS #define CONFIG_GENERIC_MMC 1 #define CONFIG_DWMMC 1 #define CONFIG_ALTERA_DWMMC 1 #define CONFIG_DWMMC_FIFO_DEPTH 1024 /* using smaller max blk cnt to avoid flooding the limited stack we have */ #define CONFIG_SYS_MMC_MAX_BLK_COUNT 256 #define CONFIG_DWMMC_BUS_HZ (cm_sdmmc_clock) #if defined(CONFIG_SPL_BUILD) #define CONFIG_DWMMC_BUS_WIDTH CONFIG_HPS_SDMMC_BUSWIDTH #else #define CONFIG_DWMMC_BUS_WIDTH 4 #endif /* CONFIG_SPL_BUILD */ #endif /* CONFIG_MMC */ /* * MTD */ #define CONFIG_CMD_MTDPARTS /* Enable MTD parts commands */ #define CONFIG_MTD_DEVICE /* needed for mtdparts commands */ #define CONFIG_MTD_PARTITIONS /* * QSPI support */ #define CONFIG_CADENCE_QSPI #define CONFIG_CQSPI_BASE (SOCFPGA_QSPIREGS_ADDRESS) #define CONFIG_CQSPI_AHB_BASE (SOCFPGA_QSPIDATA_ADDRESS) #ifdef CONFIG_CADENCE_QSPI #define CONFIG_SPI_FLASH /* SPI flash subsystem */ #define CONFIG_SPI_FLASH_STMICRO /* Micron/Numonyx flash */ #define CONFIG_SPI_FLASH_SPANSION /* Spansion flash */ #define CONFIG_CMD_SF /* Serial flash commands */ /* Flash device info */ #define CONFIG_SF_DEFAULT_SPEED (50000000) #define CONFIG_SF_DEFAULT_MODE SPI_MODE_3 #define CONFIG_SPI_FLASH_QUAD (1) /* QSPI reference clock */ #define CONFIG_CQSPI_REF_CLK (cm_qspi_clock) /* QSPI page size and block size */ #define CONFIG_CQSPI_PAGE_SIZE (256) #define CONFIG_CQSPI_BLOCK_SIZE (16) /* QSPI Delay timing */ #define CONFIG_CQSPI_TSHSL_NS (200) #define CONFIG_CQSPI_TSD2D_NS (255) #define CONFIG_CQSPI_TCHSH_NS (20) #define CONFIG_CQSPI_TSLCH_NS (20) #define CONFIG_CQSPI_DECODER (0) #endif /* CONFIG_CADENCE_QSPI */ /* NAND */ #undef CONFIG_NAND_DENALI #ifdef CONFIG_NAND_DENALI #define CONFIG_CMD_NAND #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_SYS_NAND_USE_FLASH_BBT #define CONFIG_SYS_NAND_REGS_BASE SOCFPGA_NAND_REGS_ADDRESS #define CONFIG_SYS_NAND_DATA_BASE SOCFPGA_NAND_DATA_ADDRESS #define CONFIG_SYS_NAND_BASE CONFIG_SYS_NAND_REGS_BASE #define CONFIG_SYS_NAND_ONFI_DETECTION /* How many bytes need to be skipped at the start of spare area */ #define CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES (2) /* The ECC size which either 512 or 1024 */ #define CONFIG_NAND_DENALI_ECC_SIZE (512) #endif /* CONFIG_NAND_DENALI */ /* * FPGA support */ /* Enables FPGA subsystem */ #define CONFIG_FPGA /* Altera FPGA */ #define CONFIG_FPGA_ALTERA /* Family type */ #define CONFIG_FPGA_SOCFPGA /* Only support single device */ #define CONFIG_FPGA_COUNT (1) /* Enable FPGA command at console */ #define CONFIG_CMD_FPGA /* * DMA support */ #define CONFIG_PL330_DMA #define CONFIG_SPL_DMA_SUPPORT /* * I2C support */ #define CONFIG_HARD_I2C #define CONFIG_DW_I2C #define CONFIG_SYS_I2C_BASE SOCFPGA_I2C0_ADDRESS /* using standard mode which the speed up to 100Kb/s) */ #define CONFIG_SYS_I2C_SPEED (100000) /* address of device when used as slave */ #define CONFIG_SYS_I2C_SLAVE (0x02) /* clock supplied to I2C controller in unit of MHz */ #define IC_CLK (cm_l4_sp_clock / 1000000) #define CONFIG_CMD_I2C /* * SPL "Second Program Loader" aka Preloader */ /* Enable building of SPL globally */ #define CONFIG_SPL /* Enable the SPL framework under common */ #define CONFIG_SPL_FRAMEWORK /* * Disable cache for SPL. By default, SPL didn't enable cache. But some * peripheral controller driver such as SDMMC driver might call cache * invalidation function after using internal DMA to transfer the read data. */ #ifdef CONFIG_SPL_BUILD #define CONFIG_SYS_DCACHE_OFF #endif /* CONFIG_SPL_BUILD */ /* TEXT_BASE for linking the SPL binary */ #ifndef CONFIG_PRELOADER_EXE_ON_FPGA #error "CONFIG_PRELOADER_EXE_ON_FPGA must be defined" #endif #if (CONFIG_PRELOADER_EXE_ON_FPGA == 1) #define CONFIG_SPL_TEXT_BASE 0xC0000000 #else #define CONFIG_SPL_TEXT_BASE 0xFFFF0000 #endif /* SPL max size */ #define CONFIG_SPL_MAX_SIZE (64 * 1024) /* Support for drivers/serial in SPL binary */ #ifndef CONFIG_PRELOADER_SERIAL_SUPPORT #error "CONFIG_PRELOADER_SERIAL_SUPPORT must be defined" #endif #if (CONFIG_PRELOADER_SERIAL_SUPPORT == 1) #define CONFIG_SPL_SERIAL_SUPPORT #endif /* Enable spl_board_init function call */ #define CONFIG_SPL_BOARD_INIT /* * define the chunk size for crc32_wd(). * Current define smaller to avoid watchdog timeout */ #define CHUNKSZ_CRC32 (1 * 1024) #define CONFIG_CRC32_VERIFY /* * Linker script for SPL */ #if (CONFIG_PRELOADER_EXE_ON_FPGA == 1) #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/socfpga/u-boot-spl-fpga.lds" #else #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv7/socfpga/u-boot-spl.lds" #endif /* * Support for common/libcommon.o in SPL binary */ #define CONFIG_SPL_LIBCOMMON_SUPPORT #define CONFIG_SPL_LIBGENERIC_SUPPORT /* * Support for drivers/watchdog.o in SPL binary */ #ifndef CONFIG_PRELOADER_WATCHDOG_ENABLE #error "CONFIG_PRELOADER_WATCHDOG_ENABLE must be defined" #endif #if (CONFIG_PRELOADER_WATCHDOG_ENABLE == 1) #define CONFIG_SPL_WATCHDOG_SUPPORT #else #ifdef CONFIG_SPL_BUILD #undef CONFIG_HW_WATCHDOG #endif /* CONFIG_SPL_BUILD */ #endif /* * Boot from SDMMC */ #ifndef CONFIG_PRELOADER_BOOT_FROM_SDMMC #error "CONFIG_PRELOADER_BOOT_FROM_SDMMC must be defined" #endif #if (CONFIG_PRELOADER_BOOT_FROM_SDMMC == 1) /* Support for drivers/mmc/libmmc.o in SPL binary */ #define CONFIG_SPL_MMC_SUPPORT #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR \ (CONFIG_PRELOADER_SDMMC_NEXT_BOOT_IMAGE / 512) #endif /* * Boot from QSPI */ #ifndef CONFIG_PRELOADER_BOOT_FROM_QSPI #error "CONFIG_PRELOADER_BOOT_FROM_QSPI must be defined" #endif #if (CONFIG_PRELOADER_BOOT_FROM_QSPI == 1) /* Enable spi_spl_load.c */ #define CONFIG_SPL_SPI_LOAD /* Support for drivers/mtd/spi/libspi_flash.o in SPL binary */ #define CONFIG_SPL_SPI_FLASH_SUPPORT /* Support for drivers/spi/libspi.o in SPL binary */ #define CONFIG_SPL_SPI_SUPPORT /* Support for XiP */ #undef CONFIG_SPL_SPI_XIP /* the XiP address that SPL will jump to */ #define CONFIG_SPL_SPI_XIP_ADDR 0xFFA00040 /* SPL SPI flash Chip select */ #define CONFIG_SPL_SPI_CS 0 /* SPL SPI flash Bus Number */ #define CONFIG_SPL_SPI_BUS 0 /* offset of U-Boot with spi flash */ #define CONFIG_SYS_SPI_U_BOOT_OFFS CONFIG_PRELOADER_QSPI_NEXT_BOOT_IMAGE #endif /* * Boot from RAM */ #ifndef CONFIG_PRELOADER_BOOT_FROM_RAM #error "CONFIG_PRELOADER_BOOT_FROM_RAM must be defined" #endif #if (CONFIG_PRELOADER_BOOT_FROM_RAM == 1) #define CONFIG_SPL_RAM_DEVICE #endif /* * Boot from NAND */ #ifndef CONFIG_PRELOADER_BOOT_FROM_NAND #error "CONFIG_PRELOADER_BOOT_FROM_NAND must be defined" #endif #if (CONFIG_PRELOADER_BOOT_FROM_NAND == 1) /* Support for drivers/mmc/libmmc.o in SPL binary */ #define CONFIG_SPL_NAND_SUPPORT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_NAND_DRIVERS #define CONFIG_SYS_NAND_U_BOOT_OFFS CONFIG_PRELOADER_NAND_NEXT_BOOT_IMAGE #define CONFIG_SYS_NAND_PAGE_SIZE 2048 #define CONFIG_SYS_NAND_OOBSIZE 64 #define CONFIG_SYS_NAND_BLOCK_SIZE (128 * 1024) /* number of pages per block */ #define CONFIG_SYS_NAND_PAGE_COUNT 64 /* location of bad block marker within OOB */ #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0 /* to use the ecc.read_page and ecc.read_page_raw */ #define CONFIG_SPL_USE_ECC_READ /* To allocate buffer size for Denali driver. Cannot use standard as its * too large which bloated Preloader a lot */ #define NAND_MAX_OOBSIZE CONFIG_SYS_NAND_OOBSIZE #define NAND_MAX_PAGESIZE CONFIG_SYS_NAND_PAGE_SIZE #endif /* * Support for checksum in SPL binary */ #ifndef CONFIG_PRELOADER_CHECKSUM_NEXT_IMAGE #error "CONFIG_PRELOADER_CHECKSUM_NEXT_IMAGE must be defined" #endif #if (CONFIG_PRELOADER_CHECKSUM_NEXT_IMAGE == 1) #define CONFIG_SPL_CHECKSUM_NEXT_IMAGE #endif /* * Preloader State Register address. Write STATE_VALID to STATE_REG to * tell BootROM that Preloader run successfully. */ #ifndef CONFIG_PRELOADER_STATE_REG_ENABLE #error "CONFIG_PRELOADER_STATE_REG_ENABLE must be defined" #endif #if (CONFIG_PRELOADER_STATE_REG_ENABLE == 1) #define CONFIG_PRELOADER_STATE_REG (0xFFD080C8) #define CONFIG_PRELOADER_STATE_VALID (0x49535756) #endif /* * Support for ARM semihosting in SPL */ #ifndef CONFIG_PRELOADER_SEMIHOSTING #error "CONFIG_PRELOADER_SEMIHOSTING must be defined" #endif #if (CONFIG_PRELOADER_SEMIHOSTING == 1) && defined(CONFIG_SPL_BUILD) #define CONFIG_SPL_SEMIHOSTING_SUPPORT #endif /* * Support for FAT partition if boot from SDMMC */ #if (CONFIG_PRELOADER_BOOT_FROM_SDMMC == 1 && CONFIG_PRELOADER_FAT_SUPPORT == 1) /* MMC with FAT partition support */ #define CONFIG_SPL_FAT_SUPPORT #endif #ifdef CONFIG_SPL_FAT_SUPPORT #define CONFIG_SPL_LIBDISK_SUPPORT #define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION \ CONFIG_PRELOADER_FAT_BOOT_PARTITION #define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME \ CONFIG_PRELOADER_FAT_LOAD_PAYLOAD_NAME #endif /* CONFIG_SPL_FAT_SUPPORT */ /* * Stack setup */ #define CONFIG_SPL_STACK CONFIG_SYS_INIT_SP_ADDR #define CONFIG_SYS_SPL_MALLOC_START ((unsigned long) (&__malloc_start)) #define CONFIG_SYS_SPL_MALLOC_SIZE (&__malloc_end - &__malloc_start) /* Stack size for SPL */ #ifdef CONFIG_SPL_FAT_SUPPORT #define CONFIG_SPL_STACK_SIZE (5 * 1024) /* * New stack size which located within SDRAM after SDRAM is available. * FYI, 128kB stack can support fatload up to 7MB bootloader image */ #define CONFIG_SPL_SDRAM_STACK_SIZE (128 * 1024) #else #define CONFIG_SPL_STACK_SIZE (4 * 1024) #endif /* MALLOC size for SPL */ #define CONFIG_SPL_MALLOC_SIZE (5 * 1024) /* * FPGA programming support with SPL * FPGA RBF file source (with mkimage header) is located within the same * boot device which stored the subsequent boot image (U-Boot). */ /* enabled program the FPGA */ #undef CONFIG_SPL_FPGA_LOAD /* location of FPGA RBF image within QSPI */ #define CONFIG_SPL_FPGA_QSPI_ADDR (0x800000) /* RBF file name if its located within SD card */ #define CONFIG_SPL_FPGA_FAT_NAME "fpga.rbf" /* ensure FAT is defined if CONFIG_SPL_FPGA_LOAD is defined */ #ifdef CONFIG_SPL_FPGA_LOAD #if (CONFIG_PRELOADER_BOOT_FROM_SDMMC == 1 && !defined(CONFIG_SPL_FAT_SUPPORT)) #error "CONFIG_SPL_FAT_SUPPORT required for CONFIG_SPL_FPGA_LOAD" #endif /* CONFIG_SPL_FAT_SUPPORT */ #endif /* CONFIG_SPL_FPGA_LOAD */ /* * Enable memory padding if SDRAM ECC is enabled */ #if (CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN == 1) #define CONFIG_SPL_SDRAM_ECC_PADDING 32 #endif #endif /* __CONFIG_COMMON_H */