1#
2# Copyright (C) 2009 OpenWrt.org
3#
4
5. /lib/ar71xx.sh
6
7fetch_mac_from_mtd() {
8	local mtd_part=$1
9	local lan_env=$2
10	local wan_env=$3
11	local mtd mac
12
13	mtd=$(grep $mtd_part /proc/mtd | cut -d: -f1)
14	[ -z $mtd ] && return
15
16	mac=$(grep $lan_env /dev/$mtd | cut -d= -f2)
17	[ ! -z $mac ] && ifconfig eth0 hw ether $mac 2>/dev/null
18
19	mac=$(grep $wan_env /dev/$mtd | cut -d= -f2)
20	[ ! -z $mac ] && ifconfig eth1 hw ether $mac 2>/dev/null
21}
22
23preinit_set_mac_address() {
24	case $(ar71xx_board_name) in
25		c-55)
26			mac_lan=$(mtd_get_mac_binary art 0)
27			[ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
28			;;
29		dir-615-c1)
30			fetch_mac_from_mtd config lan_mac wan_mac
31			echo 1 > /sys/class/leds/dir-615-c1:green:wancpu/brightness
32			;;
33		dir-615-i1)
34			fetch_mac_from_mtd nvram sys_lan_mac sys_wan_mac
35			;;
36		mr18)
37			mac_lan=$(mtd_get_mac_binary_ubi board-config 102)
38			[ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
39			;;
40		r6100)
41			mac_lan=$(mtd_get_mac_binary caldata 0)
42			[ -n "$mac_lan" ] && ifconfig eth1 hw ether "$mac_lan"
43			mac_wan=$(mtd_get_mac_binary caldata 6)
44			[ -n "$mac_wan" ] && ifconfig eth0 hw ether "$mac_wan"
45			;;
46		tew-632brp)
47			fetch_mac_from_mtd config lan_mac wan_mac
48			;;
49		wrt160nl)
50			fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr
51			;;
52	esac
53}
54
55boot_hook_add preinit_main preinit_set_mac_address
56