barebox/scripts/gen-dtb-s
Philipp Zabel c61c813e77 Fix barebox metadata
Patch 97e81f2d78 (Add support for metadata in barebox images)
writes the wrong length for the model tag in the barebox metadata.
Fix this to use the correct value.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-09-04 14:43:58 +02:00

57 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
name=$1
dtb=$2
imd=$3
echo "#include <asm-generic/barebox.lds.h>"
le32() {
printf ".byte 0x%02x, 0x%02x, 0x%02x, 0x%02x\n" \
$(($1 & 0xff)) \
$((($1 >> 8) & 0xff)) \
$((($1 >> 16) & 0xff)) \
$((($1 >> 24) & 0xff))
}
FDTGET=scripts/dtc/fdtget
if [ "$imd" = "y" ]; then
echo ".section .barebox_imd_0.${name},\"a\""
echo ".global __imd_${name}_start"
echo "__imd_${name}_start:"
compat=$($FDTGET -d notfound -t bi "$dtb" / compatible | sed "s^ ^,^g")
if [ "$compat" != "notfound" ]; then
compatlen=$($FDTGET -t s "$dtb" / compatible | wc -c)
le32 0x640c8005
le32 $compatlen
echo ".byte " $compat
echo ".balign 4"
fi
model=$($FDTGET -d notfound -t bi "$dtb" / model | sed "s^ ^,^g")
if [ "$model" != "notfound" ]; then
modellen=$($FDTGET -t s "$dtb" / model | wc -c)
le32 0x640c8004
le32 $modellen
echo ".byte " $model
echo ".balign 4"
fi
fi
echo ".section .dtb.rodata.${name},\"a\""
echo ".balign STRUCT_ALIGNMENT"
echo ".global __dtb_${name}_start"
echo "__dtb_${name}_start:"
echo ".incbin \"$dtb\""
echo "__dtb_${name}_end:"
echo ".global __dtb_${name}_end"
echo ".balign STRUCT_ALIGNMENT"
if [ "$imd" = "y" ]; then
echo ".word __imd_${name}_start"
fi