Commit 3e1a9b5c772af8d80d75a80fe91d3d02c63fa173

Authored by Priyanka Jain
Committed by Prabhakar Kushwaha
1 parent 938e35e58f

board/lx2160ardb: Add distro boot support

Add u-boot enviroments to support distro boot which scan
boot.scr from external storage devices
(e.g. SD/USB/SCSI disk) and execute autoboot script

Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
Reviewed-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com>

Showing 3 changed files with 91 additions and 24 deletions Side-by-side Diff

configs/lx2160ardb_tfa_defconfig
... ... @@ -14,6 +14,7 @@
14 14 CONFIG_BOOTDELAY=10
15 15 CONFIG_USE_BOOTARGS=y
16 16 CONFIG_BOOTARGS="console=ttyAMA0,115200 root=/dev/ram0 earlycon=pl011,mmio32,0x21c0000 ramdisk_size=0x2000000 default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf"
  17 +# CONFIG_USE_BOOTCOMMAND is not set
17 18 CONFIG_CMD_GREPENV=y
18 19 CONFIG_CMD_EEPROM=y
19 20 CONFIG_CMD_GPT=y
include/configs/lx2160a_common.h
... ... @@ -193,16 +193,6 @@
193 193 #define CONFIG_SYS_BOOTM_LEN (64 << 20) /* Increase max gunzip size */
194 194  
195 195 /* Initial environment variables */
196   -#define XSPI_NOR_BOOTCOMMAND "fsl_mc apply dpl 0x20d00000;" \
197   - "sf probe 0:0;" \
198   - "sf read 0xa0000000 0x1000000 0x3000000;" \
199   - "bootm 0xa0000000"
200   -
201   -#define SD_BOOTCOMMAND "mmc read 0xa0000000 0x6800 0xA0;" \
202   - "fsl_mc apply dpl 0xa0000000;" \
203   - "mmc read 0xb0000000 0x8000 0x1d000;" \
204   - "bootm 0xb0000000"
205   -
206 196 #define XSPI_MC_INIT_CMD \
207 197 "fsl_mc start mc 0x20a00000 0x20e00000\0"
208 198  
... ... @@ -210,6 +200,81 @@
210 200 "mmc read 0x80000000 0x5000 0x800;" \
211 201 "mmc read 0x80100000 0x7000 0x800;" \
212 202 "fsl_mc start mc 0x80000000 0x80100000\0"
  203 +
  204 +#define EXTRA_ENV_SETTINGS \
  205 + "hwconfig=fsl_ddr:bank_intlv=auto\0" \
  206 + "ramdisk_addr=0x800000\0" \
  207 + "ramdisk_size=0x2000000\0" \
  208 + "fdt_high=0xa0000000\0" \
  209 + "initrd_high=0xffffffffffffffff\0" \
  210 + "fdt_addr=0x64f00000\0" \
  211 + "kernel_start=0x1000000\0" \
  212 + "kernelheader_start=0x800000\0" \
  213 + "scriptaddr=0x80000000\0" \
  214 + "scripthdraddr=0x80080000\0" \
  215 + "fdtheader_addr_r=0x80100000\0" \
  216 + "kernelheader_addr_r=0x80200000\0" \
  217 + "kernel_addr_r=0x81000000\0" \
  218 + "kernelheader_size=0x40000\0" \
  219 + "fdt_addr_r=0x90000000\0" \
  220 + "load_addr=0xa0000000\0" \
  221 + "kernel_size=0x2800000\0" \
  222 + "kernel_addr_sd=0x8000\0" \
  223 + "kernel_size_sd=0x1d000\0" \
  224 + "console=ttyAMA0,38400n8\0" \
  225 + BOOTENV \
  226 + "mcmemsize=0x70000000\0" \
  227 + XSPI_MC_INIT_CMD \
  228 + "boot_scripts=lx2160ardb_boot.scr\0" \
  229 + "boot_script_hdr=hdr_lx2160ardb_bs.out\0" \
  230 + "scan_dev_for_boot_part=" \
  231 + "part list ${devtype} ${devnum} devplist; " \
  232 + "env exists devplist || setenv devplist 1; " \
  233 + "for distro_bootpart in ${devplist}; do " \
  234 + "if fstype ${devtype} " \
  235 + "${devnum}:${distro_bootpart} " \
  236 + "bootfstype; then " \
  237 + "run scan_dev_for_boot; " \
  238 + "fi; " \
  239 + "done\0" \
  240 + "scan_dev_for_boot=" \
  241 + "echo Scanning ${devtype} " \
  242 + "${devnum}:${distro_bootpart}...; " \
  243 + "for prefix in ${boot_prefixes}; do " \
  244 + "run scan_dev_for_scripts; " \
  245 + "done;\0" \
  246 + "boot_a_script=" \
  247 + "load ${devtype} ${devnum}:${distro_bootpart} " \
  248 + "${scriptaddr} ${prefix}${script}; " \
  249 + "env exists secureboot && load ${devtype} " \
  250 + "${devnum}:${distro_bootpart} " \
  251 + "${scripthdraddr} ${prefix}${boot_script_hdr} " \
  252 + "&& esbc_validate ${scripthdraddr};" \
  253 + "source ${scriptaddr}\0"
  254 +
  255 +#define XSPI_NOR_BOOTCOMMAND \
  256 + "env exists mcinitcmd && env exists secureboot "\
  257 + "&& esbc_validate 0x20780000; " \
  258 + "env exists mcinitcmd && " \
  259 + "fsl_mc lazyapply dpl 0x20d00000; " \
  260 + "run distro_bootcmd;run xspi_bootcmd; " \
  261 + "env exists secureboot && esbc_halt;"
  262 +
  263 +#define SD_BOOTCOMMAND \
  264 + "env exists mcinitcmd && mmcinfo; " \
  265 + "mmc read 0x80001000 0x6800 0x800; " \
  266 + "env exists mcinitcmd && env exists secureboot " \
  267 + " && mmc read 0x80780000 0x3C00 0x10 " \
  268 + "&& esbc_validate 0x80780000;env exists mcinitcmd " \
  269 + "&& fsl_mc lazyapply dpl 0x80001000;" \
  270 + "run distro_bootcmd;run sd_bootcmd;" \
  271 + "env exists secureboot && esbc_halt;"
  272 +
  273 +#define BOOT_TARGET_DEVICES(func) \
  274 + func(USB, usb, 0) \
  275 + func(MMC, mmc, 0) \
  276 + func(SCSI, scsi, 0)
  277 +#include <config_distro_bootcmd.h>
213 278  
214 279 #endif /* __LX2_COMMON_H */
include/configs/lx2160ardb.h
... ... @@ -87,21 +87,22 @@
87 87  
88 88 /* Initial environment variables */
89 89 #define CONFIG_EXTRA_ENV_SETTINGS \
90   - "hwconfig=fsl_ddr:bank_intlv=auto\0" \
91   - "scriptaddr=0x80800000\0" \
92   - "kernel_addr_r=0x81000000\0" \
93   - "pxefile_addr_r=0x81000000\0" \
94   - "fdt_addr_r=0x88000000\0" \
95   - "ramdisk_addr_r=0x89000000\0" \
96   - "loadaddr=0x80100000\0" \
97   - "kernel_addr=0x100000\0" \
98   - "ramdisk_addr=0x800000\0" \
99   - "ramdisk_size=0x2000000\0" \
100   - "fdt_high=0xa0000000\0" \
101   - "initrd_high=0xffffffffffffffff\0" \
102   - "kernel_start=0x21000000\0" \
  90 + EXTRA_ENV_SETTINGS \
103 91 "lx2160ardb_vdd_mv=800\0" \
104   - "mcmemsize=0x40000000\0"
  92 + "BOARD=lx2160ardb\0" \
  93 + "xspi_bootcmd=echo Trying load from flexspi..;" \
  94 + "sf probe 0:0 && sf read $load_addr " \
  95 + "$kernel_start $kernel_size ; env exists secureboot &&" \
  96 + "sf read $kernelheader_addr_r $kernelheader_start " \
  97 + "$kernelheader_size && esbc_validate ${kernelheader_addr_r}; "\
  98 + " bootm $load_addr#$BOARD\0" \
  99 + "sd_bootcmd=echo Trying load from sd card..;" \
  100 + "mmcinfo; mmc read $load_addr " \
  101 + "$kernel_addr_sd $kernel_size_sd ;" \
  102 + "env exists secureboot && mmc read $kernelheader_addr_r "\
  103 + "$kernelhdr_addr_sd $kernelhdr_size_sd " \
  104 + " && esbc_validate ${kernelheader_addr_r};" \
  105 + "bootm $load_addr#$BOARD\0"
105 106  
106 107 #include <asm/fsl_secure_boot.h>
107 108