add new rc.common for standardized init scripts, convert existing init scripts
authorFelix Fietkau <nbd@openwrt.org>
Wed, 4 Oct 2006 20:05:48 +0000 (20:05 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Wed, 4 Oct 2006 20:05:48 +0000 (20:05 +0000)
SVN-Revision: 4915

16 files changed:
openwrt/package/base-files/ar7-2.4/etc/init.d/S00adam2
openwrt/package/base-files/brcm-2.4/etc/init.d/S05netconfig
openwrt/package/base-files/brcm-2.6/etc/init.d/S05netconfig
openwrt/package/base-files/default/etc/init.d/S10boot
openwrt/package/base-files/default/etc/init.d/S40network
openwrt/package/base-files/default/etc/init.d/S50httpd
openwrt/package/base-files/default/etc/init.d/S50telnet
openwrt/package/base-files/default/etc/init.d/S60cron
openwrt/package/base-files/default/etc/init.d/S98done [deleted file]
openwrt/package/base-files/default/etc/init.d/rcS
openwrt/package/base-files/default/etc/rc.common [new file with mode: 0755]
openwrt/package/dnsmasq/files/dnsmasq.init
openwrt/package/dropbear/files/dropbear.init
openwrt/package/iptables/files/firewall.init
openwrt/package/madwifi/files/madwifi.init
openwrt/target/linux/brcm-2.4/patches/001-bcm47xx.patch

index 0ca4c01..5f5b350 100755 (executable)
@@ -1,8 +1,12 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # ADAM2 patcher for Netgear DG834 and compatible
-MD5="$(md5sum /dev/mtdblock/0  | awk '{print $1}')"
-[ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
-       mtd unlock adam2
-       /sbin/adam2patcher /dev/mtdblock/0
+# Copyright (C) 2006 OpenWrt.org
+
+start() {
+       MD5="$(md5sum /dev/mtdblock/0  | awk '{print $1}')"
+       [ "$MD5" = "0530bfdf00ec155f4182afd70da028c1" ] && {
+               mtd unlock adam2
+               /sbin/adam2patcher /dev/mtdblock/0
+       }
+       rm -f /etc/init.d/S00adam2 /sbin/adam2patcher >&- 2>&-
 }
-rm -f /etc/init.d/S00adam2 /sbin/adam2patcher >&- 2>&-
index 175b9a9..71092da 100755 (executable)
@@ -1,86 +1,87 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-[ -e /etc/config/network ] && exit 0
+start() {
+       [ -e /etc/config/network ] && exit 0
 
-mkdir -p /etc/config
+       mkdir -p /etc/config
 
-(
-       if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
-               # WGT634u
-               echo boardtype=wgt634u
-       else
-               strings /dev/mtdblock/3
-       fi
-) | awk '
-function p(cfgname, name) {
-       if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
-}
-
-BEGIN {
-       FS="="
-       c["lan_ifname"]="eth0.0 wl0"
-       c["wan_ifname"]="eth0.1"
-       c["vlan0ports"]="1 2 3 4 5*"
-       c["vlan1ports"]="0 5"
-}
-
-($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") {
-       nvram[$1] = $2
-}
-
-END {
-       # v1 hardware
-       if (nvram["boardtype"] == "bcm94710dev") {
-               # Asus WL-500g
-               if (nvram["boardnum"] == "asusX") {
-                       c["lan_ifname"]="eth0 eth1 wl0" # FIXME
-                       c["wan_ifname"]=""
-               }
+       (
+               if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
+                       # WGT634u
+                       echo boardtype=wgt634u
+               else
+                       strings /dev/mtdblock/3
+               fi
+       ) | awk '
+       function p(cfgname, name) {
+               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
        }
-       if (nvram["boardtype"] == "wgt634u") {
-               c["vlan0ports"] = "0 1 2 3 5*"
-               c["vlan1ports"] = "4 5"
-               c["lan_ifname"] = "eth0.0 ath0"
+       
+       BEGIN {
+               FS="="
+               c["lan_ifname"]="eth0.0 wl0"
+               c["wan_ifname"]="eth0.1"
+               c["vlan0ports"]="1 2 3 4 5*"
+               c["vlan1ports"]="0 5"
        }
-       if ((nvram["boardtype"] == "0x0467") || (nvram["boardtype"] == "0x042f")) {
-               c["vlan0ports"] = "0 1 2 3 5*"
-               c["vlan1ports"] = "4 5"
+       
+       ($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") {
+               nvram[$1] = $2
        }
-
-       # WAP54G
-       if ((nvram["boardnum"] == "2") || \
-               (nvram["boardnum"] == "1024")) {
-               c["lan_ifname"]="eth0 wl0"
-               c["wan_ifname"]=""
-       }
-
-       print "#### VLAN configuration "
-       print "config switch eth0"
-       p("vlan0", "vlan0ports")
-       p("vlan1", "vlan1ports")
-       print ""
-       print ""
-       print "#### Loopback configuration"
-       print "config interface loopback"
-       print " option ifname   \"lo\""
-       print " option proto    static"
-       print " option ipaddr   127.0.0.1"
-       print " option netmask  255.0.0.0"
-       print ""
-       print ""
-       print "#### LAN configuration"
-       print "config interface lan"
-       print " option type     bridge"
-       p("ifname", "lan_ifname")
-       print " option proto    static"
-       print " option ipaddr   192.168.1.1"
-       print " option netmask  255.255.255.0"
-       print ""
-       print ""
-       print "#### WAN configuration"
-       print "config interface wan"
-       p("ifname", "wan_ifname")
-       print " option proto    dhcp"
+       
+       END {
+               # v1 hardware
+               if (nvram["boardtype"] == "bcm94710dev") {
+                       # Asus WL-500g
+                       if (nvram["boardnum"] == "asusX") {
+                               c["lan_ifname"]="eth0 eth1 wl0" # FIXME
+                               c["wan_ifname"]=""
+                       }
+               }
+               if (nvram["boardtype"] == "wgt634u") {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+                       c["lan_ifname"] = "eth0.0 ath0"
+               }
+               if ((nvram["boardtype"] == "0x0467") || (nvram["boardtype"] == "0x042f")) {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+               }
+       
+               # WAP54G
+               if ((nvram["boardnum"] == "2") || \
+                       (nvram["boardnum"] == "1024")) {
+                       c["lan_ifname"]="eth0 wl0"
+                       c["wan_ifname"]=""
+               }
+       
+               print "#### VLAN configuration "
+               print "config switch eth0"
+               p("vlan0", "vlan0ports")
+               p("vlan1", "vlan1ports")
+               print ""
+               print ""
+               print "#### Loopback configuration"
+               print "config interface loopback"
+               print " option ifname   \"lo\""
+               print " option proto    static"
+               print " option ipaddr   127.0.0.1"
+               print " option netmask  255.0.0.0"
+               print ""
+               print ""
+               print "#### LAN configuration"
+               print "config interface lan"
+               print " option type     bridge"
+               p("ifname", "lan_ifname")
+               print " option proto    static"
+               print " option ipaddr   192.168.1.1"
+               print " option netmask  255.255.255.0"
+               print ""
+               print ""
+               print "#### WAN configuration"
+               print "config interface wan"
+               p("ifname", "wan_ifname")
+               print " option proto    dhcp"
+       }' > /etc/config/network
 }
-' > /etc/config/network
index 175b9a9..e37633e 100755 (executable)
@@ -1,86 +1,87 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-[ -e /etc/config/network ] && exit 0
-
-mkdir -p /etc/config
-
-(
-       if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
-               # WGT634u
-               echo boardtype=wgt634u
-       else
-               strings /dev/mtdblock/3
-       fi
-) | awk '
-function p(cfgname, name) {
-       if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
-}
-
-BEGIN {
-       FS="="
-       c["lan_ifname"]="eth0.0 wl0"
-       c["wan_ifname"]="eth0.1"
-       c["vlan0ports"]="1 2 3 4 5*"
-       c["vlan1ports"]="0 5"
-}
-
-($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") {
-       nvram[$1] = $2
-}
-
-END {
-       # v1 hardware
-       if (nvram["boardtype"] == "bcm94710dev") {
-               # Asus WL-500g
-               if (nvram["boardnum"] == "asusX") {
-                       c["lan_ifname"]="eth0 eth1 wl0" # FIXME
-                       c["wan_ifname"]=""
-               }
-       }
-       if (nvram["boardtype"] == "wgt634u") {
-               c["vlan0ports"] = "0 1 2 3 5*"
-               c["vlan1ports"] = "4 5"
-               c["lan_ifname"] = "eth0.0 ath0"
+start() {
+       [ -e /etc/config/network ] && exit 0
+       
+       mkdir -p /etc/config
+       
+       (
+               if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
+                       # WGT634u
+                       echo boardtype=wgt634u
+               else
+                       strings /dev/mtdblock/3
+               fi
+       ) | awk '
+       function p(cfgname, name) {
+               if (c[name] != "") print "      option " cfgname "      \"" c[name] "\""
        }
-       if ((nvram["boardtype"] == "0x0467") || (nvram["boardtype"] == "0x042f")) {
-               c["vlan0ports"] = "0 1 2 3 5*"
-               c["vlan1ports"] = "4 5"
+       
+       BEGIN {
+               FS="="
+               c["lan_ifname"]="eth0.0 wl0"
+               c["wan_ifname"]="eth0.1"
+               c["vlan0ports"]="1 2 3 4 5*"
+               c["vlan1ports"]="0 5"
        }
-
-       # WAP54G
-       if ((nvram["boardnum"] == "2") || \
-               (nvram["boardnum"] == "1024")) {
-               c["lan_ifname"]="eth0 wl0"
-               c["wan_ifname"]=""
+       
+       ($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") {
+               nvram[$1] = $2
        }
-
-       print "#### VLAN configuration "
-       print "config switch eth0"
-       p("vlan0", "vlan0ports")
-       p("vlan1", "vlan1ports")
-       print ""
-       print ""
-       print "#### Loopback configuration"
-       print "config interface loopback"
-       print " option ifname   \"lo\""
-       print " option proto    static"
-       print " option ipaddr   127.0.0.1"
-       print " option netmask  255.0.0.0"
-       print ""
-       print ""
-       print "#### LAN configuration"
-       print "config interface lan"
-       print " option type     bridge"
-       p("ifname", "lan_ifname")
-       print " option proto    static"
-       print " option ipaddr   192.168.1.1"
-       print " option netmask  255.255.255.0"
-       print ""
-       print ""
-       print "#### WAN configuration"
-       print "config interface wan"
-       p("ifname", "wan_ifname")
-       print " option proto    dhcp"
+       
+       END {
+               # v1 hardware
+               if (nvram["boardtype"] == "bcm94710dev") {
+                       # Asus WL-500g
+                       if (nvram["boardnum"] == "asusX") {
+                               c["lan_ifname"]="eth0 eth1 wl0" # FIXME
+                               c["wan_ifname"]=""
+                       }
+               }
+               if (nvram["boardtype"] == "wgt634u") {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+                       c["lan_ifname"] = "eth0.0 ath0"
+               }
+               if ((nvram["boardtype"] == "0x0467") || (nvram["boardtype"] == "0x042f")) {
+                       c["vlan0ports"] = "0 1 2 3 5*"
+                       c["vlan1ports"] = "4 5"
+               }
+       
+               # WAP54G
+               if ((nvram["boardnum"] == "2") || \
+                       (nvram["boardnum"] == "1024")) {
+                       c["lan_ifname"]="eth0 wl0"
+                       c["wan_ifname"]=""
+               }
+       
+               print "#### VLAN configuration "
+               print "config switch eth0"
+               p("vlan0", "vlan0ports")
+               p("vlan1", "vlan1ports")
+               print ""
+               print ""
+               print "#### Loopback configuration"
+               print "config interface loopback"
+               print " option ifname   \"lo\""
+               print " option proto    static"
+               print " option ipaddr   127.0.0.1"
+               print " option netmask  255.0.0.0"
+               print ""
+               print ""
+               print "#### LAN configuration"
+               print "config interface lan"
+               print " option type     bridge"
+               p("ifname", "lan_ifname")
+               print " option proto    static"
+               print " option ipaddr   192.168.1.1"
+               print " option netmask  255.255.255.0"
+               print ""
+               print ""
+               print "#### WAN configuration"
+               print "config interface wan"
+               p("ifname", "wan_ifname")
+               print " option proto    dhcp"
+       }' > /etc/config/network
 }
-' > /etc/config/network
index b361e15..77b5ca7 100755 (executable)
@@ -1,25 +1,25 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-. /etc/functions.sh
-
-[ -f /proc/mounts ] || /sbin/mount_root
-[ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
-vconfig set_name_type DEV_PLUS_VID_NO_PAD
-
-HOSTNAME=${wan_hostname%%.*}
-echo ${HOSTNAME:=OpenWrt}>/proc/sys/kernel/hostname
-
-mkdir -p /var/run
-mkdir -p /var/log
-mkdir -p /var/lock
-touch /var/log/wtmp
-touch /var/log/lastlog
-[ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
-
-# manually trigger hotplug before loading modules
-for iface in $(awk -F: '/:/ {print $1}' /proc/net/dev); do
-       /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug net
-done
-
-load_modules /etc/modules /etc/modules.d/*
+start() {
+       [ -f /proc/mounts ] || /sbin/mount_root
+       [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
+       vconfig set_name_type DEV_PLUS_VID_NO_PAD
+       
+       HOSTNAME=${wan_hostname%%.*}
+       echo ${HOSTNAME:=OpenWrt}>/proc/sys/kernel/hostname
+       
+       mkdir -p /var/run
+       mkdir -p /var/log
+       mkdir -p /var/lock
+       touch /var/log/wtmp
+       touch /var/log/lastlog
+       [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
+       
+       # manually trigger hotplug before loading modules
+       for iface in $(awk -F: '/:/ {print $1}' /proc/net/dev); do
+               /usr/bin/env -i ACTION=add INTERFACE="$iface" /sbin/hotplug net
+       done
+       
+       load_modules /etc/modules /etc/modules.d/*
+}
index f2c3e22..be04504 100755 (executable)
@@ -1,9 +1,11 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-setup_switch() { return 0; }
+start() {
+       setup_switch() { return 0; }
+
+       include /lib/network
+       setup_switch
+       /sbin/wifi
+}
 
-. /etc/functions.sh
-include /lib/network
-setup_switch
-/sbin/wifi
index d278519..a05b10c 100755 (executable)
@@ -1,4 +1,10 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-[ -d /www ] && httpd -p 80 -h /www -r OpenWrt
+start() {
+       [ -d /www ] && httpd -p 80 -h /www -r OpenWrt
+}
+
+stop() {
+       killall httpd
+}
index 25242bd..228eac2 100755 (executable)
@@ -1,4 +1,10 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-if awk -F: '/^root:/ && $2 !~ /\!/ {exit 1}' /etc/passwd 2>/dev/null; then telnetd -l /bin/login; fi
+start() {
+       if awk -F: '/^root:/ && $2 !~ /\!/ {exit 1}' /etc/passwd 2>/dev/null; then telnetd -l /bin/login; fi
+}
+
+stop() {
+       killall telnetd
+}
index 6df9b7d..a450c36 100755 (executable)
@@ -1,6 +1,12 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
-mkdir -p /var/spool/cron
-ln -s /etc/crontabs /var/spool/cron/crontabs
-crond -c /etc/crontabs
+start () {
+       mkdir -p /var/spool/cron
+       ln -s /etc/crontabs /var/spool/cron/crontabs
+       crond -c /etc/crontabs
+}
+
+stop() {
+       killall crond
+}
diff --git a/openwrt/package/base-files/default/etc/init.d/S98done b/openwrt/package/base-files/default/etc/init.d/S98done
deleted file mode 100755 (executable)
index a1ea5ad..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-sysctl -p >&-
-
-# automagically run firstboot
-{ mount|grep "on / type tmpfs" 1>&-; } && {
-       lock /tmp/.switch2jffs
-       firstboot switch2jffs
-       lock -u /tmp/.switch2jffs
-}
index 2aa7091..7fae7f5 100755 (executable)
@@ -10,6 +10,17 @@ ${FAILSAFE:+exit}
 syslogd -C 16 #${log_ipaddr:+-L -R $log_ipaddr}
 klogd
 
-for i in /etc/init.d/S*; do
-  $i start 2>&1
-done | logger -s -p 6 -t '' &
+(
+       for i in /etc/init.d/S*; do
+               $i start 2>&1
+       done 
+       
+       sysctl -p >&-
+
+       # automagically run firstboot
+       { mount|grep "on / type tmpfs" 1>&-; } && {
+               lock /tmp/.switch2jffs
+               firstboot switch2jffs
+               lock -u /tmp/.switch2jffs
+       }
+) | logger -s -p 6 -t '' &
diff --git a/openwrt/package/base-files/default/etc/rc.common b/openwrt/package/base-files/default/etc/rc.common
new file mode 100755 (executable)
index 0000000..4a90a25
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/sh
+. /etc/functions.sh
+
+start() {
+       return 0
+}
+
+stop() {
+       return 0
+}
+
+reload() {
+       return 1
+}
+
+restart() {
+       stop
+       start
+}
+
+boot() {
+       start
+}
+
+shutdown() {
+       return 0
+}
+
+disable() {
+       rm -f /etc/rc.d/${initscript##*/}
+}
+
+enable() {
+       disable
+       ln -s /etc/init.d/${initscript##*/} /etc/rc.d/${initscript##*/}
+}
+
+depends() {
+       return 0
+}
+
+help() {
+       cat <<EOF
+Syntax: $0 [command]
+
+Available commands:
+       start   Start the service
+       stop    Stop the service
+       restart Restart the service
+       reload  Reload configuration files (or restart if that fails)
+       enable  Enable the service (load at boot time)
+       disable Disable the service
+$EXTRA_HELP
+EOF
+}
+
+initscript="$1"
+action="$2"
+
+. "$initscript"
+
+cmds=
+for cmd in $EXTRA_COMMANDS; do
+       cmds="$cmd) $cmd;;"
+done
+eval "case \"\$action\" in
+       start) start;;
+       stop) stop;;
+       reload) reload || restart;;
+       restart) restart;;
+       enable) enable;;
+       disable) disable;;
+       boot) boot;;
+       shutdown) shutdown;;
+       $cmds
+       *) help;;
+esac"
index cbbee02..8ac0ab6 100644 (file)
@@ -1,50 +1,57 @@
-#!/bin/sh
-. /etc/functions.sh
-include /lib/network
-scan_interfaces
-
-# The following is to automatically configure the DHCP settings
-# based on config settings. Feel free to replace all this crap
-# with a simple "dnsmasq" and manage everything via the
-# /etc/dnsmasq.conf config file
-
-[ -f /etc/dnsmasq.conf ] || exit
-
-args=""
-iface=lan
-config_get ifname "$iface" ifname
-config_get proto "$iface" proto
-
-[ "$proto" = static ] && dhcp_enable="${dhcp_enable:-1}"
-dhcp_start="${dhcp_start:-100}"
-dhcp_num="${dhcp_num:-50}"
-dhcp_lease="${dhcp_lease:-12h}"
-
-# if dhcp_enable is unset and there is a dhcp server on the network already, default to dhcp_enable=0
-[ -z "$dhcp_enable" ] && udhcpc -n -q -R -s /bin/true -i $ifname >&- && dhcp_enable="${dhcp_enable:-0}"
-
-# dhcp_enable=0 disables the dhcp server
-(
-       [ -z "$dhcp_enable" -o "$dhcp_enable" -eq 1 ] && {
-               # no existing DHCP server?
-
-               # calculate settings
-               config_get ipaddr "$iface" ipaddr
-               config_get netmask "$iface" netmask
-               eval $(ipcalc $ipaddr $netmask ${dhcp_start:-100} ${dhcp_num:-150})
-               
-               # and pass the args via config parser defines
-               echo "${dhcp_enable:+@define dhcp_enable 1}"
-               echo "@define netmask $NETMASK"
-               echo "@define start $START"
-               echo "@define end $END"
-               echo "@define lease ${dhcp_lease:-12h}"
-       }
-
-       # ignore requests from wan interface
-       config_get wan_proto wan proto
-       config_get wan_ifname wan ifname
-       [ -z "$wan_proto" -o "$wan_proto" = "none" ] || echo "@define wan_ifname $wan_ifname"
-
-       cat /etc/dnsmasq.conf
-) | awk -f /usr/lib/parse-config.awk | dnsmasq -C /proc/self/fd/0
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+
+start() {
+       include /lib/network
+       scan_interfaces
+       
+       # The following is to automatically configure the DHCP settings
+       # based on config settings. Feel free to replace all this crap
+       # with a simple "dnsmasq" and manage everything via the
+       # /etc/dnsmasq.conf config file
+       
+       [ -f /etc/dnsmasq.conf ] || exit
+       
+       args=""
+       iface=lan
+       config_get ifname "$iface" ifname
+       config_get proto "$iface" proto
+       
+       [ "$proto" = static ] && dhcp_enable="${dhcp_enable:-1}"
+       dhcp_start="${dhcp_start:-100}"
+       dhcp_num="${dhcp_num:-50}"
+       dhcp_lease="${dhcp_lease:-12h}"
+       
+       # if dhcp_enable is unset and there is a dhcp server on the network already, default to dhcp_enable=0
+       [ -z "$dhcp_enable" ] && udhcpc -n -q -R -s /bin/true -i $ifname >&- && dhcp_enable="${dhcp_enable:-0}"
+       
+       # dhcp_enable=0 disables the dhcp server
+       (
+               [ -z "$dhcp_enable" -o "$dhcp_enable" -eq 1 ] && {
+                       # no existing DHCP server?
+       
+                       # calculate settings
+                       config_get ipaddr "$iface" ipaddr
+                       config_get netmask "$iface" netmask
+                       eval $(ipcalc $ipaddr $netmask ${dhcp_start:-100} ${dhcp_num:-150})
+                       
+                       # and pass the args via config parser defines
+                       echo "${dhcp_enable:+@define dhcp_enable 1}"
+                       echo "@define netmask $NETMASK"
+                       echo "@define start $START"
+                       echo "@define end $END"
+                       echo "@define lease ${dhcp_lease:-12h}"
+               }
+       
+               # ignore requests from wan interface
+               config_get wan_proto wan proto
+               config_get wan_ifname wan ifname
+               [ -z "$wan_proto" -o "$wan_proto" = "none" ] || echo "@define wan_ifname $wan_ifname"
+       
+               cat /etc/dnsmasq.conf
+       ) | awk -f /usr/lib/parse-config.awk | dnsmasq -C /proc/self/fd/0
+}
+
+stop() {
+       killall dnsmasq
+}
index 88fc288..e0a4481 100755 (executable)
@@ -1,16 +1,19 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
 
-for type in rsa dss; do {
-  # check for keys
-  key=/etc/dropbear/dropbear_${type}_host_key
-  [ ! -f $key ] && {
-    # generate missing keys
-    mkdir -p /etc/dropbear
-    [ -x /usr/bin/dropbearkey ] && {
-      /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && exec $0 $*
-    } &
-    exit 0
-  }
-}; done
-
-/usr/sbin/dropbear
+start() {
+       for type in rsa dss; do {
+         # check for keys
+         key=/etc/dropbear/dropbear_${type}_host_key
+         [ ! -f $key ] && {
+           # generate missing keys
+           mkdir -p /etc/dropbear
+           [ -x /usr/bin/dropbearkey ] && {
+             /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && exec $0 $*
+           } &
+           exit 0
+         }
+       }; done
+       
+       /usr/sbin/dropbear
+}
index 4acd325..731485b 100755 (executable)
-#!/bin/sh
+#!/bin/sh /etc/rc.common
 # Copyright (C) 2006 OpenWrt.org
 
 ## Please make changes in /etc/firewall.user
 
-. /etc/functions.sh
-include /lib/network
-
-scan_interfaces
-config_get WAN wan ifname
-config_get LAN lan ifname
-
-## CLEAR TABLES
-for T in filter nat; do
-  iptables -t $T -F
-  iptables -t $T -X
-done
-
-iptables -N input_rule
-iptables -N output_rule
-iptables -N forwarding_rule
-
-iptables -t nat -N prerouting_rule
-iptables -t nat -N postrouting_rule
-
-iptables -N LAN_ACCEPT
-[ -z "$WAN" ] || iptables -A LAN_ACCEPT -i "$WAN" -j RETURN
-iptables -A LAN_ACCEPT -j ACCEPT
-
-### INPUT
-###  (connections with the router as destination)
-
-  # base case
-  iptables -P INPUT DROP
-  iptables -A INPUT -m state --state INVALID -j DROP
-  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-  iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j  DROP
-
-  #
-  # insert accept rule or to jump to new accept-check table here
-  #
-  iptables -A INPUT -j input_rule
-
-  # allow
-  iptables -A INPUT -j LAN_ACCEPT      # allow from lan/wifi interfaces 
-  iptables -A INPUT -p icmp    -j ACCEPT       # allow ICMP
-  iptables -A INPUT -p gre     -j ACCEPT       # allow GRE
-
-  # reject (what to do with anything not allowed earlier)
-  iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
-  iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
-
-### OUTPUT
-### (connections with the router as source)
-
-  # base case
-  iptables -P OUTPUT DROP
-  iptables -A OUTPUT -m state --state INVALID -j DROP
-  iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-
-  #
-  # insert accept rule or to jump to new accept-check table here
-  #
-  iptables -A OUTPUT -j output_rule
-
-  # allow
-  iptables -A OUTPUT -j ACCEPT         #allow everything out
-
-  # reject (what to do with anything not allowed earlier)
-  iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
-  iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
-
-### FORWARDING
-### (connections routed through the router)
-
-  # base case
-  iptables -P FORWARD DROP 
-  iptables -A FORWARD -m state --state INVALID -j DROP
-  iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-  iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-
-  #
-  # insert accept rule or to jump to new accept-check table here
-  #
-  iptables -A FORWARD -j forwarding_rule
-
-  # allow
-  iptables -A FORWARD -i br0 -o br0 -j ACCEPT
-  [ -z "$WAN" ] || iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
-
-  # reject (what to do with anything not allowed earlier)
-  # uses the default -P DROP
-
-### MASQ
-  iptables -t nat -A PREROUTING -j prerouting_rule
-  iptables -t nat -A POSTROUTING -j postrouting_rule
-  [ -z "$WAN" ] || iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
+start() {
+       include /lib/network
+       scan_interfaces
+       
+       config_get WAN wan ifname
+       config_get LAN lan ifname
+       
+       ## CLEAR TABLES
+       for T in filter nat; do
+               iptables -t $T -F
+               iptables -t $T -X
+       done
+       
+       iptables -N input_rule
+       iptables -N output_rule
+       iptables -N forwarding_rule
+       
+       iptables -t nat -N prerouting_rule
+       iptables -t nat -N postrouting_rule
+       
+       iptables -N LAN_ACCEPT
+       [ -z "$WAN" ] || iptables -A LAN_ACCEPT -i "$WAN" -j RETURN
+       iptables -A LAN_ACCEPT -j ACCEPT
+       
+       ### INPUT
+       ###  (connections with the router as destination)
+       
+       # base case
+       iptables -P INPUT DROP
+       iptables -A INPUT -m state --state INVALID -j DROP
+       iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+       iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j  DROP
+       
+       #
+       # insert accept rule or to jump to new accept-check table here
+       #
+       iptables -A INPUT -j input_rule
+       
+       # allow
+       iptables -A INPUT -j LAN_ACCEPT # allow from lan/wifi interfaces 
+       iptables -A INPUT -p icmp       -j ACCEPT       # allow ICMP
+       iptables -A INPUT -p gre        -j ACCEPT       # allow GRE
+       
+       # reject (what to do with anything not allowed earlier)
+       iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
+       iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
+       
+       ### OUTPUT
+       ### (connections with the router as source)
+       
+       # base case
+       iptables -P OUTPUT DROP
+       iptables -A OUTPUT -m state --state INVALID -j DROP
+       iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+       
+       #
+       # insert accept rule or to jump to new accept-check table here
+       #
+       iptables -A OUTPUT -j output_rule
+       
+       # allow
+       iptables -A OUTPUT -j ACCEPT            #allow everything out
+       
+       # reject (what to do with anything not allowed earlier)
+       iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
+       iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
+       
+       ### FORWARDING
+       ### (connections routed through the router)
+       
+       # base case
+       iptables -P FORWARD DROP 
+       iptables -A FORWARD -m state --state INVALID -j DROP
+       iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
+       iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
+       
+       #
+       # insert accept rule or to jump to new accept-check table here
+       #
+       iptables -A FORWARD -j forwarding_rule
+       
+       # allow
+       iptables -A FORWARD -i br0 -o br0 -j ACCEPT
+       [ -z "$WAN" ] || iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
+       
+       # reject (what to do with anything not allowed earlier)
+       # uses the default -P DROP
+       
+       ### MASQ
+       iptables -t nat -A PREROUTING -j prerouting_rule
+       iptables -t nat -A POSTROUTING -j postrouting_rule
+       [ -z "$WAN" ] || iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
+       
+       ## USER RULES
+       [ -f /etc/firewall.user ] && . /etc/firewall.user
+       [ -n "$WAN" -a -e /etc/config/firewall ] && {
+               awk -f /usr/lib/common.awk -f /usr/lib/firewall.awk /etc/config/firewall | ash
+       }
+}
 
-## USER RULES
-[ -f /etc/firewall.user ] && . /etc/firewall.user
-[ -n "$WAN" -a -e /etc/config/firewall ] && {
-       awk -f /usr/lib/common.awk -f /usr/lib/firewall.awk /etc/config/firewall | ash
+stop() {
+       iptables -P INPUT ACCEPT
+       iptables -P OUTPUT ACCEPT
+       iptables -P FORWARD ACCEPT
+       iptables -F
+       iptables -t nat -P PREROUTING ACCEPT
+       iptables -t nat -P POSTROUTING ACCEPT
+       iptables -t nat -P OUTPUT ACCEPT
+       iptables -t nat -F
 }
index b1e78c0..73eb110 100644 (file)
@@ -1,2 +1,4 @@
-#!/bin/sh
-iwpriv ath0 mode 3
+#!/bin/sh /etc/rc.common
+start() {
+       iwpriv ath0 mode 3
+}
index 557d24f..726eba8 100644 (file)
@@ -1,58 +1,6 @@
-diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
---- linux.old/arch/mips/Makefile       2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/Makefile       2006-04-27 19:24:19.000000000 +0200
-@@ -726,6 +726,19 @@
- endif
- #
-+# Broadcom BCM947XX variants
-+#
-+ifdef CONFIG_BCM947XX
-+LIBS          += arch/mips/bcm947xx/generic/brcm.o arch/mips/bcm947xx/bcm947xx.o 
-+SUBDIRS               += arch/mips/bcm947xx/generic arch/mips/bcm947xx 
-+LOADADDR      := 0x80001000
-+
-+zImage: vmlinux
-+      $(MAKE) -C arch/$(ARCH)/bcm947xx/compressed
-+export LOADADDR
-+endif
-+
-+#
- # Choosing incompatible machines durings configuration will result in
- # error messages during linking.  Select a default linkscript if
- # none has been choosen above.
-@@ -778,6 +791,7 @@
-       $(MAKE) -C arch/$(ARCH)/tools clean
-       $(MAKE) -C arch/mips/baget clean
-       $(MAKE) -C arch/mips/lasat clean
-+      $(MAKE) -C arch/mips/bcm947xx/compressed clean
- archmrproper:
-       @$(MAKEBOOT) mrproper
-diff -urN linux.old/arch/mips/bcm947xx/Makefile linux.dev/arch/mips/bcm947xx/Makefile
---- linux.old/arch/mips/bcm947xx/Makefile      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/Makefile      2006-05-02 17:46:22.000000000 +0200
-@@ -0,0 +1,17 @@
-+#
-+# Makefile for the BCM947xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+EXTRA_CFLAGS+=-I$(TOPDIR)/arch/mips/bcm947xx/include -DBCMDRIVER
-+
-+O_TARGET        := bcm947xx.o
-+
-+export-objs     := export.o
-+obj-y         := prom.o setup.o time.o sbmips.o gpio.o
-+obj-y         += nvram.o nvram_linux.o sflash.o cfe_env.o
-+obj-y         += sbutils.o bcmutils.o bcmsrom.o hndchipc.o
-+obj-$(CONFIG_PCI) += sbpci.o pcibios.o
-+obj-y                 += export.o
-+
-+include $(TOPDIR)/Rules.make
 diff -urN linux.old/arch/mips/bcm947xx/bcmsrom.c linux.dev/arch/mips/bcm947xx/bcmsrom.c
 --- linux.old/arch/mips/bcm947xx/bcmsrom.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/bcmsrom.c     2006-04-27 20:32:48.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/bcmsrom.c     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,1212 @@
 +/*
 + *  Misc useful routines to access NIC SROM/OTP .
@@ -1268,7 +1216,7 @@ diff -urN linux.old/arch/mips/bcm947xx/bcmsrom.c linux.dev/arch/mips/bcm947xx/bc
 +
 diff -urN linux.old/arch/mips/bcm947xx/bcmutils.c linux.dev/arch/mips/bcm947xx/bcmutils.c
 --- linux.old/arch/mips/bcm947xx/bcmutils.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/bcmutils.c    2006-04-28 00:34:02.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/bcmutils.c    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,247 @@
 +/*
 + * Misc useful OS-independent routines.
@@ -1519,7 +1467,7 @@ diff -urN linux.old/arch/mips/bcm947xx/bcmutils.c linux.dev/arch/mips/bcm947xx/b
 +
 diff -urN linux.old/arch/mips/bcm947xx/cfe_env.c linux.dev/arch/mips/bcm947xx/cfe_env.c
 --- linux.old/arch/mips/bcm947xx/cfe_env.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/cfe_env.c     2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/cfe_env.c     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,234 @@
 +/*
 + * NVRAM variable manipulation (Linux kernel half)
@@ -1757,7 +1705,7 @@ diff -urN linux.old/arch/mips/bcm947xx/cfe_env.c linux.dev/arch/mips/bcm947xx/cf
 +
 diff -urN linux.old/arch/mips/bcm947xx/compressed/Makefile linux.dev/arch/mips/bcm947xx/compressed/Makefile
 --- linux.old/arch/mips/bcm947xx/compressed/Makefile   1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/compressed/Makefile   2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/compressed/Makefile   2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,33 @@
 +#
 +# Makefile for Broadcom BCM947XX boards
@@ -1794,7 +1742,7 @@ diff -urN linux.old/arch/mips/bcm947xx/compressed/Makefile linux.dev/arch/mips/b
 +      rm -f vmlinuz piggy
 diff -urN linux.old/arch/mips/bcm947xx/export.c linux.dev/arch/mips/bcm947xx/export.c
 --- linux.old/arch/mips/bcm947xx/export.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/export.c      2006-04-28 02:57:34.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/export.c      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,65 @@
 +#include <linux/module.h>
 +
@@ -1861,28 +1809,9 @@ diff -urN linux.old/arch/mips/bcm947xx/export.c linux.dev/arch/mips/bcm947xx/exp
 +_export(srom_read)
 +_export(srom_write)
 +
-diff -urN linux.old/arch/mips/bcm947xx/generic/Makefile linux.dev/arch/mips/bcm947xx/generic/Makefile
---- linux.old/arch/mips/bcm947xx/generic/Makefile      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/Makefile      2006-04-27 19:24:19.000000000 +0200
-@@ -0,0 +1,15 @@
-+#
-+# Makefile for the BCM947xx specific kernel interface routines
-+# under Linux.
-+#
-+
-+.S.s:
-+      $(CPP) $(AFLAGS) $< -o $*.s
-+.S.o:
-+      $(CC) $(AFLAGS) -c $< -o $*.o
-+
-+O_TARGET        := brcm.o
-+
-+obj-y := int-handler.o irq.o
-+
-+include $(TOPDIR)/Rules.make
 diff -urN linux.old/arch/mips/bcm947xx/generic/int-handler.S linux.dev/arch/mips/bcm947xx/generic/int-handler.S
 --- linux.old/arch/mips/bcm947xx/generic/int-handler.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/int-handler.S 2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/generic/int-handler.S 2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,51 @@
 +/*
 + * Generic interrupt handler for Broadcom MIPS boards
@@ -1937,7 +1866,7 @@ diff -urN linux.old/arch/mips/bcm947xx/generic/int-handler.S linux.dev/arch/mips
 +      END(brcmIRQ)
 diff -urN linux.old/arch/mips/bcm947xx/generic/irq.c linux.dev/arch/mips/bcm947xx/generic/irq.c
 --- linux.old/arch/mips/bcm947xx/generic/irq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/generic/irq.c 2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/generic/irq.c 2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,130 @@
 +/*
 + * Generic interrupt control functions for Broadcom MIPS boards
@@ -2069,9 +1998,29 @@ diff -urN linux.old/arch/mips/bcm947xx/generic/irq.c linux.dev/arch/mips/bcm947x
 +      breakpoint(); 
 +#endif
 +}
+diff -urN linux.old/arch/mips/bcm947xx/generic/Makefile linux.dev/arch/mips/bcm947xx/generic/Makefile
+--- linux.old/arch/mips/bcm947xx/generic/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/mips/bcm947xx/generic/Makefile      2006-10-02 21:26:29.000000000 +0200
+@@ -0,0 +1,16 @@
++#
++# Makefile for the BCM947xx specific kernel interface routines
++# under Linux.
++#
++EXTRA_CFLAGS += -fno-delayed-branch
++
++.S.s:
++      $(CPP) $(AFLAGS) $< -o $*.s
++.S.o:
++      $(CC) $(AFLAGS) -c $< -o $*.o
++
++O_TARGET        := brcm.o
++
++obj-y := int-handler.o irq.o
++
++include $(TOPDIR)/Rules.make
 diff -urN linux.old/arch/mips/bcm947xx/gpio.c linux.dev/arch/mips/bcm947xx/gpio.c
 --- linux.old/arch/mips/bcm947xx/gpio.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/gpio.c        2006-04-27 23:09:33.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/gpio.c        2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,159 @@
 +/*
 + * GPIO char driver
@@ -2234,7 +2183,7 @@ diff -urN linux.old/arch/mips/bcm947xx/gpio.c linux.dev/arch/mips/bcm947xx/gpio.
 +module_exit(gpio_exit);
 diff -urN linux.old/arch/mips/bcm947xx/hndchipc.c linux.dev/arch/mips/bcm947xx/hndchipc.c
 --- linux.old/arch/mips/bcm947xx/hndchipc.c    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/hndchipc.c    2006-04-28 00:33:05.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/hndchipc.c    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,158 @@
 +/*
 + * BCM47XX support code for some chipcommon (old extif) facilities (uart)
@@ -2396,7 +2345,7 @@ diff -urN linux.old/arch/mips/bcm947xx/hndchipc.c linux.dev/arch/mips/bcm947xx/h
 +
 diff -urN linux.old/arch/mips/bcm947xx/include/bcm4710.h linux.dev/arch/mips/bcm947xx/include/bcm4710.h
 --- linux.old/arch/mips/bcm947xx/include/bcm4710.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcm4710.h     2006-04-27 22:30:01.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcm4710.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,91 @@
 +/*
 + * BCM4710 address space map and definitions
@@ -2491,7 +2440,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcm4710.h linux.dev/arch/mips/bcm
 +#endif /* _bcm4710_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/bcmdefs.h linux.dev/arch/mips/bcm947xx/include/bcmdefs.h
 --- linux.old/arch/mips/bcm947xx/include/bcmdefs.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdefs.h     2006-04-27 20:12:21.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcmdefs.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,106 @@
 +/*
 + * Misc system wide definitions
@@ -2599,27 +2548,26 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdefs.h linux.dev/arch/mips/bcm
 +
 +
 +#endif /* _bcmdefs_h_ */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm947xx/include/bcmdevs.h
---- linux.old/arch/mips/bcm947xx/include/bcmdevs.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdevs.h     2006-04-27 22:30:25.000000000 +0200
-@@ -0,0 +1,369 @@
+diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h
+--- linux.old/arch/mips/bcm947xx/include/bcmdevs1.h    1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h    2006-10-02 21:19:59.000000000 +0200
+@@ -0,0 +1,391 @@
 +/*
 + * Broadcom device-specific manifest constants.
 + *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ * 
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ * $Id: bcmdevs.h,v 1.1.1.17 2006/04/15 01:29:08 michael Exp $
++ * Copyright 2005, Broadcom Corporation   
++ * All Rights Reserved.   
++ *    
++ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY   
++ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM   
++ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS   
++ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.   
++ * $Id$
 + */
 +
 +#ifndef       _BCMDEVS_H
 +#define       _BCMDEVS_H
 +
-+#include "bcm4710.h"
 +
 +/* Known PCI vendor Id's */
 +#define       VENDOR_EPIGRAM          0xfeda
@@ -2659,22 +2607,30 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +#define       BCM47XX_ROBO_ID         0x4719          /* 47xx/53xx roboswitch core */
 +#define       BCM47XX_USB20H_ID       0x471a          /* 47xx usb 2.0 host */
 +#define       BCM47XX_USB20D_ID       0x471b          /* 47xx usb 2.0 device */
-+#define       BCM47XX_ATA100_ID       0x471d          /* 47xx parallel ATA */
-+#define       BCM47XX_SATAXOR_ID      0x471e          /* 47xx serial ATA & XOR DMA */
-+#define       BCM47XX_GIGETH_ID       0x471f          /* 47xx GbE (5700) */
 +
-+#define BCM47XX_SMBUS_EMU_ID  0x47fe          /* 47xx emulated SMBus device */
-+#define       BCM47XX_XOR_EMU_ID      0x47ff          /* 47xx emulated XOR engine */
-+
-+#define       BCM4710_CHIP_ID         0x4710          /* 4710 chipid returned by sb_chip() */
 +#define       BCM4710_DEVICE_ID       0x4710          /* 4710 primary function 0 */
 +
-+#define       BCM4402_CHIP_ID         0x4402          /* 4402 chipid */
++#define       BCM4610_DEVICE_ID       0x4610          /* 4610 primary function 0 */
++#define       BCM4610_ILINE_ID        0x4611          /* 4610 iline100 */
++#define       BCM4610_V90_ID          0x4612          /* 4610 v90 codec */
++#define       BCM4610_ENET_ID         0x4613          /* 4610 enet */
++#define       BCM4610_EXT_ID          0x4614          /* 4610 external i/f */
++#define       BCM4610_USB_ID          0x4615          /* 4610 usb */
++
++#define       BCM4402_DEVICE_ID       0x4402          /* 4402 primary function 0 */
 +#define       BCM4402_ENET_ID         0x4402          /* 4402 enet */
 +#define       BCM4402_V90_ID          0x4403          /* 4402 v90 codec */
 +#define       BCM4401_ENET_ID         0x170c          /* 4401b0 production enet cards */
 +
-+#define       BCM4306_CHIP_ID         0x4306          /* 4306 chipcommon chipid */
++#define       BCM4301_DEVICE_ID       0x4301          /* 4301 primary function 0 */
++#define       BCM4301_D11B_ID         0x4301          /* 4301 802.11b */
++
++#define       BCM4307_DEVICE_ID       0x4307          /* 4307 primary function 0 */
++#define       BCM4307_V90_ID          0x4305          /* 4307 v90 codec */
++#define       BCM4307_ENET_ID         0x4306          /* 4307 enet */
++#define       BCM4307_D11B_ID         0x4307          /* 4307 802.11b */
++
++#define       BCM4306_DEVICE_ID       0x4306          /* 4306 chipcommon chipid */
 +#define       BCM4306_D11G_ID         0x4320          /* 4306 802.11g */
 +#define       BCM4306_D11G_ID2        0x4325          
 +#define       BCM4306_D11A_ID         0x4321          /* 4306 802.11a */
@@ -2684,63 +2640,77 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +
 +#define       BCM4309_PKG_ID          1               /* 4309 package id */
 +
-+#define       BCM4311_CHIP_ID         0x4311          /* 4311 PCIe 802.11a/b/g */
-+#define       BCM4311_D11G_ID         0x4311          /* 4311 802.11b/g id */
-+#define       BCM4311_D11DUAL_ID      0x4312          /* 4311 802.11a/b/g id */
-+#define       BCM4311_D11A_ID         0x4313          /* 4311 802.11a id */
-+
 +#define       BCM4303_D11B_ID         0x4303          /* 4303 802.11b */
 +#define       BCM4303_PKG_ID          2               /* 4303 package id */
 +
++#define       BCM4310_DEVICE_ID       0x4310          /* 4310 chipcommon chipid */
++#define       BCM4310_D11B_ID         0x4311          /* 4310 802.11b */
++#define       BCM4310_UART_ID         0x4312          /* 4310 uart */
++#define       BCM4310_ENET_ID         0x4313          /* 4310 enet */
++#define       BCM4310_USB_ID          0x4315          /* 4310 usb */
++
 +#define       BCMGPRS_UART_ID         0x4333          /* Uart id used by 4306/gprs card */
 +#define       BCMGPRS2_UART_ID        0x4344          /* Uart id used by 4306/gprs card */
 +
-+#define       BCM4704_CHIP_ID         0x4704          /* 4704 chipcommon chipid */
++
++#define       BCM4704_DEVICE_ID       0x4704          /* 4704 chipcommon chipid */
 +#define       BCM4704_ENET_ID         0x4706          /* 4704 enet (Use 47XX_ENET_ID instead!) */
 +
-+#define       BCM4318_CHIP_ID         0x4318          /* 4318 chip common chipid */
-+#define       BCM4318_D11G_ID         0x4318          /* 4318 802.11b/g id */
-+#define       BCM4318_D11DUAL_ID      0x4319          /* 4318 802.11a/b/g id */
-+#define       BCM4318_D11A_ID         0x431a          /* 4318 802.11a id */
++#define       BCM4317_DEVICE_ID       0x4317          /* 4317 chip common chipid */
 +
-+#define       BCM4321_CHIP_ID         0x4321          /* 4321 chip common chipid */
-+#define       BCM4321_D11N_ID         0x4328          /* 4321 802.11n dualband id */
-+#define       BCM4321_D11N2G_ID       0x4329          /* 4321 802.11n 2.4Hgz band id */
-+#define       BCM4321_D11N5G_ID       0x432a          /* 4321 802.11n 5Ghz band id */
++#define       BCM4318_DEVICE_ID       0x4318          /* 4318 chip common chipid */
++#define       BCM4318_D11G_ID         0x4318          /* 4318 801.11b/g id */
++#define       BCM4318_D11DUAL_ID      0x4319          /* 4318 801.11a/b/g id */
++#define BCM4318_JTAGM_ID      0x4331          /* 4318 jtagm device id */
 +
-+#define BCM4331_CHIP_ID               0x4331          /* 4331 chip common chipid */
-+#define BCM4331_D11N2G_ID     0x4330          /* 4331 802.11n 2.4Ghz band id */
-+#define BCM4331_D11N_ID               0x4331          /* 4331 802.11n dualband id */
-+#define BCM4331_D11N5G_ID     0x4332          /* 4331 802.11n 5Ghz band id */
++#define FPGA_JTAGM_ID         0x4330          /* ??? */
 +
-+#define HDLSIM5350_PKG_ID     1               /* HDL simulator package id for a 5350 */
-+#define HDLSIM_PKG_ID         14              /* HDL simulator package id */
-+#define HWSIM_PKG_ID          15              /* Hardware simulator package id */
++/* Address map */
++#define BCM4710_SDRAM           0x00000000      /* Physical SDRAM */
++#define BCM4710_PCI_MEM         0x08000000      /* Host Mode PCI memory access space (64 MB) */
++#define BCM4710_PCI_CFG         0x0c000000      /* Host Mode PCI configuration space (64 MB) */
++#define BCM4710_PCI_DMA         0x40000000      /* Client Mode PCI memory access space (1 GB) */
++#define BCM4710_SDRAM_SWAPPED   0x10000000      /* Byteswapped Physical SDRAM */
++#define BCM4710_ENUM            0x18000000      /* Beginning of core enumeration space */
 +
-+#define       BCM4712_CHIP_ID         0x4712          /* 4712 chipcommon chipid */
-+#define       BCM4712_MIPS_ID         0x4720          /* 4712 base devid */
-+#define       BCM4712LARGE_PKG_ID     0               /* 340pin 4712 package id */
-+#define       BCM4712SMALL_PKG_ID     1               /* 200pin 4712 package id */
-+#define       BCM4712MID_PKG_ID       2               /* 225pin 4712 package id */
++/* Core register space */
++#define BCM4710_REG_SDRAM       0x18000000      /* SDRAM core registers */
++#define BCM4710_REG_ILINE20     0x18001000      /* InsideLine20 core registers */
++#define BCM4710_REG_EMAC0       0x18002000      /* Ethernet MAC 0 core registers */
++#define BCM4710_REG_CODEC       0x18003000      /* Codec core registers */
++#define BCM4710_REG_USB         0x18004000      /* USB core registers */
++#define BCM4710_REG_PCI         0x18005000      /* PCI core registers */
++#define BCM4710_REG_MIPS        0x18006000      /* MIPS core registers */
++#define BCM4710_REG_EXTIF       0x18007000      /* External Interface core registers */
++#define BCM4710_REG_EMAC1       0x18008000      /* Ethernet MAC 1 core registers */
 +
-+#define BCM5365_CHIP_ID               0x5365          /* 5365 chipcommon chipid */
-+#define       BCM5350_CHIP_ID         0x5350          /* bcm5350 chipcommon chipid */
-+#define       BCM5352_CHIP_ID         0x5352          /* bcm5352 chipcommon chipid */
++#define BCM4710_EXTIF           0x1f000000      /* External Interface base address */
++#define BCM4710_PCMCIA_MEM      0x1f000000      /* External Interface PCMCIA memory access */
++#define BCM4710_PCMCIA_IO       0x1f100000      /* PCMCIA I/O access */
++#define BCM4710_PCMCIA_CONF     0x1f200000      /* PCMCIA configuration */
++#define BCM4710_PROG            0x1f800000      /* Programable interface */
++#define BCM4710_FLASH           0x1fc00000      /* Flash */
 +
-+#define       BCM4320_CHIP_ID         0x4320          /* bcm4320 chipcommon chipid */
++#define BCM4710_EJTAG           0xff200000      /* MIPS EJTAG space (2M) */
 +
-+#define BCM4328_CHIP_ID               0x4328          /* bcm4328 chipcommon chipid */
++#define BCM4710_UART            (BCM4710_REG_EXTIF + 0x00000300)
 +
-+#define FPGA_JTAGM_ID         0x43f0          /* FPGA jtagm device id */
-+#define BCM43XX_JTAGM_ID      0x43f1          /* 43xx jtagm device id */
-+#define BCM43XXOLD_JTAGM_ID   0x4331          /* 43xx old jtagm device id */
++#define BCM4710_EUART           (BCM4710_EXTIF + 0x00800000)
++#define BCM4710_LED             (BCM4710_EXTIF + 0x00900000)
 +
-+#define SDIOH_FPGA_ID         0x43f2          /* sdio host fpga */
-+#define SDIOD_FPGA_ID         0x43f4          /* sdio device fpga */
++#define       BCM4712_DEVICE_ID       0x4712          /* 4712 chipcommon chipid */
++#define       BCM4712_MIPS_ID         0x4720          /* 4712 base devid */
++#define       BCM4712LARGE_PKG_ID     0               /* 340pin 4712 package id */
++#define       BCM4712SMALL_PKG_ID     1               /* 200pin 4712 package id */
++#define       BCM4712MID_PKG_ID       2               /* 225pin 4712 package id */
 +
-+#define MIMO_FPGA_ID          0x43f8          /* FPGA mimo minimacphy device id */
++#define       SDIOH_FPGA_ID           0x4380          /* sdio host fpga */
 +
-+#define BCM4785_CHIP_ID               0x4785          /* 4785 chipcommon chipid */
++#define BCM5365_DEVICE_ID       0x5365          /* 5365 chipcommon chipid */
++#define       BCM5350_DEVICE_ID       0x5350          /* bcm5350 chipcommon chipid */
++#define       BCM5352_DEVICE_ID       0x5352          /* bcm5352 chipcommon chipid */
++
++#define       BCM4320_DEVICE_ID       0x4320          /* bcm4320 chipcommon chipid */
 +
 +/* PCMCIA vendor Id's */
 +
@@ -2766,12 +2736,8 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +#define       BFL_BTCMOD              0x4000  /* This board' BTCOEXIST is in the alternate gpios */
 +#define       BFL_ALTIQ               0x8000  /* Alternate I/Q settings */
 +
-+/* boardflags2 */
-+#define BFL2_RXBB_INT_REG_DIS 0x00000001      /* This board has an external rxbb regulator */
-+#define BFL2_SSWITCH_AVAIL    0x00000002      /* This board has a superswitch for > 2 antennas */
-+#define BFL2_TXPWRCTRL_EN     0x00000004      /* This board permits TX Power Control to be enabled */
-+
 +/* board specific GPIO assignment, gpio 0-3 are also customer-configurable led */
++#define BOARD_GPIO_HWRAD_B    0x010   /* bit 4 is HWRAD input on 4301 */
 +#define       BOARD_GPIO_BTCMOD_IN    0x010   /* bit 4 is the alternate BT Coexistance Input */
 +#define       BOARD_GPIO_BTCMOD_OUT   0x020   /* bit 5 is the alternate BT Coexistance Out */
 +#define       BOARD_GPIO_BTC_IN       0x080   /* bit 7 is BT Coexistance Input */
@@ -2782,6 +2748,20 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +#define PCI_CFG_GPIO_XTAL     0x40    /* PCI config space GPIO 14 for Xtal powerup */
 +#define PCI_CFG_GPIO_PLL      0x80    /* PCI config space GPIO 15 for PLL powerdown */
 +
++/* Bus types */
++#define       SB_BUS                  0       /* Silicon Backplane */
++#define       PCI_BUS                 1       /* PCI target */
++#define       PCMCIA_BUS              2       /* PCMCIA target */
++#define SDIO_BUS              3       /* SDIO target */
++#define JTAG_BUS              4       /* JTAG */
++
++/* Allows optimization for single-bus support */
++#ifdef BCMBUSTYPE
++#define BUSTYPE(bus) (BCMBUSTYPE)
++#else
++#define BUSTYPE(bus) (bus)
++#endif
++
 +/* power control defines */
 +#define PLL_DELAY             150             /* us pll on delay */
 +#define FREF_DELAY            200             /* us fref change delay */
@@ -2794,6 +2774,16 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +#define       VSIM4710_BOARD          0x0401
 +#define       QT4710_BOARD            0x0402
 +
++#define       BU4610_BOARD            0x0403
++#define       VSIM4610_BOARD          0x0404
++
++#define       BU4307_BOARD            0x0405
++#define       BCM94301CB_BOARD        0x0406
++#define       BCM94301PC_BOARD        0x0406          /* Pcmcia 5v card */
++#define       BCM94301MP_BOARD        0x0407
++#define       BCM94307MP_BOARD        0x0408
++#define       BCMAP4307_BOARD         0x0409
++
 +#define       BU4309_BOARD            0x040a
 +#define       BCM94309CB_BOARD        0x040b
 +#define       BCM94309MP_BOARD        0x040c
@@ -2801,6 +2791,12 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +
 +#define       BCM94302MP_BOARD        0x040e
 +
++#define       VSIM4310_BOARD          0x040f
++#define       BU4711_BOARD            0x0410
++#define       BCM94310U_BOARD         0x0411
++#define       BCM94310AP_BOARD        0x0412
++#define       BCM94310MP_BOARD        0x0414
++
 +#define       BU4306_BOARD            0x0416
 +#define       BCM94306CB_BOARD        0x0417
 +#define       BCM94306MP_BOARD        0x0418
@@ -2810,16 +2806,21 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +#define       BCM94710R4_BOARD        0x041c
 +#define       BCM94710AP_BOARD        0x041d
 +
++
 +#define       BU2050_BOARD            0x041f
 +
 +
 +#define       BCM94309G_BOARD         0x0421
 +
++#define       BCM94301PC3_BOARD       0x0422          /* Pcmcia 3.3v card */
++
 +#define       BU4704_BOARD            0x0423
 +#define       BU4702_BOARD            0x0424
 +
 +#define       BCM94306PC_BOARD        0x0425          /* pcmcia 3.3v 4306 card */
 +
++#define       BU4317_BOARD            0x0426
++
 +
 +#define       BCM94702MN_BOARD        0x0428
 +
@@ -2832,6 +2833,9 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +/* cb4306 with SiGe PA */
 +#define       BCM94306CBSG_BOARD      0x042b
 +
++/* mp4301 with 2050 radio */
++#define       BCM94301MPL_BOARD       0x042c
++
 +/* cb4306 with SiGe PA */
 +#define       PCSG94306_BOARD         0x042d
 +
@@ -2846,6 +2850,12 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +
 +
 +
++/* BCM94317 boards */
++#define BCM94317CB_BOARD      0x0440
++#define BCM94317MP_BOARD      0x0441
++#define BCM94317PCMCIA_BOARD  0x0442
++#define BCM94317SDIO_BOARD    0x0443
++
 +#define BU4712_BOARD          0x0444
 +#define       BU4712SD_BOARD          0x045d
 +#define       BU4712L_BOARD           0x045f
@@ -2863,11 +2873,15 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +
 +/* BCM63XX boards */
 +#define BCM96338_BOARD                0x6338
++#define BCM96345_BOARD                0x6345
 +#define BCM96348_BOARD                0x6348
 +
 +/* Another mp4306 with SiGe */
 +#define       BCM94306P_BOARD         0x044c
 +
++/* CF-like 4317 modules */
++#define       BCM94317CF_BOARD        0x044d
++
 +/* mp4303 */
 +#define       BCM94303MP_BOARD        0x044e
 +
@@ -2881,6 +2895,9 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +/* 4712agr */
 +#define       BCM94712AGR_BOARD       0x0451
 +
++/* The real CF 4317 board */
++#define       CFI4317_BOARD           0x0452
++
 +/* pcmcia 4303 */
 +#define       PC4303_BOARD            0x0454
 +
@@ -2916,82 +2933,37 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm
 +
 +#define       BCM94318MPGH_BOARD      0x0463
 +
-+#define       BU4311_BOARD            0x0464
-+#define       BCM94311MC_BOARD        0x0465
-+#define       BCM94311MCAG_BOARD      0x0466
 +
 +#define       BCM95352GR_BOARD        0x0467
 +
 +/* bcm95351agr */
 +#define       BCM95351AGR_BOARD       0x0470
 +
-+/* bcm94704mpcb */
-+#define       BCM94704MPCB_BOARD      0x0472
-+
-+/* 4785 boards */
-+#define BU4785_BOARD          0x0478
-+
-+/* 4321 boards */
-+#define BU4321_BOARD          0x046b
-+#define BU4321E_BOARD         0x047c
-+#define MP4321_BOARD          0x046c
-+#define CB2_4321_BOARD                0x046d
-+#define MC4321_BOARD          0x046e
-+
 +/* # of GPIO pins */
 +#define GPIO_NUMPINS          16
 +
-+/* radio ID codes */
-+#define       NORADIO_ID              0xe4f5
-+#define       NORADIO_IDCODE          0x4e4f5246
-+
-+#define       BCM2050_ID              0x2050
-+#define       BCM2050_IDCODE          0x02050000
-+#define       BCM2050A0_IDCODE        0x1205017f
-+#define       BCM2050A1_IDCODE        0x2205017f
-+#define       BCM2050R8_IDCODE        0x8205017f
-+
-+#define BCM2055_ID            0x2055
-+#define BCM2055_IDCODE                0x02055000
-+#define BCM2055A0_IDCODE      0x1205517f
-+
-+#define       BCM2060_ID              0x2060
-+#define       BCM2060_IDCODE          0x02060000
-+#define       BCM2060WW_IDCODE        0x1206017f
-+
-+#define BCM2062_ID            0x2062
-+#define BCM2062_IDCODE                0x02062000
-+#define BCM2062A0_IDCODE      0x0206217f
-+
-+/* parts of an idcode: */
-+#define       IDCODE_MFG_MASK         0x00000fff
-+#define       IDCODE_MFG_SHIFT        0
-+#define       IDCODE_ID_MASK          0x0ffff000
-+#define       IDCODE_ID_SHIFT         12
-+#define       IDCODE_REV_MASK         0xf0000000
-+#define       IDCODE_REV_SHIFT        28
-+
 +#endif /* _BCMDEVS_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h
---- linux.old/arch/mips/bcm947xx/include/bcmdevs1.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmdevs1.h    2006-05-02 04:32:03.000000000 +0200
-@@ -0,0 +1,391 @@
+diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs.h linux.dev/arch/mips/bcm947xx/include/bcmdevs.h
+--- linux.old/arch/mips/bcm947xx/include/bcmdevs.h     1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/mips/bcm947xx/include/bcmdevs.h     2006-10-02 21:19:59.000000000 +0200
+@@ -0,0 +1,369 @@
 +/*
 + * Broadcom device-specific manifest constants.
 + *
-+ * Copyright 2005, Broadcom Corporation   
-+ * All Rights Reserved.   
-+ *    
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY   
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM   
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS   
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.   
-+ * $Id$
++ * Copyright 2006, Broadcom Corporation
++ * All Rights Reserved.
++ * 
++ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
++ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
++ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
++ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
++ * $Id: bcmdevs.h,v 1.1.1.17 2006/04/15 01:29:08 michael Exp $
 + */
 +
 +#ifndef       _BCMDEVS_H
 +#define       _BCMDEVS_H
 +
++#include "bcm4710.h"
 +
 +/* Known PCI vendor Id's */
 +#define       VENDOR_EPIGRAM          0xfeda
@@ -3031,30 +3003,22 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +#define       BCM47XX_ROBO_ID         0x4719          /* 47xx/53xx roboswitch core */
 +#define       BCM47XX_USB20H_ID       0x471a          /* 47xx usb 2.0 host */
 +#define       BCM47XX_USB20D_ID       0x471b          /* 47xx usb 2.0 device */
++#define       BCM47XX_ATA100_ID       0x471d          /* 47xx parallel ATA */
++#define       BCM47XX_SATAXOR_ID      0x471e          /* 47xx serial ATA & XOR DMA */
++#define       BCM47XX_GIGETH_ID       0x471f          /* 47xx GbE (5700) */
 +
-+#define       BCM4710_DEVICE_ID       0x4710          /* 4710 primary function 0 */
++#define BCM47XX_SMBUS_EMU_ID  0x47fe          /* 47xx emulated SMBus device */
++#define       BCM47XX_XOR_EMU_ID      0x47ff          /* 47xx emulated XOR engine */
 +
-+#define       BCM4610_DEVICE_ID       0x4610          /* 4610 primary function 0 */
-+#define       BCM4610_ILINE_ID        0x4611          /* 4610 iline100 */
-+#define       BCM4610_V90_ID          0x4612          /* 4610 v90 codec */
-+#define       BCM4610_ENET_ID         0x4613          /* 4610 enet */
-+#define       BCM4610_EXT_ID          0x4614          /* 4610 external i/f */
-+#define       BCM4610_USB_ID          0x4615          /* 4610 usb */
++#define       BCM4710_CHIP_ID         0x4710          /* 4710 chipid returned by sb_chip() */
++#define       BCM4710_DEVICE_ID       0x4710          /* 4710 primary function 0 */
 +
-+#define       BCM4402_DEVICE_ID       0x4402          /* 4402 primary function 0 */
++#define       BCM4402_CHIP_ID         0x4402          /* 4402 chipid */
 +#define       BCM4402_ENET_ID         0x4402          /* 4402 enet */
 +#define       BCM4402_V90_ID          0x4403          /* 4402 v90 codec */
 +#define       BCM4401_ENET_ID         0x170c          /* 4401b0 production enet cards */
 +
-+#define       BCM4301_DEVICE_ID       0x4301          /* 4301 primary function 0 */
-+#define       BCM4301_D11B_ID         0x4301          /* 4301 802.11b */
-+
-+#define       BCM4307_DEVICE_ID       0x4307          /* 4307 primary function 0 */
-+#define       BCM4307_V90_ID          0x4305          /* 4307 v90 codec */
-+#define       BCM4307_ENET_ID         0x4306          /* 4307 enet */
-+#define       BCM4307_D11B_ID         0x4307          /* 4307 802.11b */
-+
-+#define       BCM4306_DEVICE_ID       0x4306          /* 4306 chipcommon chipid */
++#define       BCM4306_CHIP_ID         0x4306          /* 4306 chipcommon chipid */
 +#define       BCM4306_D11G_ID         0x4320          /* 4306 802.11g */
 +#define       BCM4306_D11G_ID2        0x4325          
 +#define       BCM4306_D11A_ID         0x4321          /* 4306 802.11a */
@@ -3064,77 +3028,63 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +
 +#define       BCM4309_PKG_ID          1               /* 4309 package id */
 +
++#define       BCM4311_CHIP_ID         0x4311          /* 4311 PCIe 802.11a/b/g */
++#define       BCM4311_D11G_ID         0x4311          /* 4311 802.11b/g id */
++#define       BCM4311_D11DUAL_ID      0x4312          /* 4311 802.11a/b/g id */
++#define       BCM4311_D11A_ID         0x4313          /* 4311 802.11a id */
++
 +#define       BCM4303_D11B_ID         0x4303          /* 4303 802.11b */
 +#define       BCM4303_PKG_ID          2               /* 4303 package id */
 +
-+#define       BCM4310_DEVICE_ID       0x4310          /* 4310 chipcommon chipid */
-+#define       BCM4310_D11B_ID         0x4311          /* 4310 802.11b */
-+#define       BCM4310_UART_ID         0x4312          /* 4310 uart */
-+#define       BCM4310_ENET_ID         0x4313          /* 4310 enet */
-+#define       BCM4310_USB_ID          0x4315          /* 4310 usb */
-+
 +#define       BCMGPRS_UART_ID         0x4333          /* Uart id used by 4306/gprs card */
 +#define       BCMGPRS2_UART_ID        0x4344          /* Uart id used by 4306/gprs card */
 +
-+
-+#define       BCM4704_DEVICE_ID       0x4704          /* 4704 chipcommon chipid */
++#define       BCM4704_CHIP_ID         0x4704          /* 4704 chipcommon chipid */
 +#define       BCM4704_ENET_ID         0x4706          /* 4704 enet (Use 47XX_ENET_ID instead!) */
 +
-+#define       BCM4317_DEVICE_ID       0x4317          /* 4317 chip common chipid */
-+
-+#define       BCM4318_DEVICE_ID       0x4318          /* 4318 chip common chipid */
-+#define       BCM4318_D11G_ID         0x4318          /* 4318 801.11b/g id */
-+#define       BCM4318_D11DUAL_ID      0x4319          /* 4318 801.11a/b/g id */
-+#define BCM4318_JTAGM_ID      0x4331          /* 4318 jtagm device id */
-+
-+#define FPGA_JTAGM_ID         0x4330          /* ??? */
-+
-+/* Address map */
-+#define BCM4710_SDRAM           0x00000000      /* Physical SDRAM */
-+#define BCM4710_PCI_MEM         0x08000000      /* Host Mode PCI memory access space (64 MB) */
-+#define BCM4710_PCI_CFG         0x0c000000      /* Host Mode PCI configuration space (64 MB) */
-+#define BCM4710_PCI_DMA         0x40000000      /* Client Mode PCI memory access space (1 GB) */
-+#define BCM4710_SDRAM_SWAPPED   0x10000000      /* Byteswapped Physical SDRAM */
-+#define BCM4710_ENUM            0x18000000      /* Beginning of core enumeration space */
-+
-+/* Core register space */
-+#define BCM4710_REG_SDRAM       0x18000000      /* SDRAM core registers */
-+#define BCM4710_REG_ILINE20     0x18001000      /* InsideLine20 core registers */
-+#define BCM4710_REG_EMAC0       0x18002000      /* Ethernet MAC 0 core registers */
-+#define BCM4710_REG_CODEC       0x18003000      /* Codec core registers */
-+#define BCM4710_REG_USB         0x18004000      /* USB core registers */
-+#define BCM4710_REG_PCI         0x18005000      /* PCI core registers */
-+#define BCM4710_REG_MIPS        0x18006000      /* MIPS core registers */
-+#define BCM4710_REG_EXTIF       0x18007000      /* External Interface core registers */
-+#define BCM4710_REG_EMAC1       0x18008000      /* Ethernet MAC 1 core registers */
-+
-+#define BCM4710_EXTIF           0x1f000000      /* External Interface base address */
-+#define BCM4710_PCMCIA_MEM      0x1f000000      /* External Interface PCMCIA memory access */
-+#define BCM4710_PCMCIA_IO       0x1f100000      /* PCMCIA I/O access */
-+#define BCM4710_PCMCIA_CONF     0x1f200000      /* PCMCIA configuration */
-+#define BCM4710_PROG            0x1f800000      /* Programable interface */
-+#define BCM4710_FLASH           0x1fc00000      /* Flash */
++#define       BCM4318_CHIP_ID         0x4318          /* 4318 chip common chipid */
++#define       BCM4318_D11G_ID         0x4318          /* 4318 802.11b/g id */
++#define       BCM4318_D11DUAL_ID      0x4319          /* 4318 802.11a/b/g id */
++#define       BCM4318_D11A_ID         0x431a          /* 4318 802.11a id */
 +
-+#define BCM4710_EJTAG           0xff200000      /* MIPS EJTAG space (2M) */
++#define       BCM4321_CHIP_ID         0x4321          /* 4321 chip common chipid */
++#define       BCM4321_D11N_ID         0x4328          /* 4321 802.11n dualband id */
++#define       BCM4321_D11N2G_ID       0x4329          /* 4321 802.11n 2.4Hgz band id */
++#define       BCM4321_D11N5G_ID       0x432a          /* 4321 802.11n 5Ghz band id */
 +
-+#define BCM4710_UART            (BCM4710_REG_EXTIF + 0x00000300)
++#define BCM4331_CHIP_ID               0x4331          /* 4331 chip common chipid */
++#define BCM4331_D11N2G_ID     0x4330          /* 4331 802.11n 2.4Ghz band id */
++#define BCM4331_D11N_ID               0x4331          /* 4331 802.11n dualband id */
++#define BCM4331_D11N5G_ID     0x4332          /* 4331 802.11n 5Ghz band id */
 +
-+#define BCM4710_EUART           (BCM4710_EXTIF + 0x00800000)
-+#define BCM4710_LED             (BCM4710_EXTIF + 0x00900000)
++#define HDLSIM5350_PKG_ID     1               /* HDL simulator package id for a 5350 */
++#define HDLSIM_PKG_ID         14              /* HDL simulator package id */
++#define HWSIM_PKG_ID          15              /* Hardware simulator package id */
 +
-+#define       BCM4712_DEVICE_ID       0x4712          /* 4712 chipcommon chipid */
++#define       BCM4712_CHIP_ID         0x4712          /* 4712 chipcommon chipid */
 +#define       BCM4712_MIPS_ID         0x4720          /* 4712 base devid */
 +#define       BCM4712LARGE_PKG_ID     0               /* 340pin 4712 package id */
 +#define       BCM4712SMALL_PKG_ID     1               /* 200pin 4712 package id */
 +#define       BCM4712MID_PKG_ID       2               /* 225pin 4712 package id */
 +
-+#define       SDIOH_FPGA_ID           0x4380          /* sdio host fpga */
++#define BCM5365_CHIP_ID               0x5365          /* 5365 chipcommon chipid */
++#define       BCM5350_CHIP_ID         0x5350          /* bcm5350 chipcommon chipid */
++#define       BCM5352_CHIP_ID         0x5352          /* bcm5352 chipcommon chipid */
 +
-+#define BCM5365_DEVICE_ID       0x5365          /* 5365 chipcommon chipid */
-+#define       BCM5350_DEVICE_ID       0x5350          /* bcm5350 chipcommon chipid */
-+#define       BCM5352_DEVICE_ID       0x5352          /* bcm5352 chipcommon chipid */
++#define       BCM4320_CHIP_ID         0x4320          /* bcm4320 chipcommon chipid */
 +
-+#define       BCM4320_DEVICE_ID       0x4320          /* bcm4320 chipcommon chipid */
++#define BCM4328_CHIP_ID               0x4328          /* bcm4328 chipcommon chipid */
++
++#define FPGA_JTAGM_ID         0x43f0          /* FPGA jtagm device id */
++#define BCM43XX_JTAGM_ID      0x43f1          /* 43xx jtagm device id */
++#define BCM43XXOLD_JTAGM_ID   0x4331          /* 43xx old jtagm device id */
++
++#define SDIOH_FPGA_ID         0x43f2          /* sdio host fpga */
++#define SDIOD_FPGA_ID         0x43f4          /* sdio device fpga */
++
++#define MIMO_FPGA_ID          0x43f8          /* FPGA mimo minimacphy device id */
++
++#define BCM4785_CHIP_ID               0x4785          /* 4785 chipcommon chipid */
 +
 +/* PCMCIA vendor Id's */
 +
@@ -3160,8 +3110,12 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +#define       BFL_BTCMOD              0x4000  /* This board' BTCOEXIST is in the alternate gpios */
 +#define       BFL_ALTIQ               0x8000  /* Alternate I/Q settings */
 +
++/* boardflags2 */
++#define BFL2_RXBB_INT_REG_DIS 0x00000001      /* This board has an external rxbb regulator */
++#define BFL2_SSWITCH_AVAIL    0x00000002      /* This board has a superswitch for > 2 antennas */
++#define BFL2_TXPWRCTRL_EN     0x00000004      /* This board permits TX Power Control to be enabled */
++
 +/* board specific GPIO assignment, gpio 0-3 are also customer-configurable led */
-+#define BOARD_GPIO_HWRAD_B    0x010   /* bit 4 is HWRAD input on 4301 */
 +#define       BOARD_GPIO_BTCMOD_IN    0x010   /* bit 4 is the alternate BT Coexistance Input */
 +#define       BOARD_GPIO_BTCMOD_OUT   0x020   /* bit 5 is the alternate BT Coexistance Out */
 +#define       BOARD_GPIO_BTC_IN       0x080   /* bit 7 is BT Coexistance Input */
@@ -3172,20 +3126,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +#define PCI_CFG_GPIO_XTAL     0x40    /* PCI config space GPIO 14 for Xtal powerup */
 +#define PCI_CFG_GPIO_PLL      0x80    /* PCI config space GPIO 15 for PLL powerdown */
 +
-+/* Bus types */
-+#define       SB_BUS                  0       /* Silicon Backplane */
-+#define       PCI_BUS                 1       /* PCI target */
-+#define       PCMCIA_BUS              2       /* PCMCIA target */
-+#define SDIO_BUS              3       /* SDIO target */
-+#define JTAG_BUS              4       /* JTAG */
-+
-+/* Allows optimization for single-bus support */
-+#ifdef BCMBUSTYPE
-+#define BUSTYPE(bus) (BCMBUSTYPE)
-+#else
-+#define BUSTYPE(bus) (bus)
-+#endif
-+
 +/* power control defines */
 +#define PLL_DELAY             150             /* us pll on delay */
 +#define FREF_DELAY            200             /* us fref change delay */
@@ -3198,16 +3138,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +#define       VSIM4710_BOARD          0x0401
 +#define       QT4710_BOARD            0x0402
 +
-+#define       BU4610_BOARD            0x0403
-+#define       VSIM4610_BOARD          0x0404
-+
-+#define       BU4307_BOARD            0x0405
-+#define       BCM94301CB_BOARD        0x0406
-+#define       BCM94301PC_BOARD        0x0406          /* Pcmcia 5v card */
-+#define       BCM94301MP_BOARD        0x0407
-+#define       BCM94307MP_BOARD        0x0408
-+#define       BCMAP4307_BOARD         0x0409
-+
 +#define       BU4309_BOARD            0x040a
 +#define       BCM94309CB_BOARD        0x040b
 +#define       BCM94309MP_BOARD        0x040c
@@ -3215,12 +3145,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +
 +#define       BCM94302MP_BOARD        0x040e
 +
-+#define       VSIM4310_BOARD          0x040f
-+#define       BU4711_BOARD            0x0410
-+#define       BCM94310U_BOARD         0x0411
-+#define       BCM94310AP_BOARD        0x0412
-+#define       BCM94310MP_BOARD        0x0414
-+
 +#define       BU4306_BOARD            0x0416
 +#define       BCM94306CB_BOARD        0x0417
 +#define       BCM94306MP_BOARD        0x0418
@@ -3230,21 +3154,16 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +#define       BCM94710R4_BOARD        0x041c
 +#define       BCM94710AP_BOARD        0x041d
 +
-+
 +#define       BU2050_BOARD            0x041f
 +
 +
 +#define       BCM94309G_BOARD         0x0421
 +
-+#define       BCM94301PC3_BOARD       0x0422          /* Pcmcia 3.3v card */
-+
 +#define       BU4704_BOARD            0x0423
 +#define       BU4702_BOARD            0x0424
 +
 +#define       BCM94306PC_BOARD        0x0425          /* pcmcia 3.3v 4306 card */
 +
-+#define       BU4317_BOARD            0x0426
-+
 +
 +#define       BCM94702MN_BOARD        0x0428
 +
@@ -3257,9 +3176,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +/* cb4306 with SiGe PA */
 +#define       BCM94306CBSG_BOARD      0x042b
 +
-+/* mp4301 with 2050 radio */
-+#define       BCM94301MPL_BOARD       0x042c
-+
 +/* cb4306 with SiGe PA */
 +#define       PCSG94306_BOARD         0x042d
 +
@@ -3274,12 +3190,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +
 +
 +
-+/* BCM94317 boards */
-+#define BCM94317CB_BOARD      0x0440
-+#define BCM94317MP_BOARD      0x0441
-+#define BCM94317PCMCIA_BOARD  0x0442
-+#define BCM94317SDIO_BOARD    0x0443
-+
 +#define BU4712_BOARD          0x0444
 +#define       BU4712SD_BOARD          0x045d
 +#define       BU4712L_BOARD           0x045f
@@ -3297,15 +3207,11 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +
 +/* BCM63XX boards */
 +#define BCM96338_BOARD                0x6338
-+#define BCM96345_BOARD                0x6345
 +#define BCM96348_BOARD                0x6348
 +
 +/* Another mp4306 with SiGe */
 +#define       BCM94306P_BOARD         0x044c
 +
-+/* CF-like 4317 modules */
-+#define       BCM94317CF_BOARD        0x044d
-+
 +/* mp4303 */
 +#define       BCM94303MP_BOARD        0x044e
 +
@@ -3319,9 +3225,6 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +/* 4712agr */
 +#define       BCM94712AGR_BOARD       0x0451
 +
-+/* The real CF 4317 board */
-+#define       CFI4317_BOARD           0x0452
-+
 +/* pcmcia 4303 */
 +#define       PC4303_BOARD            0x0454
 +
@@ -3357,19 +3260,65 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmdevs1.h linux.dev/arch/mips/bc
 +
 +#define       BCM94318MPGH_BOARD      0x0463
 +
++#define       BU4311_BOARD            0x0464
++#define       BCM94311MC_BOARD        0x0465
++#define       BCM94311MCAG_BOARD      0x0466
 +
 +#define       BCM95352GR_BOARD        0x0467
 +
 +/* bcm95351agr */
 +#define       BCM95351AGR_BOARD       0x0470
 +
++/* bcm94704mpcb */
++#define       BCM94704MPCB_BOARD      0x0472
++
++/* 4785 boards */
++#define BU4785_BOARD          0x0478
++
++/* 4321 boards */
++#define BU4321_BOARD          0x046b
++#define BU4321E_BOARD         0x047c
++#define MP4321_BOARD          0x046c
++#define CB2_4321_BOARD                0x046d
++#define MC4321_BOARD          0x046e
++
 +/* # of GPIO pins */
 +#define GPIO_NUMPINS          16
 +
++/* radio ID codes */
++#define       NORADIO_ID              0xe4f5
++#define       NORADIO_IDCODE          0x4e4f5246
++
++#define       BCM2050_ID              0x2050
++#define       BCM2050_IDCODE          0x02050000
++#define       BCM2050A0_IDCODE        0x1205017f
++#define       BCM2050A1_IDCODE        0x2205017f
++#define       BCM2050R8_IDCODE        0x8205017f
++
++#define BCM2055_ID            0x2055
++#define BCM2055_IDCODE                0x02055000
++#define BCM2055A0_IDCODE      0x1205517f
++
++#define       BCM2060_ID              0x2060
++#define       BCM2060_IDCODE          0x02060000
++#define       BCM2060WW_IDCODE        0x1206017f
++
++#define BCM2062_ID            0x2062
++#define BCM2062_IDCODE                0x02062000
++#define BCM2062A0_IDCODE      0x0206217f
++
++/* parts of an idcode: */
++#define       IDCODE_MFG_MASK         0x00000fff
++#define       IDCODE_MFG_SHIFT        0
++#define       IDCODE_ID_MASK          0x0ffff000
++#define       IDCODE_ID_SHIFT         12
++#define       IDCODE_REV_MASK         0xf0000000
++#define       IDCODE_REV_SHIFT        28
++
 +#endif /* _BCMDEVS_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/bcmendian.h linux.dev/arch/mips/bcm947xx/include/bcmendian.h
 --- linux.old/arch/mips/bcm947xx/include/bcmendian.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmendian.h   2006-04-27 20:08:35.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcmendian.h   2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,198 @@
 +/*
 + * local version of endian.h - byte order defines
@@ -3571,7 +3520,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmendian.h linux.dev/arch/mips/b
 +#endif /* _BCMENDIAN_H_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/bcmnvram.h linux.dev/arch/mips/bcm947xx/include/bcmnvram.h
 --- linux.old/arch/mips/bcm947xx/include/bcmnvram.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmnvram.h    2006-04-27 23:29:18.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcmnvram.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,159 @@
 +/*
 + * NVRAM variable manipulation
@@ -3734,7 +3683,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmnvram.h linux.dev/arch/mips/bc
 +#endif /* _bcmnvram_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/bcmsrom.h linux.dev/arch/mips/bcm947xx/include/bcmsrom.h
 --- linux.old/arch/mips/bcm947xx/include/bcmsrom.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmsrom.h     2006-04-27 20:27:33.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcmsrom.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,108 @@
 +/*
 + * Misc useful routines to access NIC local SROM/OTP .
@@ -3846,7 +3795,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmsrom.h linux.dev/arch/mips/bcm
 +#endif        /* _bcmsrom_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/bcmutils.h linux.dev/arch/mips/bcm947xx/include/bcmutils.h
 --- linux.old/arch/mips/bcm947xx/include/bcmutils.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/bcmutils.h    2006-05-02 01:52:12.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/bcmutils.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,433 @@
 +/*
 + * Misc useful os-independent macros and functions.
@@ -4283,7 +4232,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/bcmutils.h linux.dev/arch/mips/bc
 +#endif        /* _bcmutils_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/hndcpu.h linux.dev/arch/mips/bcm947xx/include/hndcpu.h
 --- linux.old/arch/mips/bcm947xx/include/hndcpu.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndcpu.h      2006-04-27 22:14:38.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/hndcpu.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,28 @@
 +/*
 + * HND SiliconBackplane MIPS/ARM cores software interface.
@@ -4315,7 +4264,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/hndcpu.h linux.dev/arch/mips/bcm9
 +#endif /* _hndcpu_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/hndmips.h linux.dev/arch/mips/bcm947xx/include/hndmips.h
 --- linux.old/arch/mips/bcm947xx/include/hndmips.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndmips.h     2006-04-27 20:43:42.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/hndmips.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,45 @@
 +/*
 + * HND SiliconBackplane MIPS core software interface.
@@ -4364,7 +4313,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/hndmips.h linux.dev/arch/mips/bcm
 +#endif /* _hndmips_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/hndpci.h linux.dev/arch/mips/bcm947xx/include/hndpci.h
 --- linux.old/arch/mips/bcm947xx/include/hndpci.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/hndpci.h      2006-04-27 20:36:48.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/hndpci.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,30 @@
 +/*
 + * HND SiliconBackplane PCI core software interface.
@@ -4398,7 +4347,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/hndpci.h linux.dev/arch/mips/bcm9
 +#endif /* _hndpci_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/linuxver.h linux.dev/arch/mips/bcm947xx/include/linuxver.h
 --- linux.old/arch/mips/bcm947xx/include/linuxver.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/linuxver.h    2006-04-27 20:10:08.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/linuxver.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,417 @@
 +/*
 + * Linux-specific abstractions to gain some independence from linux kernel versions.
@@ -4819,7 +4768,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/linuxver.h linux.dev/arch/mips/bc
 +#endif /* _linuxver_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/mipsinc.h linux.dev/arch/mips/bcm947xx/include/mipsinc.h
 --- linux.old/arch/mips/bcm947xx/include/mipsinc.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/mipsinc.h     2006-04-27 22:12:20.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/mipsinc.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,541 @@
 +/*
 + * HND Run Time Environment for standalone MIPS programs.
@@ -5364,7 +5313,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/mipsinc.h linux.dev/arch/mips/bcm
 +#endif        /* _MISPINC_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/osl.h linux.dev/arch/mips/bcm947xx/include/osl.h
 --- linux.old/arch/mips/bcm947xx/include/osl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/osl.h 2006-05-02 17:40:43.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/osl.h 2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,179 @@
 +#ifndef __osl_h
 +#define __osl_h
@@ -5547,7 +5496,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/osl.h linux.dev/arch/mips/bcm947x
 +#endif
 diff -urN linux.old/arch/mips/bcm947xx/include/pcicfg.h linux.dev/arch/mips/bcm947xx/include/pcicfg.h
 --- linux.old/arch/mips/bcm947xx/include/pcicfg.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/pcicfg.h      2006-04-27 20:31:41.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/pcicfg.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,495 @@
 +/*
 + * pcicfg.h: PCI configuration constants and structures.
@@ -6046,7 +5995,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/pcicfg.h linux.dev/arch/mips/bcm9
 +#endif        /* _h_pcicfg_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbchipc.h linux.dev/arch/mips/bcm947xx/include/sbchipc.h
 --- linux.old/arch/mips/bcm947xx/include/sbchipc.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbchipc.h     2006-04-27 22:11:01.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbchipc.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,516 @@
 +/*
 + * SiliconBackplane Chipcommon core hardware definitions.
@@ -6566,7 +6515,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbchipc.h linux.dev/arch/mips/bcm
 +#endif        /* _SBCHIPC_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbconfig.h linux.dev/arch/mips/bcm947xx/include/sbconfig.h
 --- linux.old/arch/mips/bcm947xx/include/sbconfig.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbconfig.h    2006-04-27 22:14:11.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbconfig.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,369 @@
 +/*
 + * Broadcom SiliconBackplane hardware register definitions.
@@ -6939,7 +6888,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbconfig.h linux.dev/arch/mips/bc
 +#endif        /* _SBCONFIG_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbextif.h linux.dev/arch/mips/bcm947xx/include/sbextif.h
 --- linux.old/arch/mips/bcm947xx/include/sbextif.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbextif.h     2006-04-27 22:13:03.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbextif.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,243 @@
 +/*
 + * Hardware-specific External Interface I/O core definitions
@@ -7186,7 +7135,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbextif.h linux.dev/arch/mips/bcm
 +#endif        /* _SBEXTIF_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbhndmips.h linux.dev/arch/mips/bcm947xx/include/sbhndmips.h
 --- linux.old/arch/mips/bcm947xx/include/sbhndmips.h   1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbhndmips.h   2006-04-27 20:43:56.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbhndmips.h   2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,47 @@
 +/*
 + * Broadcom SiliconBackplane MIPS definitions
@@ -7237,7 +7186,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbhndmips.h linux.dev/arch/mips/b
 +#endif        /* _sbhndmips_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbmemc.h linux.dev/arch/mips/bcm947xx/include/sbmemc.h
 --- linux.old/arch/mips/bcm947xx/include/sbmemc.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbmemc.h      2006-04-27 22:12:41.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbmemc.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,147 @@
 +/*
 + * BCM47XX Sonics SiliconBackplane DDR/SDRAM controller core hardware definitions.
@@ -7336,177 +7285,59 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbmemc.h linux.dev/arch/mips/bcm9
 +#define       MEMC_SDR_NCDL           0x00020032
 +#define       MEMC_SDR1_NCDL          0x0002020f      /* For corerev 1 (4712) */
 +
-+/* For ddr: */
-+#define MEMC_CONFIG_INIT      0x00048000
-+#define MEMC_DRAMTIM2_INIT    0x000754d8
-+#define MEMC_DRAMTIM25_INIT   0x000754d9
-+#define MEMC_RDNCDLCOR_INIT   0x00000000
-+#define MEMC_RDNCDLCOR_SIMINIT        0xf6f6f6f6      /* For hdl sim */
-+#define MEMC_WRNCDLCOR_INIT   0x49351200
-+#define MEMC_1_WRNCDLCOR_INIT 0x14500200
-+#define MEMC_DQSGATENCDL_INIT 0x00030000
-+#define MEMC_MISCDLYCTL_INIT  0x21061c1b
-+#define MEMC_1_MISCDLYCTL_INIT        0x21021400
-+#define MEMC_NCDLCTL_INIT     0x00002001
-+#define MEMC_CONTROL_INIT0    0x00000002
-+#define MEMC_CONTROL_INIT1    0x00000008
-+#define MEMC_MODEBUF_INIT0    0x00004000
-+#define MEMC_CONTROL_INIT2    0x00000010
-+#define MEMC_MODEBUF_INIT1    0x00000100
-+#define MEMC_CONTROL_INIT3    0x00000010
-+#define MEMC_CONTROL_INIT4    0x00000008
-+#define MEMC_REFRESH_INIT     0x0000840f
-+#define MEMC_CONTROL_INIT5    0x00000004
-+#define MEMC_MODEBUF_INIT2    0x00000000
-+#define MEMC_CONTROL_INIT6    0x00000010
-+#define MEMC_CONTROL_INIT7    0x00000001
-+
-+
-+/* This is for DDRM16X16X2 */
-+#define       MEMC_DDR_INIT           0x0009
-+#define       MEMC_DDR_MODE           0x62
-+#define       MEMC_DDR_NCDL           0x0005050a
-+#define       MEMC_DDR1_NCDL          0x00000a0a      /* For corerev 1 (4712) */
-+
-+/* mask for sdr/ddr calibration registers */
-+#define MEMC_RDNCDLCOR_RD_MASK        0x000000ff
-+#define MEMC_WRNCDLCOR_WR_MASK        0x000000ff
-+#define MEMC_DQSGATENCDL_G_MASK       0x000000ff
-+
-+/* masks for miscdlyctl registers */
-+#define MEMC_MISC_SM_MASK     0x30000000
-+#define MEMC_MISC_SM_SHIFT    28
-+#define MEMC_MISC_SD_MASK     0x0f000000
-+#define MEMC_MISC_SD_SHIFT    24
-+
-+/* hw threshhold for calculating wr/rd for sdr memc */
-+#define MEMC_CD_THRESHOLD     128
-+
-+/* Low bit of init register says if memc is ddr or sdr */
-+#define MEMC_CONFIG_DDR               0x00000001
-+
-+#endif        /* _SBMEMC_H */
-diff -urN linux.old/arch/mips/bcm947xx/include/sbpci.h linux.dev/arch/mips/bcm947xx/include/sbpci.h
---- linux.old/arch/mips/bcm947xx/include/sbpci.h       1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpci.h       2006-05-02 17:20:14.000000000 +0200
-@@ -0,0 +1,114 @@
-+/*
-+ * HND SiliconBackplane PCI core hardware definitions.
-+ *
-+ * Copyright 2006, Broadcom Corporation
-+ * All Rights Reserved.
-+ * 
-+ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
-+ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
-+ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
-+ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
-+ *
-+ * $Id: sbpci.h,v 1.1.1.11 2006/02/27 03:43:16 honor Exp $
-+ */
-+
-+#ifndef       _sbpci_h_
-+#define       _sbpci_h_
-+
-+#ifndef _LANGUAGE_ASSEMBLY
-+
-+/* cpp contortions to concatenate w/arg prescan */
-+#ifndef PAD
-+#define       _PADLINE(line)  pad ## line
-+#define       _XSTR(line)     _PADLINE(line)
-+#define       PAD             _XSTR(__LINE__)
-+#endif
-+
-+/* Sonics side: PCI core and host control registers */
-+typedef struct sbpciregs {
-+      uint32 control;         /* PCI control */
-+      uint32 PAD[3];
-+      uint32 arbcontrol;      /* PCI arbiter control */
-+      uint32 PAD[3];
-+      uint32 intstatus;       /* Interrupt status */
-+      uint32 intmask;         /* Interrupt mask */
-+      uint32 sbtopcimailbox;  /* Sonics to PCI mailbox */
-+      uint32 PAD[9];
-+      uint32 bcastaddr;       /* Sonics broadcast address */
-+      uint32 bcastdata;       /* Sonics broadcast data */
-+      uint32 PAD[2];
-+      uint32 gpioin;          /* ro: gpio input (>=rev2) */
-+      uint32 gpioout;         /* rw: gpio output (>=rev2) */
-+      uint32 gpioouten;       /* rw: gpio output enable (>= rev2) */
-+      uint32 gpiocontrol;     /* rw: gpio control (>= rev2) */
-+      uint32 PAD[36];
-+      uint32 sbtopci0;        /* Sonics to PCI translation 0 */
-+      uint32 sbtopci1;        /* Sonics to PCI translation 1 */
-+      uint32 sbtopci2;        /* Sonics to PCI translation 2 */
-+      uint32 PAD[189];
-+      uint32 pcicfg[4][64];   /* 0x400 - 0x7FF, PCI Cfg Space (>=rev8) */
-+      uint16 sprom[36];       /* SPROM shadow Area */
-+      uint32 PAD[46];
-+} sbpciregs_t;
-+
-+#endif        /* _LANGUAGE_ASSEMBLY */
-+
-+/* PCI control */
-+#define PCI_RST_OE    0x01    /* When set, drives PCI_RESET out to pin */
-+#define PCI_RST               0x02    /* Value driven out to pin */
-+#define PCI_CLK_OE    0x04    /* When set, drives clock as gated by PCI_CLK out to pin */
-+#define PCI_CLK               0x08    /* Gate for clock driven out to pin */
-+
-+/* PCI arbiter control */
-+#define PCI_INT_ARB   0x01    /* When set, use an internal arbiter */
-+#define PCI_EXT_ARB   0x02    /* When set, use an external arbiter */
-+/* ParkID - for PCI corerev >= 8 */
-+#define PCI_PARKID_MASK               0x1c    /* Selects which agent is parked on an idle bus */
-+#define PCI_PARKID_SHIFT      2
-+#define PCI_PARKID_EXT0               0       /* External master 0 */
-+#define PCI_PARKID_EXT1               1       /* External master 1 */
-+#define PCI_PARKID_EXT2               2       /* External master 2 */
-+#define PCI_PARKID_INT                3       /* Internal master */
-+#define PCI_PARKID_LAST               4       /* Last active master */
++/* For ddr: */
++#define MEMC_CONFIG_INIT      0x00048000
++#define MEMC_DRAMTIM2_INIT    0x000754d8
++#define MEMC_DRAMTIM25_INIT   0x000754d9
++#define MEMC_RDNCDLCOR_INIT   0x00000000
++#define MEMC_RDNCDLCOR_SIMINIT        0xf6f6f6f6      /* For hdl sim */
++#define MEMC_WRNCDLCOR_INIT   0x49351200
++#define MEMC_1_WRNCDLCOR_INIT 0x14500200
++#define MEMC_DQSGATENCDL_INIT 0x00030000
++#define MEMC_MISCDLYCTL_INIT  0x21061c1b
++#define MEMC_1_MISCDLYCTL_INIT        0x21021400
++#define MEMC_NCDLCTL_INIT     0x00002001
++#define MEMC_CONTROL_INIT0    0x00000002
++#define MEMC_CONTROL_INIT1    0x00000008
++#define MEMC_MODEBUF_INIT0    0x00004000
++#define MEMC_CONTROL_INIT2    0x00000010
++#define MEMC_MODEBUF_INIT1    0x00000100
++#define MEMC_CONTROL_INIT3    0x00000010
++#define MEMC_CONTROL_INIT4    0x00000008
++#define MEMC_REFRESH_INIT     0x0000840f
++#define MEMC_CONTROL_INIT5    0x00000004
++#define MEMC_MODEBUF_INIT2    0x00000000
++#define MEMC_CONTROL_INIT6    0x00000010
++#define MEMC_CONTROL_INIT7    0x00000001
 +
-+/* Interrupt status/mask */
-+#define PCI_INTA      0x01    /* PCI INTA# is asserted */
-+#define PCI_INTB      0x02    /* PCI INTB# is asserted */
-+#define PCI_SERR      0x04    /* PCI SERR# has been asserted (write one to clear) */
-+#define PCI_PERR      0x08    /* PCI PERR# has been asserted (write one to clear) */
-+#define PCI_PME               0x10    /* PCI PME# is asserted */
 +
-+/* (General) PCI/SB mailbox interrupts, two bits per pci function */
-+#define       MAILBOX_F0_0    0x100   /* function 0, int 0 */
-+#define       MAILBOX_F0_1    0x200   /* function 0, int 1 */
-+#define       MAILBOX_F1_0    0x400   /* function 1, int 0 */
-+#define       MAILBOX_F1_1    0x800   /* function 1, int 1 */
-+#define       MAILBOX_F2_0    0x1000  /* function 2, int 0 */
-+#define       MAILBOX_F2_1    0x2000  /* function 2, int 1 */
-+#define       MAILBOX_F3_0    0x4000  /* function 3, int 0 */
-+#define       MAILBOX_F3_1    0x8000  /* function 3, int 1 */
++/* This is for DDRM16X16X2 */
++#define       MEMC_DDR_INIT           0x0009
++#define       MEMC_DDR_MODE           0x62
++#define       MEMC_DDR_NCDL           0x0005050a
++#define       MEMC_DDR1_NCDL          0x00000a0a      /* For corerev 1 (4712) */
 +
-+/* Sonics broadcast address */
-+#define BCAST_ADDR_MASK       0xff    /* Broadcast register address */
++/* mask for sdr/ddr calibration registers */
++#define MEMC_RDNCDLCOR_RD_MASK        0x000000ff
++#define MEMC_WRNCDLCOR_WR_MASK        0x000000ff
++#define MEMC_DQSGATENCDL_G_MASK       0x000000ff
 +
-+/* Sonics to PCI translation types */
-+#define SBTOPCI0_MASK 0xfc000000
-+#define SBTOPCI1_MASK 0xfc000000
-+#define SBTOPCI2_MASK 0xc0000000
-+#define SBTOPCI_MEM   0
-+#define SBTOPCI_IO    1
-+#define SBTOPCI_CFG0  2
-+#define SBTOPCI_CFG1  3
-+#define       SBTOPCI_PREF    0x4             /* prefetch enable */
-+#define       SBTOPCI_BURST   0x8             /* burst enable */
-+#define       SBTOPCI_RC_MASK         0x30    /* read command (>= rev11) */
-+#define       SBTOPCI_RC_READ         0x00    /* memory read */
-+#define       SBTOPCI_RC_READLINE     0x10    /* memory read line */
-+#define       SBTOPCI_RC_READMULTI    0x20    /* memory read multiple */
++/* masks for miscdlyctl registers */
++#define MEMC_MISC_SM_MASK     0x30000000
++#define MEMC_MISC_SM_SHIFT    28
++#define MEMC_MISC_SD_MASK     0x0f000000
++#define MEMC_MISC_SD_SHIFT    24
 +
-+/* PCI core index in SROM shadow area */
-+#define SRSH_PI_OFFSET        0       /* first word */
-+#define SRSH_PI_MASK  0xf000  /* bit 15:12 */
-+#define SRSH_PI_SHIFT 12      /* bit 15:12 */
++/* hw threshhold for calculating wr/rd for sdr memc */
++#define MEMC_CD_THRESHOLD     128
 +
-+#endif        /* _sbpci_h_ */
++/* Low bit of init register says if memc is ddr or sdr */
++#define MEMC_CONFIG_DDR               0x00000001
++
++#endif        /* _SBMEMC_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbpcie.h linux.dev/arch/mips/bcm947xx/include/sbpcie.h
 --- linux.old/arch/mips/bcm947xx/include/sbpcie.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpcie.h      2006-04-27 20:42:22.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbpcie.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,200 @@
 +/*
 + * BCM43XX SiliconBackplane PCIE core hardware definitions.
@@ -7708,9 +7539,127 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbpcie.h linux.dev/arch/mips/bcm9
 +#define SERDES_RX_CDRBW                       7       /* CDR BW */
 +
 +#endif        /* _SBPCIE_H */
+diff -urN linux.old/arch/mips/bcm947xx/include/sbpci.h linux.dev/arch/mips/bcm947xx/include/sbpci.h
+--- linux.old/arch/mips/bcm947xx/include/sbpci.h       1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/mips/bcm947xx/include/sbpci.h       2006-10-02 21:19:59.000000000 +0200
+@@ -0,0 +1,114 @@
++/*
++ * HND SiliconBackplane PCI core hardware definitions.
++ *
++ * Copyright 2006, Broadcom Corporation
++ * All Rights Reserved.
++ * 
++ * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY
++ * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM
++ * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
++ * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE.
++ *
++ * $Id: sbpci.h,v 1.1.1.11 2006/02/27 03:43:16 honor Exp $
++ */
++
++#ifndef       _sbpci_h_
++#define       _sbpci_h_
++
++#ifndef _LANGUAGE_ASSEMBLY
++
++/* cpp contortions to concatenate w/arg prescan */
++#ifndef PAD
++#define       _PADLINE(line)  pad ## line
++#define       _XSTR(line)     _PADLINE(line)
++#define       PAD             _XSTR(__LINE__)
++#endif
++
++/* Sonics side: PCI core and host control registers */
++typedef struct sbpciregs {
++      uint32 control;         /* PCI control */
++      uint32 PAD[3];
++      uint32 arbcontrol;      /* PCI arbiter control */
++      uint32 PAD[3];
++      uint32 intstatus;       /* Interrupt status */
++      uint32 intmask;         /* Interrupt mask */
++      uint32 sbtopcimailbox;  /* Sonics to PCI mailbox */
++      uint32 PAD[9];
++      uint32 bcastaddr;       /* Sonics broadcast address */
++      uint32 bcastdata;       /* Sonics broadcast data */
++      uint32 PAD[2];
++      uint32 gpioin;          /* ro: gpio input (>=rev2) */
++      uint32 gpioout;         /* rw: gpio output (>=rev2) */
++      uint32 gpioouten;       /* rw: gpio output enable (>= rev2) */
++      uint32 gpiocontrol;     /* rw: gpio control (>= rev2) */
++      uint32 PAD[36];
++      uint32 sbtopci0;        /* Sonics to PCI translation 0 */
++      uint32 sbtopci1;        /* Sonics to PCI translation 1 */
++      uint32 sbtopci2;        /* Sonics to PCI translation 2 */
++      uint32 PAD[189];
++      uint32 pcicfg[4][64];   /* 0x400 - 0x7FF, PCI Cfg Space (>=rev8) */
++      uint16 sprom[36];       /* SPROM shadow Area */
++      uint32 PAD[46];
++} sbpciregs_t;
++
++#endif        /* _LANGUAGE_ASSEMBLY */
++
++/* PCI control */
++#define PCI_RST_OE    0x01    /* When set, drives PCI_RESET out to pin */
++#define PCI_RST               0x02    /* Value driven out to pin */
++#define PCI_CLK_OE    0x04    /* When set, drives clock as gated by PCI_CLK out to pin */
++#define PCI_CLK               0x08    /* Gate for clock driven out to pin */
++
++/* PCI arbiter control */
++#define PCI_INT_ARB   0x01    /* When set, use an internal arbiter */
++#define PCI_EXT_ARB   0x02    /* When set, use an external arbiter */
++/* ParkID - for PCI corerev >= 8 */
++#define PCI_PARKID_MASK               0x1c    /* Selects which agent is parked on an idle bus */
++#define PCI_PARKID_SHIFT      2
++#define PCI_PARKID_EXT0               0       /* External master 0 */
++#define PCI_PARKID_EXT1               1       /* External master 1 */
++#define PCI_PARKID_EXT2               2       /* External master 2 */
++#define PCI_PARKID_INT                3       /* Internal master */
++#define PCI_PARKID_LAST               4       /* Last active master */
++
++/* Interrupt status/mask */
++#define PCI_INTA      0x01    /* PCI INTA# is asserted */
++#define PCI_INTB      0x02    /* PCI INTB# is asserted */
++#define PCI_SERR      0x04    /* PCI SERR# has been asserted (write one to clear) */
++#define PCI_PERR      0x08    /* PCI PERR# has been asserted (write one to clear) */
++#define PCI_PME               0x10    /* PCI PME# is asserted */
++
++/* (General) PCI/SB mailbox interrupts, two bits per pci function */
++#define       MAILBOX_F0_0    0x100   /* function 0, int 0 */
++#define       MAILBOX_F0_1    0x200   /* function 0, int 1 */
++#define       MAILBOX_F1_0    0x400   /* function 1, int 0 */
++#define       MAILBOX_F1_1    0x800   /* function 1, int 1 */
++#define       MAILBOX_F2_0    0x1000  /* function 2, int 0 */
++#define       MAILBOX_F2_1    0x2000  /* function 2, int 1 */
++#define       MAILBOX_F3_0    0x4000  /* function 3, int 0 */
++#define       MAILBOX_F3_1    0x8000  /* function 3, int 1 */
++
++/* Sonics broadcast address */
++#define BCAST_ADDR_MASK       0xff    /* Broadcast register address */
++
++/* Sonics to PCI translation types */
++#define SBTOPCI0_MASK 0xfc000000
++#define SBTOPCI1_MASK 0xfc000000
++#define SBTOPCI2_MASK 0xc0000000
++#define SBTOPCI_MEM   0
++#define SBTOPCI_IO    1
++#define SBTOPCI_CFG0  2
++#define SBTOPCI_CFG1  3
++#define       SBTOPCI_PREF    0x4             /* prefetch enable */
++#define       SBTOPCI_BURST   0x8             /* burst enable */
++#define       SBTOPCI_RC_MASK         0x30    /* read command (>= rev11) */
++#define       SBTOPCI_RC_READ         0x00    /* memory read */
++#define       SBTOPCI_RC_READLINE     0x10    /* memory read line */
++#define       SBTOPCI_RC_READMULTI    0x20    /* memory read multiple */
++
++/* PCI core index in SROM shadow area */
++#define SRSH_PI_OFFSET        0       /* first word */
++#define SRSH_PI_MASK  0xf000  /* bit 15:12 */
++#define SRSH_PI_SHIFT 12      /* bit 15:12 */
++
++#endif        /* _sbpci_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbpcmcia.h linux.dev/arch/mips/bcm947xx/include/sbpcmcia.h
 --- linux.old/arch/mips/bcm947xx/include/sbpcmcia.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbpcmcia.h    2006-04-27 20:29:47.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbpcmcia.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,147 @@
 +/*
 + * BCM43XX Sonics SiliconBackplane PCMCIA core hardware definitions.
@@ -7861,7 +7810,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbpcmcia.h linux.dev/arch/mips/bc
 +#endif        /* _SBPCMCIA_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbsdram.h linux.dev/arch/mips/bcm947xx/include/sbsdram.h
 --- linux.old/arch/mips/bcm947xx/include/sbsdram.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbsdram.h     2006-04-27 20:36:08.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbsdram.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,85 @@
 +/*
 + * BCM47XX Sonics SiliconBackplane SDRAM controller core hardware definitions.
@@ -7950,7 +7899,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbsdram.h linux.dev/arch/mips/bcm
 +#endif        /* _SBSDRAM_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbsocram.h linux.dev/arch/mips/bcm947xx/include/sbsocram.h
 --- linux.old/arch/mips/bcm947xx/include/sbsocram.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbsocram.h    2006-04-27 22:13:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbsocram.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,64 @@
 +/*
 + * BCM47XX Sonics SiliconBackplane embedded ram core
@@ -8018,7 +7967,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbsocram.h linux.dev/arch/mips/bc
 +#endif        /* _SBSOCRAM_H */
 diff -urN linux.old/arch/mips/bcm947xx/include/sbutils.h linux.dev/arch/mips/bcm947xx/include/sbutils.h
 --- linux.old/arch/mips/bcm947xx/include/sbutils.h     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sbutils.h     2006-04-27 23:09:25.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sbutils.h     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,150 @@
 +/*
 + * Misc utility routines for accessing chip-specific features
@@ -8172,7 +8121,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sbutils.h linux.dev/arch/mips/bcm
 +#endif        /* _sbutils_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/sflash.h linux.dev/arch/mips/bcm947xx/include/sflash.h
 --- linux.old/arch/mips/bcm947xx/include/sflash.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/sflash.h      2006-04-27 22:13:51.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/sflash.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,36 @@
 +/*
 + * Broadcom SiliconBackplane chipcommon serial flash interface
@@ -8212,7 +8161,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/sflash.h linux.dev/arch/mips/bcm9
 +#endif /* _sflash_h_ */
 diff -urN linux.old/arch/mips/bcm947xx/include/trxhdr.h linux.dev/arch/mips/bcm947xx/include/trxhdr.h
 --- linux.old/arch/mips/bcm947xx/include/trxhdr.h      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/trxhdr.h      2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/trxhdr.h      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,33 @@
 +/*
 + * TRX image file header format.
@@ -8249,7 +8198,7 @@ diff -urN linux.old/arch/mips/bcm947xx/include/trxhdr.h linux.dev/arch/mips/bcm9
 +typedef struct trx_header TRXHDR, *PTRXHDR;
 diff -urN linux.old/arch/mips/bcm947xx/include/typedefs.h linux.dev/arch/mips/bcm947xx/include/typedefs.h
 --- linux.old/arch/mips/bcm947xx/include/typedefs.h    1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/include/typedefs.h    2006-04-27 23:47:30.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/include/typedefs.h    2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,361 @@
 +/*
 + * Copyright 2006, Broadcom Corporation
@@ -8612,9 +8561,30 @@ diff -urN linux.old/arch/mips/bcm947xx/include/typedefs.h linux.dev/arch/mips/bc
 +#include "bcmdefs.h"
 +
 +#endif /* _TYPEDEFS_H_ */
+diff -urN linux.old/arch/mips/bcm947xx/Makefile linux.dev/arch/mips/bcm947xx/Makefile
+--- linux.old/arch/mips/bcm947xx/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ linux.dev/arch/mips/bcm947xx/Makefile      2006-10-02 21:26:08.000000000 +0200
+@@ -0,0 +1,17 @@
++#
++# Makefile for the BCM947xx specific kernel interface routines
++# under Linux.
++#
++
++EXTRA_CFLAGS+=-I$(TOPDIR)/arch/mips/bcm947xx/include -DBCMDRIVER -fno-delayed-branch
++
++O_TARGET        := bcm947xx.o
++
++export-objs     := export.o
++obj-y         := prom.o setup.o time.o sbmips.o gpio.o
++obj-y         += nvram.o nvram_linux.o sflash.o cfe_env.o
++obj-y         += sbutils.o bcmutils.o bcmsrom.o hndchipc.o
++obj-$(CONFIG_PCI) += sbpci.o pcibios.o
++obj-y                 += export.o
++
++include $(TOPDIR)/Rules.make
 diff -urN linux.old/arch/mips/bcm947xx/nvram.c linux.dev/arch/mips/bcm947xx/nvram.c
 --- linux.old/arch/mips/bcm947xx/nvram.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/nvram.c       2006-04-27 23:11:58.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/nvram.c       2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,315 @@
 +/*
 + * NVRAM variable manipulation (common)
@@ -8933,7 +8903,7 @@ diff -urN linux.old/arch/mips/bcm947xx/nvram.c linux.dev/arch/mips/bcm947xx/nvra
 +}
 diff -urN linux.old/arch/mips/bcm947xx/nvram_linux.c linux.dev/arch/mips/bcm947xx/nvram_linux.c
 --- linux.old/arch/mips/bcm947xx/nvram_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/nvram_linux.c 2006-04-27 23:30:07.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/nvram_linux.c 2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,723 @@
 +/*
 + * NVRAM variable manipulation (Linux kernel half)
@@ -9660,7 +9630,7 @@ diff -urN linux.old/arch/mips/bcm947xx/nvram_linux.c linux.dev/arch/mips/bcm947x
 +module_exit(dev_nvram_exit);
 diff -urN linux.old/arch/mips/bcm947xx/pcibios.c linux.dev/arch/mips/bcm947xx/pcibios.c
 --- linux.old/arch/mips/bcm947xx/pcibios.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/pcibios.c     2006-04-27 23:42:50.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/pcibios.c     2006-10-02 21:22:56.000000000 +0200
 @@ -0,0 +1,380 @@
 +/*
 + * Low-Level PCI and SB support for BCM47xx (Linux support code)
@@ -10044,7 +10014,7 @@ diff -urN linux.old/arch/mips/bcm947xx/pcibios.c linux.dev/arch/mips/bcm947xx/pc
 +
 diff -urN linux.old/arch/mips/bcm947xx/prom.c linux.dev/arch/mips/bcm947xx/prom.c
 --- linux.old/arch/mips/bcm947xx/prom.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/prom.c        2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/prom.c        2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,41 @@
 +/*
 + * Early initialization code for BCM94710 boards
@@ -10089,7 +10059,7 @@ diff -urN linux.old/arch/mips/bcm947xx/prom.c linux.dev/arch/mips/bcm947xx/prom.
 +}
 diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbmips.c
 --- linux.old/arch/mips/bcm947xx/sbmips.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbmips.c      2006-05-02 04:43:13.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/sbmips.c      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,1132 @@
 +/*
 + * BCM47XX Sonics SiliconBackplane MIPS core routines
@@ -11225,7 +11195,7 @@ diff -urN linux.old/arch/mips/bcm947xx/sbmips.c linux.dev/arch/mips/bcm947xx/sbm
 +#endif /* BCMINTERNAL | BCMPERFSTATS */
 diff -urN linux.old/arch/mips/bcm947xx/sbpci.c linux.dev/arch/mips/bcm947xx/sbpci.c
 --- linux.old/arch/mips/bcm947xx/sbpci.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbpci.c       2006-05-02 17:37:13.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/sbpci.c       2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,768 @@
 +/*
 + * Low-Level PCI and SB support for BCM47xx
@@ -11997,7 +11967,7 @@ diff -urN linux.old/arch/mips/bcm947xx/sbpci.c linux.dev/arch/mips/bcm947xx/sbpc
 +
 diff -urN linux.old/arch/mips/bcm947xx/sbutils.c linux.dev/arch/mips/bcm947xx/sbutils.c
 --- linux.old/arch/mips/bcm947xx/sbutils.c     1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sbutils.c     2006-05-02 04:33:16.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/sbutils.c     2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,3081 @@
 +/*
 + * Misc utility routines for accessing chip-specific features
@@ -15082,7 +15052,7 @@ diff -urN linux.old/arch/mips/bcm947xx/sbutils.c linux.dev/arch/mips/bcm947xx/sb
 +
 diff -urN linux.old/arch/mips/bcm947xx/setup.c linux.dev/arch/mips/bcm947xx/setup.c
 --- linux.old/arch/mips/bcm947xx/setup.c       1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/setup.c       2006-04-27 23:22:53.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/setup.c       2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,241 @@
 +/*
 + *  Generic setup routines for Broadcom MIPS boards
@@ -15327,7 +15297,7 @@ diff -urN linux.old/arch/mips/bcm947xx/setup.c linux.dev/arch/mips/bcm947xx/setu
 +
 diff -urN linux.old/arch/mips/bcm947xx/sflash.c linux.dev/arch/mips/bcm947xx/sflash.c
 --- linux.old/arch/mips/bcm947xx/sflash.c      1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/sflash.c      2006-04-27 22:11:27.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/sflash.c      2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,422 @@
 +/*
 + * Broadcom SiliconBackplane chipcommon serial flash interface
@@ -15753,7 +15723,7 @@ diff -urN linux.old/arch/mips/bcm947xx/sflash.c linux.dev/arch/mips/bcm947xx/sfl
 +}
 diff -urN linux.old/arch/mips/bcm947xx/time.c linux.dev/arch/mips/bcm947xx/time.c
 --- linux.old/arch/mips/bcm947xx/time.c        1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/arch/mips/bcm947xx/time.c        2006-04-28 00:45:40.000000000 +0200
++++ linux.dev/arch/mips/bcm947xx/time.c        2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,104 @@
 +/*
 + * Copyright 2006, Broadcom Corporation
@@ -15860,8 +15830,8 @@ diff -urN linux.old/arch/mips/bcm947xx/time.c linux.dev/arch/mips/bcm947xx/time.
 +      setup_irq(7, &bcm947xx_timer_irqaction);
 +}
 diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared.in
---- linux.old/arch/mips/config-shared.in       2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/config-shared.in       2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/config-shared.in       2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/config-shared.in       2006-10-02 21:19:59.000000000 +0200
 @@ -208,6 +208,14 @@
     fi
     define_bool CONFIG_MIPS_RTC y
@@ -15902,7 +15872,7 @@ diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared
  if [ "$CONFIG_SNI_RM200_PCI" = "y" ]; then
     define_bool CONFIG_ARC32 y
     define_bool CONFIG_ARC_MEMORY y
-@@ -1042,7 +1062,11 @@
+@@ -1042,7 +1061,11 @@
  
  bool 'Are you using a crosscompiler' CONFIG_CROSSCOMPILE
  bool 'Enable run-time debugging' CONFIG_RUNTIME_DEBUG
@@ -15916,8 +15886,8 @@ diff -urN linux.old/arch/mips/config-shared.in linux.dev/arch/mips/config-shared
  if [ "$CONFIG_KGDB" = "y" ]; then
     define_bool CONFIG_DEBUG_INFO y
 diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-probe.c
---- linux.old/arch/mips/kernel/cpu-probe.c     2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/cpu-probe.c     2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/kernel/cpu-probe.c     2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/kernel/cpu-probe.c     2006-10-02 21:19:59.000000000 +0200
 @@ -162,7 +162,7 @@
  
  static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
@@ -16038,8 +16008,8 @@ diff -urN linux.old/arch/mips/kernel/cpu-probe.c linux.dev/arch/mips/kernel/cpu-
                cpu_probe_sibyte(c);
                break;
 diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
---- linux.old/arch/mips/kernel/head.S  2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/head.S  2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/kernel/head.S  2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/kernel/head.S  2006-10-02 21:19:59.000000000 +0200
 @@ -28,12 +28,20 @@
  #include <asm/mipsregs.h>
  #include <asm/stackframe.h>
@@ -16063,8 +16033,8 @@ diff -urN linux.old/arch/mips/kernel/head.S linux.dev/arch/mips/kernel/head.S
                /* The following two symbols are used for kernel profiling. */
                EXPORT(stext)
 diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
---- linux.old/arch/mips/kernel/proc.c  2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/proc.c  2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/kernel/proc.c  2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/kernel/proc.c  2006-10-02 21:19:59.000000000 +0200
 @@ -78,9 +78,10 @@
        [CPU_AU1550]    "Au1550",
        [CPU_24K]       "MIPS 24K",
@@ -16078,8 +16048,8 @@ diff -urN linux.old/arch/mips/kernel/proc.c linux.dev/arch/mips/kernel/proc.c
  {
        unsigned int version = current_cpu_data.processor_id;
 diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
---- linux.old/arch/mips/kernel/setup.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/setup.c 2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/kernel/setup.c 2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/kernel/setup.c 2006-10-02 21:19:59.000000000 +0200
 @@ -493,6 +493,7 @@
        void swarm_setup(void);
        void hp_setup(void);
@@ -16101,8 +16071,8 @@ diff -urN linux.old/arch/mips/kernel/setup.c linux.dev/arch/mips/kernel/setup.c
                panic("Unsupported architecture");
        }
 diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
---- linux.old/arch/mips/kernel/traps.c 2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/kernel/traps.c 2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/kernel/traps.c 2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/kernel/traps.c 2006-10-02 21:19:59.000000000 +0200
 @@ -920,6 +920,7 @@
  void __init trap_init(void)
  {
@@ -16132,9 +16102,40 @@ diff -urN linux.old/arch/mips/kernel/traps.c linux.dev/arch/mips/kernel/traps.c
        if (cpu_has_fpu && !cpu_has_nofpuex)
                set_except_vector(15, handle_fpe);
  
+diff -urN linux.old/arch/mips/Makefile linux.dev/arch/mips/Makefile
+--- linux.old/arch/mips/Makefile       2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/Makefile       2006-10-02 21:19:59.000000000 +0200
+@@ -726,6 +726,19 @@
+ endif
+ #
++# Broadcom BCM947XX variants
++#
++ifdef CONFIG_BCM947XX
++LIBS          += arch/mips/bcm947xx/generic/brcm.o arch/mips/bcm947xx/bcm947xx.o 
++SUBDIRS               += arch/mips/bcm947xx/generic arch/mips/bcm947xx 
++LOADADDR      := 0x80001000
++
++zImage: vmlinux
++      $(MAKE) -C arch/$(ARCH)/bcm947xx/compressed
++export LOADADDR
++endif
++
++#
+ # Choosing incompatible machines durings configuration will result in
+ # error messages during linking.  Select a default linkscript if
+ # none has been choosen above.
+@@ -778,6 +791,7 @@
+       $(MAKE) -C arch/$(ARCH)/tools clean
+       $(MAKE) -C arch/mips/baget clean
+       $(MAKE) -C arch/mips/lasat clean
++      $(MAKE) -C arch/mips/bcm947xx/compressed clean
+ archmrproper:
+       @$(MAKEBOOT) mrproper
 diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
---- linux.old/arch/mips/mm/c-r4k.c     2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/mm/c-r4k.c     2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/mm/c-r4k.c     2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/mm/c-r4k.c     2006-10-02 21:19:59.000000000 +0200
 @@ -1166,3 +1166,47 @@
        build_clear_page();
        build_copy_page();
@@ -16184,8 +16185,8 @@ diff -urN linux.old/arch/mips/mm/c-r4k.c linux.dev/arch/mips/mm/c-r4k.c
 +
 +
 diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
---- linux.old/arch/mips/pci/Makefile   2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/arch/mips/pci/Makefile   2006-04-27 19:24:19.000000000 +0200
+--- linux.old/arch/mips/pci/Makefile   2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/arch/mips/pci/Makefile   2006-10-02 21:19:59.000000000 +0200
 @@ -13,7 +13,9 @@
  obj-$(CONFIG_MIPS_MSC)                += ops-msc.o
  obj-$(CONFIG_MIPS_NILE4)      += ops-nile4.o
@@ -16197,8 +16198,8 @@ diff -urN linux.old/arch/mips/pci/Makefile linux.dev/arch/mips/pci/Makefile
  
  include $(TOPDIR)/Rules.make
 diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
---- linux.old/drivers/char/serial.c    2006-04-27 18:04:37.000000000 +0200
-+++ linux.dev/drivers/char/serial.c    2006-04-27 19:24:19.000000000 +0200
+--- linux.old/drivers/char/serial.c    2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/drivers/char/serial.c    2006-10-02 21:19:59.000000000 +0200
 @@ -444,6 +444,10 @@
                return inb(info->port+1);
  #endif
@@ -16268,8 +16269,8 @@ diff -urN linux.old/drivers/char/serial.c linux.dev/drivers/char/serial.c
  #if defined(__powerpc__) || defined(__alpha__)
        cval >>= 8;
 diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
---- linux.old/drivers/net/Makefile     2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/net/Makefile     2006-05-04 01:41:03.000000000 +0200
+--- linux.old/drivers/net/Makefile     2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/drivers/net/Makefile     2006-10-02 21:19:59.000000000 +0200
 @@ -3,6 +3,8 @@
  # Makefile for the Linux network (ethercard) device drivers.
  #
@@ -16280,8 +16281,8 @@ diff -urN linux.old/drivers/net/Makefile linux.dev/drivers/net/Makefile
  obj-m           :=
  obj-n           :=
 diff -urN linux.old/drivers/parport/Config.in linux.dev/drivers/parport/Config.in
---- linux.old/drivers/parport/Config.in        2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/parport/Config.in        2006-04-27 19:24:19.000000000 +0200
+--- linux.old/drivers/parport/Config.in        2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/drivers/parport/Config.in        2006-10-02 21:19:59.000000000 +0200
 @@ -11,6 +11,7 @@
  tristate 'Parallel port support' CONFIG_PARPORT
  if [ "$CONFIG_PARPORT" != "n" ]; then
@@ -16291,8 +16292,8 @@ diff -urN linux.old/drivers/parport/Config.in linux.dev/drivers/parport/Config.i
        if [ "$CONFIG_SERIAL" = "m" ]; then
           define_tristate CONFIG_PARPORT_PC_CML1 m
 diff -urN linux.old/drivers/parport/Makefile linux.dev/drivers/parport/Makefile
---- linux.old/drivers/parport/Makefile 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/drivers/parport/Makefile 2006-04-27 19:24:19.000000000 +0200
+--- linux.old/drivers/parport/Makefile 2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/drivers/parport/Makefile 2006-10-02 21:19:59.000000000 +0200
 @@ -22,6 +22,7 @@
  
  obj-$(CONFIG_PARPORT)         += parport.o
@@ -16303,7 +16304,7 @@ diff -urN linux.old/drivers/parport/Makefile linux.dev/drivers/parport/Makefile
  obj-$(CONFIG_PARPORT_MFC3)    += parport_mfc3.o
 diff -urN linux.old/drivers/parport/parport_splink.c linux.dev/drivers/parport/parport_splink.c
 --- linux.old/drivers/parport/parport_splink.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux.dev/drivers/parport/parport_splink.c 2006-04-27 19:24:19.000000000 +0200
++++ linux.dev/drivers/parport/parport_splink.c 2006-10-02 21:19:59.000000000 +0200
 @@ -0,0 +1,345 @@
 +/* Low-level parallel port routines for the ASUS WL-500g built-in port
 + *
@@ -16651,8 +16652,8 @@ diff -urN linux.old/drivers/parport/parport_splink.c linux.dev/drivers/parport/p
 +module_exit(parport_splink_cleanup)
 +
 diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/bootinfo.h
---- linux.old/include/asm-mips/bootinfo.h      2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/bootinfo.h      2006-04-27 19:24:19.000000000 +0200
+--- linux.old/include/asm-mips/bootinfo.h      2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/include/asm-mips/bootinfo.h      2006-10-02 21:19:59.000000000 +0200
 @@ -37,6 +37,7 @@
  #define MACH_GROUP_HP_LJ       20 /* Hewlett Packard LaserJet               */
  #define MACH_GROUP_LASAT       21
@@ -16678,8 +16679,8 @@ diff -urN linux.old/include/asm-mips/bootinfo.h linux.dev/include/asm-mips/booti
   */
  #define       MACH_TITAN_YOSEMITE     1       /* PMC-Sierra Yosemite */
 diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
---- linux.old/include/asm-mips/cpu.h   2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/cpu.h   2006-04-27 19:24:19.000000000 +0200
+--- linux.old/include/asm-mips/cpu.h   2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/include/asm-mips/cpu.h   2006-10-02 21:19:59.000000000 +0200
 @@ -22,6 +22,11 @@
     spec.
  */
@@ -16729,8 +16730,8 @@ diff -urN linux.old/include/asm-mips/cpu.h linux.dev/include/asm-mips/cpu.h
  /*
   * ISA Level encodings
 diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kcache.h
---- linux.old/include/asm-mips/r4kcache.h      2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/r4kcache.h      2006-04-27 19:24:19.000000000 +0200
+--- linux.old/include/asm-mips/r4kcache.h      2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/include/asm-mips/r4kcache.h      2006-10-02 21:19:59.000000000 +0200
 @@ -658,4 +658,17 @@
                        cache128_unroll32(addr|ws,Index_Writeback_Inv_SD);
  }
@@ -16750,8 +16751,8 @@ diff -urN linux.old/include/asm-mips/r4kcache.h linux.dev/include/asm-mips/r4kca
 +
  #endif /* __ASM_R4KCACHE_H */
 diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.h
---- linux.old/include/asm-mips/serial.h        2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/include/asm-mips/serial.h        2006-04-27 19:24:19.000000000 +0200
+--- linux.old/include/asm-mips/serial.h        2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/include/asm-mips/serial.h        2006-10-02 21:19:59.000000000 +0200
 @@ -223,6 +223,13 @@
  #define TXX927_SERIAL_PORT_DEFNS
  #endif
@@ -16775,8 +16776,8 @@ diff -urN linux.old/include/asm-mips/serial.h linux.dev/include/asm-mips/serial.
        DDB5477_SERIAL_PORT_DEFNS               \
        EV96100_SERIAL_PORT_DEFNS               \
 diff -urN linux.old/init/do_mounts.c linux.dev/init/do_mounts.c
---- linux.old/init/do_mounts.c 2006-04-27 18:04:38.000000000 +0200
-+++ linux.dev/init/do_mounts.c 2006-04-27 19:24:19.000000000 +0200
+--- linux.old/init/do_mounts.c 2006-10-02 21:23:10.000000000 +0200
++++ linux.dev/init/do_mounts.c 2006-10-02 21:19:59.000000000 +0200
 @@ -254,7 +254,13 @@
        { "ftlb", 0x2c08 },
        { "ftlc", 0x2c10 },