aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/mt7623
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mediatek/mt7623')
-rwxr-xr-xtarget/linux/mediatek/mt7623/base-files/etc/board.d/02_network40
-rw-r--r--target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac47
-rw-r--r--target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config21
-rwxr-xr-xtarget/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh68
4 files changed, 176 insertions, 0 deletions
diff --git a/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
new file mode 100755
index 0000000000..07fd63fba7
--- /dev/null
+++ b/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+. /lib/functions.sh
+. /lib/functions/uci-defaults.sh
+. /lib/functions/system.sh
+
+mediatek_setup_interfaces()
+{
+ local board="$1"
+
+ case $board in
+ mediatek,mt7623a-rfb-emmc)
+ ucidef_set_interface_lan "lan0 lan1 lan2 lan3"
+ ucidef_set_interface_wan eth1
+ ;;
+ bananapi,bpi-r2|\
+ unielec,u7623-02-emmc-512m)
+ ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3" "wan"
+ ;;
+ esac
+}
+
+mediatek_setup_macs()
+{
+ local board="$1"
+
+ case $board in
+ unielec,u7623-02-emmc-512m)
+ ucidef_set_interface_macaddr "wan" "$(cat /sys/class/net/wan/address)"
+ ;;
+ esac
+}
+
+board_config_update
+board=$(board_name)
+mediatek_setup_interfaces $board
+mediatek_setup_macs $board
+board_config_flush
+
+exit 0
diff --git a/target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac b/target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac
new file mode 100644
index 0000000000..7a73a2d84d
--- /dev/null
+++ b/target/linux/mediatek/mt7623/base-files/lib/preinit/07_set_iface_mac
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Copyright (C) 2018 OpenWrt.org
+
+RECOVERY_PART=/dev/mmcblk0p1
+
+preinit_set_mac_address() {
+ local mac
+
+ . /lib/functions.sh
+ . /lib/functions/system.sh
+
+ case $(board_name) in
+ unielec,u7623-02-emmc-512m)
+ if [ -b $RECOVERY_PART ]; then
+ insmod nls_cp437
+ insmod nls_iso8859-1
+ insmod fat
+ insmod vfat
+ mkdir -p /tmp/recovery
+ mount -o rw,noatime $RECOVERY_PART /tmp/recovery
+
+ if [ -f "/tmp/recovery/mac_addr" ];
+ then
+ mac=$(cat /tmp/recovery/mac_addr)
+ else
+ mac=$(cat /sys/class/net/eth0/address)
+ echo "$mac" > /tmp/recovery/mac_addr
+ fi
+
+ sync
+ umount /tmp/recovery
+ rm -rf /tmp/recovery
+ fi
+
+ ip link set dev wan address $mac 2> /dev/null
+
+ mac=$(macaddr_add $mac 1)
+
+ ip link set dev lan0 address $mac 2>/dev/null
+ ip link set dev lan1 address $mac 2>/dev/null
+ ip link set dev lan2 address $mac 2>/dev/null
+ ip link set dev lan3 address $mac 2>/dev/null
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main preinit_set_mac_address
diff --git a/target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config b/target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000000..617336583e
--- /dev/null
+++ b/target/linux/mediatek/mt7623/base-files/lib/preinit/79_move_config
@@ -0,0 +1,21 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+. /lib/upgrade/common.sh
+
+RECOVERY_PART=/dev/mmcblk0p1
+
+move_config() {
+ if [ -b $RECOVERY_PART ]; then
+ insmod nls_cp437
+ insmod nls_iso8859-1
+ insmod fat
+ insmod vfat
+ mkdir -p /recovery
+ mount -o rw,noatime $RECOVERY_PART /recovery
+ [ -f "/recovery/$BACKUP_FILE" ] && mv -f "/recovery/$BACKUP_FILE" /
+ umount /recovery
+ fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
new file mode 100755
index 0000000000..225fec0bca
--- /dev/null
+++ b/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,68 @@
+platform_do_upgrade() {
+ local board=$(board_name)
+
+ case "$board" in
+ unielec,u7623-02-emmc-512m)
+ #Keep the persisten random mac address (if it exists)
+ mkdir -p /tmp/recovery
+ mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
+ [ -f "/tmp/recovery/mac_addr" ] && \
+ mv -f /tmp/recovery/mac_addr /tmp/
+ umount /tmp/recovery
+
+ #1310720 is the offset in bytes from the start of eMMC and to
+ #the location of the kernel (2560 512 byte sectors)
+ get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync
+
+ mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery
+ [ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery
+ sync
+ umount /tmp/recovery
+ ;;
+ *)
+ default_do_upgrade "$1"
+ ;;
+ esac
+}
+
+PART_NAME=firmware
+
+platform_check_image() {
+ local board=$(board_name)
+ local magic="$(get_magic_long "$1")"
+
+ [ "$#" -gt 1 ] && return 1
+
+ case "$board" in
+ bananapi,bpi-r2|\
+ unielec,u7623-02-emmc-512m)
+ [ "$magic" != "27051956" ] && {
+ echo "Invalid image type."
+ return 1
+ }
+ return 0
+ ;;
+ *)
+ echo "Sysupgrade is not supported on your board yet."
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+platform_copy_config_emmc() {
+ mkdir -p /recovery
+ mount -o rw,noatime /dev/mmcblk0p1 /recovery
+ cp -af "$UPGRADE_BACKUP" "/recovery/$BACKUP_FILE"
+ sync
+ umount /recovery
+}
+
+platform_copy_config() {
+ case "$(board_name)" in
+ unielec,u7623-02-emmc-512m)
+ platform_copy_config_emmc
+ ;;
+ esac
+}