#
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2013-2023 Igor Pecovnik, igor@armbian.com
#
# This file is a part of the Armbian Build Framework
# https://github.com/armbian/build/
#
source "${BASH_SOURCE%/*}/include/sunxi64_common.inc"

[[ -z $CPUMIN ]] && CPUMIN=480000
[[ -z $CPUMAX ]] && CPUMAX=1512000
GOVERNOR=ondemand

case $BRANCH in

	legacy)
		LINUXFAMILY=sun50iw9-blb
		KERNELSOURCE='https://github.com/niuyuling/linux.git'
		declare -g KERNEL_MAJOR_MINOR="6.1" # Major and minor versions of this kernel.
		KERNELBRANCH="branch:linux-6.1.y-blb"
		KERNELPATCHDIR="NEED-NOT"
		BOOTSOURCE='https://github.com/niuyuling/u-boot.git'
		BOOTBRANCH='branch:v2023.07-blb'
		BOOTPATCHDIR='NEED-NOT'
		BOOTDELAY=-2
		ASOUND_STATE='asound.state.sun50iw9-legacy'

		ATFSOURCE='https://github.com/ARM-software/arm-trusted-firmware'
		ATFBRANCH='branch:master'
		ATF_PLAT="sun50i_h616"
		ATF_TARGET_MAP='PLAT=sun50i_h616 DEBUG=1 bl31;;build/sun50i_h616/debug/bl31.bin'
		BOOTSCRIPT='boot-sun50i-next.cmd:boot.cmd'
		KERNEL_DRIVERS_SKIP+=(driver_rtw88) # This is custom 6.1 driver, skip rtw88 to avoid patching failures
		;;

	current | edge)
		ATFSOURCE='https://github.com/ARM-software/arm-trusted-firmware'
		ATFBRANCH='branch:master'
		ATF_PLAT="sun50i_h616"
		ATF_TARGET_MAP='PLAT=sun50i_h616 DEBUG=1 bl31;;build/sun50i_h616/debug/bl31.bin'
		BOOTSCRIPT='boot-sun50i-next.cmd:boot.cmd'

		# Stick to 6.2.16 kernel for edge until ws2812 driver is fixed
		if [[ "$BRANCH" == "edge" ]]; then
			LINUXFAMILY="sun50iw9-btt"       # Use a separate kernel deb
			LINUXCONFIG="linux-sunxi64-edge" # But the same kernel config, will be modified below in armbian_kernel_config__enable_ws2812_driver
			KERNEL_MAJOR_MINOR="6.2"
			KERNELBRANCH="tag:v6.2.16"
			KERNELPATCHDIR="archive/sunxi-${KERNEL_MAJOR_MINOR}"
		fi

		;;
esac

# Enable ws2812 driver for edge kernel
function armbian_kernel_config__enable_ws2812_driver() {
	if [[ "$BRANCH" == "edge" ]]; then
		kernel_config_modifying_hashes+=("CONFIG_LEDS_WS2812=m")
		if [[ -f .config ]]; then
			kernel_config_set_m CONFIG_LEDS_WS2812
		fi
	fi
}

# This build requires busybox (and dos2unix)
function add_host_dependencies__sun50iw9_add_busybox_hostdep() {
	display_alert "Adding busybox dep" "for ${BOARD} bootloader compile" "debug"
	declare -g EXTRA_BUILD_DEPS="${EXTRA_BUILD_DEPS} busybox"
}

function family_tweaks_s() {
	if [[ -f $SDCARD/lib/systemd/system/hdmi-audio.service ]]; then
		chroot $SDCARD /bin/bash -c "systemctl --no-reload enable hdmi-audio.service >/dev/null 2>&1"
	fi
}

function family_tweaks_bsp() {
	install -m 755 $SRC/packages/blobs/sunxi/h616/inithdmiaudio $destination/usr/bin/
	cp $SRC/packages/blobs/sunxi/h616/libtinyalsa.so $destination/usr/lib/
	cp $SRC/packages/bsp/sunxi/hdmi-audio.service $destination/lib/systemd/system/

}
