gemini: Fix MAC address assignment for DIR-685
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 11 Jun 2019 21:06:55 +0000 (23:06 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 15 Jun 2019 17:55:31 +0000 (19:55 +0200)
The DIR-685 has the MAC addresses in the RedBoot code just like
DNS-313. Check some magic numbers to determine that the MAC
address is where we want it and extract it from RedBoot.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[replaced ifconfig with ip, ! -z = -n, added string quotes]

target/linux/gemini/base-files/lib/preinit/05_set_ether_mac_gemini

index f63a6f1d39b864eeabc69c37fe7669c1b1854e49..e387b3c72e4f72481c21c12b43f95c098d2791f8 100644 (file)
@@ -23,6 +23,21 @@ set_ether_mac() {
                        fi
                fi
                ;;
+       dlink,dir-685)
+               # The DIR-685 has a special field in its RedBoot
+               # binary that we need to check
+               part=$(find_mtd_part RedBoot)
+               if [ -n "$part" ] ; then
+                       DEVID="$(dd if=$part bs=1 skip=81516 count=7 2>/dev/null)"
+                       if [ "$DEVID" = "ILI9322" ] ; then
+                               MAC1=$(mtd_get_mac_binary RedBoot 95040)
+                               MAC2=$(mtd_get_mac_binary RedBoot 95046)
+                               ip link set eth0 address "$MAC1" 2>/dev/null
+                               ip link set eth1 address "$MAC2" 2>/dev/null
+                               return 0
+                       fi
+               fi
+               ;;
        esac
 
        # Most devices have a standard "VCTL" partition