1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright 2015 Freescale Semiconductor, Inc.
4 */
5
6#ifndef __CONFIG_FSL_CHAIN_TRUST_H
7#define __CONFIG_FSL_CHAIN_TRUST_H
8
9#include <linux/stringify.h>
10
11#ifdef CONFIG_CHAIN_OF_TRUST
12
13/*
14 * Control should not reach back to uboot after validation of images
15 * for secure boot flow and therefore bootscript should have
16 * the bootm command. If control reaches back to uboot anyhow
17 * after validating images, core should just spin.
18 */
19
20#ifdef CONFIG_USE_BOOTARGS
21#define SET_BOOTARGS	"setenv bootargs \'" CONFIG_BOOTARGS" \';"
22#else
23#define SET_BOOTARGS	"setenv bootargs \'root=/dev/ram "	\
24				"rw console=ttyS0,115200 ramdisk_size=600000\';"
25#endif
26
27#define SECBOOT \
28	"setenv bs_hdraddr " __stringify(CONFIG_BOOTSCRIPT_HDR_ADDR)";" \
29	SET_BOOTARGS	\
30	"esbc_validate $bs_hdraddr;" \
31	"source $img_addr;"	\
32	"esbc_halt\0"
33
34#ifdef CONFIG_BOOTSCRIPT_COPY_RAM
35#define BS_COPY_ENV \
36	"setenv bs_hdr_ram " __stringify(CONFIG_BS_HDR_ADDR_RAM)";" \
37	"setenv bs_hdr_device " __stringify(CONFIG_BS_HDR_ADDR_DEVICE)";" \
38	"setenv bs_hdr_size " __stringify(CONFIG_BS_HDR_SIZE)";" \
39	"setenv bs_ram " __stringify(CONFIG_BS_ADDR_RAM)";" \
40	"setenv bs_device " __stringify(CONFIG_BS_ADDR_DEVICE)";" \
41	"setenv bs_size " __stringify(CONFIG_BS_SIZE)";"
42
43/* For secure boot flow, default environment used will be used */
44#if defined(CONFIG_SYS_RAMBOOT) || defined(CONFIG_NAND_BOOT) || \
45	defined(CONFIG_SD_BOOT)
46#if defined(CONFIG_NAND_BOOT)
47#define BS_COPY_CMD \
48	"nand read $bs_hdr_ram $bs_hdr_device $bs_hdr_size ;" \
49	"nand read $bs_ram $bs_device $bs_size ;"
50#elif defined(CONFIG_SD_BOOT)
51#define BS_COPY_CMD \
52	"mmc read $bs_hdr_ram $bs_hdr_device $bs_hdr_size ;" \
53	"mmc read $bs_ram $bs_device $bs_size ;"
54#endif
55#else
56#define BS_COPY_CMD \
57	"cp.b $bs_hdr_device $bs_hdr_ram  $bs_hdr_size ;" \
58	"cp.b $bs_device $bs_ram  $bs_size ;"
59#endif
60#else /* !CONFIG_BOOTSCRIPT_COPY_RAM */
61#define BS_COPY_ENV
62#define BS_COPY_CMD
63#endif /* CONFIG_BOOTSCRIPT_COPY_RAM */
64
65#define CHAIN_BOOT_CMD	BS_COPY_ENV \
66			BS_COPY_CMD \
67			SECBOOT
68
69#endif
70#endif
71