aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2019-05-15 22:37:26 +0200
committerChristian Lamparter <chunkeey@gmail.com>2019-05-18 16:37:30 +0200
commit76338fded0df44450cb4ecc55689341ef6b7a70f (patch)
tree1230f2b70580a1a40f14ceeeac0b47bfb9743a7e
parent30b4b7ee0961033ef4b25215c38fd5aa8af459bd (diff)
downloadupstream-76338fded0df44450cb4ecc55689341ef6b7a70f.tar.gz
upstream-76338fded0df44450cb4ecc55689341ef6b7a70f.tar.bz2
upstream-76338fded0df44450cb4ecc55689341ef6b7a70f.zip
gemini: Fix up firmware checksum on DIR-685
Using the same method as the D-Link DAP-2695 A1 we use the "mtd" tool to augment the firmware checkum in flash on first boot of a new firmware on the D-Link DIR-685. We need to augment the Makefile for "mtd" to build in the special WRGG fixup support for Gemini as well. This works around the problem of the machine not booting after factory install unless the sysupgrade is applied immediately. Based on commit e3875350f3e4185020b64e0588bba521cd1d6e64 "ar71xx: add support for D-Link DAP-2695 rev. A1" Cc: Stijn Tintel <stijn@linux-ipv6.be> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--package/system/mtd/src/Makefile1
-rw-r--r--target/linux/gemini/base-files/etc/uci-defaults/09_fix-checksum20
2 files changed, 21 insertions, 0 deletions
diff --git a/package/system/mtd/src/Makefile b/package/system/mtd/src/Makefile
index e469e23ef7..e08a824cf8 100644
--- a/package/system/mtd/src/Makefile
+++ b/package/system/mtd/src/Makefile
@@ -8,6 +8,7 @@ obj.wrg = wrg.o md5.o
obj.wrgg = wrgg.o md5.o
obj.tpl = tpl_ramips_recoveryflag.o
obj.ar71xx = trx.o $(obj.seama) $(obj.wrgg)
+obj.gemini = $(obj.wrgg)
obj.brcm = trx.o
obj.brcm47xx = $(obj.brcm)
obj.bcm53xx = $(obj.brcm) $(obj.seama)
diff --git a/target/linux/gemini/base-files/etc/uci-defaults/09_fix-checksum b/target/linux/gemini/base-files/etc/uci-defaults/09_fix-checksum
new file mode 100644
index 0000000000..5f79d1a65c
--- /dev/null
+++ b/target/linux/gemini/base-files/etc/uci-defaults/09_fix-checksum
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# Copyright (C) 2019 OpenWrt.org
+#
+
+. /lib/functions.sh
+
+board=$(board_name)
+
+fixwrgg() {
+ local kernel_size=$(sed -n 's/mtd[0-9]*: \([0-9a-f]*\).*"kernel".*/\1/p' /proc/mtd)
+
+ [ "$kernel_size" ] && mtd -c 0x$kernel_size fixwrgg firmware
+}
+
+case "$board" in
+dlink,dir-685)
+ fixwrgg
+ ;;
+esac