#!/bin/ash

# ------------------------------
# B I G   F A T   W A R N I N G!
# ------------------------------
#
# This script is written based on the stuff that the
# Linksys firmware does on every boot.
#
# Please do not try to run this on non-Linksys routers.
#
# This thing may not work at all, or it may even brick
# your router, so don't start complaining if this happens.


nvram_set() {
	echo nvram set "$@"
	nvram set "$@"
}

boardtype=$(nvram get boardtype)
boardflags=$(($(nvram get boardflags)))
[ "$boardtype" = "bcm4710dev" ] && boardtype="0xdeadbeef"
adm_switch="$(( ($boardflags & 0x80) >> 7 ))"


case "$(( $boardtype ))" in
	"$((0xdeadbeef))")
		echo "HW type: BCM4702/4710"
	;;

	"$((0x708))")
		if [ "$adm_switch" = 0 ]; then
			echo "HW type: BCM4712+BCM5325E"
			[ "$(nvram get clkfreq)" != "216" \
			  -o "$(nvram get sdram_init)" != "0x010b" \
			  -o "$(nvram get sdram_config)" != "0x0062" ] && {
				nvram_set sdram_init=0x010b
				nvram_set sdram_config=0x0062
				nvram_set clkfreq=216
				nvram_set sdram_ncdl=0x0
			}
			nvram_set pa0itssit=62
			nvram_set pa0b0=0x15eb
			nvram_set pa0b1=0xfa82
			nvram_set pa0b2=0xfe66
			nvram_set pa0maxpwr=0x4e
		else
			echo "HW type: Unknown"
		fi
	;;

	"$((0x42f))")
		if [ "$adm_switch" = 0 ]; then
			echo "HW type: BCM4704+BCM5325F"
		else
			echo "HW type: Unknown"
		fi
	;;

	"$((0x467))")
		echo "HW type: BCM5352E"
		[ "$(nvram get sdram_init)" != "0x010b" \
		  -o "$(nvram get sdram_config)" != "0x0062" ] && {
			nvram_set sdram_init=0x010b
			nvram_set sdram_config=0x0062
			nvram_set sdram_ncdl=0x0
		}
		nvram_set pa0itssit=62
		nvram_set pa0b0=0x168b
		nvram_set pa0b1=0xfabf
		nvram_set pa0b2=0xfeaf
		nvram_set pa0maxpwr=0x4e
	;;

	"$((0x101))")
		echo "HW type: BCM4712"
	;;

	*)
		echo "HW type: Unknown"
	;;
esac

