Skip to content
Snippets Groups Projects
config_fsl_secboot.h 3.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * 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