ARCH=armhf
BOOTSCRIPT="boot-rockchip.cmd:boot.cmd"
BOOTENV_FILE='rockchip.txt'
OVERLAY_PREFIX='rockchip'
UBOOT_TARGET_MAP=";;$SRC/packages/blobs/rockchip/rk3288_boot.bin u-boot-rockchip-with-spl.bin"
BOOTDELAY=1
if [[ $BOARD == miqi ]]; then
BOOTBRANCH='tag:v2017.11'
elif [[ $BOARD == xt-q8l-v10 ]]; then
BOOTBRANCH='tag:v2020.04'
else
BOOTBRANCH='tag:v2018.11'
fi

SERIALCON=ttyS2

case $BRANCH in

	legacy)

		KERNELSOURCE='https://github.com/rockchip-linux/kernel.git'
		KERNELBRANCH='branch:stable-4.4-rk3288-linux'
		KERNELDIR='linux-rockchip'

	;;

	current)

		KERNELBRANCH='branch:linux-5.7.y'

	;;

	dev)

		KERNELBRANCH='branch:linux-5.7.y'

	;;

esac

CPUMIN="600000"
CPUMAX="1900000"
GOVERNOR="ondemand"

write_uboot_platform()
{
	dd if=/dev/zero of=$2 bs=1k count=1023 seek=1 status=noxfer > /dev/null 2>&1
	dd if=$1/u-boot-rockchip-with-spl.bin of=$2 seek=64 conv=notrunc > /dev/null 2>&1
}

uboot_custom_postprocess()
{

	# xt-q8l-v10 requires the original DDR init blob because u-boot does not support LPDDR2 initialization
	# for rk3288 SoC (binary is in sources/rkbin-tools/rk32 path). U-boot is configured to produce a TPL
	# which is thrown away. SPL does some more initial configurations, expecially pinmux for power hold, 
	# so reset works more reliably. U-boot image is set to be at sector 0x200 on the eMMC/SD, 
	# so we burn it 0x200-0x40 because of the rockchip 0x40 sectors offset.
	if [[ $BOARD == xt-q8l-v10 ]]; then
		tools/mkimage -n rk3288 -T rksd -d $SRC/cache/sources/rkbin-tools/rk32/rk3288_ddr_400MHz_v1.08.bin u-boot-rockchip-with-spl.bin
		cat spl/u-boot-spl-dtb.bin >> u-boot-rockchip-with-spl.bin
		dd if=u-boot-dtb.img of=u-boot-rockchip-with-spl.bin seek=$((0x200 - 0x40)) conv=notrunc
	else
		tools/mkimage -n rk3288 -T rksd -d spl/u-boot-spl-dtb.bin u-boot-rockchip-with-spl.bin
		cat u-boot-dtb.bin >> u-boot-rockchip-with-spl.bin
	fi

}

family_tweaks()
{
	if [[ $BOARD == tinkerboard ]]; then
		chroot $SDCARD /bin/bash -c "apt-get -y -qq install rfkill bluetooth bluez bluez-tools"
		chroot $SDCARD /bin/bash -c "systemctl --no-reload enable tinker-bluetooth.service >/dev/null 2>&1"
		sed -i -e "/#load-module module-alsa-sink/r $SRC/packages/bsp/rockchip/pulseaudio.txt" $SDCARD/etc/pulse/default.pa >/dev/null 2>&1
	fi

	if [[ $BOARD == xt-q8l-v10 ]]; then
                mkdir -p $SDCARD/etc/firmware/
		ln -sf /lib/firmware/brcm/BCM4330B1.hcd $SDCARD/etc/firmware
                chroot $SDCARD /bin/bash -c "systemctl --no-reload enable ap6330-bluetooth.service >/dev/null 2>&1"
	fi
}

family_tweaks_bsp()
{
		#Graphics and media
		mkdir -p $destination/etc/udev/rules.d
		mkdir -p $destination/usr/local/bin
		cp $SRC/packages/bsp/rockchip/hdmi.rules $destination/etc/udev/rules.d
		cp $SRC/packages/bsp/rockchip/50-hevc.rules $destination/etc/udev/rules.d
		cp $SRC/packages/bsp/rockchip/50-mali.rules $destination/etc/udev/rules.d
		cp $SRC/packages/bsp/rockchip/50-vpu.rules $destination/etc/udev/rules.d
		cp $SRC/packages/bsp/rockchip/60-media.rules $destination/etc/udev/rules.d
		install -m 755 $SRC/packages/bsp/rockchip/hdmi-hotplug $destination/usr/local/bin

		# Peripheral access for specific groups
		addgroup --system --quiet --gid 997 gpio
		addgroup --system --quiet --gid 998 i2c
		cp $SRC/packages/bsp/rockchip/70-gpio.rules $destination/etc/udev/rules.d
		cp $SRC/packages/bsp/rockchip/71-i2c.rules $destination/etc/udev/rules.d

		# Bluetooth
		install -m 755 $SRC/packages/bsp/rockchip/rtk_hciattach $destination/usr/bin
		install -m 755 $SRC/packages/bsp/rockchip/start_bt.sh $destination/usr/local/bin
		cp $SRC/packages/bsp/rockchip/tinker-bluetooth.service $destination/lib/systemd/system/

		# Sound
		cp $SRC/packages/bsp/rockchip/asound.conf $destination/etc/
		cp $SRC/packages/bsp/rockchip/89-pulseaudio-usb.rules $destination/etc/udev/rules.d

		# ap6330 bluetooth (required for xt-q8l-v10)
                cp $SRC/packages/bsp/rockchip/ap6330-bluetooth.service $destination/lib/systemd/system/

}
