1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2016 Freescale Semiconductor 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef __LS1046A_COMMON_H 8*4882a593Smuzhiyun #define __LS1046A_COMMON_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* SPL build */ 11*4882a593Smuzhiyun #ifdef CONFIG_SPL_BUILD 12*4882a593Smuzhiyun #define SPL_NO_QBMAN 13*4882a593Smuzhiyun #define SPL_NO_FMAN 14*4882a593Smuzhiyun #define SPL_NO_ENV 15*4882a593Smuzhiyun #define SPL_NO_MISC 16*4882a593Smuzhiyun #define SPL_NO_QSPI 17*4882a593Smuzhiyun #define SPL_NO_USB 18*4882a593Smuzhiyun #define SPL_NO_SATA 19*4882a593Smuzhiyun #endif 20*4882a593Smuzhiyun #if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_NAND_BOOT)) 21*4882a593Smuzhiyun #define SPL_NO_MMC 22*4882a593Smuzhiyun #endif 23*4882a593Smuzhiyun #if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SD_BOOT)) 24*4882a593Smuzhiyun #define SPL_NO_IFC 25*4882a593Smuzhiyun #endif 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define CONFIG_REMAKE_ELF 28*4882a593Smuzhiyun #define CONFIG_FSL_LAYERSCAPE 29*4882a593Smuzhiyun #define CONFIG_MP 30*4882a593Smuzhiyun #define CONFIG_GICV2 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #include <asm/arch/config.h> 33*4882a593Smuzhiyun #include <asm/arch/stream_id_lsch2.h> 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* Link Definitions */ 36*4882a593Smuzhiyun #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_FSL_OCRAM_BASE + 0xfff0) 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #define CONFIG_SUPPORT_RAW_INITRD 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define CONFIG_SKIP_LOWLEVEL_INIT 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define CONFIG_VERY_BIG_RAM 43*4882a593Smuzhiyun #define CONFIG_SYS_DDR_SDRAM_BASE 0x80000000 44*4882a593Smuzhiyun #define CONFIG_SYS_FSL_DDR_SDRAM_BASE_PHY 0 45*4882a593Smuzhiyun #define CONFIG_SYS_SDRAM_BASE CONFIG_SYS_DDR_SDRAM_BASE 46*4882a593Smuzhiyun #define CONFIG_SYS_DDR_BLOCK2_BASE 0x880000000ULL 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define CPU_RELEASE_ADDR secondary_boot_func 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* Generic Timer Definitions */ 51*4882a593Smuzhiyun #define COUNTER_FREQUENCY 25000000 /* 25MHz */ 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun /* Size of malloc() pool */ 54*4882a593Smuzhiyun #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 1024 * 1024) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* Serial Port */ 57*4882a593Smuzhiyun #define CONFIG_CONS_INDEX 1 58*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_SERIAL 59*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_REG_SIZE 1 60*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_CLK (get_serial_clock()) 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* SD boot SPL */ 65*4882a593Smuzhiyun #ifdef CONFIG_SD_BOOT 66*4882a593Smuzhiyun #define CONFIG_SPL_FRAMEWORK 67*4882a593Smuzhiyun #define CONFIG_SPL_TARGET "u-boot-with-spl.bin" 68*4882a593Smuzhiyun #define CONFIG_SPL_LIBCOMMON_SUPPORT 69*4882a593Smuzhiyun #define CONFIG_SPL_LIBGENERIC_SUPPORT 70*4882a593Smuzhiyun #define CONFIG_SPL_ENV_SUPPORT 71*4882a593Smuzhiyun #define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT 72*4882a593Smuzhiyun #define CONFIG_SPL_WATCHDOG_SUPPORT 73*4882a593Smuzhiyun #define CONFIG_SPL_I2C_SUPPORT 74*4882a593Smuzhiyun #define CONFIG_SPL_SERIAL_SUPPORT 75*4882a593Smuzhiyun #define CONFIG_SPL_DRIVERS_MISC_SUPPORT 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define CONFIG_SPL_MMC_SUPPORT 78*4882a593Smuzhiyun #define CONFIG_SPL_TEXT_BASE 0x10000000 79*4882a593Smuzhiyun #define CONFIG_SPL_MAX_SIZE 0x1f000 /* 124 KiB */ 80*4882a593Smuzhiyun #define CONFIG_SPL_STACK 0x10020000 81*4882a593Smuzhiyun #define CONFIG_SPL_PAD_TO 0x21000 /* 132 KiB */ 82*4882a593Smuzhiyun #define CONFIG_SPL_BSS_START_ADDR 0x8f000000 83*4882a593Smuzhiyun #define CONFIG_SPL_BSS_MAX_SIZE 0x80000 84*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \ 85*4882a593Smuzhiyun CONFIG_SPL_BSS_MAX_SIZE) 86*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #ifdef CONFIG_SECURE_BOOT 89*4882a593Smuzhiyun #define CONFIG_U_BOOT_HDR_SIZE (16 << 10) 90*4882a593Smuzhiyun /* 91*4882a593Smuzhiyun * HDR would be appended at end of image and copied to DDR along 92*4882a593Smuzhiyun * with U-Boot image. Here u-boot max. size is 512K. So if binary 93*4882a593Smuzhiyun * size increases then increase this size in case of secure boot as 94*4882a593Smuzhiyun * it uses raw u-boot image instead of fit image. 95*4882a593Smuzhiyun */ 96*4882a593Smuzhiyun #define CONFIG_SYS_MONITOR_LEN (0x100000 + CONFIG_U_BOOT_HDR_SIZE) 97*4882a593Smuzhiyun #else 98*4882a593Smuzhiyun #define CONFIG_SYS_MONITOR_LEN 0x100000 99*4882a593Smuzhiyun #endif /* ifdef CONFIG_SECURE_BOOT */ 100*4882a593Smuzhiyun #endif 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun /* NAND SPL */ 103*4882a593Smuzhiyun #ifdef CONFIG_NAND_BOOT 104*4882a593Smuzhiyun #define CONFIG_SPL_PBL_PAD 105*4882a593Smuzhiyun #define CONFIG_SPL_FRAMEWORK 106*4882a593Smuzhiyun #define CONFIG_SPL_TARGET "u-boot-with-spl.bin" 107*4882a593Smuzhiyun #define CONFIG_SPL_LIBCOMMON_SUPPORT 108*4882a593Smuzhiyun #define CONFIG_SPL_LIBGENERIC_SUPPORT 109*4882a593Smuzhiyun #define CONFIG_SPL_ENV_SUPPORT 110*4882a593Smuzhiyun #define CONFIG_SPL_WATCHDOG_SUPPORT 111*4882a593Smuzhiyun #define CONFIG_SPL_I2C_SUPPORT 112*4882a593Smuzhiyun #define CONFIG_SPL_SERIAL_SUPPORT 113*4882a593Smuzhiyun #define CONFIG_SPL_MPC8XXX_INIT_DDR_SUPPORT 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define CONFIG_SPL_NAND_SUPPORT 116*4882a593Smuzhiyun #define CONFIG_SPL_DRIVERS_MISC_SUPPORT 117*4882a593Smuzhiyun #define CONFIG_SPL_TEXT_BASE 0x10000000 118*4882a593Smuzhiyun #define CONFIG_SPL_MAX_SIZE 0x17000 /* 90 KiB */ 119*4882a593Smuzhiyun #define CONFIG_SPL_STACK 0x1001f000 120*4882a593Smuzhiyun #define CONFIG_SYS_NAND_U_BOOT_DST CONFIG_SYS_TEXT_BASE 121*4882a593Smuzhiyun #define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #define CONFIG_SPL_BSS_START_ADDR 0x8f000000 124*4882a593Smuzhiyun #define CONFIG_SPL_BSS_MAX_SIZE 0x80000 125*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + \ 126*4882a593Smuzhiyun CONFIG_SPL_BSS_MAX_SIZE) 127*4882a593Smuzhiyun #define CONFIG_SYS_SPL_MALLOC_SIZE 0x100000 128*4882a593Smuzhiyun #define CONFIG_SYS_MONITOR_LEN 0xa0000 129*4882a593Smuzhiyun #endif 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* I2C */ 132*4882a593Smuzhiyun #define CONFIG_SYS_I2C 133*4882a593Smuzhiyun #define CONFIG_SYS_I2C_MXC 134*4882a593Smuzhiyun #define CONFIG_SYS_I2C_MXC_I2C1 135*4882a593Smuzhiyun #define CONFIG_SYS_I2C_MXC_I2C2 136*4882a593Smuzhiyun #define CONFIG_SYS_I2C_MXC_I2C3 137*4882a593Smuzhiyun #define CONFIG_SYS_I2C_MXC_I2C4 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* PCIe */ 140*4882a593Smuzhiyun #define CONFIG_PCIE1 /* PCIE controller 1 */ 141*4882a593Smuzhiyun #define CONFIG_PCIE2 /* PCIE controller 2 */ 142*4882a593Smuzhiyun #define CONFIG_PCIE3 /* PCIE controller 3 */ 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun #ifdef CONFIG_PCI 145*4882a593Smuzhiyun #define CONFIG_PCI_SCAN_SHOW 146*4882a593Smuzhiyun #endif 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* Command line configuration */ 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun /* MMC */ 151*4882a593Smuzhiyun #ifndef SPL_NO_MMC 152*4882a593Smuzhiyun #ifdef CONFIG_MMC 153*4882a593Smuzhiyun #define CONFIG_FSL_ESDHC 154*4882a593Smuzhiyun #define CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33 155*4882a593Smuzhiyun #endif 156*4882a593Smuzhiyun #endif 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun #ifndef SPL_NO_QBMAN 159*4882a593Smuzhiyun #define CONFIG_SYS_DPAA_QBMAN /* Support Q/Bman */ 160*4882a593Smuzhiyun #endif 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun /* FMan ucode */ 163*4882a593Smuzhiyun #ifndef SPL_NO_FMAN 164*4882a593Smuzhiyun #define CONFIG_SYS_DPAA_FMAN 165*4882a593Smuzhiyun #ifdef CONFIG_SYS_DPAA_FMAN 166*4882a593Smuzhiyun #define CONFIG_SYS_FM_MURAM_SIZE 0x60000 167*4882a593Smuzhiyun #endif 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #ifdef CONFIG_SD_BOOT 170*4882a593Smuzhiyun /* 171*4882a593Smuzhiyun * PBL SD boot image should stored at 0x1000(8 blocks), the size of the image is 172*4882a593Smuzhiyun * about 1MB (2048 blocks), Env is stored after the image, and the env size is 173*4882a593Smuzhiyun * 0x2000 (16 blocks), 8 + 2048 + 16 = 2072, enlarge it to 18432(0x4800). 174*4882a593Smuzhiyun */ 175*4882a593Smuzhiyun #define CONFIG_SYS_QE_FMAN_FW_IN_MMC 176*4882a593Smuzhiyun #define CONFIG_SYS_FMAN_FW_ADDR (512 * 0x4800) 177*4882a593Smuzhiyun #elif defined(CONFIG_QSPI_BOOT) 178*4882a593Smuzhiyun #define CONFIG_SYS_QE_FW_IN_SPIFLASH 179*4882a593Smuzhiyun #define CONFIG_SYS_FMAN_FW_ADDR 0x40900000 180*4882a593Smuzhiyun #define CONFIG_ENV_SPI_BUS 0 181*4882a593Smuzhiyun #define CONFIG_ENV_SPI_CS 0 182*4882a593Smuzhiyun #define CONFIG_ENV_SPI_MAX_HZ 1000000 183*4882a593Smuzhiyun #define CONFIG_ENV_SPI_MODE 0x03 184*4882a593Smuzhiyun #elif defined(CONFIG_NAND_BOOT) 185*4882a593Smuzhiyun #define CONFIG_SYS_QE_FMAN_FW_IN_NAND 186*4882a593Smuzhiyun #define CONFIG_SYS_FMAN_FW_ADDR (72 * CONFIG_SYS_NAND_BLOCK_SIZE) 187*4882a593Smuzhiyun #else 188*4882a593Smuzhiyun #define CONFIG_SYS_QE_FMAN_FW_IN_NOR 189*4882a593Smuzhiyun #define CONFIG_SYS_FMAN_FW_ADDR 0x60900000 190*4882a593Smuzhiyun #endif 191*4882a593Smuzhiyun #define CONFIG_SYS_QE_FMAN_FW_LENGTH 0x10000 192*4882a593Smuzhiyun #define CONFIG_SYS_FDT_PAD (0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH) 193*4882a593Smuzhiyun #endif 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun /* Miscellaneous configurable options */ 196*4882a593Smuzhiyun #define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_DDR_SDRAM_BASE + 0x10000000) 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun #define CONFIG_HWCONFIG 199*4882a593Smuzhiyun #define HWCONFIG_BUFFER_SIZE 128 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun #include <config_distro_defaults.h> 202*4882a593Smuzhiyun #ifndef CONFIG_SPL_BUILD 203*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES(func) \ 204*4882a593Smuzhiyun func(MMC, mmc, 0) \ 205*4882a593Smuzhiyun func(USB, usb, 0) 206*4882a593Smuzhiyun #include <config_distro_bootcmd.h> 207*4882a593Smuzhiyun #endif 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #ifndef SPL_NO_MISC 210*4882a593Smuzhiyun /* Initial environment variables */ 211*4882a593Smuzhiyun #define CONFIG_EXTRA_ENV_SETTINGS \ 212*4882a593Smuzhiyun "hwconfig=fsl_ddr:bank_intlv=auto\0" \ 213*4882a593Smuzhiyun "ramdisk_addr=0x800000\0" \ 214*4882a593Smuzhiyun "ramdisk_size=0x2000000\0" \ 215*4882a593Smuzhiyun "fdt_high=0xffffffffffffffff\0" \ 216*4882a593Smuzhiyun "initrd_high=0xffffffffffffffff\0" \ 217*4882a593Smuzhiyun "fdt_addr=0x64f00000\0" \ 218*4882a593Smuzhiyun "kernel_addr=0x65000000\0" \ 219*4882a593Smuzhiyun "scriptaddr=0x80000000\0" \ 220*4882a593Smuzhiyun "scripthdraddr=0x80080000\0" \ 221*4882a593Smuzhiyun "fdtheader_addr_r=0x80100000\0" \ 222*4882a593Smuzhiyun "kernelheader_addr_r=0x80200000\0" \ 223*4882a593Smuzhiyun "load_addr=0xa0000000\0" \ 224*4882a593Smuzhiyun "kernel_addr_r=0x81000000\0" \ 225*4882a593Smuzhiyun "fdt_addr_r=0x90000000\0" \ 226*4882a593Smuzhiyun "ramdisk_addr_r=0xa0000000\0" \ 227*4882a593Smuzhiyun "kernel_start=0x1000000\0" \ 228*4882a593Smuzhiyun "kernel_load=0xa0000000\0" \ 229*4882a593Smuzhiyun "kernel_size=0x2800000\0" \ 230*4882a593Smuzhiyun "console=ttyS0,115200\0" \ 231*4882a593Smuzhiyun MTDPARTS_DEFAULT "\0" \ 232*4882a593Smuzhiyun BOOTENV \ 233*4882a593Smuzhiyun "boot_scripts=ls1046ardb_boot.scr\0" \ 234*4882a593Smuzhiyun "boot_script_hdr=hdr_ls1046ardb_bs.out\0" \ 235*4882a593Smuzhiyun "scan_dev_for_boot_part=" \ 236*4882a593Smuzhiyun "part list ${devtype} ${devnum} devplist; " \ 237*4882a593Smuzhiyun "env exists devplist || setenv devplist 1; " \ 238*4882a593Smuzhiyun "for distro_bootpart in ${devplist}; do " \ 239*4882a593Smuzhiyun "if fstype ${devtype} " \ 240*4882a593Smuzhiyun "${devnum}:${distro_bootpart} " \ 241*4882a593Smuzhiyun "bootfstype; then " \ 242*4882a593Smuzhiyun "run scan_dev_for_boot; " \ 243*4882a593Smuzhiyun "fi; " \ 244*4882a593Smuzhiyun "done\0" \ 245*4882a593Smuzhiyun "scan_dev_for_boot=" \ 246*4882a593Smuzhiyun "echo Scanning ${devtype} " \ 247*4882a593Smuzhiyun "${devnum}:${distro_bootpart}...; " \ 248*4882a593Smuzhiyun "for prefix in ${boot_prefixes}; do " \ 249*4882a593Smuzhiyun "run scan_dev_for_scripts; " \ 250*4882a593Smuzhiyun "done;" \ 251*4882a593Smuzhiyun "\0" \ 252*4882a593Smuzhiyun "boot_a_script=" \ 253*4882a593Smuzhiyun "load ${devtype} ${devnum}:${distro_bootpart} " \ 254*4882a593Smuzhiyun "${scriptaddr} ${prefix}${script}; " \ 255*4882a593Smuzhiyun "env exists secureboot && load ${devtype} " \ 256*4882a593Smuzhiyun "${devnum}:${distro_bootpart} " \ 257*4882a593Smuzhiyun "${scripthdraddr} ${prefix}${boot_script_hdr} " \ 258*4882a593Smuzhiyun "&& esbc_validate ${scripthdraddr};" \ 259*4882a593Smuzhiyun "source ${scriptaddr}\0" \ 260*4882a593Smuzhiyun "installer=load mmc 0:2 $load_addr " \ 261*4882a593Smuzhiyun "/flex_installer_arm64.itb; " \ 262*4882a593Smuzhiyun "bootm $load_addr#ls1046ardb\0" \ 263*4882a593Smuzhiyun "qspi_bootcmd=echo Trying load from qspi..;" \ 264*4882a593Smuzhiyun "sf probe && sf read $load_addr " \ 265*4882a593Smuzhiyun "$kernel_start $kernel_size && bootm $load_addr#$board\0" 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun #endif 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun /* Monitor Command Prompt */ 270*4882a593Smuzhiyun #define CONFIG_SYS_CBSIZE 512 /* Console I/O Buffer Size */ 271*4882a593Smuzhiyun #define CONFIG_SYS_LONGHELP 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define CONFIG_AUTO_COMPLETE 274*4882a593Smuzhiyun #define CONFIG_SYS_MAXARGS 64 /* max command args */ 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun #define CONFIG_SYS_BOOTM_LEN (64 << 20) /* Increase max gunzip size */ 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun #include <asm/arch/soc.h> 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun #endif /* __LS1046A_COMMON_H */ 281