#!/bin/bash

PATH="/sbin:/usr/sbin:/bin:/usr/bin:$PATH"

board=odroid-n2plus

kernel_version=$(pacman -Qi linux | grep Version | cut -d: -f2 | xargs)
kernel_major=$(echo ${kernel_version} | cut -d. -f1)
kernel_minor=$(echo ${kernel_version} | cut -d. -f2)

boot_ini=""
boot_ini_version=""
if [ $kernel_major -gt 4 ]; then
    boot_ini=/usr/share/uboot-${board}/boot.mainline.ini
    boot_ini_version="mainline"
else
    boot_ini=/usr/share/uboot-${board}/boot.hardkernel.ini
    boot_ini_version="hardkernel"
fi

if [ -e /boot/boot.ini ]; then
    if ! grep "KERNEL: ${boot_ini_version}" /boot/boot.ini > /dev/null ; then
        mv /boot/boot.ini "/boot/boot.ini.$(date +"%s")"
        cp $boot_ini /boot/boot.ini
    fi
else
    cp $boot_ini /boot/boot.ini
fi

model=""
if [ -e /sys/devices/soc0/machine ]; then
  model="$(cat /sys/devices/soc0/machine | sed "s/Hardkernel //g")"
elif [ -e /sys/firmware/devicetree/base/model ]; then
  model="$(cat /sys/firmware/devicetree/base/model | sed "s/Hardkernel //g")"
fi

if [ "$model" = "ODROID-N2Plus" ]; then
    if [ -e /boot/dtbs/amlogic/meson64_odroidn2_plus.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson-g12b-odroid-n2-plus\.dtb/\/dtbs\/amlogic\/meson64_odroidn2_plus\.dtb/g" \
            /boot/boot.ini
    elif [ -e /boot/dtbs/amlogic/meson-g12b-odroid-n2-plus.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson64_odroidn2_plus\.dtb/\/dtbs\/amlogic\/meson-g12b-odroid-n2-plus\.dtb/g" \
            /boot/boot.ini
    elif [ -e /boot/dtbs/amlogic/meson64_odroidn2.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson-g12b-odroid-n2-plus\.dtb/\/dtbs\/amlogic\/meson64_odroidn2\.dtb/g" \
            /boot/boot.ini
        sed -i "s/\/dtbs\/amlogic\/meson-g12b-odroid-n2\.dtb/\/dtbs\/amlogic\/meson64_odroidn2\.dtb/g" \
            /boot/boot.ini
        echo "Warning: Using odroidn2 dtb on odroidn2+ will provide lower clock speeds'"
    elif [ -e /boot/dtbs/amlogic/meson-g12b-odroid-n2.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson64_odroidn2_plus\.dtb/\/dtbs\/amlogic\/meson-g12b-odroid-n2\.dtb/g" \
            /boot/boot.ini
        sed -i "s/\/dtbs\/amlogic\/meson64_odroidn2\.dtb/\/dtbs\/amlogic\/meson-g12b-odroid-n2\.dtb/g" \
            /boot/boot.ini
        echo "Warning: Using odroidn2 dtb on odroidn2+ will provide lower clock speeds'"
    else
        echo "Error: The kernel you installed doesn't seems to support the odroidn2+'"
    fi
else
    if [ -e /boot/dtbs/amlogic/meson64_odroidn2.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson-g12b-odroid-n2\.dtb/\/dtbs\/amlogic\/meson64_odroidn2\.dtb/g" \
            /boot/boot.ini
    elif [ -e /boot/dtbs/amlogic/meson-g12b-odroid-n2.dtb ]; then
        sed -i "s/\/dtbs\/amlogic\/meson64_odroidn2\.dtb/\/dtbs\/amlogic\/meson-g12b-odroid-n2\.dtb/g" \
            /boot/boot.ini
    else
        echo "Error: The kernel you installed doesn't seems to support the odroidn2'"
    fi
fi

# Add proper UUID to boot.ini
major=$(mountpoint -d / | cut -f 1 -d ':')
minor=$(mountpoint -d / | cut -f 2 -d ':')
device=$(cat /proc/partitions | awk {'if ($1 == "'${major}'" && $2 == "'${minor}'") print $4 '})
device_uuid=$(lsblk -o uuid,name | grep ${device} | awk "{print \$1}")

sed -i "s/root=\/dev\/mmcblk\${devno}p2/root=UUID=${device_uuid}/g" \
    /boot/boot.ini
