/*
* Copyright 2015 Freescale Semiconductor , Inc .
*
* SPDX - License - Identifier : GPL - 2.0 +
*/
# ifndef __CONFIG_FSL_SECBOOT_H
# define __CONFIG_FSL_SECBOOT_H
# ifdef CONFIG_SECURE_BOOT
# ifndef CONFIG_CMD_ESBC_VALIDATE
# define CONFIG_CMD_ESBC_VALIDATE
# endif
# ifndef CONFIG_EXTRA_ENV
# define CONFIG_EXTRA_ENV ""
# endif
/*
* Control should not reach back to uboot after validation of images
* for secure boot flow and therefore bootscript should have
* the bootm command . If control reaches back to uboot anyhow
* after validating images , core should just spin .
*/
/*
* Define the key hash for boot script here if public / private key pair used to
* sign bootscript are different from the SRK hash put in the fuse
* Example of defining KEY_HASH is
* # define CONFIG_BOOTSCRIPT_KEY_HASH \
* " 41066b564c6ffcef40ccbc1e0a5d0d519604000c785d97bbefd25e4d288d1c8b "
*/
# ifdef CONFIG_BOOTSCRIPT_KEY_HASH
# define CONFIG_SECBOOT \
" setenv bs_hdraddr " __stringify ( CONFIG_BOOTSCRIPT_HDR_ADDR ) " ; " \
" setenv bootargs \' root=/dev/ram rw console=ttyS0,115200 " \
" ramdisk_size=600000 \' ; " \
CONFIG_EXTRA_ENV \
" esbc_validate $bs_hdraddr " \
__stringify ( CONFIG_BOOTSCRIPT_KEY_HASH ) " ; " \
" source $img_addr; " \
" esbc_halt \0 "
# else
# define CONFIG_SECBOOT \
" setenv bs_hdraddr " __stringify ( CONFIG_BOOTSCRIPT_HDR_ADDR ) " ; " \
" setenv bootargs \' root=/dev/ram rw console=ttyS0,115200 " \
" ramdisk_size=600000 \' ; " \
CONFIG_EXTRA_ENV \
" esbc_validate $bs_hdraddr; " \
" source $img_addr; " \
" esbc_halt \0 "
# endif
/* For secure boot flow, default environment used will be used */
# if defined(CONFIG_SYS_RAMBOOT)
# ifdef CONFIG_BOOTSCRIPT_COPY_RAM
# define CONFIG_BS_COPY_ENV \
" setenv bs_hdr_ram " __stringify ( CONFIG_BS_HDR_ADDR_RAM ) " ; " \
" setenv bs_hdr_flash " __stringify ( CONFIG_BS_HDR_ADDR_FLASH ) " ; " \
" setenv bs_hdr_size " __stringify ( CONFIG_BS_HDR_SIZE ) " ; " \
" setenv bs_ram " __stringify ( CONFIG_BS_ADDR_RAM ) " ; " \
" setenv bs_flash " __stringify ( CONFIG_BS_ADDR_FLASH ) " ; " \
" setenv bs_size " __stringify ( CONFIG_BS_SIZE ) " ; "
# if defined(CONFIG_RAMBOOT_NAND)
# define CONFIG_BS_COPY_CMD \
" nand read $bs_hdr_ram $bs_hdr_flash $bs_hdr_size ; " \
" nand read $bs_ram $bs_flash $bs_size ; "
# endif /* CONFIG_RAMBOOT_NAND */
# endif /* CONFIG_BOOTSCRIPT_COPY_RAM */
# if defined(CONFIG_RAMBOOT_SPIFLASH)
# undef CONFIG_ENV_IS_IN_SPI_FLASH
# elif defined(CONFIG_RAMBOOT_NAND)
# undef CONFIG_ENV_IS_IN_NAND
# elif defined(CONFIG_RAMBOOT_SDCARD)
# undef CONFIG_ENV_IS_IN_MMC
# endif
# else /*CONFIG_SYS_RAMBOOT*/
# undef CONFIG_ENV_IS_IN_FLASH
# endif
# define CONFIG_ENV_IS_NOWHERE
# ifndef CONFIG_BS_COPY_ENV
# define CONFIG_BS_COPY_ENV
# endif
# ifndef CONFIG_BS_COPY_CMD
# define CONFIG_BS_COPY_CMD
# endif
# define CONFIG_SECBOOT_CMD CONFIG_BS_COPY_ENV \
CONFIG_BS_COPY_CMD \
CONFIG_SECBOOT
/*
* We don ' t want boot delay for secure boot flow
* before autoboot starts
*/
# undef CONFIG_BOOTDELAY
# define CONFIG_BOOTDELAY 0
# undef CONFIG_BOOTCOMMAND
# define CONFIG_BOOTCOMMAND CONFIG_SECBOOT_CMD
/*
* CONFIG_ZERO_BOOTDELAY_CHECK should not be defined for
* secure boot flow as defining this would enable a user to
* reach uboot prompt by pressing some key before start of
* autoboot
*/
# undef CONFIG_ZERO_BOOTDELAY_CHECK
# endif
# endif