1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2010-2011 Freescale Semiconductor, Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef __FSL_SECURE_BOOT_H 8*4882a593Smuzhiyun #define __FSL_SECURE_BOOT_H 9*4882a593Smuzhiyun #include <asm/config_mpc85xx.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifdef CONFIG_SECURE_BOOT 12*4882a593Smuzhiyun #if defined(CONFIG_FSL_CORENET) 13*4882a593Smuzhiyun #define CONFIG_SYS_PBI_FLASH_BASE 0xc0000000 14*4882a593Smuzhiyun #elif defined(CONFIG_TARGET_BSC9132QDS) 15*4882a593Smuzhiyun #define CONFIG_SYS_PBI_FLASH_BASE 0xc8000000 16*4882a593Smuzhiyun #elif defined(CONFIG_TARGET_C29XPCIE) 17*4882a593Smuzhiyun #define CONFIG_SYS_PBI_FLASH_BASE 0xcc000000 18*4882a593Smuzhiyun #else 19*4882a593Smuzhiyun #define CONFIG_SYS_PBI_FLASH_BASE 0xce000000 20*4882a593Smuzhiyun #endif 21*4882a593Smuzhiyun #define CONFIG_SYS_PBI_FLASH_WINDOW 0xcff80000 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #if defined(CONFIG_TARGET_B4860QDS) || \ 24*4882a593Smuzhiyun defined(CONFIG_TARGET_B4420QDS) || \ 25*4882a593Smuzhiyun defined(CONFIG_TARGET_T4160QDS) || \ 26*4882a593Smuzhiyun defined(CONFIG_TARGET_T4240QDS) || \ 27*4882a593Smuzhiyun defined(CONFIG_TARGET_T2080QDS) || \ 28*4882a593Smuzhiyun defined(CONFIG_TARGET_T2080RDB) || \ 29*4882a593Smuzhiyun defined(CONFIG_TARGET_T1040QDS) || \ 30*4882a593Smuzhiyun defined(CONFIG_TARGET_T1040RDB) || \ 31*4882a593Smuzhiyun defined(CONFIG_TARGET_T1040D4RDB) || \ 32*4882a593Smuzhiyun defined(CONFIG_TARGET_T1042RDB) || \ 33*4882a593Smuzhiyun defined(CONFIG_TARGET_T1042D4RDB) || \ 34*4882a593Smuzhiyun defined(CONFIG_TARGET_T1042RDB_PI) || \ 35*4882a593Smuzhiyun defined(CONFIG_ARCH_T1023) || \ 36*4882a593Smuzhiyun defined(CONFIG_ARCH_T1024) 37*4882a593Smuzhiyun #ifndef CONFIG_SYS_RAMBOOT 38*4882a593Smuzhiyun #define CONFIG_SYS_CPC_REINIT_F 39*4882a593Smuzhiyun #endif 40*4882a593Smuzhiyun #define CONFIG_KEY_REVOCATION 41*4882a593Smuzhiyun #undef CONFIG_SYS_INIT_L3_ADDR 42*4882a593Smuzhiyun #define CONFIG_SYS_INIT_L3_ADDR 0xbff00000 43*4882a593Smuzhiyun #endif 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #if defined(CONFIG_RAMBOOT_PBL) 46*4882a593Smuzhiyun #undef CONFIG_SYS_INIT_L3_ADDR 47*4882a593Smuzhiyun #ifdef CONFIG_SYS_INIT_L3_VADDR 48*4882a593Smuzhiyun #define CONFIG_SYS_INIT_L3_ADDR \ 49*4882a593Smuzhiyun (CONFIG_SYS_INIT_L3_VADDR & ~0xFFF00000) | \ 50*4882a593Smuzhiyun 0xbff00000 51*4882a593Smuzhiyun #else 52*4882a593Smuzhiyun #define CONFIG_SYS_INIT_L3_ADDR 0xbff00000 53*4882a593Smuzhiyun #endif 54*4882a593Smuzhiyun #endif 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #if defined(CONFIG_TARGET_C29XPCIE) 57*4882a593Smuzhiyun #define CONFIG_KEY_REVOCATION 58*4882a593Smuzhiyun #endif 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #if defined(CONFIG_ARCH_P3041) || \ 61*4882a593Smuzhiyun defined(CONFIG_ARCH_P4080) || \ 62*4882a593Smuzhiyun defined(CONFIG_ARCH_P5020) || \ 63*4882a593Smuzhiyun defined(CONFIG_ARCH_P5040) || \ 64*4882a593Smuzhiyun defined(CONFIG_ARCH_P2041) 65*4882a593Smuzhiyun #define CONFIG_FSL_TRUST_ARCH_v1 66*4882a593Smuzhiyun #endif 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #if defined(CONFIG_FSL_CORENET) && !defined(CONFIG_SYS_RAMBOOT) 69*4882a593Smuzhiyun /* The key used for verification of next level images 70*4882a593Smuzhiyun * is picked up from an Extension Table which has 71*4882a593Smuzhiyun * been verified by the ISBC (Internal Secure boot Code) 72*4882a593Smuzhiyun * in boot ROM of the SoC. 73*4882a593Smuzhiyun * The feature is only applicable in case of NOR boot and is 74*4882a593Smuzhiyun * not applicable in case of RAMBOOT (NAND, SD, SPI). 75*4882a593Smuzhiyun */ 76*4882a593Smuzhiyun #define CONFIG_FSL_ISBC_KEY_EXT 77*4882a593Smuzhiyun #endif 78*4882a593Smuzhiyun #endif /* #ifdef CONFIG_SECURE_BOOT */ 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun #ifdef CONFIG_CHAIN_OF_TRUST 81*4882a593Smuzhiyun #ifdef CONFIG_SPL_BUILD 82*4882a593Smuzhiyun /* 83*4882a593Smuzhiyun * PPAACT and SPAACT table for PAMU must be placed on DDR after DDR init 84*4882a593Smuzhiyun * due to space crunch on CPC and thus malloc will not work. 85*4882a593Smuzhiyun */ 86*4882a593Smuzhiyun #define CONFIG_SPL_PPAACT_ADDR 0x2e000000 87*4882a593Smuzhiyun #define CONFIG_SPL_SPAACT_ADDR 0x2f000000 88*4882a593Smuzhiyun #define CONFIG_SPL_JR0_LIODN_S 454 89*4882a593Smuzhiyun #define CONFIG_SPL_JR0_LIODN_NS 458 90*4882a593Smuzhiyun /* 91*4882a593Smuzhiyun * Define the key hash for U-Boot here if public/private key pair used to 92*4882a593Smuzhiyun * sign U-boot are different from the SRK hash put in the fuse 93*4882a593Smuzhiyun * Example of defining KEY_HASH is 94*4882a593Smuzhiyun * #define CONFIG_SPL_UBOOT_KEY_HASH \ 95*4882a593Smuzhiyun * "41066b564c6ffcef40ccbc1e0a5d0d519604000c785d97bbefd25e4d288d1c8b" 96*4882a593Smuzhiyun * else leave it defined as NULL 97*4882a593Smuzhiyun */ 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun #define CONFIG_SPL_UBOOT_KEY_HASH NULL 100*4882a593Smuzhiyun #endif /* ifdef CONFIG_SPL_BUILD */ 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun #define CONFIG_FSL_SEC_MON 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #ifndef CONFIG_SPL_BUILD 105*4882a593Smuzhiyun /* 106*4882a593Smuzhiyun * fsl_setenv_chain_of_trust() must be called from 107*4882a593Smuzhiyun * board_late_init() 108*4882a593Smuzhiyun */ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun /* If Boot Script is not on NOR and is required to be copied on RAM */ 111*4882a593Smuzhiyun #ifdef CONFIG_BOOTSCRIPT_COPY_RAM 112*4882a593Smuzhiyun #define CONFIG_BS_HDR_ADDR_RAM 0x00010000 113*4882a593Smuzhiyun #define CONFIG_BS_HDR_ADDR_DEVICE 0x00800000 114*4882a593Smuzhiyun #define CONFIG_BS_HDR_SIZE 0x00002000 115*4882a593Smuzhiyun #define CONFIG_BS_ADDR_RAM 0x00012000 116*4882a593Smuzhiyun #define CONFIG_BS_ADDR_DEVICE 0x00802000 117*4882a593Smuzhiyun #define CONFIG_BS_SIZE 0x00001000 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR CONFIG_BS_HDR_ADDR_RAM 120*4882a593Smuzhiyun #else 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* The bootscript header address is different for B4860 because the NOR 123*4882a593Smuzhiyun * mapping is different on B4 due to reduced NOR size. 124*4882a593Smuzhiyun */ 125*4882a593Smuzhiyun #if defined(CONFIG_TARGET_B4860QDS) || defined(CONFIG_TARGET_B4420QDS) 126*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR 0xecc00000 127*4882a593Smuzhiyun #elif defined(CONFIG_FSL_CORENET) 128*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR 0xe8e00000 129*4882a593Smuzhiyun #elif defined(CONFIG_TARGET_BSC9132QDS) 130*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR 0x88020000 131*4882a593Smuzhiyun #elif defined(CONFIG_TARGET_C29XPCIE) 132*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR 0xec020000 133*4882a593Smuzhiyun #else 134*4882a593Smuzhiyun #define CONFIG_BOOTSCRIPT_HDR_ADDR 0xee020000 135*4882a593Smuzhiyun #endif 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #endif /* #ifdef CONFIG_BOOTSCRIPT_COPY_RAM */ 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun #include <config_fsl_chain_trust.h> 140*4882a593Smuzhiyun #endif /* #ifndef CONFIG_SPL_BUILD */ 141*4882a593Smuzhiyun #endif /* #ifdef CONFIG_CHAIN_OF_TRUST */ 142*4882a593Smuzhiyun #endif 143