aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/base-files/lib/preinit
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ar71xx/base-files/lib/preinit')
-rw-r--r--target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh9
-rw-r--r--target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx48
-rw-r--r--target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx55
-rw-r--r--target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k51
4 files changed, 163 insertions, 0 deletions
diff --git a/target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh b/target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh
new file mode 100644
index 0000000..ff5407a
--- /dev/null
+++ b/target/linux/ar71xx/base-files/lib/preinit/03_preinit_do_ar71xx.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+do_ar71xx() {
+ . /lib/ar71xx.sh
+
+ ar71xx_board_detect
+}
+
+boot_hook_add preinit_main do_ar71xx
diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx
new file mode 100644
index 0000000..92b3765
--- /dev/null
+++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_iface_mac_ar71xx
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2009 OpenWrt.org
+#
+
+. /lib/ar71xx.sh
+
+fetch_mac_from_mtd() {
+ local mtd_part=$1
+ local lan_env=$2
+ local wan_env=$3
+ local mtd mac
+
+ mtd=$(grep $mtd_part /proc/mtd | cut -d: -f1)
+ [ -z $mtd ] && return
+
+ mac=$(grep $lan_env /dev/$mtd | cut -d= -f2)
+ [ ! -z $mac ] && ifconfig eth0 hw ether $mac 2>/dev/null
+
+ mac=$(grep $wan_env /dev/$mtd | cut -d= -f2)
+ [ ! -z $mac ] && ifconfig eth1 hw ether $mac 2>/dev/null
+}
+
+preinit_set_mac_address() {
+ case $(ar71xx_board_name) in
+ dir-615-c1)
+ fetch_mac_from_mtd config lan_mac wan_mac
+ echo 1 > /sys/class/leds/dir-615-c1:green:wancpu/brightness
+ ;;
+ dir-615-i1)
+ fetch_mac_from_mtd nvram sys_lan_mac sys_wan_mac
+ ;;
+ r6100)
+ mac_lan=$(mtd_get_mac_binary caldata 0)
+ [ -n "$mac_lan" ] && ifconfig eth1 hw ether "$mac_lan"
+ mac_wan=$(mtd_get_mac_binary caldata 6)
+ [ -n "$mac_wan" ] && ifconfig eth0 hw ether "$mac_wan"
+ ;;
+ tew-632brp)
+ fetch_mac_from_mtd config lan_mac wan_mac
+ ;;
+ wrt160nl)
+ fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main preinit_set_mac_address
+
diff --git a/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx
new file mode 100644
index 0000000..d214e9b
--- /dev/null
+++ b/target/linux/ar71xx/base-files/lib/preinit/05_set_preinit_iface_ar71xx
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+#
+# Copyright (C) 2009 OpenWrt.org
+#
+
+. /lib/ar71xx.sh
+
+set_preinit_iface() {
+ case $(ar71xx_board_name) in
+ alfa-ap96 |\
+ alfa-nx |\
+ ap135-020 |\
+ ap136-020 |\
+ ap147-010 |\
+ ap83 |\
+ archer-c5 |\
+ archer-c7 |\
+ dir-505-a1 |\
+ gl-inet |\
+ jwap003 |\
+ pb42 |\
+ pb44 |\
+ rb-433 |\
+ rb-433u |\
+ rb-435g |\
+ rb-450 |\
+ rb-450g |\
+ routerstation |\
+ routerstation-pro |\
+ smart-300 |\
+ tl-mr3420-v2 |\
+ tl-wdr4900-v2 |\
+ tl-wr1043nd-v2 |\
+ tl-wr710n |\
+ tl-wr720n-v3 |\
+ tl-wr841n-v8 |\
+ tl-wr842n-v2 |\
+ wnr2000-v3 |\
+ wnr2200 |\
+ wnr612-v2 |\
+ wnr1000-v2 |\
+ wpe72)
+ ifname=eth1
+ ;;
+ *)
+ ifname=eth0
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main set_preinit_iface
+
+
+
diff --git a/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k
new file mode 100644
index 0000000..4da611a
--- /dev/null
+++ b/target/linux/ar71xx/base-files/lib/preinit/82_patch_ath10k
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+. /lib/functions/system.sh
+. /lib/ar71xx.sh
+
+
+do_patch_ath10k_firmware() {
+ local firmware_file="/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin"
+
+ # bail out if firmware does not exist
+ [ -f "$firmware_file" ] || {
+ return
+ }
+
+ local firmware_md5_orig="36768dc68572b3f2660211e20e89f558"
+ local firmware_md5_current="$(md5sum $firmware_file)"
+ local firmware_md5_current="${firmware_md5_current%% *}"
+
+ # verify md5sum before patching
+ [ "$firmware_md5_orig" != "$firmware_md5_current" ] || {
+ return
+ }
+
+ # some boards have bogus mac in otp, patch the default mac in the firmware
+ case $(ar71xx_board_name) in
+ dgl-5500-a1)
+ local mac
+ mac=$(mtd_get_mac_ascii nvram wlan1_mac)
+
+ cp $firmware_file /tmp/ath10k-firmware.bin
+ macaddr_2bin $mac | dd of=/tmp/ath10k-firmware.bin \
+ conv=notrunc bs=1 seek=276 count=6
+
+ ;;
+ esac
+ [ -f /tmp/ath10k-firmware.bin ] || {
+ return
+ }
+ cp /tmp/ath10k-firmware.bin $firmware_file
+ rm /tmp/ath10k-firmware.bin
+}
+
+check_patch_ath10k_firmware() {
+ case $(ar71xx_board_name) in
+ dgl-5500-a1)
+ do_patch_ath10k_firmware
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main check_patch_ath10k_firmware