#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2018-2019 Rupert Eibauer. All rights reserved.

cd arch/avr/scripts

VERSION="1.2.272"
MD5SUM="e35f87c039fa923195ab12bc3d848260"

if [ ! -d atdf ]; then
	FILENAME="Atmel.ATmega_DFP.$VERSION.atpack"

#	if [ ! -f $FILENAME ]; then
		wget -c http://packs.download.atmel.com/$FILENAME
		if [ "$(md5sum $FILENAME)" != "$MD5SUM  $FILENAME" ]; then
			echo "MD5SUM of $FILENAME does not match."
			exit 1
		fi
#	fi
	unzip $FILENAME "atdf/*.atdf"
fi



DEVICES=$(
	cd atdf
	ls *.atdf | while read fname; do
		echo ${fname:0:-5}
	done
)

# Unfortunately we cannot (yet) decode all pack files. (Stupid CLKSEL. Maybe fall back to 1-dimensional representation.)
DEVICES=""
DEVICES="$DEVICES ATmega88A ATmega88 ATmega88PA ATmega88P ATmega88PB ATmega8A ATmega8 ATmega8HVA"
DEVICES="$DEVICES ATmega8515 ATmega8535"
DEVICES="$DEVICES ATmega168A ATmega168 ATmega168PA ATmega168P ATmega168PB ATmega16A ATmega16 ATmega16HVA ATmega16HVB ATmega16HVBrevB"
DEVICES="$DEVICES ATmega324PB ATmega328 ATmega328P ATmega328PB ATmega32A ATmega32 ATmega32HVB ATmega32HVBrevB"
DEVICES="$DEVICES ATmega48A ATmega48 ATmega48PA ATmega48P ATmega48PB"
DEVICES="$DEVICES ATmega64A ATmega64 ATmega64HVE2"
DEVICES="$DEVICES ATmega128A ATmega128 ATmega128RFA1"

# For now, use only the most important devices
DEVICES="ATmega8 ATmega32 ATmega328 ATmega328P ATmega48 ATmega64 ATmega128"

rm -rf devs
mkdir devs

echo   "config CPUFREQ"            >devs/cpufreq.Kconfig
echo   "	int"               >>devs/cpufreq.Kconfig
echo   "	prompt \"Controller clock frequency\" if !CPUFREQ_IS_FIXED" >>devs/cpufreq.Kconfig
echo   "	range 100000 20000000"  >>devs/cpufreq.Kconfig
echo   "	default 8000000"  >>devs/cpufreq.Kconfig

for dev in $DEVICES; do
	echo " XMLDEC  $dev.atdf"
	if [ ! -f atdf/$dev.atdf ]; then
		echo "Error: File atdf/$dev.atdf does not exist!" >&2
		exit 1
	fi
	php decode_pack.php $dev
	if [ $? != 0 ]; then
		echo "BAD XML $dev.atdf"
		exit 1
	fi
done


rm -rf ../devs
mv devs ../
