#!/bin/sh
# Copyright 2016 Cumulus Networks, Inc.  All rights reserved.

FIRMWARE_DIR=/lib/firmware/cumulus/acpi
VENDOR=$(platform-detect | cut -d, -f 1)
MODEL=$(platform-detect | cut -d, -f 2)
PLATFORM_AML=${FIRMWARE_DIR}/${VENDOR}/${MODEL}.aml

case $1 in
prereqs)
        echo ""
        exit 0
        ;;
esac

. /usr/share/initramfs-tools/hook-functions

if [ ! -r ${PLATFORM_AML} ]; then
        [ "${verbose}" = y ] && echo "cumulus-tools: no platform-specific AML"
        exit 0
fi

[ "${verbose}" = y ] && \
        echo "cumulus-tools: prepending platform-specific AML (${PLATFORM_AML}) to initramfs..."

INITRAMFS_TMPDIR=$(mktemp --directory --tmpdir cumulus-tools-initramfs.XXXXXXXXX)
if [ $? -ne 0 ]; then
        echo "E: cumulus-tools: create tmpdir failed" >&2
        exit 1
fi

mkdir -p ${INITRAMFS_TMPDIR}/kernel/firmware/acpi
cp ${PLATFORM_AML} ${INITRAMFS_TMPDIR}/kernel/firmware/acpi/SSDT.aml
(cd ${INITRAMFS_TMPDIR}; find kernel | \
        cpio --create -H newc --file=${INITRAMFS_TMPDIR}.cpio)
if [ $? -ne 0 ]; then
        echo "E: cumulus-tools: cpio failed" >&2
        exit 1
fi

prepend_earlyinitramfs "${INITRAMFS_TMPDIR}.cpio"
if [ $? -ne 0 ]; then
        echo "E: cumulus-tools: prepend_earlyinitramfs failed" >&2
        exit 1
fi

rm "${INITRAMFS_TMPDIR}.cpio"
rm -r "${INITRAMFS_TMPDIR}"

exit 0
