#
# Copyright (C) 2011 OpenWrt.org
#

preinit_set_mac_address() {
	local mac

	. /lib/functions.sh
	. /lib/ramips.sh

	case $(ramips_board_name) in
	3g-6200n |\
	3g-6200nl |\
	3g300m | \
	dir-620-d1 |\
	dir-300-b7 | \
	w150m | \
	mzk-w300nh2 |\
	wl-330n |\
	wl-330n3g)
		mac=$(mtd_get_mac_binary factory 4)
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	bc2 |\
	broadway |\
	d105 |\
	dir-620-a1 |\
	esr-9753 |\
	freestation5 |\
	hlk-rm04 | \
	mpr-a1 | \
	mpr-a2 | \
	dir-300-b7 | \
	dir-320-b1 | \
	psr-680w |\
	rt-n56u |\
	sl-r7205)
		mac=$(mtd_get_mac_binary factory 4)
		mac=$(macaddr_setbit_la "$mac")
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	asl26555 |\
	dir-300-b1 |\
	dir-300-b2 |\
	dir-600-b1 |\
	dir-610-a1)
                mac=$(mtd_get_mac_binary devdata 16388)
                ifconfig eth0 hw ether $mac 2>/dev/null
                ;;
	dir-645)
		mac=$(mtd_get_mac_ascii nvram lanmac)
		mac=$(macaddr_setbit_la "$mac")
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	dap-1350)
		mac=$(mtd_get_mac_binary devdata 46)
		ifconfig eth0 hw ether $mac 2>/dev/null
                ;;
	all0239-3g |\
	all0256n |\
	all5002 |\
	all5003 |\
	awm002-evb |\
	carambola |\
	dir-615-h1 |\
	fonera20n |\
	ip2202 |\
	rt-n13u |\
	hw550-3g |\
	nbg-419n |\
	omni-emb |\
	omni-emb-hpm |\
	tew-691gr |\
	tew-692gr |\
	w306r-v20 |\
	w502u    |\
	wr6202 |\
	wnce2001 |\
	xdxrn502j)
		mac=$(mtd_get_mac_binary factory 40)
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	m3 |\
	m4 |\
	x5 |\
	x8)
		mac=$(mtd_get_mac_binary factory 4)
		mac=$(macaddr_add "$mac" -1)
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	wl341v3)
		mac=$(mtd_get_mac_binary board-nvram 65440)
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	rt-n10-plus)
		mac=$(mtd_get_mac_binary devconf 4)
		ifconfig eth0 hw ether $mac 2>/dev/null
		;;
	esac
}

boot_hook_add preinit_main preinit_set_mac_address
