#!/usr/bin/env bash
#
# Copyright (c) 2021, Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#

post_tf_build() {
	if [ ! -f "$archive/scp_ram.bin" ]; then
		url="$scp_prebuilts/tc$plat_variant/release/scp_bl2.bin" saveas="scp_ram.bin" fetch_file
		archive_file "scp_ram.bin"
	fi

	build_fip BL33="$archive/tftf.bin" BL32="$archive/secure_hafnium.bin" SCP_BL2="$archive/scp_ram.bin"
}

fetch_tf_resource() {
	# Expect scripts
	uart="0" set_payload_uart="1" file="tftf-non-primary.exp" track_expect
	uart="1" set_primary="1" file="spm-cactus-sp-uart1.exp" track_expect

	payload_type="tftf" gen_fvp_yaml_template

	# Use SCP binary from SCP build if it exists, or fetch pre-built ones.
	if [ ! -f "$archive/scp_rom.bin" ]; then
		# Pick the appropriate binary based on target platform variant
		url="$scp_prebuilts/tc$plat_variant/release/scp_bl1.bin" saveas="scp_rom.bin" fetch_file
		archive_file "scp_rom.bin"
	fi
}

post_fetch_tf_resource() {
        local model="tc0"

	model="$model" gen_model_params

	set_run_env "ports_script" "$ci_root/model/tc-ports.awk"
	set_run_env "num_uarts" "2"
	uart="1" set_expect_variable "num_cpus" "8"
	model="$model" gen_fvp_yaml
}
