182f29fd5SLokesh Vutla# SPDX-License-Identifier: GPL-2.0+ 282f29fd5SLokesh Vutla# 382f29fd5SLokesh Vutla# Copyright (C) 2017-2018 Texas Instruments Incorporated - http://www.ti.com/ 482f29fd5SLokesh Vutla# Lokesh Vutla <lokeshvutla@ti.com> 582f29fd5SLokesh Vutla 682f29fd5SLokesh Vutlaifdef CONFIG_SPL_BUILD 782f29fd5SLokesh Vutla 8*890b2e75SLokesh Vutla# Openssl is required to generate x509 certificate. 9*890b2e75SLokesh Vutla# Error out if openssl is not available. 10*890b2e75SLokesh Vutlaifeq ($(shell which openssl),) 11*890b2e75SLokesh Vutla$(error "No openssl in $(PATH), consider installing openssl") 12*890b2e75SLokesh Vutlaendif 13*890b2e75SLokesh Vutla 14*890b2e75SLokesh VutlaSHA_VALUE= $(shell openssl dgst -sha512 -hex $(obj)/u-boot-spl.bin | sed -e "s/^.*= //g") 15*890b2e75SLokesh VutlaIMAGE_SIZE= $(shell cat $(obj)/u-boot-spl.bin | wc -c) 16*890b2e75SLokesh VutlaLOADADDR= $(shell echo $(CONFIG_SPL_TEXT_BASE) | sed -e "s/^0x//g") 17*890b2e75SLokesh VutlaMAX_SIZE= $(shell printf "%d" $(CONFIG_SYS_K3_MAX_DOWNLODABLE_IMAGE_SIZE)) 18*890b2e75SLokesh Vutla 19*890b2e75SLokesh Vutla# Parameters to get populated into the x509 template 20*890b2e75SLokesh VutlaSED_OPTS= -e s/TEST_IMAGE_LENGTH/$(IMAGE_SIZE)/ 21*890b2e75SLokesh VutlaSED_OPTS+= -e s/TEST_IMAGE_SHA_VAL/$(SHA_VALUE)/ 22*890b2e75SLokesh VutlaSED_OPTS+= -e s/TEST_CERT_TYPE/1/ # CERT_TYPE_PRIMARY_IMAGE_BIN 23*890b2e75SLokesh VutlaSED_OPTS+= -e s/TEST_BOOT_CORE/$(CONFIG_SYS_K3_BOOT_CORE_ID)/ 24*890b2e75SLokesh VutlaSED_OPTS+= -e s/TEST_BOOT_ARCH_WIDTH/32/ 25*890b2e75SLokesh VutlaSED_OPTS+= -e s/TEST_BOOT_ADDR/$(LOADADDR)/ 26*890b2e75SLokesh Vutla 27*890b2e75SLokesh Vutla# Command to generate ecparam key 28*890b2e75SLokesh Vutlaquiet_cmd_genkey = OPENSSL $@ 29*890b2e75SLokesh Vutlacmd_genkey = openssl ecparam -out $@ -name prime256v1 -genkey 30*890b2e75SLokesh Vutla 31*890b2e75SLokesh Vutla# Command to generate x509 certificate 32*890b2e75SLokesh Vutlaquiet_cmd_gencert = OPENSSL $@ 33*890b2e75SLokesh Vutlacmd_gencert = cat $(srctree)/tools/k3_x509template.txt | sed $(SED_OPTS) > u-boot-spl-x509.txt; \ 34*890b2e75SLokesh Vutla openssl req -new -x509 -key $(KEY) -nodes -outform DER -out $@ -config u-boot-spl-x509.txt -sha512 35*890b2e75SLokesh Vutla 36*890b2e75SLokesh Vutla# If external key is not provided, generate key using openssl. 37*890b2e75SLokesh Vutlaifeq ($(CONFIG_SYS_K3_KEY), "") 38*890b2e75SLokesh VutlaKEY=u-boot-spl-eckey.pem 39*890b2e75SLokesh Vutlaelse 40*890b2e75SLokesh VutlaKEY=$(patsubst "%",%,$(CONFIG_SYS_K3_KEY)) 41*890b2e75SLokesh Vutlaendif 42*890b2e75SLokesh Vutla 43*890b2e75SLokesh Vutlau-boot-spl-eckey.pem: FORCE 44*890b2e75SLokesh Vutla $(call if_changed,genkey) 45*890b2e75SLokesh Vutla 46*890b2e75SLokesh Vutla# tiboot3.bin is mandated by ROM and ROM only supports R5 boot. 47*890b2e75SLokesh Vutla# So restrict tiboot3.bin creation for CPU_V7R. 48*890b2e75SLokesh Vutlaifdef CONFIG_CPU_V7R 49*890b2e75SLokesh Vutlau-boot-spl-cert.bin: $(KEY) $(obj)/u-boot-spl.bin image_check FORCE 50*890b2e75SLokesh Vutla $(call if_changed,gencert) 51*890b2e75SLokesh Vutla 52*890b2e75SLokesh Vutlaimage_check: $(obj)/u-boot-spl.bin FORCE 53*890b2e75SLokesh Vutla @if [ $(IMAGE_SIZE) -gt $(MAX_SIZE) ]; then \ 54*890b2e75SLokesh Vutla echo "===============================================" >&2; \ 55*890b2e75SLokesh Vutla echo "ERROR: Final Image too big. " >&2; \ 56*890b2e75SLokesh Vutla echo "$< size = $(IMAGE_SIZE), max size = $(MAX_SIZE)" >&2; \ 57*890b2e75SLokesh Vutla echo "===============================================" >&2; \ 58*890b2e75SLokesh Vutla exit 1; \ 59*890b2e75SLokesh Vutla fi 60*890b2e75SLokesh Vutla 61*890b2e75SLokesh Vutlatiboot3.bin: u-boot-spl-cert.bin $(obj)/u-boot-spl.bin FORCE 62*890b2e75SLokesh Vutla $(call if_changed,cat) 63*890b2e75SLokesh Vutla 64*890b2e75SLokesh VutlaALL-y += tiboot3.bin 65*890b2e75SLokesh Vutlaendif 66*890b2e75SLokesh Vutla 6782f29fd5SLokesh Vutlaifdef CONFIG_ARM64 6882f29fd5SLokesh VutlaSPL_ITS := u-boot-spl-k3.its 6982f29fd5SLokesh Vutla$(SPL_ITS): FORCE 7082f29fd5SLokesh Vutla $(srctree)/tools/k3_fit_atf.sh \ 7182f29fd5SLokesh Vutla $(patsubst %,$(obj)/dts/%.dtb,$(subst ",,$(CONFIG_SPL_OF_LIST))) > $@ 7282f29fd5SLokesh Vutla 7382f29fd5SLokesh VutlaALL-y += tispl.bin 7482f29fd5SLokesh Vutlaendif 7582f29fd5SLokesh Vutla 7682f29fd5SLokesh Vutlaelse 7782f29fd5SLokesh VutlaALL-y += u-boot.img 7882f29fd5SLokesh Vutlaendif 79