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

post_tf_build() {
        #Fetch pre-built SCP/MCP binaries if they haven't been built
        if [ ! -f "$archive/mcp_rom.bin" ]; then
                url="$scp_mcp_prebuilts/n1sdp-mcp-bl1.bin" saveas="mcp_rom.bin" fetch_file
                archive_file "mcp_rom.bin"
        fi
        if [ ! -f "$archive/scp_rom.bin" ]; then
                url="$scp_mcp_prebuilts/n1sdp-bl1.bin" saveas="scp_rom.bin" fetch_file
                archive_file "scp_rom.bin"
        fi
        if [ ! -f "$archive/scp_ram.bin" ]; then
                url="$scp_mcp_prebuilts/n1sdp-bl2.bin" saveas="scp_ram.bin" fetch_file
                archive_file "scp_ram.bin"
        fi
        if [ ! -f "$archive/mcp_ram.bin" ]; then
                url="$scp_mcp_prebuilts/n1sdp-mcp-bl2.bin" saveas="mcp_ram.bin" fetch_file
                archive_file "mcp_ram.bin"
        fi

        # Create FIP for SCP
        "$fiptool" create --soc-fw "$tf_root/build/n1sdp/$bin_mode/bl31.bin" --scp-fw "$archive/scp_ram.bin" "scp_fw.bin"
        archive_file "scp_fw.bin"

        # Create FIP for MCP, this needs fixed uuid for now
        "$fiptool" create --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file="$archive/mcp_ram.bin" "mcp_fw.bin"
        archive_file "mcp_fw.bin"
}
