diff options
Diffstat (limited to 'meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh')
-rwxr-xr-x | meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh new file mode 100755 index 000000000..af3e2bead --- /dev/null +++ b/meta-ampere/meta-common/recipes-phosphor/flash/phosphor-software-manager/firmware_update.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# +# Copyright (c) 2021 Ampere Computing LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This script updates the EDKII / SCP firmware. +# Author : Chanh Nguyen (chnguyen@amperecomputing.com) +# Date : Sep 7, 2021 +# Modified: + +usage () { + echo "Usage:" + echo " $(basename $0) <image path> " + echo "Where:" + echo " <image path>: the path link to folder, which include image file and MANIFEST" + echo "Example:" + echo " $(basename $0) /tmp/images/ghdh1393" +} + + +IMG_PATH="$1" +if [ ! -d $IMG_PATH ]; then + echo $IMG_PATH + echo "The folder $IMG_PATH does not exist" + usage + exit 1 +fi + +MANIFEST_PATH="${IMG_PATH}/MANIFEST" +if [ ! -f $MANIFEST_PATH ]; then + echo $MANIFEST_PATH + echo "The MANIFEST file $MANIFEST_PATH does not exist" + usage + exit 1 +fi + +EXTENDED_VERSION=$(awk '/ExtendedVersion/ {print}' ${MANIFEST_PATH} | cut -d "=" -f 2) + +# If the ExtendedVersion is empty, set default to update UEFI/EDKII on primary device +if [ -z "$EXTENDED_VERSION" ] +then + EXTENDED_VERSION="primary" +fi + +# Assign the command based on the ExtendedVersion +case ${EXTENDED_VERSION} in + "primary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_flash_bios.sh $IMAGE 1' + ;; + + "secondary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.bin" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_flash_bios.sh $IMAGE 2' + ;; + + "scp-primary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 1' + ;; + + "scp-secondary") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.img" -o -name "*.slim" -o -name "*.rom" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh smpmpro $IMAGE 2' + ;; + + "fru") + export IMAGE=$(find ${IMG_PATH} -type f \( -name "*.bin" \)) + export CMD='/usr/sbin/ampere_firmware_upgrade.sh fru $IMAGE' + ;; + + *) + echo "Invalid ExtendedVersion: ${EXTENDED_VERSION}. Please check MANIFEST file!" + exit 1 + ;; +esac + + +if [ -z "$IMAGE" ] +then + echo "ERROR: The image file: No such file or directory" + exit 1 +else + eval $CMD +fi + +if [[ $? -ne 0 ]]; then + echo "ERROR: The firmware update not successfull" + exit 1 +fi |