add linksys nvram fixup to S05nvram (fixes #32)
authorFelix Fietkau <nbd@openwrt.org>
Fri, 11 Nov 2005 14:49:55 +0000 (14:49 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 11 Nov 2005 14:49:55 +0000 (14:49 +0000)
SVN-Revision: 2417

openwrt/target/linux/package/base-files/files/brcm-2.4/etc/init.d/S05nvram

index 0d1300b9647759afb538fea05e9da8b96f0a2f99..b3b4997fc6f676adeb52088b78088a617730d895 100755 (executable)
@@ -1,3 +1,4 @@
+#!/bin/sh
 # NVRAM setup
 #
 # This file handles the NVRAM quirks of various hardware.
 alias debug=${DEBUG:-:}
 
 remap () {
-  for type in lan wifi wan pppoe
-  do
-    for s in '' s
-    do
-      eval nvram set ${type}_ifname$s=\"$(nvram get ${type}_ifname$s|sed s/$1/$2/g)\" 
-    done
-  done
+       for type in lan wifi wan pppoe
+       do
+               for s in '' s
+               do
+                       eval nvram set ${type}_ifname$s=\"$(nvram get ${type}_ifname$s|sed s/$1/$2/g)\" 
+               done
+       done
 }
 
 nvram_default() {
-  [ -z "$(nvram get $1)" ] && nvram set "$1=$2"
+       [ -z "$(nvram get $1)" ] && nvram set "$1=$2"
 }
 
+nvram_set() { # for the linksys fixup part
+       [ "$(nvram get "$1")" = "$2" ] || {
+               COMMIT=1
+               nvram set "$1=$2"
+       }
+}
+
+# work around braindead CFE defaults in linksys routers
+boardtype=$(nvram get boardtype)
+boardflags=$(($(nvram get boardflags)))
+[ "$boardtype" = "bcm4710dev" ] && boardtype="0xdeadbeef"
+adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
+case "$(( $boardtype ))" in
+       "$((0x708))")
+               if [ "$adm_switch" = 0 ]; then
+                       nvram_set sdram_init 0x010b
+                       [ "$COMMIT" = 1 ] && {
+                               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
+                       }
+               fi
+       ;;
+       "$((0x467))")
+               nvram_set sdram_init 0x010c
+               [ "$COMMIT" = 1 ] && {
+                       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
+               }
+       ;;
+esac
+[ "$COMMIT" = "1" ] && nvram commit
+
+
 # linksys bug; remove when not using static configuration for lan
 nvram set lan_proto="static"
 
 # hacks for wrt54g 1.x hardware
 [  "$(nvram get boardnum)"  = "42" \
 -a "$(nvram get boardtype)" = "bcm94710dev" ] && {
-  debug "### wrt54g 1.x hack ###"
-  nvram set vlan1hwname="et0"
-  nvram set vlan2hwname="et0"
-  remap eth0 vlan2
-  remap eth1 vlan1
+       debug "### wrt54g 1.x hack ###"
+       nvram set vlan1hwname="et0"
+       nvram set vlan2hwname="et0"
+       remap eth0 vlan2
+       remap eth1 vlan1
 }
 
 # hacks for asus wl-500g deluxe
 [  "$(nvram get boardtype)" = "bcm95365r" \
 -a "$(nvram get boardnum)" = "45" ] && {
-  debug "### wl-500g deluxe hacks ###"
-  nvram set vlan0hwname="et0"
-  nvram set vlan1hwname="et0"
-  remap eth0.1 vlan0
-  remap eth0 vlan1
-
-  # set up the vlan*ports variables for the asus wl-500g deluxe
-  # if they don't already exist 
-  nvram_default vlan0ports "1 2 3 4 5*"
-  nvram_default vlan1ports "0 5"
+       debug "### wl-500g deluxe hacks ###"
+       nvram set vlan0hwname="et0"
+       nvram set vlan1hwname="et0"
+       remap eth0.1 vlan0
+       remap eth0 vlan1
+
+       # set up the vlan*ports variables for the asus wl-500g deluxe
+       # if they don't already exist 
+       nvram_default vlan0ports "1 2 3 4 5*"
+       nvram_default vlan1ports "0 5"
 }
 
-# hacks for asus wl-300g
-[ "$(nvram get productid)" = "WL300g" ] && {
-  debug "### wl-300g hacks ###"
-  nvram set lan_ifnames="eth0 eth2"
-  nvram set wan_ifname="none"
-}
-
-# hacks for asus wl-hdd
-[ "$(nvram get productid)" = "WLHDD" ] && {
-  debug "### wl-hdd hacks ###"
-  nvram set lan_ifnames="eth1 eth2"
-  nvram set wan_ifname="none"
-}
+# hacks for asus
+case "$(nvram get productid)" in 
+       WL300g)
+               debug "### wl-300g hacks ###"
+               nvram set lan_ifnames="eth0 eth2"
+               nvram set wan_ifname="none"
+       ;;
+       WLHDD)
+               debug "### wl-hdd hacks ###"
+               nvram set lan_ifnames="eth1 eth2"
+               nvram set wan_ifname="none"
+       ;;
+esac
 
 # hacks for wap54g hardware
 [  "$(nvram get boardnum)" = "2" \
 -o "$(nvram get boardnum)" = "1024" ] && {
-  debug "### wap54g hack ###"
-  nvram set wan_ifname="none"
+       debug "### wap54g hack ###"
+       nvram set wan_ifname="none"
 }
 
 # hacks for buffalo wla2-g54l
 [  "$(nvram get boardnum)" = "00" \
 -a "$(nvram get product_name)" = "Product_name" \
 -o "$(nvram get product_name)" = "WLA2-G54L" ] && {
-  debug "### wla2-g54l hacks ###"
-  nvram set wan_ifname="none"
-  nvram set lan_ifnames="vlan0"
+       debug "### wla2-g54l hacks ###"
+       nvram set wan_ifname="none"
+       nvram set lan_ifnames="vlan0"
 }
 
 # needed at least for wrt54gs v1.1 and wrt54g v2.0, v2.2
 [ \! -z "$(nvram get boardrev)" ] && {
-  nvram set wl0id=0x4320
+       nvram_default wl0id 0x4320
+}
+
+WAN_PROTO="$(nvram get wan_proto)"
+[  "$WAN_PROTO" = "pptp" \
+-o "$WAN_PROTO" = "pppoe" ] && {
+       WAN_IFNAME="$(nvram get wan_ifname)"
+       [ "${WAN_IFNAME%%[0-9]*}" = "ppp" ] || {
+               nvram set wan_ifname=ppp0
+               nvram set ${WAN_PROTO}_ifname="$WAN_IFNAME"
+       }
 }
 
 # defaults
@@ -95,8 +150,8 @@ nvram_default wl0_infra 1
 nvram_default wl0_radio 1
 
 [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && {
-  # if default wifi mac, set two higher than the lan mac
-  nvram set il0macaddr=$(nvram get et0macaddr|
-  awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
+       # if default wifi mac, set two higher than the lan mac
+       nvram set il0macaddr=$(nvram get et0macaddr|
+       awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
 }