diff options
Diffstat (limited to 'target/linux/brcm47xx')
169 files changed, 0 insertions, 13750 deletions
diff --git a/target/linux/brcm47xx/Makefile b/target/linux/brcm47xx/Makefile deleted file mode 100644 index 1daa6a4..0000000 --- a/target/linux/brcm47xx/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# -# Copyright (C) 2006-2008 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# -include $(TOPDIR)/rules.mk - -ARCH:=mipsel -BOARD:=brcm47xx -BOARDNAME:=Broadcom BCM47xx/53xx (MIPS) -FEATURES:=squashfs usb -SUBTARGETS:=generic mips74k legacy -MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de> - -LINUX_VERSION:=3.14.16 - -include $(INCLUDE_DIR)/target.mk - - -define Target/Description - Build firmware images for Broadcom based BCM47xx/53xx routers with MIPS CPU, *not* ARM. -endef - -DEFAULT_PACKAGES += swconfig wpad-mini nvram \ - kmod-leds-gpio kmod-gpio-button-hotplug \ - kmod-ledtrig-default-on kmod-ledtrig-timer kmod-ledtrig-netdev - -$(eval $(call BuildTarget)) diff --git a/target/linux/brcm47xx/base-files.mk b/target/linux/brcm47xx/base-files.mk deleted file mode 100644 index d6682bd..0000000 --- a/target/linux/brcm47xx/base-files.mk +++ /dev/null @@ -1,5 +0,0 @@ -define Package/base-files/install-target - rm -f $(1)/etc/config/network -endef - - diff --git a/target/linux/brcm47xx/base-files/etc/diag.sh b/target/linux/brcm47xx/base-files/etc/diag.sh deleted file mode 100644 index 539af36..0000000 --- a/target/linux/brcm47xx/base-files/etc/diag.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org - -. /lib/functions/leds.sh - -get_status_led() { - status_led_file=$(find /sys/class/leds/ -name "*power*" |head -n1) - if [ ! -f $status_led_file ]; then - status_led=$(basename $status_led_file) - return - fi; - status_led_file=$(find /sys/class/leds/ -name "*diag*" |head -n1) - if [ ! -f $status_led_file ]; then - status_led=$(basename $status_led_file) - return - fi; - status_led_file=$(find /sys/class/leds/ -name "*wps*" |head -n1) - if [ ! -f $status_led_file ]; then - status_led=$(basename $status_led_file) - return - fi; -} - -set_state() { - get_status_led - - case "$1" in - preinit) - status_led_blink_preinit - ;; - failsafe) - status_led_blink_failsafe - ;; - done) - status_led_on - ;; - esac -} diff --git a/target/linux/brcm47xx/base-files/etc/init.d/netconfig b/target/linux/brcm47xx/base-files/etc/init.d/netconfig deleted file mode 100755 index 1890cd0..0000000 --- a/target/linux/brcm47xx/base-files/etc/init.d/netconfig +++ /dev/null @@ -1,238 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2006 OpenWrt.org - -START=05 - -start() { - [ -e /etc/config/network ] && { - local batch - - config_cb() { - case "$1" in - switch) - option_cb() { - case "$1" in - vlan[0-9]|vlan1[0-5]) - local id="${1#vlan}" - local ports="${2%\*}" - append batch "delete network.eth0.${1}${N}" - append batch "set network.eth0_${id}=switch_vlan${N}" - append batch "set network.eth0_${id}.device=eth0${N}" - append batch "set network.eth0_${id}.vlan=${id}${N}" - append batch "set network.eth0_${id}.ports='${ports}'${N}" - ;; - esac - } - ;; - switch_vlan) - option_cb() { :; } - batch="" - ;; - esac - } - - config_load network - - [ -n "$batch" ] && { - logger -t netconfig "migrating switch config to new format ..." - echo "$batch${N}commit network" | uci batch - } - - exit 0 - } - - mkdir -p /etc/config - - local cpuport=5 - [ -e /sbin/swconfig ] && cpuport=$(swconfig dev switch0 help 2>/dev/null | sed -ne "s|.*cpu @ \([0-9]*\).*|\1|p") - local switchname=eth0 - [ -e /sbin/swconfig ] && switchname=$(swconfig dev switch0 help 2>/dev/null | sed -ne "s|switch0: \([^\\\\(]*\).*|\1|p") - local model=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo) - - local network_defs=`( - if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then - # WGT634u - echo boardtype=wgt634u - else - strings "$(find_mtd_part nvram)" - fi - ) | awk -v cpuport="$cpuport" -v model="$model" ' - function macinc(mac, maca, i, result) { - split(mac, maca, ":") - for (i = 1; i <= 6; i++) maca[i] = "0x" maca[i] - if (++maca[6] > 0xff) { - maca[5]++ - maca[6] = 0 - } - for (i = 1; i <= 6; i++) { - if (i != 1) result = result ":" - result = result sprintf("%02x", maca[i]) - } - return result - } - - BEGIN { - FS="=" - c["lan_ifname"]="eth0.1" - c["wan_ifname"]="eth0.2" - c["vlan1ports"]="1 2 3 4 5t" - c["vlan2ports"]="0 5t" - for (i = 0; i < 6; i++) { - if (mac_check != "") mac_check = mac_check ":" - mac_check = mac_check "[0-9a-fA-F][0-9a-fA-F]" - } - if (cpuport == "8") { - c["vlan1ports"]="1 2 3 4 8t" - c["vlan2ports"]="0 8t" - } - } - - ($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) || \ - ($1 ~ /^vlan[0-9]{1,2}ports$/) { - nvram[$1] = $2 - } - - END { - if (((nvram["vlan0ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan1ports"] ~ /^4 8/ && (cpuport == "8"))) || \ - ((nvram["vlan1ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan2ports"] ~ /^4 8/ && (cpuport == "8"))) || \ - ((nvram["vlan2ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan1ports"] ~ /^4 8/ && (cpuport == "8")))) { - c["vlan1ports"] = "0 1 2 3 8t" - c["vlan2ports"] = "4 8t" - } - if (((nvram["vlan0ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan1ports"] ~ /^4 5/ && (cpuport == "5"))) || \ - ((nvram["vlan1ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan2ports"] ~ /^4 5/ && (cpuport == "5"))) || \ - ((nvram["vlan2ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan1ports"] ~ /^4 5/ && (cpuport == "5")))) { - c["vlan1ports"] = "0 1 2 3 5t" - c["vlan2ports"] = "4 5t" - } - if ((model == "Asus WLHDD") || (model == "Asus WL300G")) { - c["wan_ifname"] = "" - c["lan_ifname"] = "eth1" - } - if (model == "Asus WL330GE") { - c["wan_ifname"] = "" - c["lan_ifname"] = "eth0.1" - c["vlan1ports"] = "4 5t" - c["vlan2ports"] = "" - } - if ((model == "Asus WL500G") || (model == "Microsoft MN-700")) { - c["wan_ifname"] = "eth1" - c["lan_ifname"] = "eth0" - } - if ((model == "Asus WL500GP V2") || (model == "Buffalo WHR-G125")) { - c["vlan1ports"] = "0 1 2 3 5t" - c["vlan2ports"] = "4 5t" - } - if (model == "Dell TrueMobile 2300") { - c["lan_ifname"] = "eth0" - c["wan_ifname"] = "eth1" - c["vlan1ports"] = "0 1 2 3 4 5" - c["vlan2ports"] = "" - } - if (nvram["boardtype"] == "bcm94710r4") { - # Toshiba WRC-1000 - c["lan_ifname"] = "eth0" - c["wan_ifname"] = "eth1" - } - if ((nvram["boardtype"] == "wgt634u") || (nvram["boardtype"] == "0x0467")) { - c["vlan1ports"] = "0 1 2 3 5t" - c["vlan2ports"] = "4 5t" - } - if ((nvram["boardtype"] == "0x042f") || (nvram["boardtype"] == "0x0472")) { - if (nvram["boardnum"] == "45") { - # WL-500gP - c["vlan1ports"] = "1 2 3 4 5t" - c["vlan2ports"] = "0 5t" - } else { - # Generic BCM94704 - c["vlan1ports"] = "0 1 2 3 4 5" - c["vlan2ports"] = "" - c["lan_ifname"] = "eth0" - c["wan_ifname"] = "eth1" - - # MAC addresses on 4704 tend to be screwed up. Add a workaround here - if (nvram["et0macaddr"] ~ mac_check) { - c["lan_macaddr"] = nvram["et0macaddr"] - c["wan_macaddr"] = macinc(c["lan_macaddr"]) - } - } - } - # Buffalo WBR-B11 and Buffalo WBR-G54 - if (nvram["boardtype"] == "bcm94710ap") { - c["vlan1ports"] = "0 1 2 3 4 5" - c["vlan2ports"] = "" - c["lan_ifname"] = "eth0" - c["wan_ifname"] = "eth1" - } - - # WAP54G - if ((nvram["boardnum"] == "2") || \ - (nvram["boardnum"] == "1024")) { - c["lan_ifname"]="eth0" - c["wan_ifname"]="" - } - - # Sitecom WL-105b - if ((nvram["boardum"] == "2") && \ - (nvram["GemtekPmonVer"] == "1")) { - c["lan_ifname"]="eth0" - c["wan_ifname"]="" - } - - # ASUS WL-700gE - # These are actually same as defaults above. For some reason this script applies - # Generic BCM94704 settings instead so we revert to proper settings here. - # Hopefully someone will fix this properly soon. - if (model == "Asus WL700") { - c["lan_ifname"]="eth0.1" - c["wan_ifname"]="eth0.2" - c["vlan1ports"]="1 2 3 4 5t" - c["vlan2ports"]="0 5t" - } - if ((model == "Motorola WR850G") || (model == "Siemens SE505 V2")) { - c["vlan1ports"]="0 1 2 3 5t" - c["vlan2ports"]="4 5t" - } - if (model == "Asus WL500W") { - c["lan_ifname"] = "eth0" - c["wan_ifname"] = "eth1" - c["vlan1ports"] = "0 1 2 3 4 5" - c["vlan2ports"] = "" - } - print "local vlan1ports=\"" c["vlan1ports"] "\";" - print "local vlan2ports=\"" c["vlan2ports"] "\";" - print "local lan_ifname=\"" c["lan_ifname"] "\";" - print "local lan_macaddr=\"" c["lan_macaddr"] "\";" - print "local wan_ifname=\"" c["wan_ifname"] "\";" - print "local wan_macaddr=\"" c["wan_macaddr"] "\";" - }'` - - . /lib/functions/uci-defaults.sh - - touch /etc/config/network - - eval "$network_defs" - - [ -n "$vlan1ports" -o -n "$vlan2ports" ] && { - local cfg=`ucidef_add_switch "$switchname" 1 1` - [ -n "$cfg" ] && uci rename network.$cfg=eth0 - [ -n "$vlan1ports" ] && { - cfg=`ucidef_add_switch_vlan "$switchname" 1 "$vlan1ports"` - } - [ -n "$vlan2ports" ] && { - cfg=`ucidef_add_switch_vlan "$switchname" 2 "$vlan2ports"` - } - } - - ucidef_set_interface_loopback - - ucidef_set_interface_lan "$lan_ifname" - [ -n "$lan_macaddr" ] && ucidef_set_interface_macaddr lan "$lan_macaddr" - - [ -n "$wan_ifname" ] && { - ucidef_set_interface_wan "$wan_ifname" - [ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr wan "$wan_macaddr" - } - - uci commit network -} diff --git a/target/linux/brcm47xx/base-files/etc/init.d/wmacfixup b/target/linux/brcm47xx/base-files/etc/init.d/wmacfixup deleted file mode 100755 index ee1b752..0000000 --- a/target/linux/brcm47xx/base-files/etc/init.d/wmacfixup +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2010 OpenWrt.org - -START=41 - -boot() { - [ -d /sys/class/ieee80211 ] || exit - - commit=0 - - fixup_wmac() { - local cfg="$1" - local cfmac - - config_get cfmac "$cfg" macaddr - - [ "$cfmac" != "00:90:4c:5f:00:2a" ] || { - local nvmac="$(nvram get il0macaddr 2>/dev/null)" - [ -n "$nvmac" ] && [ "$nvmac != "$cfmac ] && { - uci set wireless.$cfg.macaddr="$nvmac" - commit=1 - } - } - } - - config_load wireless - config_foreach fixup_wmac wifi-device - - [ "$commit" = 1 ] && uci commit wireless -} - -start() { :; } -stop() { :; } diff --git a/target/linux/brcm47xx/base-files/etc/uci-defaults/03_network_migration b/target/linux/brcm47xx/base-files/etc/uci-defaults/03_network_migration deleted file mode 100644 index cef5add..0000000 --- a/target/linux/brcm47xx/base-files/etc/uci-defaults/03_network_migration +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2014 OpenWrt.org -# - -uci show network | grep "\.vlan=0" -[ $? -ne 0 ] && exit 0 - -logger -t network "network config is invalid, creating new one" - -local lan_proto="$(uci -q get network.lan.proto)" -local lan_ipaddr="$(uci -q get network.lan.ipaddr)" -local lan_netmask="$(uci -q get network.lan.netmask)" -local wan_proto="$(uci -q get network.wan.proto)" -local wan_ipaddr="$(uci -q get network.wan.ipaddr)" -local wan_netmask="$(uci -q get network.wan.netmask)" - -rm /etc/config/network -/etc/init.d/netconfig start - -uci set network.lan.proto=$lan_proto -uci set network.lan.ipaddr=$lan_ipaddr -uci set network.lan.netmask=$lan_netmask -uci set network.wan.proto=$wan_proto -uci set network.wan.ipaddr=$wan_ipaddr -uci set network.wan.netmask=$wan_netmask -uci commit network - -exit 0 diff --git a/target/linux/brcm47xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/brcm47xx/base-files/etc/uci-defaults/09_fix_crc deleted file mode 100644 index 346a532..0000000 --- a/target/linux/brcm47xx/base-files/etc/uci-defaults/09_fix_crc +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2007 OpenWrt.org -# -# - -mtd fixtrx firmware diff --git a/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm b/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm deleted file mode 100644 index 4b0d0eb..0000000 --- a/target/linux/brcm47xx/base-files/lib/preinit/05_init_interfaces_brcm +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -preinit_iface() { - ifname=eth0 - - # hardware specific overrides - case "$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)" in - "Asus WLHDD") ifname=eth1;; - "Asus WL300G") ifname=eth1;; - esac - - local try=0; - while [ $((try++)) -le 5 ] && [ ! -f /sys/class/net/$ifname/operstate ]; do sleep 1; done -} - -boot_hook_add preinit_main preinit_iface diff --git a/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm b/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm deleted file mode 100644 index aab50bf..0000000 --- a/target/linux/brcm47xx/base-files/lib/preinit/15_set_preinit_interface_brcm +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -preinit_ip() { - # if the preinit interface isn't specified and ifname is set in - # preinit.arch use that interface - if [ -z "$pi_ifname" ]; then - pi_ifname=$ifname - fi - - [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && { - ifconfig $pi_ifname $pi_ip netmask $pi_netmask broadcast $pi_broadcast up - - local try=0; - while [ $((try++)) -le 5 ] && [ ! $(cat /sys/class/net/$pi_ifname/operstate) == "up" ]; do sleep 1; done - } -} diff --git a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh deleted file mode 100644 index 48885b1..0000000 --- a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh +++ /dev/null @@ -1,16 +0,0 @@ -PART_NAME=firmware - -platform_check_image() { - [ "$#" -gt 1 ] && return 1 - - case "$(get_magic_word "$1")" in - # .trx files - 4844) return 0;; - *) - echo "Invalid image type. Please use only .trx files" - return 1 - ;; - esac -} - -# use default for platform_do_upgrade() diff --git a/target/linux/brcm47xx/config-3.10 b/target/linux/brcm47xx/config-3.10 deleted file mode 100644 index d159cd8..0000000 --- a/target/linux/brcm47xx/config-3.10 +++ /dev/null @@ -1,161 +0,0 @@ -CONFIG_ADM6996_PHY=y -CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y -CONFIG_ARCH_DISCARD_MEMBLOCK=y -CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y -CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y -CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y -CONFIG_B53=y -# CONFIG_B53_MMAP_DRIVER is not set -CONFIG_B53_PHY_DRIVER=y -CONFIG_B53_PHY_FIXUP=y -# CONFIG_B53_SRAB_DRIVER is not set -CONFIG_BCM47XX=y -CONFIG_BCM47XX_BCMA=y -CONFIG_BCM47XX_SSB=y -CONFIG_BCM47XX_WDT=y -CONFIG_BCMA=y -CONFIG_BCMA_BLOCKIO=y -CONFIG_BCMA_DEBUG=y -CONFIG_BCMA_DRIVER_GMAC_CMN=y -CONFIG_BCMA_DRIVER_GPIO=y -CONFIG_BCMA_DRIVER_MIPS=y -CONFIG_BCMA_DRIVER_PCI_HOSTMODE=y -CONFIG_BCMA_HOST_PCI=y -CONFIG_BCMA_HOST_PCI_POSSIBLE=y -CONFIG_BCMA_HOST_SOC=y -CONFIG_BCMA_NFLASH=y -CONFIG_BCMA_SFLASH=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_CEVT_R4K=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_CMDLINE="noinitrd console=ttyS0,115200" -CONFIG_CMDLINE_BOOL=y -# CONFIG_CMDLINE_OVERRIDE is not set -CONFIG_CPU_GENERIC_DUMP_TLB=y -CONFIG_CPU_HAS_PREFETCH=y -CONFIG_CPU_HAS_SYNC=y -CONFIG_CPU_LITTLE_ENDIAN=y -CONFIG_CPU_MIPS32=y -CONFIG_CPU_MIPS32_R1=y -# CONFIG_CPU_MIPS32_R2 is not set -CONFIG_CPU_MIPSR1=y -CONFIG_CPU_MIPSR2_IRQ_VI=y -CONFIG_CPU_R4K_CACHE_TLB=y -CONFIG_CPU_R4K_FPU=y -CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y -CONFIG_CPU_SUPPORTS_HIGHMEM=y -CONFIG_CSRC_R4K=y -CONFIG_DMA_NONCOHERENT=y -# CONFIG_EARLY_PRINTK is not set -CONFIG_FIXED_PHY=y -CONFIG_GENERIC_ATOMIC64=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_GENERIC_CMOS_UPDATE=y -CONFIG_GENERIC_IO=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVRES=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_WDT=y -CONFIG_HARDWARE_WATCHPOINTS=y -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_HAVE_DEBUG_KMEMLEAK=y -CONFIG_HAVE_DMA_API_DEBUG=y -CONFIG_HAVE_DMA_ATTRS=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_HAVE_GENERIC_HARDIRQS=y -CONFIG_HAVE_IDE=y -CONFIG_HAVE_MEMBLOCK=y -CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_HAVE_NET_DSA=y -CONFIG_HAVE_OPROFILE=y -CONFIG_HAVE_PERF_EVENTS=y -CONFIG_HW_HAS_PCI=y -CONFIG_HW_RANDOM=y -CONFIG_HZ_PERIODIC=y -CONFIG_IMAGE_CMDLINE_HACK=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_IRQ_CPU=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_IRQ_WORK=y -CONFIG_LEDS_GPIO_REGISTER=y -CONFIG_MDIO_BOARDINFO=y -CONFIG_MIPS=y -# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set -CONFIG_MIPS_L1_CACHE_SHIFT=5 -# CONFIG_MIPS_MACHINE is not set -CONFIG_MIPS_MT_DISABLED=y -CONFIG_MODULES_USE_ELF_REL=y -CONFIG_MTD_BCM47XXSFLASH=y -CONFIG_MTD_BCM47XX_PARTS=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_BCM47XXNFLASH=y -CONFIG_MTD_NAND_ECC=y -CONFIG_MTD_PHYSMAP=y -# CONFIG_MTD_SM_COMMON is not set -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_PER_CPU_KM=y -CONFIG_NO_EXCEPT_FILL=y -CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_PCI=y -CONFIG_PCI_DISABLE_COMMON_QUIRKS=y -CONFIG_PCI_DOMAINS=y -CONFIG_PERF_USE_VMALLOC=y -CONFIG_PHYLIB=y -# CONFIG_PREEMPT_RCU is not set -# CONFIG_RCU_STALL_COMMON is not set -# CONFIG_SCSI_DMA is not set -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SSB=y -CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_BLOCKIO=y -CONFIG_SSB_DEBUG=y -CONFIG_SSB_DRIVER_EXTIF=y -CONFIG_SSB_DRIVER_GIGE=y -CONFIG_SSB_DRIVER_GPIO=y -CONFIG_SSB_DRIVER_MIPS=y -CONFIG_SSB_DRIVER_PCICORE=y -CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y -CONFIG_SSB_EMBEDDED=y -CONFIG_SSB_PCICORE_HOSTMODE=y -CONFIG_SSB_PCIHOST=y -CONFIG_SSB_PCIHOST_POSSIBLE=y -CONFIG_SSB_SERIAL=y -CONFIG_SSB_SFLASH=y -CONFIG_SSB_SPROM=y -CONFIG_SWCONFIG=y -CONFIG_SYS_HAS_CPU_MIPS32_R1=y -CONFIG_SYS_HAS_CPU_MIPS32_R2=y -CONFIG_SYS_HAS_EARLY_PRINTK=y -CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y -CONFIG_SYS_SUPPORTS_ARBIT_HZ=y -CONFIG_SYS_SUPPORTS_HIGHMEM=y -CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y -CONFIG_TICK_CPU_ACCOUNTING=y -CONFIG_UIDGID_CONVERTED=y -CONFIG_USB_ARCH_HAS_XHCI=y -CONFIG_USB_SUPPORT=y -CONFIG_WATCHDOG_CORE=y -CONFIG_ZONE_DMA_FLAG=0 diff --git a/target/linux/brcm47xx/config-3.14 b/target/linux/brcm47xx/config-3.14 deleted file mode 100644 index 659187d..0000000 --- a/target/linux/brcm47xx/config-3.14 +++ /dev/null @@ -1,170 +0,0 @@ -CONFIG_ADM6996_PHY=y -CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y -CONFIG_ARCH_DISCARD_MEMBLOCK=y -CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y -CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y -CONFIG_ARCH_HIBERNATION_POSSIBLE=y -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y -CONFIG_ARCH_SUSPEND_POSSIBLE=y -CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y -CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y -CONFIG_B53=y -# CONFIG_B53_MMAP_DRIVER is not set -CONFIG_B53_PHY_DRIVER=y -CONFIG_B53_PHY_FIXUP=y -# CONFIG_B53_SRAB_DRIVER is not set -CONFIG_BCM47XX=y -CONFIG_BCM47XX_BCMA=y -CONFIG_BCM47XX_SSB=y -CONFIG_BCM47XX_WDT=y -CONFIG_BCMA=y -CONFIG_BCMA_BLOCKIO=y -CONFIG_BCMA_DEBUG=y -CONFIG_BCMA_DRIVER_GMAC_CMN=y -CONFIG_BCMA_DRIVER_GPIO=y -CONFIG_BCMA_DRIVER_MIPS=y -CONFIG_BCMA_DRIVER_PCI_HOSTMODE=y -CONFIG_BCMA_HOST_PCI=y -CONFIG_BCMA_HOST_PCI_POSSIBLE=y -CONFIG_BCMA_HOST_SOC=y -CONFIG_BCMA_NFLASH=y -CONFIG_BCMA_SFLASH=y -CONFIG_CC_OPTIMIZE_FOR_SIZE=y -CONFIG_CEVT_R4K=y -CONFIG_CLONE_BACKWARDS=y -CONFIG_CMDLINE="noinitrd console=ttyS0,115200" -CONFIG_CMDLINE_BOOL=y -# CONFIG_CMDLINE_OVERRIDE is not set -# CONFIG_CPU_BMIPS is not set -CONFIG_CPU_GENERIC_DUMP_TLB=y -CONFIG_CPU_HAS_PREFETCH=y -CONFIG_CPU_HAS_SYNC=y -CONFIG_CPU_LITTLE_ENDIAN=y -CONFIG_CPU_MIPS32=y -CONFIG_CPU_MIPS32_R1=y -# CONFIG_CPU_MIPS32_R2 is not set -CONFIG_CPU_MIPSR1=y -CONFIG_CPU_MIPSR2_IRQ_VI=y -CONFIG_CPU_R4K_CACHE_TLB=y -CONFIG_CPU_R4K_FPU=y -CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y -CONFIG_CPU_SUPPORTS_HIGHMEM=y -CONFIG_CSRC_R4K=y -CONFIG_DMA_NONCOHERENT=y -# CONFIG_EARLY_PRINTK is not set -CONFIG_FIXED_PHY=y -CONFIG_GENERIC_ATOMIC64=y -CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -CONFIG_GENERIC_CMOS_UPDATE=y -CONFIG_GENERIC_IO=y -CONFIG_GENERIC_IRQ_SHOW=y -CONFIG_GENERIC_NET_UTILS=y -CONFIG_GENERIC_PCI_IOMAP=y -CONFIG_GENERIC_SMP_IDLE_THREAD=y -CONFIG_GPIOLIB=y -CONFIG_GPIO_DEVRES=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_WDT=y -CONFIG_HARDWARE_WATCHPOINTS=y -CONFIG_HAS_DMA=y -CONFIG_HAS_IOMEM=y -CONFIG_HAS_IOPORT=y -# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set -CONFIG_HAVE_ARCH_JUMP_LABEL=y -CONFIG_HAVE_ARCH_KGDB=y -CONFIG_HAVE_ARCH_TRACEHOOK=y -# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set -CONFIG_HAVE_CC_STACKPROTECTOR=y -CONFIG_HAVE_CONTEXT_TRACKING=y -CONFIG_HAVE_C_RECORDMCOUNT=y -CONFIG_HAVE_DEBUG_KMEMLEAK=y -CONFIG_HAVE_DEBUG_STACKOVERFLOW=y -CONFIG_HAVE_DMA_API_DEBUG=y -CONFIG_HAVE_DMA_ATTRS=y -CONFIG_HAVE_DYNAMIC_FTRACE=y -CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y -CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y -CONFIG_HAVE_FUNCTION_TRACER=y -CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y -CONFIG_HAVE_GENERIC_DMA_COHERENT=y -CONFIG_HAVE_IDE=y -CONFIG_HAVE_MEMBLOCK=y -CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_HAVE_MOD_ARCH_SPECIFIC=y -CONFIG_HAVE_NET_DSA=y -CONFIG_HAVE_OPROFILE=y -CONFIG_HAVE_PERF_EVENTS=y -CONFIG_HAVE_SYSCALL_TRACEPOINTS=y -CONFIG_HW_HAS_PCI=y -CONFIG_HW_RANDOM=y -CONFIG_HZ_PERIODIC=y -CONFIG_IMAGE_CMDLINE_HACK=y -CONFIG_INITRAMFS_SOURCE="" -CONFIG_IRQ_CPU=y -CONFIG_IRQ_DOMAIN=y -CONFIG_IRQ_FORCED_THREADING=y -CONFIG_IRQ_WORK=y -CONFIG_LEDS_GPIO_REGISTER=y -CONFIG_MDIO_BOARDINFO=y -CONFIG_MIPS=y -# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set -CONFIG_MIPS_L1_CACHE_SHIFT=5 -# CONFIG_MIPS_MACHINE is not set -CONFIG_MIPS_MT_DISABLED=y -CONFIG_MIPS_O32_FP64_SUPPORT=y -CONFIG_MODULES_USE_ELF_REL=y -CONFIG_MTD_BCM47XXSFLASH=y -CONFIG_MTD_BCM47XX_PARTS=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_BCM47XXNFLASH=y -CONFIG_MTD_NAND_ECC=y -CONFIG_MTD_PHYSMAP=y -# CONFIG_MTD_SM_COMMON is not set -CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_PER_CPU_KM=y -CONFIG_NO_EXCEPT_FILL=y -CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y -CONFIG_PAGEFLAGS_EXTENDED=y -CONFIG_PCI=y -CONFIG_PCI_DISABLE_COMMON_QUIRKS=y -CONFIG_PCI_DOMAINS=y -CONFIG_PERF_USE_VMALLOC=y -CONFIG_PHYLIB=y -# CONFIG_PREEMPT_RCU is not set -# CONFIG_RCU_STALL_COMMON is not set -# CONFIG_SCSI_DMA is not set -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SSB=y -CONFIG_SSB_B43_PCI_BRIDGE=y -CONFIG_SSB_BLOCKIO=y -CONFIG_SSB_DEBUG=y -CONFIG_SSB_DRIVER_EXTIF=y -CONFIG_SSB_DRIVER_GIGE=y -CONFIG_SSB_DRIVER_GPIO=y -CONFIG_SSB_DRIVER_MIPS=y -CONFIG_SSB_DRIVER_PCICORE=y -CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y -CONFIG_SSB_EMBEDDED=y -CONFIG_SSB_PCICORE_HOSTMODE=y -CONFIG_SSB_PCIHOST=y -CONFIG_SSB_PCIHOST_POSSIBLE=y -CONFIG_SSB_SERIAL=y -CONFIG_SSB_SFLASH=y -CONFIG_SSB_SPROM=y -CONFIG_SWCONFIG=y -CONFIG_SYS_HAS_CPU_BMIPS=y -CONFIG_SYS_HAS_CPU_BMIPS32_3300=y -CONFIG_SYS_HAS_CPU_MIPS32_R1=y -CONFIG_SYS_HAS_CPU_MIPS32_R2=y -CONFIG_SYS_HAS_EARLY_PRINTK=y -CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y -CONFIG_SYS_SUPPORTS_ARBIT_HZ=y -CONFIG_SYS_SUPPORTS_HIGHMEM=y -CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y -CONFIG_TICK_CPU_ACCOUNTING=y -CONFIG_USB_SUPPORT=y -CONFIG_WATCHDOG_CORE=y -CONFIG_ZONE_DMA_FLAG=0 diff --git a/target/linux/brcm47xx/generic/profiles/100-Broadcom-b43.mk b/target/linux/brcm47xx/generic/profiles/100-Broadcom-b43.mk deleted file mode 100644 index 4c420fb..0000000 --- a/target/linux/brcm47xx/generic/profiles/100-Broadcom-b43.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b43 - NAME:=Broadcom SoC, all Ethernet, BCM43xx WiFi (b43, default) - PACKAGES:=kmod-b44 kmod-tg3 kmod-bgmac kmod-b43 kmod-b43legacy -endef - -define Profile/Broadcom-b43/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the mac80211, b43 and - b43legacy drivers and b44, tg3 or bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-b43)) - diff --git a/target/linux/brcm47xx/generic/profiles/101-Broadcom-wl.mk b/target/linux/brcm47xx/generic/profiles/101-Broadcom-wl.mk deleted file mode 100644 index 21265da..0000000 --- a/target/linux/brcm47xx/generic/profiles/101-Broadcom-wl.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2010-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-wl - NAME:=Broadcom SoC, all Ethernet, BCM43xx WiFi (wl, proprietary) - PACKAGES:=-wpad-mini kmod-b44 kmod-tg3 kmod-bgmac kmod-brcm-wl wlc nas -endef - -define Profile/Broadcom-wl/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the proprietary Broadcom - wireless "wl" driver and b44, tg3 or bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-wl)) - diff --git a/target/linux/brcm47xx/generic/profiles/104-Broadcom-ath5k.mk b/target/linux/brcm47xx/generic/profiles/104-Broadcom-ath5k.mk deleted file mode 100644 index ca5295f..0000000 --- a/target/linux/brcm47xx/generic/profiles/104-Broadcom-ath5k.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-ath5k - NAME:=Broadcom SoC, all Ethernet, Atheros WiFi (ath5k) - PACKAGES:=kmod-b44 kmod-tg3 kmod-bgmac kmod-ath5k -endef - -define Profile/Broadcom-ath5k/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC with Atheros Wifi cards using the mac80211 and ath5k drivers and - b44, tg3 or bgmac Ethernet driver. -endef -$(eval $(call Profile,Broadcom-ath5k)) - diff --git a/target/linux/brcm47xx/generic/profiles/105-Broadcom-none.mk b/target/linux/brcm47xx/generic/profiles/105-Broadcom-none.mk deleted file mode 100644 index 301d02a..0000000 --- a/target/linux/brcm47xx/generic/profiles/105-Broadcom-none.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-none - NAME:=Broadcom SoC, all Ethernet, No WiFi - PACKAGES:=-wpad-mini kmod-b44 kmod-tg3 kmod-bgmac -endef - -define Profile/Broadcom-none/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC without any Wifi cards and b44, tg3 or bgmac Ethernet driver. -endef -$(eval $(call Profile,Broadcom-none)) - diff --git a/target/linux/brcm47xx/generic/profiles/200-Broadcom-b44-b43.mk b/target/linux/brcm47xx/generic/profiles/200-Broadcom-b44-b43.mk deleted file mode 100644 index 662a7c8..0000000 --- a/target/linux/brcm47xx/generic/profiles/200-Broadcom-b44-b43.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b44-b43 - NAME:=Broadcom SoC, b44 Ethernet, BCM43xx WiFi (b43, default) - PACKAGES:=kmod-b44 kmod-b43 kmod-b43legacy -endef - -define Profile/Broadcom-b44-b43/Description - Package set compatible with hardware older Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the mac80211, b43 and - b43legacy drivers and b44 Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-b44-b43)) - diff --git a/target/linux/brcm47xx/generic/profiles/201-Broadcom-b44-wl.mk b/target/linux/brcm47xx/generic/profiles/201-Broadcom-b44-wl.mk deleted file mode 100644 index f974c00..0000000 --- a/target/linux/brcm47xx/generic/profiles/201-Broadcom-b44-wl.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2010-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b44-wl - NAME:=Broadcom SoC, b44 Ethernet, BCM43xx WiFi (wl, proprietary) - PACKAGES:=-wpad-mini kmod-b44 kmod-brcm-wl wlc nas -endef - -define Profile/Broadcom-b44-wl/Description - Package set compatible with hardware older Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the proprietary Broadcom - wireless "wl" driver and b44 Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-b44-wl)) - diff --git a/target/linux/brcm47xx/generic/profiles/204-Broadcom-b44-ath5k.mk b/target/linux/brcm47xx/generic/profiles/204-Broadcom-b44-ath5k.mk deleted file mode 100644 index e9dda49..0000000 --- a/target/linux/brcm47xx/generic/profiles/204-Broadcom-b44-ath5k.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b44-ath5k - NAME:=Broadcom SoC, b44 Ethernet, Atheros WiFi (ath5k) - PACKAGES:=kmod-b44 kmod-ath5k -endef - -define Profile/Broadcom-b44-ath5k/Description - Package set compatible with hardware older Broadcom BCM47xx or BCM535x - SoC with Atheros Wifi cards using the mac80211 and ath5k drivers and - b44 Ethernet driver. -endef -$(eval $(call Profile,Broadcom-b44-ath5k)) - diff --git a/target/linux/brcm47xx/generic/profiles/205-Broadcom-b44-none.mk b/target/linux/brcm47xx/generic/profiles/205-Broadcom-b44-none.mk deleted file mode 100644 index a936bba..0000000 --- a/target/linux/brcm47xx/generic/profiles/205-Broadcom-b44-none.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b44-none - NAME:=Broadcom SoC, b44 Ethernet, No WiFi - PACKAGES:=-wpad-mini kmod-b44 -endef - -define Profile/Broadcom-b44-none/Description - Package set compatible with hardware older Broadcom BCM47xx or BCM535x - SoC without any Wifi cards and b44 Ethernet driver. -endef -$(eval $(call Profile,Broadcom-b44-none)) - diff --git a/target/linux/brcm47xx/generic/profiles/210-Broadcom-tg3-b43.mk b/target/linux/brcm47xx/generic/profiles/210-Broadcom-tg3-b43.mk deleted file mode 100644 index a0bece9..0000000 --- a/target/linux/brcm47xx/generic/profiles/210-Broadcom-tg3-b43.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-tg3-b43 - NAME:=Broadcom SoC, tg3 Ethernet, BCM43xx WiFi (b43) - PACKAGES:=kmod-b43 kmod-tg3 -endef - -define Profile/Broadcom-tg3-b43/Description - Package set compatible with hardware Broadcom BCM4705/BCM4785 - SoCs with Broadcom BCM43xx Wifi cards using the mac80211 and b43 - driver and tg3 Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-tg3-b43)) - diff --git a/target/linux/brcm47xx/generic/profiles/211-Broadcom-tg3-wl.mk b/target/linux/brcm47xx/generic/profiles/211-Broadcom-tg3-wl.mk deleted file mode 100644 index 24ac234..0000000 --- a/target/linux/brcm47xx/generic/profiles/211-Broadcom-tg3-wl.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2010-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-tg3-wl - NAME:=Broadcom SoC, tg3 Ethernet, BCM43xx WiFi (wl, proprietary) - PACKAGES:=-wpad-mini kmod-brcm-wl wlc nas kmod-tg3 -endef - -define Profile/Broadcom-tg3-wl/Description - Package set compatible with hardware Broadcom BCM4705/BCM4785 - SoC with Broadcom BCM43xx Wifi cards using the proprietary Broadcom - wireless "wl" driver and tg3 Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-tg3-wl)) - diff --git a/target/linux/brcm47xx/generic/profiles/215-Broadcom-tg3-none.mk b/target/linux/brcm47xx/generic/profiles/215-Broadcom-tg3-none.mk deleted file mode 100644 index 2d13ca8..0000000 --- a/target/linux/brcm47xx/generic/profiles/215-Broadcom-tg3-none.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-tg3-none - NAME:=Broadcom SoC, tg3 Ethernet, no WiFi - PACKAGES:=-wpad-mini kmod-tg3 -endef - -define Profile/Broadcom-tg3-none/Description - Package set compatible with hardware Broadcom BCM4705/BCM4785 - SoC without any Wifi cards and tg3 Ethernet driver. -endef -$(eval $(call Profile,Broadcom-tg3-none)) - diff --git a/target/linux/brcm47xx/generic/profiles/220-Broadcom-bgmac-b43.mk b/target/linux/brcm47xx/generic/profiles/220-Broadcom-bgmac-b43.mk deleted file mode 100644 index 6ef0691..0000000 --- a/target/linux/brcm47xx/generic/profiles/220-Broadcom-bgmac-b43.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-bgmac-b43 - NAME:=Broadcom SoC, bgmac Ethernet, BCM43xx WiFi (b43) - PACKAGES:=kmod-bgmac kmod-b43 -endef - -define Profile/Broadcom-bgmac-b43/Description - Package set compatible with hardware newer Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the mac80211 and b43 - drivers and bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-bgmac-b43)) - diff --git a/target/linux/brcm47xx/generic/profiles/221-Broadcom-bgmac-wl.mk b/target/linux/brcm47xx/generic/profiles/221-Broadcom-bgmac-wl.mk deleted file mode 100644 index f671cd9..0000000 --- a/target/linux/brcm47xx/generic/profiles/221-Broadcom-bgmac-wl.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2010-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-bgmac-wl - NAME:=Broadcom SoC, bgmac Ethernet, BCM43xx WiFi (wl, proprietary) - PACKAGES:=-wpad-mini kmod-bgmac kmod-brcm-wl wlc nas -endef - -define Profile/Broadcom-bgmac-wl/Description - Package set compatible with hardware newer Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the proprietary Broadcom - wireless "wl" driver and bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-bgmac-wl)) - diff --git a/target/linux/brcm47xx/generic/profiles/225-Broadcom-bgmac-none.mk b/target/linux/brcm47xx/generic/profiles/225-Broadcom-bgmac-none.mk deleted file mode 100644 index 0512119..0000000 --- a/target/linux/brcm47xx/generic/profiles/225-Broadcom-bgmac-none.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2006-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-bgmac-none - NAME:=Broadcom SoC, bgmac Ethernet, No WiFi - PACKAGES:=-wpad-mini kmod-bgmac -endef - -define Profile/Broadcom-bgmac-none/Description - Package set compatible with hardware newer Broadcom BCM47xx or BCM535x - SoC without any Wifi cards and bgmac Ethernet driver. -endef -$(eval $(call Profile,Broadcom-bgmac-none)) - diff --git a/target/linux/brcm47xx/generic/profiles/226-Broadcom-bgmac-brcsmac.mk b/target/linux/brcm47xx/generic/profiles/226-Broadcom-bgmac-brcsmac.mk deleted file mode 100644 index d9dc9e7..0000000 --- a/target/linux/brcm47xx/generic/profiles/226-Broadcom-bgmac-brcsmac.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-bgmac-brcmsmac - NAME:=Broadcom SoC, bgmac Ethernet, BCM43xx WiFi (brcmsmac) - PACKAGES:=kmod-bgmac kmod-brcmsmac -endef - -define Profile/Broadcom-bgmac-brcmsmac/Description - Package set compatable with newer gigabit + N based bcm47xx SoCs with - Broadcom BCM43xx Wifi cards using the mac80211 brcmsmac driver and - bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-bgmac-brcmsmac)) - diff --git a/target/linux/brcm47xx/generic/profiles/PS-1208MFG.mk b/target/linux/brcm47xx/generic/profiles/PS-1208MFG.mk deleted file mode 100644 index e68c9a2..0000000 --- a/target/linux/brcm47xx/generic/profiles/PS-1208MFG.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2007-2010 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Ps1208mfg - NAME:=Edimax PS-1208MFG - PACKAGES:=-firewall -dropbear -dnsmasq -mtd -ppp -wpad-mini kmod-b44 block-mount kmod-usb-storage kmod-usb2 kmod-usb-ohci -iptables -swconfig kmod-fs-ext4 -endef - -define Profile/Ps1208mfg/Description - Package set optimize for edimax PS-1208MFG printserver -endef - -$(eval $(call Profile,Ps1208mfg)) - diff --git a/target/linux/brcm47xx/generic/profiles/WGT634U.mk b/target/linux/brcm47xx/generic/profiles/WGT634U.mk deleted file mode 100644 index 16c8d9d..0000000 --- a/target/linux/brcm47xx/generic/profiles/WGT634U.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WGT634U - NAME:=Netgear WGT634U - PACKAGES:=kmod-b44 kmod-ath5k kmod-usb-core kmod-usb2 kmod-ocf-ubsec-ssb -endef - -define Profile/WGT634U/Description - Package set compatible with the Netgear WGT634U. Contains USB support -endef -$(eval $(call Profile,WGT634U)) - diff --git a/target/linux/brcm47xx/generic/profiles/WL500GPv1-ATH.mk b/target/linux/brcm47xx/generic/profiles/WL500GPv1-ATH.mk deleted file mode 100644 index 3cdd8a0..0000000 --- a/target/linux/brcm47xx/generic/profiles/WL500GPv1-ATH.mk +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2008 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WL500GPv1 - NAME:=ASUS WL-500g Premium v1 (Atheros WiFi using ath5k) - PACKAGES:=kmod-b44 kmod-ath5k kmod-usb-core kmod-usb-uhci kmod-usb2 -endef - -define Profile/WL500GPv1/Description - Package set optimized for the WL-500g Premium v1 with USB and Atheros WiFi card support -endef -$(eval $(call Profile,WL500GPv1)) diff --git a/target/linux/brcm47xx/generic/profiles/WRT350Nv1.mk b/target/linux/brcm47xx/generic/profiles/WRT350Nv1.mk deleted file mode 100644 index c861615..0000000 --- a/target/linux/brcm47xx/generic/profiles/WRT350Nv1.mk +++ /dev/null @@ -1,16 +0,0 @@ -# -# Copyright (C) 2009 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WRT350Nv1 - NAME:=Linksys WRT350Nv1 - PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-tg3 kmod-ocf-ubsec-ssb -endef - -define Profile/WRT350Nv1/Description - Package set compatible with the Linksys WRT350Nv1. Contains USB support -endef -$(eval $(call Profile,WRT350Nv1)) diff --git a/target/linux/brcm47xx/generic/profiles/WRTSL54GS.mk b/target/linux/brcm47xx/generic/profiles/WRTSL54GS.mk deleted file mode 100644 index e5bb908..0000000 --- a/target/linux/brcm47xx/generic/profiles/WRTSL54GS.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WRTSL54GS - NAME:=Linksys WRTSL54GS - PACKAGES:=kmod-b44 kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-storage kmod-scsi-core kmod-fs-ext4 e2fsprogs kmod-b43 -endef - -define Profile/WRTSL54GS/Description - Package set compatible with the Linksys WRTSL54GS. Contains USB support -endef -$(eval $(call Profile,WRTSL54GS)) - diff --git a/target/linux/brcm47xx/generic/target.mk b/target/linux/brcm47xx/generic/target.mk deleted file mode 100644 index 71fde52..0000000 --- a/target/linux/brcm47xx/generic/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -BOARDNAME:=Generic -FEATURES+=pcmcia - -define Target/Description - Build generic firmware for all Broadcom BCM47xx and BCM53xx MIPS - devices. It runs on both architectures BMIPS3300 and MIPS 74K. -endef diff --git a/target/linux/brcm47xx/image/Makefile b/target/linux/brcm47xx/image/Makefile deleted file mode 100644 index d19a13e..0000000 --- a/target/linux/brcm47xx/image/Makefile +++ /dev/null @@ -1,254 +0,0 @@ -# -# Copyright (C) 2006-2012 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/image.mk - -define Build/Clean - $(MAKE) -C lzma-loader clean -endef - -define Image/Prepare - # Optimized LZMA compression (with dictionary), handled by lzma-loader. - cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma - - # Less optimal LZMA compression (no dictionary), handled by CFE. - $(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux > $(KDIR)/vmlinux-nodictionary.lzma - - gzip -nc9 $(KDIR)/vmlinux > $(KDIR)/vmlinux.gz -ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) - cat $(KDIR)/vmlinux-initramfs | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux-initramfs.lzma -endif - rm -f $(KDIR)/loader.gz - $(MAKE) -C lzma-loader \ - BUILD_DIR="$(KDIR)" \ - TARGET="$(KDIR)" \ - clean install - echo -ne "\\x00" >> $(KDIR)/loader.gz - rm -f $(KDIR)/fs_mark - echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark - $(call prepare_generic_squashfs,$(KDIR)/fs_mark) -endef - -define Image/Build/wgt634u - dd if=$(KDIR)/loader.elf of=$(BIN_DIR)/openwrt-wgt634u-$(2).bin bs=131072 conv=sync - cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx >> $(BIN_DIR)/openwrt-wgt634u-$(2).bin -endef - -define Image/Build/dwl3150 - cp $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/openwrt-dwl3150-$(2).bin - echo "BCM-5352-2050-0000000-01" >> $(BIN_DIR)/openwrt-dwl3150-$(2).bin -endef - -# $(1): filesystem type. -# $(2): device model (used for output file). -# $(3): pattern (device specific magic). -# $(4): version. -# $(5): simplified filesystem type (without block size). -define Image/Build/CyberTAN - $(STAGING_DIR_HOST)/bin/addpattern -4 -p $(3) -v v$(4) -i $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -o $(BIN_DIR)/openwrt-$(2)-$(5).bin $(if $(6),-s $(6)) -endef -define Image/Build/CyberTAN2 - $(STAGING_DIR_HOST)/bin/addpattern -4 -p $(3) -v v$(4) -i $(BIN_DIR)/openwrt-$(2)-$(5).noheader.bin -o $(BIN_DIR)/openwrt-$(2)-$(5).bin $(if $(6),-s $(6)) -endef -define Image/Build/CyberTANHead - $(STAGING_DIR_HOST)/bin/addpattern -5 -p $(3) -v v$(4) -i /dev/null -o $(KDIR)/openwrt-$(2)-header.bin $(if $(6),-s $(6)) -endef - -define Image/Build/Motorola - $(STAGING_DIR_HOST)/bin/motorola-bin -$(3) $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/openwrt-$(2)-$(4).bin -endef - -define Image/Build/USR - $(STAGING_DIR_HOST)/bin/trx2usr $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/openwrt-$(2)-$(3).bin -endef - -define Image/Build/Edi - $(STAGING_DIR_HOST)/bin/trx2edips $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/openwrt-$(2)-$(3).bin -endef - -define Image/Build/Huawei - dd if=/dev/zero of=$(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin bs=92 count=1 - echo -ne 'HDR0\x08\x00\x00\x00' >> $(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin - cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx >> $(BIN_DIR)/openwrt-$(2)-$(3)-gz.bin -endef - -# $(1): filesystem type. -# $(2): device model (used for output file). -# $(3): board_id (device specific magic). -# $(4): region. -# $(5): simplified filesystem type (without block size). -define Image/Build/Chk - $(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/openwrt-$(2)-$(5).chk -k $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -b $(3) -r $(4) -endef - -define trxalign/jffs2-128k --a 0x20000 -f $(KDIR)/root.$(1) -endef -define trxalign/jffs2-64k --a 0x10000 -f $(KDIR)/root.$(1) -endef -define trxalign/squashfs --a 1024 -f $(KDIR)/root.$(1) $(if $(2),-f $(2)) -a 0x10000 -A $(KDIR)/fs_mark -endef - -define Image/Build/trxV2 - $(call Image/Build/CyberTANHead,$(1),$(2),$(3),$(4),$(5),$(if $(6),$(6))) - $(STAGING_DIR_HOST)/bin/trx -2 -o $(BIN_DIR)/openwrt-$(2)-$(5).noheader.bin \ - -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \ - $(call trxalign/$(1),$(1),$(KDIR)/openwrt-$(2)-header.bin) - $(call Image/Build/CyberTAN2,$(1),$(2),$(3),$(4),$(5),$(if $(6),$(6))) -endef - -################################################# -# Subtarget generic -################################################# - -# $(1): filesystem type. -define Image/Build/generic/jffs2-64k - # BCM4705 with tg3 - $(call Image/Build/CyberTAN,$(1),wrt300n_v11,EWC2,1.51.2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt310n_v1,310N,1.0.10,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt350n_v1,EWCG,1.04.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt610n_v1,610N,1.0.1,$(patsubst jffs2-%,jffs2,$(1))) - - # BCMA SoC with SSB WiFi - $(call Image/Build/CyberTAN,$(1),wrt610n_v2,610N,2.0.0,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e3000_v1,61XN,1.0.3,$(patsubst jffs2-%,jffs2,$(1))) -endef - -# $(1): filesystem type. -define Image/Build/generic/squashfs - $(call Image/Build/generic/jffs2-64k,$(1)) - $(call Image/Build/generic/jffs2-128k,$(1)) -endef - -################################################# -# Subtarget legacy -################################################# - -# $(1): filesystem type. -define Image/Build/legacy/devices-with-128k-blocks - $(call Image/Build/CyberTAN,$(1),wrt54gs,W54S,4.80.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrtsl54gs,W54U,2.08.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/trxV2,$(1),wrt54g3gv2-vf,3G2V,3.00.24,$(patsubst jffs2-%,jffs2,$(1)),6) - $(call Image/Build/wgt634u,$(1),$(patsubst jffs2-%,jffs2,$(1))) -endef - -# $(1): filesystem type. -define Image/Build/legacy/devices-with-64k-blocks - $(call Image/Build/Chk,$(1),wgr614_v8,U12H072T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wndr3300_v1,U12H093T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr834b_v2,U12H081T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54g3g,W54F,2.20.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54g3g-em,W3GN,2.20.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54g,W54G,4.71.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt54gs_v4,W54s,1.09.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt150n,N150,1.51.3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt160n_v1,N150,1.50.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt300n_v1,EWCB,1.03.6,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/dwl3150,$(1),$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Edi,$(1),ps1208mfg,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Huawei,$(1),e970,$(1)) - $(call Image/Build/Motorola,$(1),wa840g,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Motorola,$(1),we800g,3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Motorola,$(1),wr850g,1,$(1)) - $(call Image/Build/USR,$(1),usr5461,$(1)) -endef - -# $(1): filesystem type. -define Image/Build/legacy/jffs2-64k - $(call Image/Build/legacy/devices-with-64k-blocks,$(1)) -endef - -# $(1): filesystem type. -define Image/Build/legacy/jffs2-128k - $(call Image/Build/legacy/devices-with-128k-blocks,$(1)) -endef - -# $(1): filesystem type. -define Image/Build/legacy/squashfs - $(call Image/Build/legacy/devices-with-64k-blocks,$(1)) - $(call Image/Build/legacy/devices-with-128k-blocks,$(1)) -endef - -################################################# -# Subtarget mips74k -################################################# - -define Image/Build/mips74k/devices-with-64k-blocks - $(call Image/Build/Chk,$(1),wndr3400_v1,U12H155T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wndr3400_v2,U12H187T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wndr3700_v3,U12H194T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wndr4000,U12H181T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr1000_v3,U12H139T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr2000v2,U12H114T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr3000rp,U12H163T01_NETGEAR,1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr3500l_v1_north_america,U12H136T99_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr3500l_v1_other_regions,U12H136T99_NETGEAR,1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr3500l_v2,U12H172T00_NETGEAR,1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/Chk,$(1),wnr3500_v2,U12H127T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt160n_v3,N150,3.0.3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt310n_v2,310N,2.0.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),wrt320n_v1,320N,1.0.5,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e900_v1,E900,1.0.4,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e1000_v1_v2,E100,1.1.2,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e1200_v1,E120,1.0.3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e1200_v2,E122,1.0.4,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e1500_v1,E150,1.0.5,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e1550_v1,1550,1.0.3,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e2000_v1,32XN,1.0.4,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e2500_v1_v2,E25X,1.0.7,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e3200_v1,3200,1.0.1,$(patsubst jffs2-%,jffs2,$(1))) - $(call Image/Build/CyberTAN,$(1),e4200_v1,4200,1.0.5,$(patsubst jffs2-%,jffs2,$(1))) -endef - -# $(1): filesystem type. -define Image/Build/mips74k/jffs2-64k - $(call Image/Build/mips74k/devices-with-64k-blocks,$(1)) -endef - -# $(1): filesystem type. -define Image/Build/mips74k/jffs2-128k - $(call Image/Build/mips74k/devices-with-128k-blocks,$(1)) -endef - -# $(1): filesystem type. -define Image/Build/mips74k/squashfs - $(call Image/Build/mips74k/devices-with-64k-blocks,$(1)) - $(call Image/Build/mips74k/devices-with-128k-blocks,$(1)) -endef - -################################################# -# Shared BuildImage defines -################################################# - -define Image/Build/Initramfs - $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-initramfs.trx -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux-initramfs.lzma -endef - -# $(1): filesystem type. -define Image/Build - $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx \ - -f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \ - $(call trxalign/$(1),$(1)) - $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-noloader-nodictionary.trx \ - -f $(KDIR)/vmlinux-nodictionary.lzma \ - $(call trxalign/$(1),$(1)) - $(STAGING_DIR_HOST)/bin/trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx \ - -f $(KDIR)/vmlinux.gz \ - $(call trxalign/$(1),$(1)) - $(call Image/Build/$(SUBTARGET)/$(1),$(1)) -# $(call Image/Build/Chk,$(1),wgr614_v9,U12H094T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wndr3400_vcna,U12H155T01_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wnr3500U,U12H136T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -# $(call Image/Build/Chk,$(1),wnr3500v2_VC,U12H127T70_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1))) -ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),) - $(call Image/Build/Initramfs) -endif -endef - -$(eval $(call BuildImage)) diff --git a/target/linux/brcm47xx/image/lzma-loader/Makefile b/target/linux/brcm47xx/image/lzma-loader/Makefile deleted file mode 100644 index 5dd6f50..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME := lzma-loader -PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) - -$(PKG_BUILD_DIR)/.prepared: - mkdir $(PKG_BUILD_DIR) - $(CP) ./src/* $(PKG_BUILD_DIR)/ - touch $@ - -$(PKG_BUILD_DIR)/loader.gz: $(PKG_BUILD_DIR)/.prepared - $(MAKE) -C $(PKG_BUILD_DIR) CC="$(TARGET_CC)" \ - LD="$(TARGET_CROSS)ld" CROSS_COMPILE="$(TARGET_CROSS)" - -download: -prepare: $(PKG_BUILD_DIR)/.prepared -compile: $(PKG_BUILD_DIR)/loader.gz -install: - -ifneq ($(TARGET),) -install: compile - $(CP) $(PKG_BUILD_DIR)/loader.gz $(PKG_BUILD_DIR)/loader.elf $(TARGET)/ -endif - -clean: - rm -rf $(PKG_BUILD_DIR) diff --git a/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.c b/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.c deleted file mode 100644 index 951700b..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.c +++ /dev/null @@ -1,663 +0,0 @@ -/* - LzmaDecode.c - LZMA Decoder - - LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25) - http://www.7-zip.org/ - - LZMA SDK is licensed under two licenses: - 1) GNU Lesser General Public License (GNU LGPL) - 2) Common Public License (CPL) - It means that you can select one of these two licenses and - follow rules of that license. - - SPECIAL EXCEPTION: - Igor Pavlov, as the author of this code, expressly permits you to - statically or dynamically link your code (or bind by name) to the - interfaces of this file without subjecting your linked code to the - terms of the CPL or GNU LGPL. Any modifications or additions - to this file, however, are subject to the LGPL or CPL terms. -*/ - -#include "LzmaDecode.h" - -#ifndef Byte -#define Byte unsigned char -#endif - -#define kNumTopBits 24 -#define kTopValue ((UInt32)1 << kNumTopBits) - -#define kNumBitModelTotalBits 11 -#define kBitModelTotal (1 << kNumBitModelTotalBits) -#define kNumMoveBits 5 - -typedef struct _CRangeDecoder -{ - Byte *Buffer; - Byte *BufferLim; - UInt32 Range; - UInt32 Code; - #ifdef _LZMA_IN_CB - ILzmaInCallback *InCallback; - int Result; - #endif - int ExtraBytes; -} CRangeDecoder; - -Byte RangeDecoderReadByte(CRangeDecoder *rd) -{ - if (rd->Buffer == rd->BufferLim) - { - #ifdef _LZMA_IN_CB - UInt32 size; - rd->Result = rd->InCallback->Read(rd->InCallback, &rd->Buffer, &size); - rd->BufferLim = rd->Buffer + size; - if (size == 0) - #endif - { - rd->ExtraBytes = 1; - return 0xFF; - } - } - return (*rd->Buffer++); -} - -/* #define ReadByte (*rd->Buffer++) */ -#define ReadByte (RangeDecoderReadByte(rd)) - -void RangeDecoderInit(CRangeDecoder *rd, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback - #else - Byte *stream, UInt32 bufferSize - #endif - ) -{ - int i; - #ifdef _LZMA_IN_CB - rd->InCallback = inCallback; - rd->Buffer = rd->BufferLim = 0; - #else - rd->Buffer = stream; - rd->BufferLim = stream + bufferSize; - #endif - rd->ExtraBytes = 0; - rd->Code = 0; - rd->Range = (0xFFFFFFFF); - for(i = 0; i < 5; i++) - rd->Code = (rd->Code << 8) | ReadByte; -} - -#define RC_INIT_VAR UInt32 range = rd->Range; UInt32 code = rd->Code; -#define RC_FLUSH_VAR rd->Range = range; rd->Code = code; -#define RC_NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | ReadByte; } - -UInt32 RangeDecoderDecodeDirectBits(CRangeDecoder *rd, int numTotalBits) -{ - RC_INIT_VAR - UInt32 result = 0; - int i; - for (i = numTotalBits; i > 0; i--) - { - /* UInt32 t; */ - range >>= 1; - - result <<= 1; - if (code >= range) - { - code -= range; - result |= 1; - } - /* - t = (code - range) >> 31; - t &= 1; - code -= range & (t - 1); - result = (result + result) | (1 - t); - */ - RC_NORMALIZE - } - RC_FLUSH_VAR - return result; -} - -int RangeDecoderBitDecode(CProb *prob, CRangeDecoder *rd) -{ - UInt32 bound = (rd->Range >> kNumBitModelTotalBits) * *prob; - if (rd->Code < bound) - { - rd->Range = bound; - *prob += (kBitModelTotal - *prob) >> kNumMoveBits; - if (rd->Range < kTopValue) - { - rd->Code = (rd->Code << 8) | ReadByte; - rd->Range <<= 8; - } - return 0; - } - else - { - rd->Range -= bound; - rd->Code -= bound; - *prob -= (*prob) >> kNumMoveBits; - if (rd->Range < kTopValue) - { - rd->Code = (rd->Code << 8) | ReadByte; - rd->Range <<= 8; - } - return 1; - } -} - -#define RC_GET_BIT2(prob, mi, A0, A1) \ - UInt32 bound = (range >> kNumBitModelTotalBits) * *prob; \ - if (code < bound) \ - { A0; range = bound; *prob += (kBitModelTotal - *prob) >> kNumMoveBits; mi <<= 1; } \ - else \ - { A1; range -= bound; code -= bound; *prob -= (*prob) >> kNumMoveBits; mi = (mi + mi) + 1; } \ - RC_NORMALIZE - -#define RC_GET_BIT(prob, mi) RC_GET_BIT2(prob, mi, ; , ;) - -int RangeDecoderBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd) -{ - int mi = 1; - int i; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - for(i = numLevels; i > 0; i--) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + mi; - RC_GET_BIT(prob, mi) - #else - mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd); - #endif - } - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return mi - (1 << numLevels); -} - -int RangeDecoderReverseBitTreeDecode(CProb *probs, int numLevels, CRangeDecoder *rd) -{ - int mi = 1; - int i; - int symbol = 0; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - for(i = 0; i < numLevels; i++) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + mi; - RC_GET_BIT2(prob, mi, ; , symbol |= (1 << i)) - #else - int bit = RangeDecoderBitDecode(probs + mi, rd); - mi = mi + mi + bit; - symbol |= (bit << i); - #endif - } - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -Byte LzmaLiteralDecode(CProb *probs, CRangeDecoder *rd) -{ - int symbol = 1; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - do - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + symbol; - RC_GET_BIT(prob, symbol) - #else - symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd); - #endif - } - while (symbol < 0x100); - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -Byte LzmaLiteralDecodeMatch(CProb *probs, CRangeDecoder *rd, Byte matchByte) -{ - int symbol = 1; - #ifdef _LZMA_LOC_OPT - RC_INIT_VAR - #endif - do - { - int bit; - int matchBit = (matchByte >> 7) & 1; - matchByte <<= 1; - #ifdef _LZMA_LOC_OPT - { - CProb *prob = probs + ((1 + matchBit) << 8) + symbol; - RC_GET_BIT2(prob, symbol, bit = 0, bit = 1) - } - #else - bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd); - symbol = (symbol << 1) | bit; - #endif - if (matchBit != bit) - { - while (symbol < 0x100) - { - #ifdef _LZMA_LOC_OPT - CProb *prob = probs + symbol; - RC_GET_BIT(prob, symbol) - #else - symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd); - #endif - } - break; - } - } - while (symbol < 0x100); - #ifdef _LZMA_LOC_OPT - RC_FLUSH_VAR - #endif - return symbol; -} - -#define kNumPosBitsMax 4 -#define kNumPosStatesMax (1 << kNumPosBitsMax) - -#define kLenNumLowBits 3 -#define kLenNumLowSymbols (1 << kLenNumLowBits) -#define kLenNumMidBits 3 -#define kLenNumMidSymbols (1 << kLenNumMidBits) -#define kLenNumHighBits 8 -#define kLenNumHighSymbols (1 << kLenNumHighBits) - -#define LenChoice 0 -#define LenChoice2 (LenChoice + 1) -#define LenLow (LenChoice2 + 1) -#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) -#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) -#define kNumLenProbs (LenHigh + kLenNumHighSymbols) - -int LzmaLenDecode(CProb *p, CRangeDecoder *rd, int posState) -{ - if(RangeDecoderBitDecode(p + LenChoice, rd) == 0) - return RangeDecoderBitTreeDecode(p + LenLow + - (posState << kLenNumLowBits), kLenNumLowBits, rd); - if(RangeDecoderBitDecode(p + LenChoice2, rd) == 0) - return kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid + - (posState << kLenNumMidBits), kLenNumMidBits, rd); - return kLenNumLowSymbols + kLenNumMidSymbols + - RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd); -} - -#define kNumStates 12 - -#define kStartPosModelIndex 4 -#define kEndPosModelIndex 14 -#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) - -#define kNumPosSlotBits 6 -#define kNumLenToPosStates 4 - -#define kNumAlignBits 4 -#define kAlignTableSize (1 << kNumAlignBits) - -#define kMatchMinLen 2 - -#define IsMatch 0 -#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) -#define IsRepG0 (IsRep + kNumStates) -#define IsRepG1 (IsRepG0 + kNumStates) -#define IsRepG2 (IsRepG1 + kNumStates) -#define IsRep0Long (IsRepG2 + kNumStates) -#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) -#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) -#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) -#define LenCoder (Align + kAlignTableSize) -#define RepLenCoder (LenCoder + kNumLenProbs) -#define Literal (RepLenCoder + kNumLenProbs) - -#if Literal != LZMA_BASE_SIZE -StopCompilingDueBUG -#endif - -#ifdef _LZMA_OUT_READ - -typedef struct _LzmaVarState -{ - CRangeDecoder RangeDecoder; - Byte *Dictionary; - UInt32 DictionarySize; - UInt32 DictionaryPos; - UInt32 GlobalPos; - UInt32 Reps[4]; - int lc; - int lp; - int pb; - int State; - int PreviousIsMatch; - int RemainLen; -} LzmaVarState; - -int LzmaDecoderInit( - unsigned char *buffer, UInt32 bufferSize, - int lc, int lp, int pb, - unsigned char *dictionary, UInt32 dictionarySize, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback - #else - unsigned char *inStream, UInt32 inSize - #endif - ) -{ - LzmaVarState *vs = (LzmaVarState *)buffer; - CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); - UInt32 i; - if (bufferSize < numProbs * sizeof(CProb) + sizeof(LzmaVarState)) - return LZMA_RESULT_NOT_ENOUGH_MEM; - vs->Dictionary = dictionary; - vs->DictionarySize = dictionarySize; - vs->DictionaryPos = 0; - vs->GlobalPos = 0; - vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1; - vs->lc = lc; - vs->lp = lp; - vs->pb = pb; - vs->State = 0; - vs->PreviousIsMatch = 0; - vs->RemainLen = 0; - dictionary[dictionarySize - 1] = 0; - for (i = 0; i < numProbs; i++) - p[i] = kBitModelTotal >> 1; - RangeDecoderInit(&vs->RangeDecoder, - #ifdef _LZMA_IN_CB - inCallback - #else - inStream, inSize - #endif - ); - return LZMA_RESULT_OK; -} - -int LzmaDecode(unsigned char *buffer, - unsigned char *outStream, UInt32 outSize, - UInt32 *outSizeProcessed) -{ - LzmaVarState *vs = (LzmaVarState *)buffer; - CProb *p = (CProb *)(buffer + sizeof(LzmaVarState)); - CRangeDecoder rd = vs->RangeDecoder; - int state = vs->State; - int previousIsMatch = vs->PreviousIsMatch; - Byte previousByte; - UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3]; - UInt32 nowPos = 0; - UInt32 posStateMask = (1 << (vs->pb)) - 1; - UInt32 literalPosMask = (1 << (vs->lp)) - 1; - int lc = vs->lc; - int len = vs->RemainLen; - UInt32 globalPos = vs->GlobalPos; - - Byte *dictionary = vs->Dictionary; - UInt32 dictionarySize = vs->DictionarySize; - UInt32 dictionaryPos = vs->DictionaryPos; - - if (len == -1) - { - *outSizeProcessed = 0; - return LZMA_RESULT_OK; - } - - while(len > 0 && nowPos < outSize) - { - UInt32 pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos]; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - len--; - } - if (dictionaryPos == 0) - previousByte = dictionary[dictionarySize - 1]; - else - previousByte = dictionary[dictionaryPos - 1]; -#else - -int LzmaDecode( - Byte *buffer, UInt32 bufferSize, - int lc, int lp, int pb, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback, - #else - unsigned char *inStream, UInt32 inSize, - #endif - unsigned char *outStream, UInt32 outSize, - UInt32 *outSizeProcessed) -{ - UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + lp)); - CProb *p = (CProb *)buffer; - CRangeDecoder rd; - UInt32 i; - int state = 0; - int previousIsMatch = 0; - Byte previousByte = 0; - UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; - UInt32 nowPos = 0; - UInt32 posStateMask = (1 << pb) - 1; - UInt32 literalPosMask = (1 << lp) - 1; - int len = 0; - if (bufferSize < numProbs * sizeof(CProb)) - return LZMA_RESULT_NOT_ENOUGH_MEM; - for (i = 0; i < numProbs; i++) - p[i] = kBitModelTotal >> 1; - RangeDecoderInit(&rd, - #ifdef _LZMA_IN_CB - inCallback - #else - inStream, inSize - #endif - ); -#endif - - *outSizeProcessed = 0; - while(nowPos < outSize) - { - int posState = (int)( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - & posStateMask); - #ifdef _LZMA_IN_CB - if (rd.Result != LZMA_RESULT_OK) - return rd.Result; - #endif - if (rd.ExtraBytes != 0) - return LZMA_RESULT_DATA_ERROR; - if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0) - { - CProb *probs = p + Literal + (LZMA_LIT_SIZE * - ((( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - & literalPosMask) << lc) + (previousByte >> (8 - lc)))); - - if (state < 4) state = 0; - else if (state < 10) state -= 3; - else state -= 6; - if (previousIsMatch) - { - Byte matchByte; - #ifdef _LZMA_OUT_READ - UInt32 pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - matchByte = dictionary[pos]; - #else - matchByte = outStream[nowPos - rep0]; - #endif - previousByte = LzmaLiteralDecodeMatch(probs, &rd, matchByte); - previousIsMatch = 0; - } - else - previousByte = LzmaLiteralDecode(probs, &rd); - outStream[nowPos++] = previousByte; - #ifdef _LZMA_OUT_READ - dictionary[dictionaryPos] = previousByte; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - #endif - } - else - { - previousIsMatch = 1; - if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1) - { - if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0) - { - if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0) - { - #ifdef _LZMA_OUT_READ - UInt32 pos; - #endif - if ( - (nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - == 0) - return LZMA_RESULT_DATA_ERROR; - state = state < 7 ? 9 : 11; - #ifdef _LZMA_OUT_READ - pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - previousByte = dictionary[pos]; - dictionary[dictionaryPos] = previousByte; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - #else - previousByte = outStream[nowPos - rep0]; - #endif - outStream[nowPos++] = previousByte; - continue; - } - } - else - { - UInt32 distance; - if(RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0) - distance = rep1; - else - { - if(RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0) - distance = rep2; - else - { - distance = rep3; - rep3 = rep2; - } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - len = LzmaLenDecode(p + RepLenCoder, &rd, posState); - state = state < 7 ? 8 : 11; - } - else - { - int posSlot; - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - state = state < 7 ? 7 : 10; - len = LzmaLenDecode(p + LenCoder, &rd, posState); - posSlot = RangeDecoderBitTreeDecode(p + PosSlot + - ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << - kNumPosSlotBits), kNumPosSlotBits, &rd); - if (posSlot >= kStartPosModelIndex) - { - int numDirectBits = ((posSlot >> 1) - 1); - rep0 = ((2 | ((UInt32)posSlot & 1)) << numDirectBits); - if (posSlot < kEndPosModelIndex) - { - rep0 += RangeDecoderReverseBitTreeDecode( - p + SpecPos + rep0 - posSlot - 1, numDirectBits, &rd); - } - else - { - rep0 += RangeDecoderDecodeDirectBits(&rd, - numDirectBits - kNumAlignBits) << kNumAlignBits; - rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd); - } - } - else - rep0 = posSlot; - rep0++; - } - if (rep0 == (UInt32)(0)) - { - /* it's for stream version */ - len = -1; - break; - } - if (rep0 > nowPos - #ifdef _LZMA_OUT_READ - + globalPos - #endif - ) - { - return LZMA_RESULT_DATA_ERROR; - } - len += kMatchMinLen; - do - { - #ifdef _LZMA_OUT_READ - UInt32 pos = dictionaryPos - rep0; - if (pos >= dictionarySize) - pos += dictionarySize; - previousByte = dictionary[pos]; - dictionary[dictionaryPos] = previousByte; - if (++dictionaryPos == dictionarySize) - dictionaryPos = 0; - #else - previousByte = outStream[nowPos - rep0]; - #endif - outStream[nowPos++] = previousByte; - len--; - } - while(len > 0 && nowPos < outSize); - } - } - - #ifdef _LZMA_OUT_READ - vs->RangeDecoder = rd; - vs->DictionaryPos = dictionaryPos; - vs->GlobalPos = globalPos + nowPos; - vs->Reps[0] = rep0; - vs->Reps[1] = rep1; - vs->Reps[2] = rep2; - vs->Reps[3] = rep3; - vs->State = state; - vs->PreviousIsMatch = previousIsMatch; - vs->RemainLen = len; - #endif - - *outSizeProcessed = nowPos; - return LZMA_RESULT_OK; -} diff --git a/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.h b/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.h deleted file mode 100644 index f58944e..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/LzmaDecode.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - LzmaDecode.h - LZMA Decoder interface - - LZMA SDK 4.05 Copyright (c) 1999-2004 Igor Pavlov (2004-08-25) - http://www.7-zip.org/ - - LZMA SDK is licensed under two licenses: - 1) GNU Lesser General Public License (GNU LGPL) - 2) Common Public License (CPL) - It means that you can select one of these two licenses and - follow rules of that license. - - SPECIAL EXCEPTION: - Igor Pavlov, as the author of this code, expressly permits you to - statically or dynamically link your code (or bind by name) to the - interfaces of this file without subjecting your linked code to the - terms of the CPL or GNU LGPL. Any modifications or additions - to this file, however, are subject to the LGPL or CPL terms. -*/ - -#ifndef __LZMADECODE_H -#define __LZMADECODE_H - -/* #define _LZMA_IN_CB */ -/* Use callback for input data */ - -/* #define _LZMA_OUT_READ */ -/* Use read function for output data */ - -/* #define _LZMA_PROB32 */ -/* It can increase speed on some 32-bit CPUs, - but memory usage will be doubled in that case */ - -/* #define _LZMA_LOC_OPT */ -/* Enable local speed optimizations inside code */ - -#ifndef UInt32 -#ifdef _LZMA_UINT32_IS_ULONG -#define UInt32 unsigned long -#else -#define UInt32 unsigned int -#endif -#endif - -#ifdef _LZMA_PROB32 -#define CProb UInt32 -#else -#define CProb unsigned short -#endif - -#define LZMA_RESULT_OK 0 -#define LZMA_RESULT_DATA_ERROR 1 -#define LZMA_RESULT_NOT_ENOUGH_MEM 2 - -#ifdef _LZMA_IN_CB -typedef struct _ILzmaInCallback -{ - int (*Read)(void *object, unsigned char **buffer, UInt32 *bufferSize); -} ILzmaInCallback; -#endif - -#define LZMA_BASE_SIZE 1846 -#define LZMA_LIT_SIZE 768 - -/* -bufferSize = (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp)))* sizeof(CProb) -bufferSize += 100 in case of _LZMA_OUT_READ -by default CProb is unsigned short, -but if specify _LZMA_PROB_32, CProb will be UInt32(unsigned int) -*/ - -#ifdef _LZMA_OUT_READ -int LzmaDecoderInit( - unsigned char *buffer, UInt32 bufferSize, - int lc, int lp, int pb, - unsigned char *dictionary, UInt32 dictionarySize, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback - #else - unsigned char *inStream, UInt32 inSize - #endif -); -#endif - -int LzmaDecode( - unsigned char *buffer, - #ifndef _LZMA_OUT_READ - UInt32 bufferSize, - int lc, int lp, int pb, - #ifdef _LZMA_IN_CB - ILzmaInCallback *inCallback, - #else - unsigned char *inStream, UInt32 inSize, - #endif - #endif - unsigned char *outStream, UInt32 outSize, - UInt32 *outSizeProcessed); - -#endif diff --git a/target/linux/brcm47xx/image/lzma-loader/src/Makefile b/target/linux/brcm47xx/image/lzma-loader/src/Makefile deleted file mode 100644 index 3320e56..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -# -# Makefile for Broadcom BCM947XX boards -# -# Copyright 2001-2003, 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. -# -# Copyright 2004 Manuel Novoa III <mjn3@codepoet.org> -# Modified to support bzip'd kernels. -# Of course, it would be better to integrate bunzip capability into CFE. -# -# Copyright 2005 Oleg I. Vdovikin <oleg@cs.msu.su> -# Cleaned up, modified for lzma support, removed from kernel -# - -TEXT_START := 0x80001000 -BZ_TEXT_START := 0x80400000 - -OBJCOPY := $(CROSS_COMPILE)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S - -CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \ - -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic \ - -ffunction-sections -pipe -mlong-calls -fno-common \ - -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -CFLAGS += -DLOADADDR=$(TEXT_START) -D_LZMA_IN_CB - -ASFLAGS = $(CFLAGS) -D__ASSEMBLY__ -DBZ_TEXT_START=$(BZ_TEXT_START) - -SEDFLAGS := s/BZ_TEXT_START/$(BZ_TEXT_START)/;s/TEXT_START/$(TEXT_START)/ - -OBJECTS := head.o data.o - -all: loader.gz loader.elf - -# Don't build dependencies, this may die if $(CC) isn't gcc -dep: - -install: - -loader.gz: loader - gzip -nc9 $< > $@ - -loader.elf: loader.o - cp $< $@ - -loader: loader.o - $(OBJCOPY) $< $@ - -loader.o: loader.lds $(OBJECTS) - $(LD) -static --gc-sections -no-warn-mismatch -T loader.lds -o $@ $(OBJECTS) - -loader.lds: loader.lds.in Makefile - @sed "$(SEDFLAGS)" < $< > $@ - -data.o: data.lds decompress.image - $(LD) -no-warn-mismatch -T data.lds -r -o $@ -b binary decompress.image -b elf32-tradlittlemips - -data.lds: - @echo "SECTIONS { .data : { code_start = .; *(.data) code_stop = .; }}" > $@ - -decompress.image: decompress - $(OBJCOPY) $< $@ - -decompress: decompress.lds decompress.o LzmaDecode.o - $(LD) -static --gc-sections -no-warn-mismatch -T decompress.lds -o $@ decompress.o LzmaDecode.o - -decompress.lds: decompress.lds.in Makefile - @sed "$(SEDFLAGS)" < $< > $@ - -mrproper: clean - -clean: - rm -f loader.gz loader decompress *.lds *.o *.image diff --git a/target/linux/brcm47xx/image/lzma-loader/src/README b/target/linux/brcm47xx/image/lzma-loader/src/README deleted file mode 100644 index 16649e9..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/README +++ /dev/null @@ -1,55 +0,0 @@ -/* - * LZMA compressed kernel decompressor for bcm947xx boards - * - * Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -The code is intended to decompress kernel, being compressed using lzma utility -build using 7zip LZMA SDK. This utility is located in the LZMA_Alone directory - -decompressor code expects that your .trx file consist of three partitions: - -1) decompressor itself (this is gziped code which pmon/cfe will extract and run -on boot-up instead of real kernel) -2) LZMA compressed kernel (both streamed and regular modes are supported now) -3) Root filesystem - -Please be sure to apply the following patch for use this new trx layout (it will -allow using both new and old trx files for root filesystem lookup code) - ---- linuz/arch/mips/brcm-boards/bcm947xx/setup.c 2005-01-23 19:24:27.503322896 +0300 -+++ linux/arch/mips/brcm-boards/bcm947xx/setup.c 2005-01-23 19:29:05.237100944 +0300 -@@ -221,7 +221,9 @@ - /* Try looking at TRX header for rootfs offset */ - if (le32_to_cpu(trx->magic) == TRX_MAGIC) { - bcm947xx_parts[1].offset = off; -- if (le32_to_cpu(trx->offsets[1]) > off) -+ if (le32_to_cpu(trx->offsets[2]) > off) -+ off = le32_to_cpu(trx->offsets[2]); -+ else if (le32_to_cpu(trx->offsets[1]) > off) - off = le32_to_cpu(trx->offsets[1]); - continue; - } - - -Revision history: - 0.02 Initial release - 0.03 Added Mineharu Takahara <mtakahar@yahoo.com> patch to pass actual - output size to decoder (stream mode compressed input is not - a requirement anymore) - 0.04 Reordered functions using lds script diff --git a/target/linux/brcm47xx/image/lzma-loader/src/decompress.c b/target/linux/brcm47xx/image/lzma-loader/src/decompress.c deleted file mode 100644 index 05681b1..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/decompress.c +++ /dev/null @@ -1,186 +0,0 @@ -/* - * LZMA compressed kernel decompressor for bcm947xx boards - * - * Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * - * Please note, this was code based on the bunzip2 decompressor code - * by Manuel Novoa III (mjn3@codepoet.org), although the only thing left - * is an idea and part of original vendor code - * - * - * 12-Mar-2005 Mineharu Takahara <mtakahar@yahoo.com> - * pass actual output size to decoder (stream mode - * compressed input is not a requirement anymore) - * - * 24-Apr-2005 Oleg I. Vdovikin - * reordered functions using lds script, removed forward decl - * - */ - -#include "LzmaDecode.h" - -#define BCM4710_FLASH 0x1fc00000 /* Flash */ - -#define KSEG0 0x80000000 -#define KSEG1 0xa0000000 - -#define KSEG1ADDR(a) ((((unsigned)(a)) & 0x1fffffffU) | KSEG1) - -#define Index_Invalidate_I 0x00 -#define Index_Writeback_Inv_D 0x01 - -#define cache_unroll(base,op) \ - __asm__ __volatile__( \ - ".set noreorder;\n" \ - ".set mips3;\n" \ - "cache %1, (%0);\n" \ - ".set mips0;\n" \ - ".set reorder\n" \ - : \ - : "r" (base), \ - "i" (op)); - -static __inline__ void blast_icache(unsigned long size, unsigned long lsize) -{ - unsigned long start = KSEG0; - unsigned long end = (start + size); - - while(start < end) { - cache_unroll(start,Index_Invalidate_I); - start += lsize; - } -} - -static __inline__ void blast_dcache(unsigned long size, unsigned long lsize) -{ - unsigned long start = KSEG0; - unsigned long end = (start + size); - - while(start < end) { - cache_unroll(start,Index_Writeback_Inv_D); - start += lsize; - } -} - -#define TRX_MAGIC 0x30524448 /* "HDR0" */ - -struct trx_header { - unsigned int magic; /* "HDR0" */ - unsigned int len; /* Length of file including header */ - unsigned int crc32; /* 32-bit CRC from flag_version to end of file */ - unsigned int flag_version; /* 0:15 flags, 16:31 version */ - unsigned int offsets[3]; /* Offsets of partitions from start of header */ -}; - -#define EDIMAX_PS_HEADER_MAGIC 0x36315350 /* "PS16" */ -#define EDIMAX_PS_HEADER_LEN 0xc /* 12 bytes long for edimax header */ - -/* beyound the image end, size not known in advance */ -extern unsigned char workspace[]; - -unsigned int offset; -unsigned char *data; - -/* flash access should be aligned, so wrapper is used */ -/* read byte from the flash, all accesses are 32-bit aligned */ -static int read_byte(void *object, unsigned char **buffer, UInt32 *bufferSize) -{ - static unsigned int val; - - if (((unsigned int)offset % 4) == 0) { - val = *(unsigned int *)data; - data += 4; - } - - *bufferSize = 1; - *buffer = ((unsigned char *)&val) + (offset++ & 3); - - return LZMA_RESULT_OK; -} - -static __inline__ unsigned char get_byte(void) -{ - unsigned char *buffer; - UInt32 fake; - - return read_byte(0, &buffer, &fake), *buffer; -} - -/* should be the first function */ -void entry(unsigned long icache_size, unsigned long icache_lsize, - unsigned long dcache_size, unsigned long dcache_lsize, - unsigned long fw_arg0, unsigned long fw_arg1, - unsigned long fw_arg2, unsigned long fw_arg3) -{ - unsigned int i; /* temp value */ - unsigned int lc; /* literal context bits */ - unsigned int lp; /* literal pos state bits */ - unsigned int pb; /* pos state bits */ - unsigned int osize; /* uncompressed size */ - - ILzmaInCallback callback; - callback.Read = read_byte; - - /* look for trx header, 32-bit data access */ - for (data = ((unsigned char *) KSEG1ADDR(BCM4710_FLASH)); - ((struct trx_header *)data)->magic != TRX_MAGIC && - ((struct trx_header *)data)->magic != EDIMAX_PS_HEADER_MAGIC; - data += 65536); - - if (((struct trx_header *)data)->magic == EDIMAX_PS_HEADER_MAGIC) - data += EDIMAX_PS_HEADER_LEN; - /* compressed kernel is in the partition 0 or 1 */ - if (((struct trx_header *)data)->offsets[1] > 65536) - data += ((struct trx_header *)data)->offsets[0]; - else - data += ((struct trx_header *)data)->offsets[1]; - - offset = 0; - - /* lzma args */ - i = get_byte(); - lc = i % 9, i = i / 9; - lp = i % 5, pb = i / 5; - - /* skip rest of the LZMA coder property */ - for (i = 0; i < 4; i++) - get_byte(); - - /* read the lower half of uncompressed size in the header */ - osize = ((unsigned int)get_byte()) + - ((unsigned int)get_byte() << 8) + - ((unsigned int)get_byte() << 16) + - ((unsigned int)get_byte() << 24); - - /* skip rest of the header (upper half of uncompressed size) */ - for (i = 0; i < 4; i++) - get_byte(); - - /* decompress kernel */ - if (LzmaDecode(workspace, ~0, lc, lp, pb, &callback, - (unsigned char*)LOADADDR, osize, &i) == LZMA_RESULT_OK) - { - blast_dcache(dcache_size, dcache_lsize); - blast_icache(icache_size, icache_lsize); - - /* Jump to load address */ - ((void (*)(unsigned long, unsigned long, unsigned long, - unsigned long)) LOADADDR)(fw_arg0, fw_arg1, fw_arg2, - fw_arg3); - } -} diff --git a/target/linux/brcm47xx/image/lzma-loader/src/decompress.lds.in b/target/linux/brcm47xx/image/lzma-loader/src/decompress.lds.in deleted file mode 100644 index 33f56f8..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/decompress.lds.in +++ /dev/null @@ -1,20 +0,0 @@ -OUTPUT_ARCH(mips) -ENTRY(entry) -SECTIONS { - . = BZ_TEXT_START; - .text : { - *(.text.entry) - *(.text) - *(.rodata) - } - - .data : { - *(.data) - } - - .bss : { - *(.bss) - } - - workspace = .; -} diff --git a/target/linux/brcm47xx/image/lzma-loader/src/head.S b/target/linux/brcm47xx/image/lzma-loader/src/head.S deleted file mode 100644 index 3a33e40..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/head.S +++ /dev/null @@ -1,160 +0,0 @@ -/* Copyright 2005 Oleg I. Vdovikin (oleg@cs.msu.su) */ -/* cache manipulation adapted from Broadcom code */ -/* idea taken from original bunzip2 decompressor code */ -/* Copyright 2004 Manuel Novoa III (mjn3@codepoet.org) */ -/* Licensed under the linux kernel's version of the GPL.*/ - -#include <asm/asm.h> -#include <asm/regdef.h> - -#define KSEG0 0x80000000 - -#define C0_CONFIG $16 -#define C0_TAGLO $28 -#define C0_TAGHI $29 - -#define CONF1_DA_SHIFT 7 /* D$ associativity */ -#define CONF1_DA_MASK 0x00000380 -#define CONF1_DA_BASE 1 -#define CONF1_DL_SHIFT 10 /* D$ line size */ -#define CONF1_DL_MASK 0x00001c00 -#define CONF1_DL_BASE 2 -#define CONF1_DS_SHIFT 13 /* D$ sets/way */ -#define CONF1_DS_MASK 0x0000e000 -#define CONF1_DS_BASE 64 -#define CONF1_IA_SHIFT 16 /* I$ associativity */ -#define CONF1_IA_MASK 0x00070000 -#define CONF1_IA_BASE 1 -#define CONF1_IL_SHIFT 19 /* I$ line size */ -#define CONF1_IL_MASK 0x00380000 -#define CONF1_IL_BASE 2 -#define CONF1_IS_SHIFT 22 /* Instruction cache sets/way */ -#define CONF1_IS_MASK 0x01c00000 -#define CONF1_IS_BASE 64 - -#define Index_Invalidate_I 0x00 -#define Index_Writeback_Inv_D 0x01 - - .text - LEAF(startup) - .set noreorder - addi sp, -48 - sw a0, 16(sp) - sw a1, 20(sp) - sw a2, 24(sp) - sw a3, 28(sp) - - /* Copy decompressor code to the right place */ - li t2, BZ_TEXT_START - add a0, t2, 0 - la a1, code_start - la a2, code_stop -$L1: - lw t0, 0(a1) - sw t0, 0(a0) - add a1, 4 - add a0, 4 - blt a1, a2, $L1 - nop - - /* At this point we need to invalidate dcache and */ - /* icache before jumping to new code */ - -1: /* Get cache sizes */ - .set mips32 - mfc0 s0,C0_CONFIG,1 - .set mips0 - - li s1,CONF1_DL_MASK - and s1,s0 - beq s1,zero,nodc - nop - - srl s1,CONF1_DL_SHIFT - li t0,CONF1_DL_BASE - sll s1,t0,s1 /* s1 has D$ cache line size */ - - li s2,CONF1_DA_MASK - and s2,s0 - srl s2,CONF1_DA_SHIFT - addiu s2,CONF1_DA_BASE /* s2 now has D$ associativity */ - - li t0,CONF1_DS_MASK - and t0,s0 - srl t0,CONF1_DS_SHIFT - li s3,CONF1_DS_BASE - sll s3,s3,t0 /* s3 has D$ sets per way */ - - multu s2,s3 /* sets/way * associativity */ - mflo t0 /* total cache lines */ - - multu s1,t0 /* D$ linesize * lines */ - mflo s2 /* s2 is now D$ size in bytes */ - - /* Initilize the D$: */ - mtc0 zero,C0_TAGLO - mtc0 zero,C0_TAGHI - - li t0,KSEG0 /* Just an address for the first $ line */ - addu t1,t0,s2 /* + size of cache == end */ - - .set mips3 -1: cache Index_Writeback_Inv_D,0(t0) - .set mips0 - bne t0,t1,1b - addu t0,s1 - -nodc: - /* Now we get to do it all again for the I$ */ - - move s3,zero /* just in case there is no icache */ - move s4,zero - - li t0,CONF1_IL_MASK - and t0,s0 - beq t0,zero,noic - nop - - srl t0,CONF1_IL_SHIFT - li s3,CONF1_IL_BASE - sll s3,t0 /* s3 has I$ cache line size */ - - li t0,CONF1_IA_MASK - and t0,s0 - srl t0,CONF1_IA_SHIFT - addiu s4,t0,CONF1_IA_BASE /* s4 now has I$ associativity */ - - li t0,CONF1_IS_MASK - and t0,s0 - srl t0,CONF1_IS_SHIFT - li s5,CONF1_IS_BASE - sll s5,t0 /* s5 has I$ sets per way */ - - multu s4,s5 /* sets/way * associativity */ - mflo t0 /* s4 is now total cache lines */ - - multu s3,t0 /* I$ linesize * lines */ - mflo s4 /* s4 is cache size in bytes */ - - /* Initilize the I$: */ - mtc0 zero,C0_TAGLO - mtc0 zero,C0_TAGHI - - li t0,KSEG0 /* Just an address for the first $ line */ - addu t1,t0,s4 /* + size of cache == end */ - - .set mips3 -1: cache Index_Invalidate_I,0(t0) - .set mips0 - bne t0,t1,1b - addu t0,s3 - -noic: - move a0,s3 /* icache line size */ - move a1,s4 /* icache size */ - move a2,s1 /* dcache line size */ - jal t2 - move a3,s2 /* dcache size */ - - .set reorder - END(startup) diff --git a/target/linux/brcm47xx/image/lzma-loader/src/loader.lds.in b/target/linux/brcm47xx/image/lzma-loader/src/loader.lds.in deleted file mode 100644 index 20f2ea9..0000000 --- a/target/linux/brcm47xx/image/lzma-loader/src/loader.lds.in +++ /dev/null @@ -1,17 +0,0 @@ -OUTPUT_ARCH(mips) -ENTRY(startup) -SECTIONS { - . = TEXT_START; - .text : { - *(.text) - *(.rodata) - } - - .data : { - *(.data) - } - - .bss : { - *(.bss) - } -} diff --git a/target/linux/brcm47xx/legacy/config-default b/target/linux/brcm47xx/legacy/config-default deleted file mode 100644 index 8a52e47..0000000 --- a/target/linux/brcm47xx/legacy/config-default +++ /dev/null @@ -1,8 +0,0 @@ -CONFIG_B44=y -CONFIG_B44_PCI=y -CONFIG_B44_PCICORE_AUTOSELECT=y -CONFIG_B44_PCI_AUTOSELECT=y -# CONFIG_BCM47XX_BCMA is not set -# CONFIG_BCMA is not set -# CONFIG_MTD_NAND is not set -# CONFIG_SSB_DRIVER_GIGE is not set diff --git a/target/linux/brcm47xx/legacy/profiles/100-Broadcom-b43.mk b/target/linux/brcm47xx/legacy/profiles/100-Broadcom-b43.mk deleted file mode 100644 index 50d7770..0000000 --- a/target/linux/brcm47xx/legacy/profiles/100-Broadcom-b43.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2007-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-b43 - NAME:=Broadcom SoC, all Ethernet, BCM43xx WiFi (b43, default) - PACKAGES:=kmod-b43 kmod-b43legacy -endef - -define Profile/Broadcom-b43/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the mac80211, b43 and - b43legacy drivers and b44, tg3 or bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-b43)) - diff --git a/target/linux/brcm47xx/legacy/profiles/101-Broadcom-wl.mk b/target/linux/brcm47xx/legacy/profiles/101-Broadcom-wl.mk deleted file mode 100644 index 6a4c5b0..0000000 --- a/target/linux/brcm47xx/legacy/profiles/101-Broadcom-wl.mk +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2010-2013 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-wl - NAME:=Broadcom SoC, all Ethernet, BCM43xx WiFi (wl, proprietary) - PACKAGES:=-wpad-mini kmod-brcm-wl-mini wlc nas -endef - -define Profile/Broadcom-wl/Description - Package set compatible with hardware any Broadcom BCM47xx or BCM535x - SoC with Broadcom BCM43xx Wifi cards using the proprietary Broadcom - wireless "wl" driver and b44, tg3 or bgmac Ethernet driver. -endef - -$(eval $(call Profile,Broadcom-wl)) - diff --git a/target/linux/brcm47xx/legacy/profiles/WGT634U.mk b/target/linux/brcm47xx/legacy/profiles/WGT634U.mk deleted file mode 100644 index ebe5e23..0000000 --- a/target/linux/brcm47xx/legacy/profiles/WGT634U.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WGT634U - NAME:=Netgear WGT634U - PACKAGES:=kmod-ath5k kmod-usb-core kmod-usb2 kmod-ocf-ubsec-ssb -endef - -define Profile/WGT634U/Description - Package set compatible with the Netgear WGT634U. Contains USB support -endef -$(eval $(call Profile,WGT634U)) - diff --git a/target/linux/brcm47xx/legacy/profiles/WRTSL54GS.mk b/target/linux/brcm47xx/legacy/profiles/WRTSL54GS.mk deleted file mode 100644 index 8c48483..0000000 --- a/target/linux/brcm47xx/legacy/profiles/WRTSL54GS.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2006 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/WRTSL54GS - NAME:=Linksys WRTSL54GS - PACKAGES:=kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-storage kmod-scsi-core kmod-fs-ext4 e2fsprogs kmod-b43 -endef - -define Profile/WRTSL54GS/Description - Package set compatible with the Linksys WRTSL54GS. Contains USB support -endef -$(eval $(call Profile,WRTSL54GS)) - diff --git a/target/linux/brcm47xx/legacy/target.mk b/target/linux/brcm47xx/legacy/target.mk deleted file mode 100644 index bdabd10..0000000 --- a/target/linux/brcm47xx/legacy/target.mk +++ /dev/null @@ -1,7 +0,0 @@ -FEATURES += low_mem pcmcia -BOARDNAME:=Legacy (802.11g) - -define Target/Description - Build generic firmware for legacy 802.11g Broadcom BCM47xx - and BCM53xx MIPS devices. -endef diff --git a/target/linux/brcm47xx/mips74k/config-default b/target/linux/brcm47xx/mips74k/config-default deleted file mode 100644 index 2b4497d..0000000 --- a/target/linux/brcm47xx/mips74k/config-default +++ /dev/null @@ -1,15 +0,0 @@ -# CONFIG_ADM6996_PHY is not set -# CONFIG_BCM47XX_SSB is not set -CONFIG_BGMAC=y -CONFIG_BOUNCE=y -# CONFIG_FIXED_PHY is not set -# CONFIG_GPIO_WDT is not set -CONFIG_HIGHMEM=y -# CONFIG_SSB is not set -# CONFIG_SSB_DRIVER_EXTIF is not set -# CONFIG_SSB_DRIVER_GIGE is not set -# CONFIG_SSB_DRIVER_MIPS is not set -# CONFIG_SSB_EMBEDDED is not set -# CONFIG_SSB_PCICORE_HOSTMODE is not set -# CONFIG_SSB_SERIAL is not set -# CONFIG_SSB_SFLASH is not set diff --git a/target/linux/brcm47xx/mips74k/profiles/100-Broadcom-b43.mk b/target/linux/brcm47xx/mips74k/profiles/100-Broadcom-b43.mk deleted file mode 100644 index bd3b010..0000000 --- a/target/linux/brcm47xx/mips74k/profiles/100-Broadcom-b43.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-mips74k-b43 - NAME:=Broadcom SoC, BCM43xx WiFi (b43) - PACKAGES:=kmod-b43 -endef - -define Profile/Broadcom-mips74k-b43/Description - Package set for devices with BCM43xx WiFi including mac80211 and b43 - driver. -endef - -$(eval $(call Profile,Broadcom-mips74k-b43)) - diff --git a/target/linux/brcm47xx/mips74k/profiles/101-Broadcom-brcsmac.mk b/target/linux/brcm47xx/mips74k/profiles/101-Broadcom-brcsmac.mk deleted file mode 100644 index a138ef9..0000000 --- a/target/linux/brcm47xx/mips74k/profiles/101-Broadcom-brcsmac.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-mips74k-brcmsmac - NAME:=Broadcom SoC, BCM43xx WiFi (brcmsmac) - PACKAGES:=kmod-brcmsmac -endef - -define Profile/Broadcom-mips74k-brcmsmac/Description - Package set for devices with BCM43xx WiFi including mac80211 and - brcmsmac driver. -endef - -$(eval $(call Profile,Broadcom-mips74k-brcmsmac)) - diff --git a/target/linux/brcm47xx/mips74k/profiles/102-Broadcom-wl.mk b/target/linux/brcm47xx/mips74k/profiles/102-Broadcom-wl.mk deleted file mode 100644 index 502fff4..0000000 --- a/target/linux/brcm47xx/mips74k/profiles/102-Broadcom-wl.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-mips74k-wl - NAME:=Broadcom SoC, BCM43xx WiFi (proprietary wl) - PACKAGES:=-wpad-mini kmod-brcm-wl wlc nas -endef - -define Profile/Broadcom-mips74k-wl/Description - Package set for devices with BCM43xx WiFi including proprietary (and - closed source) driver "wl". -endef - -$(eval $(call Profile,Broadcom-mips74k-wl)) - diff --git a/target/linux/brcm47xx/mips74k/profiles/103-Broadcom-none.mk b/target/linux/brcm47xx/mips74k/profiles/103-Broadcom-none.mk deleted file mode 100644 index 5790527..0000000 --- a/target/linux/brcm47xx/mips74k/profiles/103-Broadcom-none.mk +++ /dev/null @@ -1,18 +0,0 @@ -# -# Copyright (C) 2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define Profile/Broadcom-mips74k-none - NAME:=Broadcom SoC, No WiFi - PACKAGES:=-wpad-mini -endef - -define Profile/Broadcom-mips74k-none/Description - Package set for devices without a WiFi. -endef - -$(eval $(call Profile,Broadcom-mips74k-none)) - diff --git a/target/linux/brcm47xx/mips74k/target.mk b/target/linux/brcm47xx/mips74k/target.mk deleted file mode 100644 index ccefa21..0000000 --- a/target/linux/brcm47xx/mips74k/target.mk +++ /dev/null @@ -1,9 +0,0 @@ -BOARDNAME:=MIPS 74K -CPU_TYPE:=74kc -CPU_SUBTYPE:=dsp2 -FEATURES+=mips16 - -define Target/Description - Build firmware for Broadcom BCM47xx and BCM53xx devices with - MIPS 74K CPU. -endef diff --git a/target/linux/brcm47xx/modules.mk b/target/linux/brcm47xx/modules.mk deleted file mode 100644 index 94bc662..0000000 --- a/target/linux/brcm47xx/modules.mk +++ /dev/null @@ -1,55 +0,0 @@ -# -# Copyright (C) 2006-2012 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -define KernelPackage/usb-brcm47xx - SUBMENU:=$(USB_MENU) - TITLE:=Support for USB on bcm47xx - DEPENDS:=@USB_SUPPORT @TARGET_brcm47xx - KCONFIG:= \ - CONFIG_USB_HCD_BCMA \ - CONFIG_USB_HCD_SSB - FILES:= \ - $(if $(CONFIG_USB_HCD_BCMA),$(LINUX_DIR)/drivers/usb/host/bcma-hcd.ko) \ - $(if $(CONFIG_USB_HCD_SSB),$(LINUX_DIR)/drivers/usb/host/ssb-hcd.ko) - AUTOLOAD:=$(call AutoLoad,19, \ - $(if $(CONFIG_USB_HCD_BCMA),bcma-hcd) \ - $(if $(CONFIG_USB_HCD_SSB),ssb-hcd),1) - $(call AddDepends/usb) -endef - -$(eval $(call KernelPackage,usb-brcm47xx)) - - -define KernelPackage/ocf-ubsec-ssb - TITLE:=BCM5365P IPSec Core driver - DEPENDS:=@TARGET_brcm47xx @!TARGET_brcm47xx_mips74k +kmod-crypto-ocf - KCONFIG:=CONFIG_OCF_UBSEC_SSB - FILES:=$(LINUX_DIR)/crypto/ocf/ubsec_ssb/ubsec_ssb.ko - AUTOLOAD:=$(call AutoLoad,10,ubsec_ssb) - $(call AddDepends/crypto) -endef - -define KernelPackage/ocf-ubsec-ssb/description - This package contains the OCF driver for the BCM5365p IPSec Core -endef - -$(eval $(call KernelPackage,ocf-ubsec-ssb)) - -define KernelPackage/bgmac - TITLE:=Broadcom bgmac driver - KCONFIG:=CONFIG_BGMAC - DEPENDS:=@TARGET_brcm47xx @!TARGET_brcm47xx_legacy - SUBMENU:=$(NETWORK_DEVICES_MENU) - FILES:=$(LINUX_DIR)/drivers/net/ethernet/broadcom/bgmac.ko - AUTOLOAD:=$(call AutoLoad,19,bgmac,1) -endef - -define KernelPackage/bgmac/description - Kernel modules for Broadcom bgmac Ethernet adapters. -endef - -$(eval $(call KernelPackage,bgmac)) diff --git a/target/linux/brcm47xx/patches-3.10/020-mtd-bcm47xxpart-handle-malloc-failures.patch b/target/linux/brcm47xx/patches-3.10/020-mtd-bcm47xxpart-handle-malloc-failures.patch deleted file mode 100644 index ad24b59..0000000 --- a/target/linux/brcm47xx/patches-3.10/020-mtd-bcm47xxpart-handle-malloc-failures.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 99b1d1887fee36ef9ff5d2ee24f0cf3e8c172104 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sun, 13 Oct 2013 22:53:49 +0200 -Subject: [PATCH] mtd: bcm47xxpart: handle malloc failures - -Handle return NULL in malloc. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: Brian Norris <computersforpeace@gmail.com> ---- - drivers/mtd/bcm47xxpart.c | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -71,7 +71,14 @@ static int bcm47xxpart_parse(struct mtd_ - /* Alloc */ - parts = kzalloc(sizeof(struct mtd_partition) * BCM47XXPART_MAX_PARTS, - GFP_KERNEL); -+ if (!parts) -+ return -ENOMEM; -+ - buf = kzalloc(BCM47XXPART_BYTES_TO_READ, GFP_KERNEL); -+ if (!buf) { -+ kfree(parts); -+ return -ENOMEM; -+ } - - /* Parse block by block looking for magics */ - for (offset = 0; offset <= master->size - blocksize; diff --git a/target/linux/brcm47xx/patches-3.10/021-mtd-bcm47xxpart-detect-block-aligned-Squashfs-partit.patch b/target/linux/brcm47xx/patches-3.10/021-mtd-bcm47xxpart-detect-block-aligned-Squashfs-partit.patch deleted file mode 100644 index 72891b2..0000000 --- a/target/linux/brcm47xx/patches-3.10/021-mtd-bcm47xxpart-detect-block-aligned-Squashfs-partit.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 020c6bcfbeabee72c18d862769d72cf9241b9004 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Mon, 21 Oct 2013 22:34:37 +0200 -Subject: [PATCH] mtd: bcm47xxpart: detect block aligned Squashfs partition -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Most of the bcm47xx devices use TRX format for storing kernel and some -partition like Squashfs or JFFS2. This is pretty flexible solution, CFE -(the bootloader) just writes (and later boots) TRX at some hardcoded -place and paritions can vary in the size. - -However some devices don't use TRX format. Very recently we have -discovered ZTE H218N that has kernel and rootfs partitions at some -"random" places. - -This patch allows Linux find a rootfs partition after installing custom -image with a CFE bootloader. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Brian Norris <computersforpeace@gmail.com> ---- - drivers/mtd/bcm47xxpart.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -32,6 +32,7 @@ - #define ML_MAGIC1 0x39685a42 - #define ML_MAGIC2 0x26594131 - #define TRX_MAGIC 0x30524448 -+#define SQSH_MAGIC 0x71736873 /* shsq */ - - struct trx_header { - uint32_t magic; -@@ -174,6 +175,13 @@ static int bcm47xxpart_parse(struct mtd_ - offset = rounddown(offset + trx->length, blocksize); - continue; - } -+ -+ /* Squashfs on devices not using TRX */ -+ if (buf[0x000 / 4] == SQSH_MAGIC) { -+ bcm47xxpart_add_part(&parts[curr_part++], "rootfs", -+ offset, 0); -+ continue; -+ } - } - - /* Look for NVRAM at the end of the last block. */ diff --git a/target/linux/brcm47xx/patches-3.10/022-mtd-bcm47xxpart-detect-factory-partition.patch b/target/linux/brcm47xx/patches-3.10/022-mtd-bcm47xxpart-detect-factory-partition.patch deleted file mode 100644 index 389976c..0000000 --- a/target/linux/brcm47xx/patches-3.10/022-mtd-bcm47xxpart-detect-factory-partition.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 33094c736cd36a6cecadae6bce4daba89dabc326 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Mon, 21 Oct 2013 22:35:34 +0200 -Subject: [PATCH] mtd: bcm47xxpart: detect "factory" partition -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -A new type of partition with magic FCTY was found on Huawei E970: -46 43 54 59 4b 51 37 4e 41 42 31 38 41 32 39 30 |FCTYKQ7NAB18A290| - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Brian Norris <computersforpeace@gmail.com> ---- - drivers/mtd/bcm47xxpart.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -27,6 +27,7 @@ - - /* Magics */ - #define BOARD_DATA_MAGIC 0x5246504D /* MPFR */ -+#define FACTORY_MAGIC 0x59544346 /* FCTY */ - #define POT_MAGIC1 0x54544f50 /* POTT */ - #define POT_MAGIC2 0x504f /* OP */ - #define ML_MAGIC1 0x39685a42 -@@ -117,6 +118,13 @@ static int bcm47xxpart_parse(struct mtd_ - offset, MTD_WRITEABLE); - continue; - } -+ -+ /* Found on Huawei E970 */ -+ if (buf[0x000 / 4] == FACTORY_MAGIC) { -+ bcm47xxpart_add_part(&parts[curr_part++], "factory", -+ offset, MTD_WRITEABLE); -+ continue; -+ } - - /* POT(TOP) */ - if (buf[0x000 / 4] == POT_MAGIC1 && diff --git a/target/linux/brcm47xx/patches-3.10/023-mtd-bcm47xxpart-find-boot-partition-by-CFE-magic.patch b/target/linux/brcm47xx/patches-3.10/023-mtd-bcm47xxpart-find-boot-partition-by-CFE-magic.patch deleted file mode 100644 index 599114b..0000000 --- a/target/linux/brcm47xx/patches-3.10/023-mtd-bcm47xxpart-find-boot-partition-by-CFE-magic.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 4f8aaf72287578c846ed7ac8c6114aacbf416e45 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Sat, 21 Dec 2013 19:39:11 +0100 -Subject: [PATCH] mtd: bcm47xxpart: find boot partition by CFE magic -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some devices have even nicer-to-recognize CFE thanks to the magic. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Brian Norris <computersforpeace@gmail.com> ---- - drivers/mtd/bcm47xxpart.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -23,10 +23,11 @@ - * Amount of bytes we read when analyzing each block of flash memory. - * Set it big enough to allow detecting partition and reading important data. - */ --#define BCM47XXPART_BYTES_TO_READ 0x404 -+#define BCM47XXPART_BYTES_TO_READ 0x4e8 - - /* Magics */ - #define BOARD_DATA_MAGIC 0x5246504D /* MPFR */ -+#define CFE_MAGIC 0x43464531 /* 1EFC */ - #define FACTORY_MAGIC 0x59544346 /* FCTY */ - #define POT_MAGIC1 0x54544f50 /* POTT */ - #define POT_MAGIC2 0x504f /* OP */ -@@ -102,8 +103,9 @@ static int bcm47xxpart_parse(struct mtd_ - continue; - } - -- /* CFE has small NVRAM at 0x400 */ -- if (buf[0x400 / 4] == NVRAM_HEADER) { -+ /* Magic or small NVRAM at 0x400 */ -+ if ((buf[0x4e0 / 4] == CFE_MAGIC && buf[0x4e4 / 4] == CFE_MAGIC) || -+ (buf[0x400 / 4] == NVRAM_HEADER)) { - bcm47xxpart_add_part(&parts[curr_part++], "boot", - offset, MTD_WRITEABLE); - continue; diff --git a/target/linux/brcm47xx/patches-3.10/024-mtd-bcm47xxpart-alternative-MAGIC-for-board_data-par.patch b/target/linux/brcm47xx/patches-3.10/024-mtd-bcm47xxpart-alternative-MAGIC-for-board_data-par.patch deleted file mode 100644 index 5f9a5b9..0000000 --- a/target/linux/brcm47xx/patches-3.10/024-mtd-bcm47xxpart-alternative-MAGIC-for-board_data-par.patch +++ /dev/null @@ -1,52 +0,0 @@ -From f0501e81fbaa51cfc8c28c60bc3fc7965fde94f4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Sat, 21 Dec 2013 19:39:12 +0100 -Subject: [PATCH] mtd: bcm47xxpart: alternative MAGIC for board_data partition -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some devices (like WNDR3700v3) have board_data without MPFR magic, some -extra header or extra NVRAM around 0x100. In such case we have to look -for another magic which is BD 0B 0D BD (BD probably stands for Board -Data). It's located "far far away", so instead of extending buffer add -another mtd_read. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Brian Norris <computersforpeace@gmail.com> ---- - drivers/mtd/bcm47xxpart.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -27,6 +27,7 @@ - - /* Magics */ - #define BOARD_DATA_MAGIC 0x5246504D /* MPFR */ -+#define BOARD_DATA_MAGIC2 0xBD0D0BBD - #define CFE_MAGIC 0x43464531 /* 1EFC */ - #define FACTORY_MAGIC 0x59544346 /* FCTY */ - #define POT_MAGIC1 0x54544f50 /* POTT */ -@@ -192,6 +193,21 @@ static int bcm47xxpart_parse(struct mtd_ - offset, 0); - continue; - } -+ -+ /* Read middle of the block */ -+ if (mtd_read(master, offset + 0x8000, 0x4, -+ &bytes_read, (uint8_t *)buf) < 0) { -+ pr_err("mtd_read error while parsing (offset: 0x%X)!\n", -+ offset); -+ continue; -+ } -+ -+ /* Some devices (ex. WNDR3700v3) don't have a standard 'MPFR' */ -+ if (buf[0x000 / 4] == BOARD_DATA_MAGIC2) { -+ bcm47xxpart_add_part(&parts[curr_part++], "board_data", -+ offset, MTD_WRITEABLE); -+ continue; -+ } - } - - /* Look for NVRAM at the end of the last block. */ diff --git a/target/linux/brcm47xx/patches-3.10/027-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.10/027-mtd-bcm47xxpart-get-nvram.patch deleted file mode 100644 index 086d7b3..0000000 --- a/target/linux/brcm47xx/patches-3.10/027-mtd-bcm47xxpart-get-nvram.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -68,6 +68,7 @@ static int bcm47xxpart_parse(struct mtd_ - int trx_part = -1; - int last_trx_part = -1; - int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; -+ bool found_nvram = false; - - if (blocksize <= 0x10000) - blocksize = 0x10000; -@@ -229,12 +230,23 @@ static int bcm47xxpart_parse(struct mtd_ - if (buf[0] == NVRAM_HEADER) { - bcm47xxpart_add_part(&parts[curr_part++], "nvram", - master->size - blocksize, 0); -+ found_nvram = true; - break; - } - } - - kfree(buf); - -+ if (!found_nvram) { -+ pr_err("can not find a nvram partition reserve last block\n"); -+ bcm47xxpart_add_part(&parts[curr_part++], "nvram_guess", -+ master->size - blocksize * 2, MTD_WRITEABLE); -+ for (i = 0; i < curr_part; i++) { -+ if (parts[i].size + parts[i].offset == master->size) -+ parts[i].offset -= blocksize * 2; -+ } -+ } -+ - /* - * Assume that partitions end at the beginning of the one they are - * followed by. diff --git a/target/linux/brcm47xx/patches-3.10/050-mtd_bcm47xxsflash_implement_ChipCommon_RW_ops.patch b/target/linux/brcm47xx/patches-3.10/050-mtd_bcm47xxsflash_implement_ChipCommon_RW_ops.patch deleted file mode 100644 index 8f43ebb..0000000 --- a/target/linux/brcm47xx/patches-3.10/050-mtd_bcm47xxsflash_implement_ChipCommon_RW_ops.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit c8a1de474f49bd928f84e7a99b6f3d23a65b5637 -Author: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Date: Sun Mar 24 21:53:24 2013 +0100 - - mtd: bcm47xxsflash: implement ChipCommon R/W ops - - They are needed for erasing/writing. Use a magic pointers and small - functions to preapre code for adding other buses support in the future - (like SSB). - - Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> - Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -48,6 +48,17 @@ static void bcm47xxsflash_fill_mtd(struc - * BCMA - **************************************************/ - -+static int bcm47xxsflash_bcma_cc_read(struct bcm47xxsflash *b47s, u16 offset) -+{ -+ return bcma_cc_read32(b47s->bcma_cc, offset); -+} -+ -+static void bcm47xxsflash_bcma_cc_write(struct bcm47xxsflash *b47s, u16 offset, -+ u32 value) -+{ -+ bcma_cc_write32(b47s->bcma_cc, offset, value); -+} -+ - static int bcm47xxsflash_bcma_probe(struct platform_device *pdev) - { - struct bcma_sflash *sflash = dev_get_platdata(&pdev->dev); -@@ -62,6 +73,8 @@ static int bcm47xxsflash_bcma_probe(stru - sflash->priv = b47s; - - b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash); -+ b47s->cc_read = bcm47xxsflash_bcma_cc_read; -+ b47s->cc_write = bcm47xxsflash_bcma_cc_write; - - switch (b47s->bcma_cc->capabilities & BCMA_CC_CAP_FLASHT) { - case BCMA_CC_FLASHT_STSER: ---- a/drivers/mtd/devices/bcm47xxsflash.h -+++ b/drivers/mtd/devices/bcm47xxsflash.h -@@ -60,6 +60,8 @@ enum bcm47xxsflash_type { - - struct bcm47xxsflash { - struct bcma_drv_cc *bcma_cc; -+ int (*cc_read)(struct bcm47xxsflash *b47s, u16 offset); -+ void (*cc_write)(struct bcm47xxsflash *b47s, u16 offset, u32 value); - - enum bcm47xxsflash_type type; - diff --git a/target/linux/brcm47xx/patches-3.10/051-mtd_bcm47xxsflash_implement_polling_chip_status.patch b/target/linux/brcm47xx/patches-3.10/051-mtd_bcm47xxsflash_implement_polling_chip_status.patch deleted file mode 100644 index 3b45234..0000000 --- a/target/linux/brcm47xx/patches-3.10/051-mtd_bcm47xxsflash_implement_polling_chip_status.patch +++ /dev/null @@ -1,87 +0,0 @@ -commit 7026e9844112fa33e5ffcd562daf0c919b16a9d1 -Author: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Date: Sun Mar 24 21:51:31 2013 +0100 - - mtd: bcm47xxsflash: implement polling chip status - - Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> - Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -1,6 +1,7 @@ - #include <linux/kernel.h> - #include <linux/module.h> - #include <linux/slab.h> -+#include <linux/delay.h> - #include <linux/mtd/mtd.h> - #include <linux/platform_device.h> - #include <linux/bcma/bcma.h> -@@ -12,6 +13,57 @@ MODULE_DESCRIPTION("Serial flash driver - - static const char * const probes[] = { "bcm47xxpart", NULL }; - -+/************************************************** -+ * Various helpers -+ **************************************************/ -+ -+static void bcm47xxsflash_cmd(struct bcm47xxsflash *b47s, u32 opcode) -+{ -+ int i; -+ -+ b47s->cc_write(b47s, BCMA_CC_FLASHCTL, BCMA_CC_FLASHCTL_START | opcode); -+ for (i = 0; i < 1000; i++) { -+ if (!(b47s->cc_read(b47s, BCMA_CC_FLASHCTL) & -+ BCMA_CC_FLASHCTL_BUSY)) -+ return; -+ cpu_relax(); -+ } -+ pr_err("Control command failed (timeout)!\n"); -+} -+ -+static int bcm47xxsflash_poll(struct bcm47xxsflash *b47s, int timeout) -+{ -+ unsigned long deadline = jiffies + timeout; -+ -+ do { -+ switch (b47s->type) { -+ case BCM47XXSFLASH_TYPE_ST: -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_RDSR); -+ if (!(b47s->cc_read(b47s, BCMA_CC_FLASHDATA) & -+ SR_ST_WIP)) -+ return 0; -+ break; -+ case BCM47XXSFLASH_TYPE_ATMEL: -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_STATUS); -+ if (b47s->cc_read(b47s, BCMA_CC_FLASHDATA) & -+ SR_AT_READY) -+ return 0; -+ break; -+ } -+ -+ cpu_relax(); -+ udelay(1); -+ } while (!time_after_eq(jiffies, deadline)); -+ -+ pr_err("Timeout waiting for flash to be ready!\n"); -+ -+ return -EBUSY; -+} -+ -+/************************************************** -+ * MTD ops -+ **************************************************/ -+ - static int bcm47xxsflash_read(struct mtd_info *mtd, loff_t from, size_t len, - size_t *retlen, u_char *buf) - { -@@ -97,6 +149,9 @@ static int bcm47xxsflash_bcma_probe(stru - goto err_dev_reg; - } - -+ if (bcm47xxsflash_poll(b47s, HZ / 10)) -+ pr_warn("Serial flash busy\n"); -+ - return 0; - - err_dev_reg: diff --git a/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch b/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch deleted file mode 100644 index 3446a9f..0000000 --- a/target/linux/brcm47xx/patches-3.10/052-mtd_bcm47xxsflash_implement_erasing_support.patch +++ /dev/null @@ -1,74 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Subject: [PATCH] mtd: bcm47xxsflash: implement erasing support -Date: Tue, 21 May 2013 21:03:46 +0200 - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> ---- -This has been succesfully tested on BCM4706. ---- - drivers/mtd/devices/bcm47xxsflash.c | 43 +++++++++++++++++++++++++++++++++-- - 1 file changed, 41 insertions(+), 2 deletions(-) - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -64,6 +64,42 @@ static int bcm47xxsflash_poll(struct bcm - * MTD ops - **************************************************/ - -+static int bcm47xxsflash_erase(struct mtd_info *mtd, struct erase_info *erase) -+{ -+ struct bcm47xxsflash *b47s = mtd->priv; -+ int err; -+ -+ switch (b47s->type) { -+ case BCM47XXSFLASH_TYPE_ST: -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_WREN); -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, erase->addr); -+ /* Newer flashes have "sub-sectors" which can be erased -+ * independently with a new command: ST_SSE. The ST_SE command -+ * erases 64KB just as before. -+ */ -+ if (b47s->blocksize < (64 * 1024)) -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_SSE); -+ else -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_SE); -+ break; -+ case BCM47XXSFLASH_TYPE_ATMEL: -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, erase->addr << 1); -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_PAGE_ERASE); -+ break; -+ } -+ -+ err = bcm47xxsflash_poll(b47s, HZ); -+ if (err) -+ erase->state = MTD_ERASE_FAILED; -+ else -+ erase->state = MTD_ERASE_DONE; -+ -+ if (erase->callback) -+ erase->callback(erase); -+ -+ return err; -+} -+ - static int bcm47xxsflash_read(struct mtd_info *mtd, loff_t from, size_t len, - size_t *retlen, u_char *buf) - { -@@ -88,12 +124,15 @@ static void bcm47xxsflash_fill_mtd(struc - mtd->name = "bcm47xxsflash"; - mtd->owner = THIS_MODULE; - mtd->type = MTD_ROM; -- mtd->size = b47s->size; -- mtd->_read = bcm47xxsflash_read; - - /* TODO: implement writing support and verify/change following code */ - mtd->flags = MTD_CAP_ROM; -+ mtd->size = b47s->size; -+ mtd->erasesize = b47s->blocksize; - mtd->writebufsize = mtd->writesize = 1; -+ -+ mtd->_erase = bcm47xxsflash_erase; -+ mtd->_read = bcm47xxsflash_read; - } - - /************************************************** diff --git a/target/linux/brcm47xx/patches-3.10/053-mtd_bcm47xxsflash_writing_support.patch b/target/linux/brcm47xx/patches-3.10/053-mtd_bcm47xxsflash_writing_support.patch deleted file mode 100644 index 1938a41..0000000 --- a/target/linux/brcm47xx/patches-3.10/053-mtd_bcm47xxsflash_writing_support.patch +++ /dev/null @@ -1,160 +0,0 @@ -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Subject: [RFC][PATCH] mtd: bcm47xxsflash: writing support -Date: Wed, 22 May 2013 14:39:02 +0200 - ---- - drivers/mtd/devices/bcm47xxsflash.c | 130 +++++++++++++++++++++++++++++++++-- - 1 file changed, 126 insertions(+), 4 deletions(-) - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -116,6 +116,127 @@ static int bcm47xxsflash_read(struct mtd - return len; - } - -+static int bcm47xxsflash_write_st(struct mtd_info *mtd, u32 offset, size_t len, -+ const u_char *buf) -+{ -+ struct bcm47xxsflash *b47s = mtd->priv; -+ int written = 0; -+ -+ /* Enable writes */ -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_WREN); -+ -+ /* Write first byte */ -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, offset); -+ b47s->cc_write(b47s, BCMA_CC_FLASHDATA, *buf++); -+ -+ /* Program page */ -+ if (b47s->bcma_cc->core->id.rev < 20) { -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_PP); -+ return 1; /* 1B written */ -+ } -+ -+ /* Program page and set CSA (on newer chips we can continue writing) */ -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_CSA | OPCODE_ST_PP); -+ offset++; -+ len--; -+ written++; -+ -+ while (len > 0) { -+ /* Page boundary, another function call is needed */ -+ if ((offset & 0xFF) == 0) -+ break; -+ -+ bcm47xxsflash_cmd(b47s, OPCODE_ST_CSA | *buf++); -+ offset++; -+ len--; -+ written++; -+ } -+ -+ /* All done, drop CSA & poll */ -+ b47s->cc_write(b47s, BCMA_CC_FLASHCTL, 0); -+ udelay(1); -+ if (bcm47xxsflash_poll(b47s, HZ / 10)) -+ pr_err("Flash rejected dropping CSA\n"); -+ -+ return written; -+} -+ -+static int bcm47xxsflash_write_at(struct mtd_info *mtd, u32 offset, size_t len, -+ const u_char *buf) -+{ -+ struct bcm47xxsflash *b47s = mtd->priv; -+ u32 mask = b47s->blocksize - 1; -+ u32 page = (offset & ~mask) << 1; -+ u32 byte = offset & mask; -+ int written = 0; -+ -+ /* If we don't overwrite whole page, read it to the buffer first */ -+ if (byte || (len < b47s->blocksize)) { -+ int err; -+ -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, page); -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_BUF1_LOAD); -+ /* 250 us for AT45DB321B */ -+ err = bcm47xxsflash_poll(b47s, HZ / 1000); -+ if (err) { -+ pr_err("Timeout reading page 0x%X info buffer\n", page); -+ return err; -+ } -+ } -+ -+ /* Change buffer content with our data */ -+ while (len > 0) { -+ /* Page boundary, another function call is needed */ -+ if (byte == b47s->blocksize) -+ break; -+ -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, byte++); -+ b47s->cc_write(b47s, BCMA_CC_FLASHDATA, *buf++); -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_BUF1_WRITE); -+ len--; -+ written++; -+ } -+ -+ /* Program page with the buffer content */ -+ b47s->cc_write(b47s, BCMA_CC_FLASHADDR, page); -+ bcm47xxsflash_cmd(b47s, OPCODE_AT_BUF1_PROGRAM); -+ -+ return written; -+} -+ -+static int bcm47xxsflash_write(struct mtd_info *mtd, loff_t to, size_t len, -+ size_t *retlen, const u_char *buf) -+{ -+ struct bcm47xxsflash *b47s = mtd->priv; -+ int written; -+ -+ /* Writing functions can return without writing all passed data, for -+ * example when the hardware is too old or when we git page boundary. -+ */ -+ while (len > 0) { -+ switch (b47s->type) { -+ case BCM47XXSFLASH_TYPE_ST: -+ written = bcm47xxsflash_write_st(mtd, to, len, buf); -+ break; -+ case BCM47XXSFLASH_TYPE_ATMEL: -+ written = bcm47xxsflash_write_at(mtd, to, len, buf); -+ break; -+ default: -+ BUG_ON(1); -+ } -+ if (written < 0) { -+ pr_err("Error writing at offset 0x%llX\n", to); -+ return written; -+ } -+ to += (loff_t)written; -+ len -= written; -+ *retlen += written; -+ buf += written; -+ } -+ -+ return 0; -+} -+ - static void bcm47xxsflash_fill_mtd(struct bcm47xxsflash *b47s) - { - struct mtd_info *mtd = &b47s->mtd; -@@ -123,16 +244,17 @@ static void bcm47xxsflash_fill_mtd(struc - mtd->priv = b47s; - mtd->name = "bcm47xxsflash"; - mtd->owner = THIS_MODULE; -- mtd->type = MTD_ROM; - -- /* TODO: implement writing support and verify/change following code */ -- mtd->flags = MTD_CAP_ROM; -+ mtd->type = MTD_NORFLASH; -+ mtd->flags = MTD_CAP_NORFLASH; - mtd->size = b47s->size; - mtd->erasesize = b47s->blocksize; -- mtd->writebufsize = mtd->writesize = 1; -+ mtd->writesize = 1; -+ mtd->writebufsize = 1; - - mtd->_erase = bcm47xxsflash_erase; - mtd->_read = bcm47xxsflash_read; -+ mtd->_write = bcm47xxsflash_write; - } - - /************************************************** diff --git a/target/linux/brcm47xx/patches-3.10/054-mtd_bcm47xxsflash_convert_kzalloc_to_avoid_invalid_access.patch b/target/linux/brcm47xx/patches-3.10/054-mtd_bcm47xxsflash_convert_kzalloc_to_avoid_invalid_access.patch deleted file mode 100644 index 3e8a44c..0000000 --- a/target/linux/brcm47xx/patches-3.10/054-mtd_bcm47xxsflash_convert_kzalloc_to_avoid_invalid_access.patch +++ /dev/null @@ -1,62 +0,0 @@ -Date: Thu, 30 May 2013 10:22:12 +0800 -From: Libo Chen <clbchenlibo.chen@huawei.com> -Subject: [PATCH RESEND 1/2] mtd: bcm47: convert kzalloc to avoid invalid access - - -mtd is just member of bcm47xxsflash, so we should free bcm47xxsflash not its member. -So I use devm_kazlloc instead of kazlloc to avoid it. - -* Changelog: - convert to devm_kzalloc - -Signed-off-by: Libo chen <libo.chen@huawei.com> -Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com> ---- - drivers/mtd/devices/bcm47xxsflash.c | 16 ++++------------ - 1 files changed, 4 insertions(+), 12 deletions(-) - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -278,11 +278,9 @@ static int bcm47xxsflash_bcma_probe(stru - struct bcm47xxsflash *b47s; - int err; - -- b47s = kzalloc(sizeof(*b47s), GFP_KERNEL); -- if (!b47s) { -- err = -ENOMEM; -- goto out; -- } -+ b47s = devm_kzalloc(&pdev->dev, sizeof(*b47s), GFP_KERNEL); -+ if (!b47s) -+ return -ENOMEM; - sflash->priv = b47s; - - b47s->bcma_cc = container_of(sflash, struct bcma_drv_cc, sflash); -@@ -307,18 +305,13 @@ static int bcm47xxsflash_bcma_probe(stru - err = mtd_device_parse_register(&b47s->mtd, probes, NULL, NULL, 0); - if (err) { - pr_err("Failed to register MTD device: %d\n", err); -- goto err_dev_reg; -+ return err; - } - - if (bcm47xxsflash_poll(b47s, HZ / 10)) - pr_warn("Serial flash busy\n"); - - return 0; -- --err_dev_reg: -- kfree(&b47s->mtd); --out: -- return err; - } - - static int bcm47xxsflash_bcma_remove(struct platform_device *pdev) -@@ -327,7 +320,6 @@ static int bcm47xxsflash_bcma_remove(str - struct bcm47xxsflash *b47s = sflash->priv; - - mtd_device_unregister(&b47s->mtd); -- kfree(b47s); - - return 0; - } diff --git a/target/linux/brcm47xx/patches-3.10/055-mtd_bcm47xxsflash_convert_to_module_platform_driver.patch b/target/linux/brcm47xx/patches-3.10/055-mtd_bcm47xxsflash_convert_to_module_platform_driver.patch deleted file mode 100644 index 5ef087b..0000000 --- a/target/linux/brcm47xx/patches-3.10/055-mtd_bcm47xxsflash_convert_to_module_platform_driver.patch +++ /dev/null @@ -1,39 +0,0 @@ -Date: Thu, 30 May 2013 10:22:16 +0800 -From: Libo Chen <clbchenlibo.chen@huawei.com> -Subject: [PATCH RESEND 2/2] mtd: bcm47: convert to module_platform_driver - instead of init/exit - -convert to module_platform_driver instead of init/exit - -Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com> -Signed-off-by: Libo chen <libo.chen@huawei.com> ---- - drivers/mtd/devices/bcm47xxsflash.c | 20 +------------------- - 1 files changed, 1 insertions(+), 19 deletions(-) - ---- a/drivers/mtd/devices/bcm47xxsflash.c -+++ b/drivers/mtd/devices/bcm47xxsflash.c -@@ -337,22 +337,4 @@ static struct platform_driver bcma_sflas - * Init - **************************************************/ - --static int __init bcm47xxsflash_init(void) --{ -- int err; -- -- err = platform_driver_register(&bcma_sflash_driver); -- if (err) -- pr_err("Failed to register BCMA serial flash driver: %d\n", -- err); -- -- return err; --} -- --static void __exit bcm47xxsflash_exit(void) --{ -- platform_driver_unregister(&bcma_sflash_driver); --} -- --module_init(bcm47xxsflash_init); --module_exit(bcm47xxsflash_exit); -+module_platform_driver(bcma_sflash_driver); diff --git a/target/linux/brcm47xx/patches-3.10/070-MIPS-BCM47XX-add-board-detection.patch b/target/linux/brcm47xx/patches-3.10/070-MIPS-BCM47XX-add-board-detection.patch deleted file mode 100644 index ae519b6..0000000 --- a/target/linux/brcm47xx/patches-3.10/070-MIPS-BCM47XX-add-board-detection.patch +++ /dev/null @@ -1,469 +0,0 @@ -commit 74370cf83baefceb83f5f4b7ff5c8e19e7056632 -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed Sep 18 13:29:57 2013 +0200 - - MIPS: BCM47XX: Add board detection - - Detect on which board this code is running based on some nvram - settings. This is needed to start board specific workarounds and - configure the leds and buttons which are on different gpios on every board. - - This patches add some boards we have seen, but there are many more. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - Cc: linux-mips@linux-mips.org - Patchwork: https://patchwork.linux-mips.org/patch/5840 - Patchwork: https://patchwork.linux-mips.org/patch/5855/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -4,4 +4,5 @@ - # - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o -+obj-y += board.o - obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o ---- /dev/null -+++ b/arch/mips/bcm47xx/board.c -@@ -0,0 +1,309 @@ -+#include <linux/export.h> -+#include <linux/string.h> -+#include <bcm47xx_board.h> -+#include <bcm47xx_nvram.h> -+ -+struct bcm47xx_board_type { -+ const enum bcm47xx_board board; -+ const char *name; -+}; -+ -+struct bcm47xx_board_type_list1 { -+ struct bcm47xx_board_type board; -+ const char *value1; -+}; -+ -+struct bcm47xx_board_type_list2 { -+ struct bcm47xx_board_type board; -+ const char *value1; -+ const char *value2; -+}; -+ -+struct bcm47xx_board_type_list3 { -+ struct bcm47xx_board_type board; -+ const char *value1; -+ const char *value2; -+ const char *value3; -+}; -+ -+struct bcm47xx_board_store { -+ enum bcm47xx_board board; -+ char name[BCM47XX_BOARD_MAX_NAME]; -+}; -+ -+/* model_name */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_model_name[] __initconst = { -+ {{BCM47XX_BOARD_DLINK_DIR130, "D-Link DIR-130"}, "DIR-130"}, -+ {{BCM47XX_BOARD_DLINK_DIR330, "D-Link DIR-330"}, "DIR-330"}, -+ { {0}, 0}, -+}; -+ -+/* model_no */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_model_no[] __initconst = { -+ {{BCM47XX_BOARD_ASUS_WL700GE, "Asus WL700"}, "WL700"}, -+ { {0}, 0}, -+}; -+ -+/* machine_name */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_machine_name[] __initconst = { -+ {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "WRTSL54GS"}, -+ { {0}, 0}, -+}; -+ -+/* hardware_version */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_hardware_version[] __initconst = { -+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-"}, -+ {{BCM47XX_BOARD_ASUS_WL320GE, "Asus WL320GE"}, "WL320G-"}, -+ {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-"}, -+ {{BCM47XX_BOARD_ASUS_WL500GD, "Asus WL500GD"}, "WL500gd-"}, -+ {{BCM47XX_BOARD_ASUS_WL500GPV1, "Asus WL500GP V1"}, "WL500gp-"}, -+ {{BCM47XX_BOARD_ASUS_WL500GPV2, "Asus WL500GP V2"}, "WL500GPV2-"}, -+ {{BCM47XX_BOARD_ASUS_WL500W, "Asus WL500W"}, "WL500gW-"}, -+ {{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-"}, -+ {{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-"}, -+ {{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301"}, -+ { {0}, 0}, -+}; -+ -+/* productid */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_productid[] __initconst = { -+ {{BCM47XX_BOARD_ASUS_RTAC66U, "Asus RT-AC66U"}, "RT-AC66U"}, -+ {{BCM47XX_BOARD_ASUS_RTN10, "Asus RT-N10"}, "RT-N10"}, -+ {{BCM47XX_BOARD_ASUS_RTN10D, "Asus RT-N10D"}, "RT-N10D"}, -+ {{BCM47XX_BOARD_ASUS_RTN10U, "Asus RT-N10U"}, "RT-N10U"}, -+ {{BCM47XX_BOARD_ASUS_RTN12, "Asus RT-N12"}, "RT-N12"}, -+ {{BCM47XX_BOARD_ASUS_RTN12B1, "Asus RT-N12B1"}, "RT-N12B1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12C1, "Asus RT-N12C1"}, "RT-N12C1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12D1, "Asus RT-N12D1"}, "RT-N12D1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12HP, "Asus RT-N12HP"}, "RT-N12HP"}, -+ {{BCM47XX_BOARD_ASUS_RTN15U, "Asus RT-N15U"}, "RT-N15U"}, -+ {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16"}, -+ {{BCM47XX_BOARD_ASUS_RTN53, "Asus RT-N53"}, "RT-N53"}, -+ {{BCM47XX_BOARD_ASUS_RTN66U, "Asus RT-N66U"}, "RT-N66U"}, -+ {{BCM47XX_BOARD_ASUS_WL300G, "Asus WL300G"}, "WL300g"}, -+ {{BCM47XX_BOARD_ASUS_WLHDD, "Asus WLHDD"}, "WLHDD"}, -+ { {0}, 0}, -+}; -+ -+/* ModelId */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_ModelId[] __initconst = { -+ {{BCM47XX_BOARD_DELL_TM2300, "Dell WX-5565"}, "WX-5565"}, -+ {{BCM47XX_BOARD_MOTOROLA_WE800G, "Motorola WE800G"}, "WE800G"}, -+ {{BCM47XX_BOARD_MOTOROLA_WR850GP, "Motorola WR850GP"}, "WR850GP"}, -+ {{BCM47XX_BOARD_MOTOROLA_WR850GV2V3, "Motorola WR850G"}, "WR850G"}, -+ { {0}, 0}, -+}; -+ -+/* melco_id or buf1falo_id */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_melco_id[] __initconst = { -+ {{BCM47XX_BOARD_BUFFALO_WBR2_G54, "Buffalo WBR2-G54"}, "29bb0332"}, -+ {{BCM47XX_BOARD_BUFFALO_WHR2_A54G54, "Buffalo WHR2-A54G54"}, "290441dd"}, -+ {{BCM47XX_BOARD_BUFFALO_WHR_G125, "Buffalo WHR-G125"}, "32093"}, -+ {{BCM47XX_BOARD_BUFFALO_WHR_G54S, "Buffalo WHR-G54S"}, "30182"}, -+ {{BCM47XX_BOARD_BUFFALO_WHR_HP_G54, "Buffalo WHR-HP-G54"}, "30189"}, -+ {{BCM47XX_BOARD_BUFFALO_WLA2_G54L, "Buffalo WLA2-G54L"}, "29129"}, -+ {{BCM47XX_BOARD_BUFFALO_WZR_G300N, "Buffalo WZR-G300N"}, "31120"}, -+ {{BCM47XX_BOARD_BUFFALO_WZR_RS_G54, "Buffalo WZR-RS-G54"}, "30083"}, -+ {{BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP, "Buffalo WZR-RS-G54HP"}, "30103"}, -+ { {0}, 0}, -+}; -+ -+/* boot_hw_model, boot_hw_ver */ -+static const -+struct bcm47xx_board_type_list2 bcm47xx_board_list_boot_hw[] __initconst = { -+ /* like WRT160N v3.0 */ -+ {{BCM47XX_BOARD_CISCO_M10V1, "Cisco M10"}, "M10", "1.0"}, -+ /* like WRT310N v2.0 */ -+ {{BCM47XX_BOARD_CISCO_M20V1, "Cisco M20"}, "M20", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E900V1, "Linksys E900 V1"}, "E900", "1.0"}, -+ /* like WRT160N v3.0 */ -+ {{BCM47XX_BOARD_LINKSYS_E1000V1, "Linksys E1000 V1"}, "E100", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E1000V2, "Linksys E1000 V2"}, "E1000", "2.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E1000V21, "Linksys E1000 V2.1"}, "E1000", "2.1"}, -+ {{BCM47XX_BOARD_LINKSYS_E1200V2, "Linksys E1200 V2"}, "E1200", "2.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E2000V1, "Linksys E2000 V1"}, "Linksys E2000", "1.0"}, -+ /* like WRT610N v2.0 */ -+ {{BCM47XX_BOARD_LINKSYS_E3000V1, "Linksys E3000 V1"}, "E300", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E3200V1, "Linksys E3200 V1"}, "E3200", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_E4200V1, "Linksys E4200 V1"}, "E4200", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT150NV11, "Linksys WRT150N V1.1"}, "WRT150N", "1.1"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT150NV1, "Linksys WRT150N V1"}, "WRT150N", "1"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT160NV1, "Linksys WRT160N V1"}, "WRT160N", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT160NV3, "Linksys WRT160N V3"}, "WRT160N", "3.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT300NV11, "Linksys WRT300N V1.1"}, "WRT300N", "1.1"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT310NV1, "Linksys WRT310N V1"}, "WRT310N", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT310NV2, "Linksys WRT310N V2"}, "WRT310N", "2.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G3GV2, "Linksys WRT54G3GV2-VF"}, "WRT54G3GV2-VF", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT610NV1, "Linksys WRT610N V1"}, "WRT610N", "1.0"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT610NV2, "Linksys WRT610N V2"}, "WRT610N", "2.0"}, -+ { {0}, 0}, -+}; -+ -+/* board_id */ -+static const -+struct bcm47xx_board_type_list1 bcm47xx_board_list_board_id[] __initconst = { -+ {{BCM47XX_BOARD_NETGEAR_WGR614V8, "Netgear WGR614 V8"}, "U12H072T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WGR614V9, "Netgear WGR614 V9"}, "U12H094T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR3300, "Netgear WNDR3300"}, "U12H093T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR3400V1, "Netgear WNDR3400 V1"}, "U12H155T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR3400V2, "Netgear WNDR3400 V2"}, "U12H187T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR3400VCNA, "Netgear WNDR3400 Vcna"}, "U12H155T01_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR3700V3, "Netgear WNDR3700 V3"}, "U12H194T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR4000, "Netgear WNDR4000"}, "U12H181T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR4500V1, "Netgear WNDR4500 V1"}, "U12H189T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNDR4500V2, "Netgear WNDR4500 V2"}, "U12H224T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR2000, "Netgear WNR2000"}, "U12H114T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "U12H136T99_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR3500U, "Netgear WNR3500U"}, "U12H136T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR3500V2, "Netgear WNR3500 V2"}, "U12H127T00_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR3500V2VC, "Netgear WNR3500 V2vc"}, "U12H127T70_NETGEAR"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR834BV2, "Netgear WNR834B V2"}, "U12H081T00_NETGEAR"}, -+ { {0}, 0}, -+}; -+ -+/* boardtype, boardnum, boardrev */ -+static const -+struct bcm47xx_board_type_list3 bcm47xx_board_list_board[] __initconst = { -+ {{BCM47XX_BOARD_HUAWEI_E970, "Huawei E970"}, "0x048e", "0x5347", "0x11"}, -+ {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, -+ {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, -+ { {0}, 0}, -+}; -+ -+static const -+struct bcm47xx_board_type bcm47xx_board_unknown[] __initconst = { -+ {BCM47XX_BOARD_UNKNOWN, "Unknown Board"}, -+}; -+ -+static struct bcm47xx_board_store bcm47xx_board = {BCM47XX_BOARD_NO, "Unknown Board"}; -+ -+static __init const struct bcm47xx_board_type *bcm47xx_board_get_nvram(void) -+{ -+ char buf1[30]; -+ char buf2[30]; -+ char buf3[30]; -+ const struct bcm47xx_board_type_list1 *e1; -+ const struct bcm47xx_board_type_list2 *e2; -+ const struct bcm47xx_board_type_list3 *e3; -+ -+ if (bcm47xx_nvram_getenv("model_name", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_model_name; e1->value1; e1++) { -+ if (!strcmp(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("model_no", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_model_no; e1->value1; e1++) { -+ if (strstarts(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("machine_name", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_machine_name; e1->value1; e1++) { -+ if (strstarts(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_hardware_version; e1->value1; e1++) { -+ if (strstarts(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("productid", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_productid; e1->value1; e1++) { -+ if (!strcmp(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("ModelId", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_ModelId; e1->value1; e1++) { -+ if (!strcmp(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("melco_id", buf1, sizeof(buf1)) >= 0 || -+ bcm47xx_nvram_getenv("buf1falo_id", buf1, sizeof(buf1)) >= 0) { -+ /* buffalo hardware, check id for specific hardware matches */ -+ for (e1 = bcm47xx_board_list_melco_id; e1->value1; e1++) { -+ if (!strcmp(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("boot_hw_model", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boot_hw_ver", buf2, sizeof(buf2)) >= 0) { -+ for (e2 = bcm47xx_board_list_boot_hw; e2->value1; e2++) { -+ if (!strcmp(buf1, e2->value1) && -+ !strcmp(buf2, e2->value2)) -+ return &e2->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("board_id", buf1, sizeof(buf1)) >= 0) { -+ for (e1 = bcm47xx_board_list_board_id; e1->value1; e1++) { -+ if (!strcmp(buf1, e1->value1)) -+ return &e1->board; -+ } -+ } -+ -+ if (bcm47xx_nvram_getenv("boardtype", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boardnum", buf2, sizeof(buf2)) >= 0 && -+ bcm47xx_nvram_getenv("boardrev", buf3, sizeof(buf3)) >= 0) { -+ for (e3 = bcm47xx_board_list_board; e3->value1; e3++) { -+ if (!strcmp(buf1, e3->value1) && -+ !strcmp(buf2, e3->value2) && -+ !strcmp(buf3, e3->value3)) -+ return &e3->board; -+ } -+ } -+ return bcm47xx_board_unknown; -+} -+ -+void __init bcm47xx_board_detect(void) -+{ -+ int err; -+ char buf[10]; -+ const struct bcm47xx_board_type *board_detected; -+ -+ if (bcm47xx_board.board != BCM47XX_BOARD_NO) -+ return; -+ -+ /* check if the nvram is available */ -+ err = bcm47xx_nvram_getenv("boardtype", buf, sizeof(buf)); -+ -+ /* init of nvram failed, probably too early now */ -+ if (err == -ENXIO) { -+ return; -+ } -+ -+ board_detected = bcm47xx_board_get_nvram(); -+ bcm47xx_board.board = board_detected->board; -+ strlcpy(bcm47xx_board.name, board_detected->name, -+ BCM47XX_BOARD_MAX_NAME); -+} -+ -+enum bcm47xx_board bcm47xx_board_get(void) -+{ -+ return bcm47xx_board.board; -+} -+EXPORT_SYMBOL(bcm47xx_board_get); -+ -+const char *bcm47xx_board_get_name(void) -+{ -+ return bcm47xx_board.name; -+} -+EXPORT_SYMBOL(bcm47xx_board_get_name); ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -36,6 +36,7 @@ - #include <asm/time.h> - #include <bcm47xx.h> - #include <bcm47xx_nvram.h> -+#include <bcm47xx_board.h> - - union bcm47xx_bus bcm47xx_bus; - EXPORT_SYMBOL(bcm47xx_bus); -@@ -221,6 +222,7 @@ void __init plat_mem_setup(void) - _machine_restart = bcm47xx_machine_restart; - _machine_halt = bcm47xx_machine_halt; - pm_power_off = bcm47xx_machine_halt; -+ bcm47xx_board_detect(); - } - - static int __init bcm47xx_register_bus_complete(void) ---- /dev/null -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -0,0 +1,110 @@ -+#ifndef __BCM47XX_BOARD_H -+#define __BCM47XX_BOARD_H -+ -+enum bcm47xx_board { -+ BCM47XX_BOARD_ASUS_RTAC66U, -+ BCM47XX_BOARD_ASUS_RTN10, -+ BCM47XX_BOARD_ASUS_RTN10D, -+ BCM47XX_BOARD_ASUS_RTN10U, -+ BCM47XX_BOARD_ASUS_RTN12, -+ BCM47XX_BOARD_ASUS_RTN12B1, -+ BCM47XX_BOARD_ASUS_RTN12C1, -+ BCM47XX_BOARD_ASUS_RTN12D1, -+ BCM47XX_BOARD_ASUS_RTN12HP, -+ BCM47XX_BOARD_ASUS_RTN15U, -+ BCM47XX_BOARD_ASUS_RTN16, -+ BCM47XX_BOARD_ASUS_RTN53, -+ BCM47XX_BOARD_ASUS_RTN66U, -+ BCM47XX_BOARD_ASUS_WL300G, -+ BCM47XX_BOARD_ASUS_WL320GE, -+ BCM47XX_BOARD_ASUS_WL330GE, -+ BCM47XX_BOARD_ASUS_WL500GD, -+ BCM47XX_BOARD_ASUS_WL500GPV1, -+ BCM47XX_BOARD_ASUS_WL500GPV2, -+ BCM47XX_BOARD_ASUS_WL500W, -+ BCM47XX_BOARD_ASUS_WL520GC, -+ BCM47XX_BOARD_ASUS_WL520GU, -+ BCM47XX_BOARD_ASUS_WL700GE, -+ BCM47XX_BOARD_ASUS_WLHDD, -+ -+ BCM47XX_BOARD_BELKIN_F7D4301, -+ -+ BCM47XX_BOARD_BUFFALO_WBR2_G54, -+ BCM47XX_BOARD_BUFFALO_WHR2_A54G54, -+ BCM47XX_BOARD_BUFFALO_WHR_G125, -+ BCM47XX_BOARD_BUFFALO_WHR_G54S, -+ BCM47XX_BOARD_BUFFALO_WHR_HP_G54, -+ BCM47XX_BOARD_BUFFALO_WLA2_G54L, -+ BCM47XX_BOARD_BUFFALO_WZR_G300N, -+ BCM47XX_BOARD_BUFFALO_WZR_RS_G54, -+ BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP, -+ -+ BCM47XX_BOARD_CISCO_M10V1, -+ BCM47XX_BOARD_CISCO_M20V1, -+ -+ BCM47XX_BOARD_DELL_TM2300, -+ -+ BCM47XX_BOARD_DLINK_DIR130, -+ BCM47XX_BOARD_DLINK_DIR330, -+ -+ BCM47XX_BOARD_HUAWEI_E970, -+ -+ BCM47XX_BOARD_LINKSYS_E900V1, -+ BCM47XX_BOARD_LINKSYS_E1000V1, -+ BCM47XX_BOARD_LINKSYS_E1000V2, -+ BCM47XX_BOARD_LINKSYS_E1000V21, -+ BCM47XX_BOARD_LINKSYS_E1200V2, -+ BCM47XX_BOARD_LINKSYS_E2000V1, -+ BCM47XX_BOARD_LINKSYS_E3000V1, -+ BCM47XX_BOARD_LINKSYS_E3200V1, -+ BCM47XX_BOARD_LINKSYS_E4200V1, -+ BCM47XX_BOARD_LINKSYS_WRT150NV1, -+ BCM47XX_BOARD_LINKSYS_WRT150NV11, -+ BCM47XX_BOARD_LINKSYS_WRT160NV1, -+ BCM47XX_BOARD_LINKSYS_WRT160NV3, -+ BCM47XX_BOARD_LINKSYS_WRT300NV11, -+ BCM47XX_BOARD_LINKSYS_WRT310NV1, -+ BCM47XX_BOARD_LINKSYS_WRT310NV2, -+ BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -+ BCM47XX_BOARD_LINKSYS_WRT610NV1, -+ BCM47XX_BOARD_LINKSYS_WRT610NV2, -+ BCM47XX_BOARD_LINKSYS_WRTSL54GS, -+ -+ BCM47XX_BOARD_MOTOROLA_WE800G, -+ BCM47XX_BOARD_MOTOROLA_WR850GP, -+ BCM47XX_BOARD_MOTOROLA_WR850GV2V3, -+ -+ BCM47XX_BOARD_NETGEAR_WGR614V8, -+ BCM47XX_BOARD_NETGEAR_WGR614V9, -+ BCM47XX_BOARD_NETGEAR_WNDR3300, -+ BCM47XX_BOARD_NETGEAR_WNDR3400V1, -+ BCM47XX_BOARD_NETGEAR_WNDR3400V2, -+ BCM47XX_BOARD_NETGEAR_WNDR3400VCNA, -+ BCM47XX_BOARD_NETGEAR_WNDR3700V3, -+ BCM47XX_BOARD_NETGEAR_WNDR4000, -+ BCM47XX_BOARD_NETGEAR_WNDR4500V1, -+ BCM47XX_BOARD_NETGEAR_WNDR4500V2, -+ BCM47XX_BOARD_NETGEAR_WNR2000, -+ BCM47XX_BOARD_NETGEAR_WNR3500L, -+ BCM47XX_BOARD_NETGEAR_WNR3500U, -+ BCM47XX_BOARD_NETGEAR_WNR3500V2, -+ BCM47XX_BOARD_NETGEAR_WNR3500V2VC, -+ BCM47XX_BOARD_NETGEAR_WNR834BV2, -+ -+ BCM47XX_BOARD_PHICOMM_M1, -+ -+ BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE, -+ -+ BCM47XX_BOARD_ZTE_H218N, -+ -+ BCM47XX_BOARD_UNKNOWN, -+ BCM47XX_BOARD_NO, -+}; -+ -+#define BCM47XX_BOARD_MAX_NAME 30 -+ -+void bcm47xx_board_detect(void); -+enum bcm47xx_board bcm47xx_board_get(void); -+const char *bcm47xx_board_get_name(void); -+ -+#endif /* __BCM47XX_BOARD_H */ diff --git a/target/linux/brcm47xx/patches-3.10/071-MIPS-BCM47XX-print-board-name-in-proc-cpuinfo.patch b/target/linux/brcm47xx/patches-3.10/071-MIPS-BCM47XX-print-board-name-in-proc-cpuinfo.patch deleted file mode 100644 index c746279..0000000 --- a/target/linux/brcm47xx/patches-3.10/071-MIPS-BCM47XX-print-board-name-in-proc-cpuinfo.patch +++ /dev/null @@ -1,55 +0,0 @@ -commit 7ad3b82f9d80ef8919dcfdfe7561e1a83e09c6bd -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed Sep 18 13:29:58 2013 +0200 - - MIPS: BCM47XX: Print board name in /proc/cpuinfo - - Do not print the constant system type "Broadcom BCM47XX" but print the - name of the actual SoC in use and the detected board. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - Cc: linux-mips@linux-mips.org - Patchwork: https://patchwork.linux-mips.org/patch/5839/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -32,12 +32,37 @@ - #include <asm/bootinfo.h> - #include <asm/fw/cfe/cfe_api.h> - #include <asm/fw/cfe/cfe_error.h> -+#include <bcm47xx.h> -+#include <bcm47xx_board.h> - - static int cfe_cons_handle; - -+static u16 get_chip_id(void) -+{ -+ switch (bcm47xx_bus_type) { -+#ifdef CONFIG_BCM47XX_SSB -+ case BCM47XX_BUS_TYPE_SSB: -+ return bcm47xx_bus.ssb.chip_id; -+#endif -+#ifdef CONFIG_BCM47XX_BCMA -+ case BCM47XX_BUS_TYPE_BCMA: -+ return bcm47xx_bus.bcma.bus.chipinfo.id; -+#endif -+ } -+ return 0; -+} -+ - const char *get_system_type(void) - { -- return "Broadcom BCM47XX"; -+ static char buf[50]; -+ u16 chip_id = get_chip_id(); -+ -+ snprintf(buf, sizeof(buf), -+ (chip_id > 0x9999) ? "Broadcom BCM%d (%s)" : -+ "Broadcom BCM%04X (%s)", -+ chip_id, bcm47xx_board_get_name()); -+ -+ return buf; - } - - void prom_putchar(char c) diff --git a/target/linux/brcm47xx/patches-3.10/072-MIPS-BCM47XX-only-print-SoC-name-in-system-type-in-c.patch b/target/linux/brcm47xx/patches-3.10/072-MIPS-BCM47XX-only-print-SoC-name-in-system-type-in-c.patch deleted file mode 100644 index 4dcd380..0000000 --- a/target/linux/brcm47xx/patches-3.10/072-MIPS-BCM47XX-only-print-SoC-name-in-system-type-in-c.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 17e0ca5d6e08a83eed8dada75af4c0107f162051 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Thu, 19 Sep 2013 23:40:09 +0200 -Subject: [PATCH 018/110] MIPS: BCM47XX: only print SoC name in system type in - cpuinfo - -Recently the output of "system type" in /proc/cpuinfo was changed to -Broadcom BCM4730 (Some sample board), but it is better to just print -the SoC name in the "system type" entry. The board name will be added -in the machine entry later. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/5865/ ---- - arch/mips/bcm47xx/prom.c | 31 ++++++++------------------ - arch/mips/bcm47xx/setup.c | 2 ++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx.h | 2 ++ - 3 files changed, 13 insertions(+), 22 deletions(-) - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -37,32 +37,19 @@ - - static int cfe_cons_handle; - --static u16 get_chip_id(void) --{ -- switch (bcm47xx_bus_type) { --#ifdef CONFIG_BCM47XX_SSB -- case BCM47XX_BUS_TYPE_SSB: -- return bcm47xx_bus.ssb.chip_id; --#endif --#ifdef CONFIG_BCM47XX_BCMA -- case BCM47XX_BUS_TYPE_BCMA: -- return bcm47xx_bus.bcma.bus.chipinfo.id; --#endif -- } -- return 0; --} -+static char bcm47xx_system_type[20] = "Broadcom BCM47XX"; - - const char *get_system_type(void) - { -- static char buf[50]; -- u16 chip_id = get_chip_id(); -- -- snprintf(buf, sizeof(buf), -- (chip_id > 0x9999) ? "Broadcom BCM%d (%s)" : -- "Broadcom BCM%04X (%s)", -- chip_id, bcm47xx_board_get_name()); -+ return bcm47xx_system_type; -+} - -- return buf; -+__init void bcm47xx_set_system_type(u16 chip_id) -+{ -+ snprintf(bcm47xx_system_type, sizeof(bcm47xx_system_type), -+ (chip_id > 0x9999) ? "Broadcom BCM%d" : -+ "Broadcom BCM%04X", -+ chip_id); - } - - void prom_putchar(char c) ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -210,12 +210,14 @@ void __init plat_mem_setup(void) - #ifdef CONFIG_BCM47XX_BCMA - bcm47xx_bus_type = BCM47XX_BUS_TYPE_BCMA; - bcm47xx_register_bcma(); -+ bcm47xx_set_system_type(bcm47xx_bus.bcma.bus.chipinfo.id); - #endif - } else { - printk(KERN_INFO "bcm47xx: using ssb bus\n"); - #ifdef CONFIG_BCM47XX_SSB - bcm47xx_bus_type = BCM47XX_BUS_TYPE_SSB; - bcm47xx_register_ssb(); -+ bcm47xx_set_system_type(bcm47xx_bus.ssb.chip_id); - #endif - } - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h -@@ -56,4 +56,6 @@ void bcm47xx_fill_bcma_boardinfo(struct - const char *prefix); - #endif - -+void bcm47xx_set_system_type(u16 chip_id); -+ - #endif /* __ASM_BCM47XX_H */ diff --git a/target/linux/brcm47xx/patches-3.10/073-MIPS-BCM47XX-print-board-name-in-machine-entry-in-cp.patch b/target/linux/brcm47xx/patches-3.10/073-MIPS-BCM47XX-print-board-name-in-machine-entry-in-cp.patch deleted file mode 100644 index 8a78642..0000000 --- a/target/linux/brcm47xx/patches-3.10/073-MIPS-BCM47XX-print-board-name-in-machine-entry-in-cp.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 6d683038f2155bf0d6f486a1f11a10bbc455da8a Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Thu, 19 Sep 2013 23:40:10 +0200 -Subject: [PATCH 019/110] MIPS: BCM47XX: print board name in machine entry in - cpuinfo - -This will add the board name to the machine entry in /proc/cpuinfo. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/5864/ ---- - arch/mips/bcm47xx/setup.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -32,6 +32,7 @@ - #include <linux/ssb/ssb_embedded.h> - #include <linux/bcma/bcma_soc.h> - #include <asm/bootinfo.h> -+#include <asm/prom.h> - #include <asm/reboot.h> - #include <asm/time.h> - #include <bcm47xx.h> -@@ -225,6 +226,7 @@ void __init plat_mem_setup(void) - _machine_halt = bcm47xx_machine_halt; - pm_power_off = bcm47xx_machine_halt; - bcm47xx_board_detect(); -+ mips_set_machine_name(bcm47xx_board_get_name()); - } - - static int __init bcm47xx_register_bus_complete(void) diff --git a/target/linux/brcm47xx/patches-3.10/075-MIPS-BCM47XX-fix-detection-for-some-boards.patch b/target/linux/brcm47xx/patches-3.10/075-MIPS-BCM47XX-fix-detection-for-some-boards.patch deleted file mode 100644 index cfa45bc..0000000 --- a/target/linux/brcm47xx/patches-3.10/075-MIPS-BCM47XX-fix-detection-for-some-boards.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 255842a25bf36b7ba585e6cf81d856fa9df66cf2 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 3 Jan 2014 20:41:58 +0100 -Subject: [PATCH] MIPS: BCM47XX: fix detection for some boards - -When a nvram reset was performed from CFE, it sometimes does not -contain the productid value in nvram, but it still contains -hardware_version. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/board.c | 13 +++++++------ - 1 file changed, 7 insertions(+), 6 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -56,6 +56,12 @@ struct bcm47xx_board_type_list1 bcm47xx_ - /* hardware_version */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_hardware_version[] __initconst = { -+ {{BCM47XX_BOARD_ASUS_RTN10U, "Asus RT-N10U"}, "RTN10U"}, -+ {{BCM47XX_BOARD_ASUS_RTN12, "Asus RT-N12"}, "RT-N12"}, -+ {{BCM47XX_BOARD_ASUS_RTN12B1, "Asus RT-N12B1"}, "RTN12B1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12C1, "Asus RT-N12C1"}, "RTN12C1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12D1, "Asus RT-N12D1"}, "RTN12D1"}, -+ {{BCM47XX_BOARD_ASUS_RTN12HP, "Asus RT-N12HP"}, "RTN12HP"}, - {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16-"}, - {{BCM47XX_BOARD_ASUS_WL320GE, "Asus WL320GE"}, "WL320G-"}, - {{BCM47XX_BOARD_ASUS_WL330GE, "Asus WL330GE"}, "WL330GE-"}, -@@ -75,12 +81,6 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_ASUS_RTAC66U, "Asus RT-AC66U"}, "RT-AC66U"}, - {{BCM47XX_BOARD_ASUS_RTN10, "Asus RT-N10"}, "RT-N10"}, - {{BCM47XX_BOARD_ASUS_RTN10D, "Asus RT-N10D"}, "RT-N10D"}, -- {{BCM47XX_BOARD_ASUS_RTN10U, "Asus RT-N10U"}, "RT-N10U"}, -- {{BCM47XX_BOARD_ASUS_RTN12, "Asus RT-N12"}, "RT-N12"}, -- {{BCM47XX_BOARD_ASUS_RTN12B1, "Asus RT-N12B1"}, "RT-N12B1"}, -- {{BCM47XX_BOARD_ASUS_RTN12C1, "Asus RT-N12C1"}, "RT-N12C1"}, -- {{BCM47XX_BOARD_ASUS_RTN12D1, "Asus RT-N12D1"}, "RT-N12D1"}, -- {{BCM47XX_BOARD_ASUS_RTN12HP, "Asus RT-N12HP"}, "RT-N12HP"}, - {{BCM47XX_BOARD_ASUS_RTN15U, "Asus RT-N15U"}, "RT-N15U"}, - {{BCM47XX_BOARD_ASUS_RTN16, "Asus RT-N16"}, "RT-N16"}, - {{BCM47XX_BOARD_ASUS_RTN53, "Asus RT-N53"}, "RT-N53"}, -@@ -174,6 +174,7 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_HUAWEI_E970, "Huawei E970"}, "0x048e", "0x5347", "0x11"}, - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, -+ {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, - { {0}, 0}, - }; - diff --git a/target/linux/brcm47xx/patches-3.10/076-MIPS-BCM47XX-add-board-detection-for-Linksys-WRT54GS.patch b/target/linux/brcm47xx/patches-3.10/076-MIPS-BCM47XX-add-board-detection-for-Linksys-WRT54GS.patch deleted file mode 100644 index 098cf11..0000000 --- a/target/linux/brcm47xx/patches-3.10/076-MIPS-BCM47XX-add-board-detection-for-Linksys-WRT54GS.patch +++ /dev/null @@ -1,34 +0,0 @@ -From a2da7b7a2cb8319b6383e93d99905cb027252584 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 3 Jan 2014 20:41:59 +0100 -Subject: [PATCH] MIPS: BCM47XX: add board detection for Linksys WRT54GS V1 - -This adds board detection for Linksys WRT54GS V1. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/board.c | 1 + - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 1 + - 2 files changed, 2 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -175,6 +175,7 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54GSV1, "Linksys WRT54GS V1"}, "0x0101", "42", "0x10"}, - { {0}, 0}, - }; - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -66,6 +66,7 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT310NV1, - BCM47XX_BOARD_LINKSYS_WRT310NV2, - BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -+ BCM47XX_BOARD_LINKSYS_WRT54GSV1, - BCM47XX_BOARD_LINKSYS_WRT610NV1, - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, diff --git a/target/linux/brcm47xx/patches-3.10/077-MIPS-BCM47XX-fix-sparse-warnings-in-board.c.patch b/target/linux/brcm47xx/patches-3.10/077-MIPS-BCM47XX-fix-sparse-warnings-in-board.c.patch deleted file mode 100644 index b7ce90a..0000000 --- a/target/linux/brcm47xx/patches-3.10/077-MIPS-BCM47XX-fix-sparse-warnings-in-board.c.patch +++ /dev/null @@ -1,113 +0,0 @@ -From ab76ce5c01293f518db823c7089d52586fc1d899 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 3 Jan 2014 20:42:00 +0100 -Subject: [PATCH] MIPS: BCM47XX: fix sparse warnings in board.c - -This fixes the following sparse warnings: -arch/mips/bcm47xx/board.c:39:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:46:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:53:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:78:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:99:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:109:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:124:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:155:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:177:16: warning: Using plain integer as NULL pointer -arch/mips/bcm47xx/board.c:189:16: warning: Using plain integer as NULL pointer - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/board.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -36,21 +36,21 @@ static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_model_name[] __initconst = { - {{BCM47XX_BOARD_DLINK_DIR130, "D-Link DIR-130"}, "DIR-130"}, - {{BCM47XX_BOARD_DLINK_DIR330, "D-Link DIR-330"}, "DIR-330"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* model_no */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_model_no[] __initconst = { - {{BCM47XX_BOARD_ASUS_WL700GE, "Asus WL700"}, "WL700"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* machine_name */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_machine_name[] __initconst = { - {{BCM47XX_BOARD_LINKSYS_WRTSL54GS, "Linksys WRTSL54GS"}, "WRTSL54GS"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* hardware_version */ -@@ -72,7 +72,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-"}, - {{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-"}, - {{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* productid */ -@@ -87,7 +87,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_ASUS_RTN66U, "Asus RT-N66U"}, "RT-N66U"}, - {{BCM47XX_BOARD_ASUS_WL300G, "Asus WL300G"}, "WL300g"}, - {{BCM47XX_BOARD_ASUS_WLHDD, "Asus WLHDD"}, "WLHDD"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* ModelId */ -@@ -97,7 +97,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_MOTOROLA_WE800G, "Motorola WE800G"}, "WE800G"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GP, "Motorola WR850GP"}, "WR850GP"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GV2V3, "Motorola WR850G"}, "WR850G"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* melco_id or buf1falo_id */ -@@ -112,7 +112,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_BUFFALO_WZR_G300N, "Buffalo WZR-G300N"}, "31120"}, - {{BCM47XX_BOARD_BUFFALO_WZR_RS_G54, "Buffalo WZR-RS-G54"}, "30083"}, - {{BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP, "Buffalo WZR-RS-G54HP"}, "30103"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* boot_hw_model, boot_hw_ver */ -@@ -143,7 +143,7 @@ struct bcm47xx_board_type_list2 bcm47xx_ - {{BCM47XX_BOARD_LINKSYS_WRT54G3GV2, "Linksys WRT54G3GV2-VF"}, "WRT54G3GV2-VF", "1.0"}, - {{BCM47XX_BOARD_LINKSYS_WRT610NV1, "Linksys WRT610N V1"}, "WRT610N", "1.0"}, - {{BCM47XX_BOARD_LINKSYS_WRT610NV2, "Linksys WRT610N V2"}, "WRT610N", "2.0"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* board_id */ -@@ -165,7 +165,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_NETGEAR_WNR3500V2, "Netgear WNR3500 V2"}, "U12H127T00_NETGEAR"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500V2VC, "Netgear WNR3500 V2vc"}, "U12H127T70_NETGEAR"}, - {{BCM47XX_BOARD_NETGEAR_WNR834BV2, "Netgear WNR834B V2"}, "U12H081T00_NETGEAR"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - /* boardtype, boardnum, boardrev */ -@@ -176,7 +176,7 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, - {{BCM47XX_BOARD_LINKSYS_WRT54GSV1, "Linksys WRT54GS V1"}, "0x0101", "42", "0x10"}, -- { {0}, 0}, -+ { {0}, NULL}, - }; - - static const diff --git a/target/linux/brcm47xx/patches-3.10/080-MIPS-Add-8250-16550-serial-early-printk-driver.patch b/target/linux/brcm47xx/patches-3.10/080-MIPS-Add-8250-16550-serial-early-printk-driver.patch deleted file mode 100644 index bfbe43b..0000000 --- a/target/linux/brcm47xx/patches-3.10/080-MIPS-Add-8250-16550-serial-early-printk-driver.patch +++ /dev/null @@ -1,124 +0,0 @@ -commit 0a76092a63809a0e72e3e9552acadf42869c0293 -Author: Yoichi Yuasa <yuasa@linux-mips.org> -Date: Mon Feb 8 20:59:39 2010 +0900 - - MIPS: Add 8250/16550 serial early printk driver - - Signed-off-by: Yoichi Yuasa <yuasa@linux-mips.org> - Cc: linux-mips <linux-mips@linux-mips.org> - Patchwork: https://patchwork.linux-mips.org/patch/947/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/Kconfig.debug -+++ b/arch/mips/Kconfig.debug -@@ -20,6 +20,14 @@ config EARLY_PRINTK - doesn't cooperate with an X server. You should normally say N here, - unless you want to debug such a crash. - -+config EARLY_PRINTK_8250 -+ bool "8250/16550 and compatible serial early printk driver" -+ depends on EARLY_PRINTK -+ default n -+ help -+ If you say Y here, it will be possible to use a 8250/16550 serial -+ port as the boot console. -+ - config CMDLINE_BOOL - bool "Built-in kernel command line" - default n ---- a/arch/mips/include/asm/setup.h -+++ b/arch/mips/include/asm/setup.h -@@ -5,6 +5,14 @@ - - extern void setup_early_printk(void); - -+#ifdef CONFIG_EARLY_PRINTK_8250 -+extern void setup_8250_early_printk_port(unsigned long base, -+ unsigned int reg_shift, unsigned int timeout); -+#else -+static inline void setup_8250_early_printk_port(unsigned long base, -+ unsigned int reg_shift, unsigned int timeout) {} -+#endif -+ - extern void set_handler(unsigned long offset, void *addr, unsigned long len); - extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); - ---- a/arch/mips/kernel/Makefile -+++ b/arch/mips/kernel/Makefile -@@ -84,6 +84,7 @@ obj-$(CONFIG_GPIO_TXX9) += gpio_txx9.o - obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o crash.o - obj-$(CONFIG_CRASH_DUMP) += crash_dump.o - obj-$(CONFIG_EARLY_PRINTK) += early_printk.o -+obj-$(CONFIG_EARLY_PRINTK_8250) += early_printk_8250.o - obj-$(CONFIG_SPINLOCK_TEST) += spinlock_test.o - obj-$(CONFIG_MIPS_MACHINE) += mips_machine.o - ---- /dev/null -+++ b/arch/mips/kernel/early_printk_8250.c -@@ -0,0 +1,66 @@ -+/* -+ * 8250/16550-type serial ports prom_putchar() -+ * -+ * Copyright (C) 2010 Yoichi Yuasa <yuasa@linux-mips.org> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+#include <linux/io.h> -+#include <linux/serial_core.h> -+#include <linux/serial_reg.h> -+ -+static void __iomem *serial8250_base; -+static unsigned int serial8250_reg_shift; -+static unsigned int serial8250_tx_timeout; -+ -+void setup_8250_early_printk_port(unsigned long base, unsigned int reg_shift, -+ unsigned int timeout) -+{ -+ serial8250_base = (void __iomem *)base; -+ serial8250_reg_shift = reg_shift; -+ serial8250_tx_timeout = timeout; -+} -+ -+static inline u8 serial_in(int offset) -+{ -+ return readb(serial8250_base + (offset << serial8250_reg_shift)); -+} -+ -+static inline void serial_out(int offset, char value) -+{ -+ writeb(value, serial8250_base + (offset << serial8250_reg_shift)); -+} -+ -+void prom_putchar(char c) -+{ -+ unsigned int timeout; -+ int status, bits; -+ -+ if (!serial8250_base) -+ return; -+ -+ timeout = serial8250_tx_timeout; -+ bits = UART_LSR_TEMT | UART_LSR_THRE; -+ -+ do { -+ status = serial_in(UART_LSR); -+ -+ if (--timeout == 0) -+ break; -+ } while ((status & bits) != bits); -+ -+ if (timeout) -+ serial_out(UART_TX, c); -+} diff --git a/target/linux/brcm47xx/patches-3.10/081-MIPS-BCM47XX-Remove-CFE-support.patch b/target/linux/brcm47xx/patches-3.10/081-MIPS-BCM47XX-Remove-CFE-support.patch deleted file mode 100644 index 1537db5..0000000 --- a/target/linux/brcm47xx/patches-3.10/081-MIPS-BCM47XX-Remove-CFE-support.patch +++ /dev/null @@ -1,151 +0,0 @@ -commit 808fe9c2fa81a6b3e20fe813d5410e7fd6606efa -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sun Jul 18 15:11:26 2010 +0200 - - MIPS: BCM47XX: Remove CFE support - - bcm47xx only uses the CFE code for early print to a console, but that - is also possible with a early print serial 8250 driver. - - The CFE api init causes hangs somewhere in prom_init_cfe() on some - devices like the Buffalo WHR-HP-G54 and the Asus WL-520GU. - This was reported in https://dev.openwrt.org/ticket/4061 and - https://forum.openwrt.org/viewtopic.php?id=17063 - - This will remove all the CFE handling code from bcm47xx. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - ---- a/arch/mips/Kconfig -+++ b/arch/mips/Kconfig -@@ -112,13 +112,11 @@ config BCM47XX - select CEVT_R4K - select CSRC_R4K - select DMA_NONCOHERENT -- select FW_CFE - select HW_HAS_PCI - select IRQ_CPU - select NO_EXCEPT_FILL - select SYS_SUPPORTS_32BIT_KERNEL - select SYS_SUPPORTS_LITTLE_ENDIAN -- select SYS_HAS_EARLY_PRINTK - help - Support for BCM47XX based boards - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -30,12 +30,9 @@ - #include <linux/spinlock.h> - #include <linux/smp.h> - #include <asm/bootinfo.h> --#include <asm/fw/cfe/cfe_api.h> --#include <asm/fw/cfe/cfe_error.h> - #include <bcm47xx.h> - #include <bcm47xx_board.h> - --static int cfe_cons_handle; - - static char bcm47xx_system_type[20] = "Broadcom BCM47XX"; - -@@ -52,91 +49,6 @@ __init void bcm47xx_set_system_type(u16 - chip_id); - } - --void prom_putchar(char c) --{ -- while (cfe_write(cfe_cons_handle, &c, 1) == 0) -- ; --} -- --static __init void prom_init_cfe(void) --{ -- uint32_t cfe_ept; -- uint32_t cfe_handle; -- uint32_t cfe_eptseal; -- int argc = fw_arg0; -- char **envp = (char **) fw_arg2; -- int *prom_vec = (int *) fw_arg3; -- -- /* -- * Check if a loader was used; if NOT, the 4 arguments are -- * what CFE gives us (handle, 0, EPT and EPTSEAL) -- */ -- if (argc < 0) { -- cfe_handle = (uint32_t)argc; -- cfe_ept = (uint32_t)envp; -- cfe_eptseal = (uint32_t)prom_vec; -- } else { -- if ((int)prom_vec < 0) { -- /* -- * Old loader; all it gives us is the handle, -- * so use the "known" entrypoint and assume -- * the seal. -- */ -- cfe_handle = (uint32_t)prom_vec; -- cfe_ept = 0xBFC00500; -- cfe_eptseal = CFE_EPTSEAL; -- } else { -- /* -- * Newer loaders bundle the handle/ept/eptseal -- * Note: prom_vec is in the loader's useg -- * which is still alive in the TLB. -- */ -- cfe_handle = prom_vec[0]; -- cfe_ept = prom_vec[2]; -- cfe_eptseal = prom_vec[3]; -- } -- } -- -- if (cfe_eptseal != CFE_EPTSEAL) { -- /* too early for panic to do any good */ -- printk(KERN_ERR "CFE's entrypoint seal doesn't match."); -- while (1) ; -- } -- -- cfe_init(cfe_handle, cfe_ept); --} -- --static __init void prom_init_console(void) --{ -- /* Initialize CFE console */ -- cfe_cons_handle = cfe_getstdhandle(CFE_STDHANDLE_CONSOLE); --} -- --static __init void prom_init_cmdline(void) --{ -- static char buf[COMMAND_LINE_SIZE] __initdata; -- -- /* Get the kernel command line from CFE */ -- if (cfe_getenv("LINUX_CMDLINE", buf, COMMAND_LINE_SIZE) >= 0) { -- buf[COMMAND_LINE_SIZE - 1] = 0; -- strcpy(arcs_cmdline, buf); -- } -- -- /* Force a console handover by adding a console= argument if needed, -- * as CFE is not available anymore later in the boot process. */ -- if ((strstr(arcs_cmdline, "console=")) == NULL) { -- /* Try to read the default serial port used by CFE */ -- if ((cfe_getenv("BOOT_CONSOLE", buf, COMMAND_LINE_SIZE) < 0) -- || (strncmp("uart", buf, 4))) -- /* Default to uart0 */ -- strcpy(buf, "uart0"); -- -- /* Compute the new command line */ -- snprintf(arcs_cmdline, COMMAND_LINE_SIZE, "%s console=ttyS%c,115200", -- arcs_cmdline, buf[4]); -- } --} -- - static __init void prom_init_mem(void) - { - unsigned long mem; -@@ -184,9 +96,6 @@ static __init void prom_init_mem(void) - - void __init prom_init(void) - { -- prom_init_cfe(); -- prom_init_console(); -- prom_init_cmdline(); - prom_init_mem(); - } - diff --git a/target/linux/brcm47xx/patches-3.10/082-MIPS-BCM47XX-add-EARLY_PRINTK_8250-support.patch b/target/linux/brcm47xx/patches-3.10/082-MIPS-BCM47XX-add-EARLY_PRINTK_8250-support.patch deleted file mode 100644 index 744e359..0000000 --- a/target/linux/brcm47xx/patches-3.10/082-MIPS-BCM47XX-add-EARLY_PRINTK_8250-support.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit 22250a38f970c173acb1b3fb30e6dce1430f697b -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Thu Sep 19 22:48:35 2013 +0200 - - MIPS: BCM47XX: add EARLY_PRINTK_8250 support - - The BCM47xx SoCs have a 8250 serial compatible console at address - 0x18000300 and an other at 0x18000400. On most devices 0x18000300 is - wired to some pins on the board, we should use that. - This is the smae for the AI (bcma) and the SB (ssb) bus, this is some - offset on the chip common core. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - ---- a/arch/mips/Kconfig -+++ b/arch/mips/Kconfig -@@ -117,6 +117,8 @@ config BCM47XX - select NO_EXCEPT_FILL - select SYS_SUPPORTS_32BIT_KERNEL - select SYS_SUPPORTS_LITTLE_ENDIAN -+ select SYS_HAS_EARLY_PRINTK -+ select EARLY_PRINTK_8250 if EARLY_PRINTK - help - Support for BCM47XX based boards - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -28,6 +28,8 @@ - #include <linux/types.h> - #include <linux/kernel.h> - #include <linux/spinlock.h> -+#include <linux/ssb/ssb_driver_chipcommon.h> -+#include <linux/ssb/ssb_regs.h> - #include <linux/smp.h> - #include <asm/bootinfo.h> - #include <bcm47xx.h> -@@ -94,9 +96,16 @@ static __init void prom_init_mem(void) - add_memory_region(0, mem, BOOT_MEM_RAM); - } - -+/* -+ * This is the first serial on the chip common core, it is at this position -+ * for sb (ssb) and ai (bcma) bus. -+ */ -+#define BCM47XX_SERIAL_ADDR (SSB_ENUM_BASE + SSB_CHIPCO_UART0_DATA) -+ - void __init prom_init(void) - { - prom_init_mem(); -+ setup_8250_early_printk_port(CKSEG1ADDR(BCM47XX_SERIAL_ADDR), 0, 0); - } - - void __init prom_free_prom_memory(void) diff --git a/target/linux/brcm47xx/patches-3.10/085-MIPS-BCM47XX-Get-GPIO-pin-from-nvram-configuration.patch b/target/linux/brcm47xx/patches-3.10/085-MIPS-BCM47XX-Get-GPIO-pin-from-nvram-configuration.patch deleted file mode 100644 index a0f91a4..0000000 --- a/target/linux/brcm47xx/patches-3.10/085-MIPS-BCM47XX-Get-GPIO-pin-from-nvram-configuration.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit e49ec29e2da1fd7cdd6d966f389add031a1027a9 -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed Sep 18 13:31:15 2013 +0200 - - MIPS: BCM47XX: Get GPIO pin from nvram configuration - - The nvram contains some gpio configuration for boards. It is stored in - a gpio<number>=name format e.g. - gpio8=wps_button - gpio4=robo_reset - - This patches adds a function to parse these entries, so other driver - can use it. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - Cc: linux-mips@linux-mips.org - Patchwork: https://patchwork.linux-mips.org/patch/5841/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -190,3 +190,23 @@ int bcm47xx_nvram_getenv(char *name, cha - return -ENOENT; - } - EXPORT_SYMBOL(bcm47xx_nvram_getenv); -+ -+int bcm47xx_nvram_gpio_pin(const char *name) -+{ -+ int i, err; -+ char nvram_var[10]; -+ char buf[30]; -+ -+ for (i = 0; i < 16; i++) { -+ err = snprintf(nvram_var, sizeof(nvram_var), "gpio%i", i); -+ if (err <= 0) -+ continue; -+ err = bcm47xx_nvram_getenv(nvram_var, buf, sizeof(buf)); -+ if (err <= 0) -+ continue; -+ if (!strcmp(name, buf)) -+ return i; -+ } -+ return -ENOENT; -+} -+EXPORT_SYMBOL(bcm47xx_nvram_gpio_pin); ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_nvram.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_nvram.h -@@ -48,4 +48,6 @@ static inline void bcm47xx_nvram_parse_m - printk(KERN_WARNING "Can not parse mac address: %s\n", buf); - } - -+int bcm47xx_nvram_gpio_pin(const char *name); -+ - #endif /* __BCM47XX_NVRAM_H */ diff --git a/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch b/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch deleted file mode 100644 index ec59534..0000000 --- a/target/linux/brcm47xx/patches-3.10/090-MIPS-BCM47XX-fix-clock-detection-for-BCM5354-with-20.patch +++ /dev/null @@ -1,57 +0,0 @@ -commit 0388a0410d590a6c239c1cfaa7d49bffd4ed1101 -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed Sep 18 13:32:59 2013 +0200 - - MIPS: BCM47XX: Fix clock detection for BCM5354 with 200MHz clock - - Some BCM5354 SoCs are running at 200MHz, but it is not possible to read - the clock from a register like it is done on some other SoC in ssb and - bcma. These devices should have a clkfreq nvram configuration value set - to 200, read it and set the clock to the correct value. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - Cc: linux-mips@linux-mips.org - Patchwork: https://patchwork.linux-mips.org/patch/5842/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/time.c -+++ b/arch/mips/bcm47xx/time.c -@@ -27,10 +27,14 @@ - #include <linux/ssb/ssb.h> - #include <asm/time.h> - #include <bcm47xx.h> -+#include <bcm47xx_nvram.h> - - void __init plat_time_init(void) - { - unsigned long hz = 0; -+ u16 chip_id = 0; -+ char buf[10]; -+ int len; - - /* - * Use deterministic values for initial counter interrupt -@@ -43,15 +47,23 @@ void __init plat_time_init(void) - #ifdef CONFIG_BCM47XX_SSB - case BCM47XX_BUS_TYPE_SSB: - hz = ssb_cpu_clock(&bcm47xx_bus.ssb.mipscore) / 2; -+ chip_id = bcm47xx_bus.ssb.chip_id; - break; - #endif - #ifdef CONFIG_BCM47XX_BCMA - case BCM47XX_BUS_TYPE_BCMA: - hz = bcma_cpu_clock(&bcm47xx_bus.bcma.bus.drv_mips) / 2; -+ chip_id = bcm47xx_bus.bcma.bus.chipinfo.id; - break; - #endif - } - -+ if (chip_id == 0x5354) { -+ len = bcm47xx_nvram_getenv("clkfreq", buf, sizeof(buf)); -+ if (len >= 0 && !strncmp(buf, "200", 4)) -+ hz = 100000000; -+ } -+ - if (!hz) - hz = 100000000; - diff --git a/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch b/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch deleted file mode 100644 index 460c0e4..0000000 --- a/target/linux/brcm47xx/patches-3.10/091-MIPS-BCM47XX-fix-detected-clock-on-Asus-WL520GC-and-.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 935e93fcc022ff7be7046d2435ce6441e260abfb -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed Sep 18 13:33:00 2013 +0200 - - MIPS: BCM47XX: Fix detected clock on Asus WL520GC and WL520GU - - The Asus WL520GC and WL520GU are based on the BCM5354 and clocked at - 200MHz, but they do not have a clkfreq nvram variable set to the - correct value. This adds a workaround for these devices. - - Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> - Cc: linux-mips@linux-mips.org - Patchwork: https://patchwork.linux-mips.org/patch/5843/ - Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/time.c -+++ b/arch/mips/bcm47xx/time.c -@@ -28,6 +28,7 @@ - #include <asm/time.h> - #include <bcm47xx.h> - #include <bcm47xx_nvram.h> -+#include <bcm47xx_board.h> - - void __init plat_time_init(void) - { -@@ -35,6 +36,7 @@ void __init plat_time_init(void) - u16 chip_id = 0; - char buf[10]; - int len; -+ enum bcm47xx_board board = bcm47xx_board_get(); - - /* - * Use deterministic values for initial counter interrupt -@@ -64,6 +66,15 @@ void __init plat_time_init(void) - hz = 100000000; - } - -+ switch (board) { -+ case BCM47XX_BOARD_ASUS_WL520GC: -+ case BCM47XX_BOARD_ASUS_WL520GU: -+ hz = 100000000; -+ break; -+ default: -+ break; -+ } -+ - if (!hz) - hz = 100000000; - diff --git a/target/linux/brcm47xx/patches-3.10/095-MIPS-BCM47XX-Fix-some-very-confused-types-and-data-c.patch b/target/linux/brcm47xx/patches-3.10/095-MIPS-BCM47XX-Fix-some-very-confused-types-and-data-c.patch deleted file mode 100644 index 038e6a0..0000000 --- a/target/linux/brcm47xx/patches-3.10/095-MIPS-BCM47XX-Fix-some-very-confused-types-and-data-c.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 855094d7e46eb14c597ca09631cf95a92909982d Mon Sep 17 00:00:00 2001 -From: Ilia Mirkin <imirkin@alum.mit.edu> -Date: Fri, 6 Dec 2013 18:56:53 -0500 -Subject: [PATCH] MIPS: BCM47XX: Fix some very confused types and data - corruption - -Fix nvram_read_alpha2 copying too many bytes over the ssb_sprom -structure. Also fix the arguments of the read_macaddr, although the code -was technically not wrong before due to an extra dereference. - -Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6211/ ---- - arch/mips/bcm47xx/sprom.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - ---- a/arch/mips/bcm47xx/sprom.c -+++ b/arch/mips/bcm47xx/sprom.c -@@ -135,7 +135,7 @@ static void nvram_read_leddc(const char - } - - static void nvram_read_macaddr(const char *prefix, const char *name, -- u8 (*val)[6], bool fallback) -+ u8 val[6], bool fallback) - { - char buf[100]; - int err; -@@ -144,11 +144,11 @@ static void nvram_read_macaddr(const cha - if (err < 0) - return; - -- bcm47xx_nvram_parse_macaddr(buf, *val); -+ bcm47xx_nvram_parse_macaddr(buf, val); - } - - static void nvram_read_alpha2(const char *prefix, const char *name, -- char (*val)[2], bool fallback) -+ char val[2], bool fallback) - { - char buf[10]; - int err; -@@ -162,7 +162,7 @@ static void nvram_read_alpha2(const char - pr_warn("alpha2 is too long %s\n", buf); - return; - } -- memcpy(val, buf, sizeof(val)); -+ memcpy(val, buf, 2); - } - - static void bcm47xx_fill_sprom_r1234589(struct ssb_sprom *sprom, -@@ -181,7 +181,7 @@ static void bcm47xx_fill_sprom_r1234589( - fallback); - nvram_read_s8(prefix, NULL, "ag1", &sprom->antenna_gain.a1, 0, - fallback); -- nvram_read_alpha2(prefix, "ccode", &sprom->alpha2, fallback); -+ nvram_read_alpha2(prefix, "ccode", sprom->alpha2, fallback); - } - - static void bcm47xx_fill_sprom_r12389(struct ssb_sprom *sprom, -@@ -634,20 +634,20 @@ static void bcm47xx_fill_sprom_path_r45( - static void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, - const char *prefix, bool fallback) - { -- nvram_read_macaddr(prefix, "et0macaddr", &sprom->et0mac, fallback); -+ nvram_read_macaddr(prefix, "et0macaddr", sprom->et0mac, fallback); - nvram_read_u8(prefix, NULL, "et0mdcport", &sprom->et0mdcport, 0, - fallback); - nvram_read_u8(prefix, NULL, "et0phyaddr", &sprom->et0phyaddr, 0, - fallback); - -- nvram_read_macaddr(prefix, "et1macaddr", &sprom->et1mac, fallback); -+ nvram_read_macaddr(prefix, "et1macaddr", sprom->et1mac, fallback); - nvram_read_u8(prefix, NULL, "et1mdcport", &sprom->et1mdcport, 0, - fallback); - nvram_read_u8(prefix, NULL, "et1phyaddr", &sprom->et1phyaddr, 0, - fallback); - -- nvram_read_macaddr(prefix, "macaddr", &sprom->il0mac, fallback); -- nvram_read_macaddr(prefix, "il0macaddr", &sprom->il0mac, fallback); -+ nvram_read_macaddr(prefix, "macaddr", sprom->il0mac, fallback); -+ nvram_read_macaddr(prefix, "il0macaddr", sprom->il0mac, fallback); - } - - static void bcm47xx_fill_board_data(struct ssb_sprom *sprom, const char *prefix, diff --git a/target/linux/brcm47xx/patches-3.10/110-MIPS-BCM47XX-add-vint-irq.patch b/target/linux/brcm47xx/patches-3.10/110-MIPS-BCM47XX-add-vint-irq.patch deleted file mode 100644 index e77f5d9..0000000 --- a/target/linux/brcm47xx/patches-3.10/110-MIPS-BCM47XX-add-vint-irq.patch +++ /dev/null @@ -1,64 +0,0 @@ -From d9e8fd334d85fc8e4a2867655309a60c8de80883 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed, 20 Nov 2013 23:03:35 +0100 -Subject: [PATCH 18/18] bcm47xx: add cpu_has_vint - ---- - arch/mips/bcm47xx/Kconfig | 1 + - arch/mips/bcm47xx/irq.c | 24 ++++++++++++++++++++++++ - 2 files changed, 25 insertions(+) - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -21,6 +21,7 @@ config BCM47XX_SSB - config BCM47XX_BCMA - bool "BCMA Support for Broadcom BCM47XX" - select SYS_HAS_CPU_MIPS32_R2 -+ select CPU_MIPSR2_IRQ_VI - select BCMA - select BCMA_HOST_SOC - select BCMA_DRIVER_MIPS ---- a/arch/mips/bcm47xx/irq.c -+++ b/arch/mips/bcm47xx/irq.c -@@ -25,6 +25,7 @@ - #include <linux/types.h> - #include <linux/interrupt.h> - #include <linux/irq.h> -+#include <asm/setup.h> - #include <asm/irq_cpu.h> - #include <bcm47xx.h> - -@@ -50,6 +51,18 @@ void plat_irq_dispatch(void) - do_IRQ(6); - } - -+#define DEFINE_HWx_IRQDISPATCH(x) \ -+ static void bcm47xx_hw ## x ## _irqdispatch(void) \ -+ { \ -+ do_IRQ(x); \ -+ } -+DEFINE_HWx_IRQDISPATCH(2) -+DEFINE_HWx_IRQDISPATCH(3) -+DEFINE_HWx_IRQDISPATCH(4) -+DEFINE_HWx_IRQDISPATCH(5) -+DEFINE_HWx_IRQDISPATCH(6) -+DEFINE_HWx_IRQDISPATCH(7) -+ - void __init arch_init_irq(void) - { - #ifdef CONFIG_BCM47XX_BCMA -@@ -64,4 +77,14 @@ void __init arch_init_irq(void) - } - #endif - mips_cpu_irq_init(); -+ -+ if (cpu_has_vint) { -+ pr_info("Setting up vectored interrupts\n"); -+ set_vi_handler(2, bcm47xx_hw2_irqdispatch); -+ set_vi_handler(3, bcm47xx_hw3_irqdispatch); -+ set_vi_handler(4, bcm47xx_hw4_irqdispatch); -+ set_vi_handler(5, bcm47xx_hw5_irqdispatch); -+ set_vi_handler(6, bcm47xx_hw6_irqdispatch); -+ set_vi_handler(7, bcm47xx_hw7_irqdispatch); -+ } - } diff --git a/target/linux/brcm47xx/patches-3.10/111-MIPS-BCM47XX-add-cpu-overwrite.patch b/target/linux/brcm47xx/patches-3.10/111-MIPS-BCM47XX-add-cpu-overwrite.patch deleted file mode 100644 index 00e8217..0000000 --- a/target/linux/brcm47xx/patches-3.10/111-MIPS-BCM47XX-add-cpu-overwrite.patch +++ /dev/null @@ -1,95 +0,0 @@ -From b27da7f1ee034d32e410faf5ab32fc96424a0c62 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Wed, 20 Nov 2013 22:16:43 +0100 -Subject: [PATCH 17/18] add overwrite - ---- - .../asm/mach-bcm47xx/cpu-feature-overrides.h | 82 ++++++++++++++++++++ - 1 file changed, 82 insertions(+) - create mode 100644 arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h - ---- /dev/null -+++ b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h -@@ -0,0 +1,82 @@ -+#ifndef __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H -+#define __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H -+ -+#define cpu_has_tlb 1 -+#define cpu_has_4kex 1 -+#define cpu_has_3k_cache 0 -+#define cpu_has_4k_cache 1 -+#define cpu_has_tx39_cache 0 -+#define cpu_has_fpu 0 -+#define cpu_has_32fpr 0 -+#define cpu_has_counter 1 -+#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) -+#define cpu_has_watch 1 -+#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) -+#define cpu_has_watch 0 -+#endif -+#define cpu_has_divec 1 -+#define cpu_has_vce 0 -+#define cpu_has_cache_cdex_p 0 -+#define cpu_has_cache_cdex_s 0 -+#define cpu_has_prefetch 1 -+#define cpu_has_mcheck 1 -+#define cpu_has_ejtag 1 -+#define cpu_has_llsc 1 -+ -+/* cpu_has_mips16 */ -+#define cpu_has_mdmx 0 -+#define cpu_has_mips3d 0 -+#define cpu_has_rixi 0 -+#define cpu_has_mmips 0 -+#define cpu_has_smartmips 0 -+#define cpu_has_vtag_icache 0 -+/* cpu_has_dc_aliases */ -+#define cpu_has_ic_fills_f_dc 0 -+#define cpu_has_pindexed_dcache 0 -+#define cpu_icache_snoops_remote_store 0 -+ -+#define cpu_has_mips_2 1 -+#define cpu_has_mips_3 0 -+#define cpu_has_mips32r1 1 -+#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) -+#define cpu_has_mips32r2 1 -+#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) -+#define cpu_has_mips32r2 0 -+#endif -+#define cpu_has_mips64r1 0 -+#define cpu_has_mips64r2 0 -+ -+#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) -+#define cpu_has_dsp 1 -+#define cpu_has_dsp2 1 -+#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) -+#define cpu_has_dsp 0 -+#define cpu_has_dsp2 0 -+#endif -+#define cpu_has_mipsmt 0 -+/* cpu_has_userlocal */ -+ -+#define cpu_has_nofpuex 0 -+#define cpu_has_64bits 0 -+#define cpu_has_64bit_zero_reg 0 -+#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) -+#define cpu_has_vint 1 -+#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) -+#define cpu_has_vint 0 -+#endif -+#define cpu_has_veic 0 -+#define cpu_has_inclusive_pcaches 0 -+ -+#if defined(CONFIG_BCM47XX_BCMA) && !defined(CONFIG_BCM47XX_SSB) -+#define cpu_dcache_line_size() 32 -+#define cpu_icache_line_size() 32 -+#define cpu_has_perf_cntr_intr_bit 1 -+#elif defined(CONFIG_BCM47XX_SSB) && !defined(CONFIG_BCM47XX_BCMA) -+#define cpu_dcache_line_size() 16 -+#define cpu_icache_line_size() 16 -+#define cpu_has_perf_cntr_intr_bit 0 -+#endif -+#define cpu_scache_line_size() 0 -+#define cpu_has_vz 0 -+ -+#endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */ diff --git a/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch b/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch deleted file mode 100644 index 424d1f0..0000000 --- a/target/linux/brcm47xx/patches-3.10/120-MIPS-BCM47XX-Prepare-support-for-LEDs.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 98e54a60a7346ef31cb851b670a238ad428b58fe Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Thu, 2 Jan 2014 13:27:15 +0100 -Subject: [PATCH 029/110] MIPS: BCM47XX: Prepare support for LEDs - -So far this is mostly just a proof of concept, database consists of a -single device. Creating a nice iterateable array wasn't an option -because devices have different amount of LEDs. And we don't want to -waste memory just because of support for a device with dozens on LEDs. - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6299/ ---- - arch/mips/bcm47xx/Kconfig | 2 + - arch/mips/bcm47xx/Makefile | 2 +- - arch/mips/bcm47xx/bcm47xx_private.h | 9 +++++ - arch/mips/bcm47xx/leds.c | 73 +++++++++++++++++++++++++++++++++++ - arch/mips/bcm47xx/setup.c | 6 +++ - 5 files changed, 91 insertions(+), 1 deletion(-) - create mode 100644 arch/mips/bcm47xx/bcm47xx_private.h - create mode 100644 arch/mips/bcm47xx/leds.c - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -12,6 +12,7 @@ config BCM47XX_SSB - select SSB_PCICORE_HOSTMODE if PCI - select SSB_DRIVER_GPIO - select GPIOLIB -+ select LEDS_GPIO_REGISTER - default y - help - Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support. -@@ -29,6 +30,7 @@ config BCM47XX_BCMA - select BCMA_DRIVER_PCI_HOSTMODE if PCI - select BCMA_DRIVER_GPIO - select GPIOLIB -+ select LEDS_GPIO_REGISTER - default y - help - Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus. ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -4,5 +4,5 @@ - # - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o --obj-y += board.o -+obj-y += board.o leds.o - obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o ---- /dev/null -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -0,0 +1,9 @@ -+#ifndef LINUX_BCM47XX_PRIVATE_H_ -+#define LINUX_BCM47XX_PRIVATE_H_ -+ -+#include <linux/kernel.h> -+ -+/* leds.c */ -+void __init bcm47xx_leds_register(void); -+ -+#endif ---- /dev/null -+++ b/arch/mips/bcm47xx/leds.c -@@ -0,0 +1,73 @@ -+#include "bcm47xx_private.h" -+ -+#include <linux/leds.h> -+#include <bcm47xx_board.h> -+ -+static const struct gpio_led -+bcm47xx_leds_netgear_wndr4500_v1_leds[] __initconst = { -+ { -+ .name = "bcm47xx:green:wps", -+ .gpio = 1, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:green:power", -+ .gpio = 2, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:orange:power", -+ .gpio = 3, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:green:usb1", -+ .gpio = 8, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:green:2ghz", -+ .gpio = 9, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:blue:5ghz", -+ .gpio = 11, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+ { -+ .name = "bcm47xx:green:usb2", -+ .gpio = 14, -+ .active_low = 1, -+ .default_state = LEDS_GPIO_DEFSTATE_KEEP, -+ }, -+}; -+ -+static struct gpio_led_platform_data bcm47xx_leds_pdata; -+ -+#define bcm47xx_set_pdata(dev_leds) do { \ -+ bcm47xx_leds_pdata.leds = dev_leds; \ -+ bcm47xx_leds_pdata.num_leds = ARRAY_SIZE(dev_leds); \ -+} while (0) -+ -+void __init bcm47xx_leds_register(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ switch (board) { -+ case BCM47XX_BOARD_NETGEAR_WNDR4500V1: -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500_v1_leds); -+ break; -+ default: -+ pr_debug("No LEDs configuration found for this device\n"); -+ return; -+ } -+ -+ gpio_led_register_device(-1, &bcm47xx_leds_pdata); -+} ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -26,6 +26,8 @@ - * 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#include "bcm47xx_private.h" -+ - #include <linux/export.h> - #include <linux/types.h> - #include <linux/ssb/ssb.h> -@@ -243,6 +245,9 @@ static int __init bcm47xx_register_bus_c - break; - #endif - } -+ -+ bcm47xx_leds_register(); -+ - return 0; - } - device_initcall(bcm47xx_register_bus_complete); diff --git a/target/linux/brcm47xx/patches-3.10/121-MIPS-BCM47XX-Prepare-support-for-GPIO-buttons.patch b/target/linux/brcm47xx/patches-3.10/121-MIPS-BCM47XX-Prepare-support-for-GPIO-buttons.patch deleted file mode 100644 index 627ea70..0000000 --- a/target/linux/brcm47xx/patches-3.10/121-MIPS-BCM47XX-Prepare-support-for-GPIO-buttons.patch +++ /dev/null @@ -1,152 +0,0 @@ -From e352ec3c581df40f159771b30c262c2bc7fb802e Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Thu, 2 Jan 2014 13:31:32 +0100 -Subject: [PATCH 030/110] MIPS: BCM47XX: Prepare support for GPIO buttons - -So far this adds support for one Netgear model only, but it's designed -and ready to add many more device. We could hopefully import database -from OpenWrt. -Support for SSB is currently disabled, because SSB doesn't implement IRQ -domain yet. - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6300/ ---- - arch/mips/bcm47xx/Makefile | 2 +- - arch/mips/bcm47xx/bcm47xx_private.h | 3 ++ - arch/mips/bcm47xx/buttons.c | 95 +++++++++++++++++++++++++++++++++++ - arch/mips/bcm47xx/setup.c | 1 + - 4 files changed, 100 insertions(+), 1 deletion(-) - create mode 100644 arch/mips/bcm47xx/buttons.c - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -4,5 +4,5 @@ - # - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o --obj-y += board.o leds.o -+obj-y += board.o buttons.o leds.o - obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o ---- a/arch/mips/bcm47xx/bcm47xx_private.h -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -3,6 +3,9 @@ - - #include <linux/kernel.h> - -+/* buttons.c */ -+int __init bcm47xx_buttons_register(void); -+ - /* leds.c */ - void __init bcm47xx_leds_register(void); - ---- /dev/null -+++ b/arch/mips/bcm47xx/buttons.c -@@ -0,0 +1,95 @@ -+#include "bcm47xx_private.h" -+ -+#include <linux/input.h> -+#include <linux/gpio_keys.h> -+#include <linux/interrupt.h> -+#include <linux/ssb/ssb_embedded.h> -+#include <bcm47xx_board.h> -+#include <bcm47xx.h> -+ -+/************************************************** -+ * Database -+ **************************************************/ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wndr4500_v1[] __initconst = { -+ { -+ .code = KEY_WPS_BUTTON, -+ .gpio = 4, -+ .active_low = 1, -+ }, -+ { -+ .code = KEY_RFKILL, -+ .gpio = 5, -+ .active_low = 1, -+ }, -+ { -+ .code = KEY_RESTART, -+ .gpio = 6, -+ .active_low = 1, -+ }, -+}; -+ -+/************************************************** -+ * Init -+ **************************************************/ -+ -+static struct gpio_keys_platform_data bcm47xx_button_pdata; -+ -+static struct platform_device bcm47xx_buttons_gpio_keys = { -+ .name = "gpio-keys", -+ .dev = { -+ .platform_data = &bcm47xx_button_pdata, -+ } -+}; -+ -+/* Copy data from __initconst */ -+static int __init bcm47xx_buttons_copy(const struct gpio_keys_button *buttons, -+ size_t nbuttons) -+{ -+ size_t size = nbuttons * sizeof(*buttons); -+ -+ bcm47xx_button_pdata.buttons = kmalloc(size, GFP_KERNEL); -+ if (!bcm47xx_button_pdata.buttons) -+ return -ENOMEM; -+ memcpy(bcm47xx_button_pdata.buttons, buttons, size); -+ bcm47xx_button_pdata.nbuttons = nbuttons; -+ -+ return 0; -+} -+ -+#define bcm47xx_copy_bdata(dev_buttons) \ -+ bcm47xx_buttons_copy(dev_buttons, ARRAY_SIZE(dev_buttons)); -+ -+int __init bcm47xx_buttons_register(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ int err; -+ -+#ifdef CONFIG_BCM47XX_SSB -+ if (bcm47xx_bus_type == BCM47XX_BUS_TYPE_SSB) { -+ pr_debug("Buttons on SSB are not supported yet.\n"); -+ return -ENOTSUPP; -+ } -+#endif -+ -+ switch (board) { -+ case BCM47XX_BOARD_NETGEAR_WNDR4500V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500_v1); -+ break; -+ default: -+ pr_debug("No buttons configuration found for this device\n"); -+ return -ENOTSUPP; -+ } -+ -+ if (err) -+ return -ENOMEM; -+ -+ err = platform_device_register(&bcm47xx_buttons_gpio_keys); -+ if (err) { -+ pr_err("Failed to register platform device: %d\n", err); -+ return err; -+ } -+ -+ return 0; -+} ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -246,6 +246,7 @@ static int __init bcm47xx_register_bus_c - #endif - } - -+ bcm47xx_buttons_register(); - bcm47xx_leds_register(); - - return 0; diff --git a/target/linux/brcm47xx/patches-3.10/122-MIPS-BCM47XX-Import-buttons-database-from-OpenWrt.patch b/target/linux/brcm47xx/patches-3.10/122-MIPS-BCM47XX-Import-buttons-database-from-OpenWrt.patch deleted file mode 100644 index e445a0c..0000000 --- a/target/linux/brcm47xx/patches-3.10/122-MIPS-BCM47XX-Import-buttons-database-from-OpenWrt.patch +++ /dev/null @@ -1,497 +0,0 @@ -From 12dacbcfa86048cc0810fc6b91b3d7329722e59b Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Thu, 2 Jan 2014 13:37:56 +0100 -Subject: [PATCH 031/110] MIPS: BCM47XX: Import buttons database from OpenWrt - -This includes all devices from OpenWrt's "diag" that we support in arch -code (we have entries for in enum bcm47xx_board). - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6301/ ---- - arch/mips/bcm47xx/buttons.c | 456 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 456 insertions(+) - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -11,6 +11,299 @@ - * Database - **************************************************/ - -+#define BCM47XX_GPIO_KEY(_gpio, _code) \ -+ { \ -+ .code = _code, \ -+ .gpio = _gpio, \ -+ .active_low = 1, \ -+ } -+ -+/* Asus */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_rtn12[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(1, KEY_RESTART), -+ BCM47XX_GPIO_KEY(4, BTN_0), /* Router mode */ -+ BCM47XX_GPIO_KEY(5, BTN_1), /* Repeater mode */ -+ BCM47XX_GPIO_KEY(6, BTN_2), /* AP mode */ -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_rtn16[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(8, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_rtn66u[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(9, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl300g[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl320ge[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl330ge[] __initconst = { -+ BCM47XX_GPIO_KEY(2, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500gd[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500gpv1[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_RESTART), -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500gpv2[] __initconst = { -+ BCM47XX_GPIO_KEY(2, KEY_RESTART), -+ BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500w[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+ BCM47XX_GPIO_KEY(7, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl520gc[] __initconst = { -+ BCM47XX_GPIO_KEY(2, KEY_RESTART), -+ BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl520gu[] __initconst = { -+ BCM47XX_GPIO_KEY(2, KEY_RESTART), -+ BCM47XX_GPIO_KEY(3, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl700ge[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_POWER), /* Hard disk power switch */ -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), /* EZSetup */ -+ BCM47XX_GPIO_KEY(6, KEY_COPY), /* Copy data from USB to internal disk */ -+ BCM47XX_GPIO_KEY(7, KEY_RESTART), /* Hard reset */ -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_asus_wlhdd[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+/* Huawei */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_huawei_e970[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+/* Belkin */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_belkin_f7d4301[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+ BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON), -+}; -+ -+/* Buffalo */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_whr2_a54g54[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_whr_g125[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */ -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_whr_g54s[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */ -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_whr_hp_g54[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(5, BTN_0), /* Router / AP mode swtich */ -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_wzr_g300n[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_wzr_rs_g54[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_buffalo_wzr_rs_g54hp[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+}; -+ -+/* Dell */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_dell_tm2300[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_RESTART), -+}; -+ -+/* D-Link */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_dlink_dir130[] __initconst = { -+ BCM47XX_GPIO_KEY(3, KEY_RESTART), -+ BCM47XX_GPIO_KEY(7, KEY_UNKNOWN), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_dlink_dir330[] __initconst = { -+ BCM47XX_GPIO_KEY(3, KEY_RESTART), -+ BCM47XX_GPIO_KEY(7, KEY_UNKNOWN), -+}; -+ -+/* Linksys */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e1000v1[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e1000v21[] __initconst = { -+ BCM47XX_GPIO_KEY(9, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(10, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e2000v1[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(8, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e3000v1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e3200v1[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_RESTART), -+ BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_e4200v1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt150nv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt150nv11[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt160nv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt160nv3[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt300nv11[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_UNKNOWN), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt310nv1[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+ BCM47XX_GPIO_KEY(8, KEY_UNKNOWN), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt610nv1[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+ BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt610nv2[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+/* Motorola */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_motorola_we800g[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_motorola_wr850gp[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_motorola_wr850gv2v3[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_RESTART), -+}; -+ -+/* Netgear */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wndr3400v1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(8, KEY_RFKILL), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wndr3700v3[] __initconst = { -+ BCM47XX_GPIO_KEY(2, KEY_RFKILL), -+ BCM47XX_GPIO_KEY(3, KEY_RESTART), -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+}; -+ - static const struct gpio_keys_button - bcm47xx_buttons_netgear_wndr4500_v1[] __initconst = { - { -@@ -30,6 +323,18 @@ bcm47xx_buttons_netgear_wndr4500_v1[] __ - }, - }; - -+static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wnr834bv2[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+/* SimpleTech */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_simpletech_simpleshare[] __initconst = { -+ BCM47XX_GPIO_KEY(0, KEY_RESTART), -+}; -+ - /************************************************** - * Init - **************************************************/ -@@ -74,9 +379,160 @@ int __init bcm47xx_buttons_register(void - #endif - - switch (board) { -+ case BCM47XX_BOARD_ASUS_RTN12: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12); -+ break; -+ case BCM47XX_BOARD_ASUS_RTN16: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn16); -+ break; -+ case BCM47XX_BOARD_ASUS_RTN66U: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn66u); -+ break; -+ case BCM47XX_BOARD_ASUS_WL300G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl300g); -+ break; -+ case BCM47XX_BOARD_ASUS_WL320GE: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl320ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WL330GE: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl330ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GD: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gd); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GPV1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv1); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GPV2: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gpv2); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500W: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500w); -+ break; -+ case BCM47XX_BOARD_ASUS_WL520GC: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gc); -+ break; -+ case BCM47XX_BOARD_ASUS_WL520GU: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl520gu); -+ break; -+ case BCM47XX_BOARD_ASUS_WL700GE: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl700ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WLHDD: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wlhdd); -+ break; -+ -+ case BCM47XX_BOARD_BELKIN_F7D4301: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_belkin_f7d4301); -+ break; -+ -+ case BCM47XX_BOARD_BUFFALO_WHR2_A54G54: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr2_a54g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_G125: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g125); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_G54S: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_g54s); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_HP_G54: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_whr_hp_g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_G300N: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_g300n); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_RS_G54: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_buffalo_wzr_rs_g54hp); -+ break; -+ -+ case BCM47XX_BOARD_DELL_TM2300: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_dell_tm2300); -+ break; -+ -+ case BCM47XX_BOARD_DLINK_DIR130: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir130); -+ break; -+ case BCM47XX_BOARD_DLINK_DIR330: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_dlink_dir330); -+ break; -+ -+ case BCM47XX_BOARD_HUAWEI_E970: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_huawei_e970); -+ break; -+ -+ case BCM47XX_BOARD_LINKSYS_E1000V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E1000V21: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e1000v21); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E2000V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e2000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E3000V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E3200V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e3200v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E4200V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_e4200v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT150NV1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT150NV11: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt150nv11); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT160NV1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT160NV3: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt160nv3); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT300NV11: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt300nv11); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT310NV1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT610NV1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT610NV2: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2); -+ break; -+ -+ case BCM47XX_BOARD_MOTOROLA_WE800G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g); -+ break; -+ case BCM47XX_BOARD_MOTOROLA_WR850GP: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gp); -+ break; -+ case BCM47XX_BOARD_MOTOROLA_WR850GV2V3: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_wr850gv2v3); -+ break; -+ -+ case BCM47XX_BOARD_NETGEAR_WNDR3400V1: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400v1); -+ break; -+ case BCM47XX_BOARD_NETGEAR_WNDR3700V3: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3700v3); -+ break; - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500_v1); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR834BV2: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2); -+ break; -+ -+ case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_simpletech_simpleshare); -+ break; -+ - default: - pr_debug("No buttons configuration found for this device\n"); - return -ENOTSUPP; diff --git a/target/linux/brcm47xx/patches-3.10/123-MIPS-BCM47XX-Import-LEDs-database-from-OpenWrt.patch b/target/linux/brcm47xx/patches-3.10/123-MIPS-BCM47XX-Import-LEDs-database-from-OpenWrt.patch deleted file mode 100644 index 2c7b5b7..0000000 --- a/target/linux/brcm47xx/patches-3.10/123-MIPS-BCM47XX-Import-LEDs-database-from-OpenWrt.patch +++ /dev/null @@ -1,532 +0,0 @@ -From 6d4b22bc843c9de0f6acdbdcfb9b91b897a39e9c Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Thu, 2 Jan 2014 12:32:57 +0100 -Subject: [PATCH 032/110] MIPS: BCM47XX: Import LEDs database from OpenWrt - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> -Acked-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6298/ ---- - arch/mips/bcm47xx/leds.c | 494 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 494 insertions(+) - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -3,6 +3,334 @@ - #include <linux/leds.h> - #include <bcm47xx_board.h> - -+/************************************************** -+ * Database -+ **************************************************/ -+ -+#define BCM47XX_GPIO_LED(_gpio, _color, _function, _active_low, \ -+ _default_state) \ -+ { \ -+ .name = "bcm47xx:" _color ":" _function, \ -+ .gpio = _gpio, \ -+ .active_low = _active_low, \ -+ .default_state = _default_state, \ -+ } -+ -+/* Asus */ -+ -+static const struct gpio_led -+bcm47xx_leds_asus_rtn12[] __initconst = { -+ BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_rtn16[] __initconst = { -+ BCM47XX_GPIO_LED(1, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_rtn66u[] __initconst = { -+ BCM47XX_GPIO_LED(12, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(15, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl300g[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl320ge[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(11, "unk", "link", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl330ge[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl500gd[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl500gpv1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl500gpv2[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl500w[] __initconst = { -+ BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl520gc[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl520gu[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(1, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wl700ge[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), /* Labeled "READY" (there is no "power" LED). Originally ON, flashing on USB activity. */ -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_asus_wlhdd[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Belkin */ -+ -+static const struct gpio_led -+bcm47xx_leds_belkin_f7d4301[] __initconst = { -+ BCM47XX_GPIO_LED(10, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(11, "amber", "power", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(12, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(13, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(14, "unk", "usb0", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(15, "unk", "usb1", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Buffalo */ -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_whr2_a54g54[] __initconst = { -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_whr_g125[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "unk", "internal", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_whr_g54s[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "unk", "internal", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_whr_hp_g54[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "unk", "internal", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_wzr_g300n[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "bridge", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_wzr_rs_g54[] __initconst = { -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "vpn", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_buffalo_wzr_rs_g54hp[] __initconst = { -+ BCM47XX_GPIO_LED(6, "unk", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "vpn", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Dell */ -+ -+static const struct gpio_led -+bcm47xx_leds_dell_tm2300[] __initconst = { -+ BCM47XX_GPIO_LED(6, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+/* D-Link */ -+ -+static const struct gpio_led -+bcm47xx_leds_dlink_dir130[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* Originally blinking when device is ready, separated from "power" LED */ -+ BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_dlink_dir330[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* Originally blinking when device is ready, separated from "power" LED */ -+ BCM47XX_GPIO_LED(4, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Huawei */ -+ -+static const struct gpio_led -+bcm47xx_leds_huawei_e970[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Linksys */ -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e1000v1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(4, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e1000v21[] __initconst = { -+ BCM47XX_GPIO_LED(5, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "amber", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(8, "blue", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e2000v1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(4, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e3000v1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e3200v1[] __initconst = { -+ BCM47XX_GPIO_LED(3, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_e4200v1[] __initconst = { -+ BCM47XX_GPIO_LED(5, "white", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt150nv1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt150nv11[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt160nv1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt160nv3[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(4, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt300nv11[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt310nv1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(9, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt610nv1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(9, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt610nv2[] __initconst = { -+ BCM47XX_GPIO_LED(0, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Motorola */ -+ -+static const struct gpio_led -+bcm47xx_leds_motorola_we800g[] __initconst = { -+ BCM47XX_GPIO_LED(1, "amber", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "unk", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), /* There are only 3 LEDs: Power, Wireless and Device (ethernet) */ -+ BCM47XX_GPIO_LED(4, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_motorola_wr850gp[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(6, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_motorola_wr850gv2v3[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "unk", "diag", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* Netgear */ -+ -+static const struct gpio_led -+bcm47xx_leds_netgear_wndr3400v1[] __initconst = { -+ BCM47XX_GPIO_LED(2, "green", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - static const struct gpio_led - bcm47xx_leds_netgear_wndr4500_v1_leds[] __initconst = { - { -@@ -49,6 +377,24 @@ bcm47xx_leds_netgear_wndr4500_v1_leds[] - }, - }; - -+static const struct gpio_led -+bcm47xx_leds_netgear_wnr834bv2[] __initconst = { -+ BCM47XX_GPIO_LED(2, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "connected", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+/* SimpleTech */ -+ -+static const struct gpio_led -+bcm47xx_leds_simpletech_simpleshare[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* "Ready" LED */ -+}; -+ -+/************************************************** -+ * Init -+ **************************************************/ -+ - static struct gpio_led_platform_data bcm47xx_leds_pdata; - - #define bcm47xx_set_pdata(dev_leds) do { \ -@@ -61,9 +407,157 @@ void __init bcm47xx_leds_register(void) - enum bcm47xx_board board = bcm47xx_board_get(); - - switch (board) { -+ case BCM47XX_BOARD_ASUS_RTN12: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12); -+ break; -+ case BCM47XX_BOARD_ASUS_RTN16: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_rtn16); -+ break; -+ case BCM47XX_BOARD_ASUS_RTN66U: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_rtn66u); -+ break; -+ case BCM47XX_BOARD_ASUS_WL300G: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl300g); -+ break; -+ case BCM47XX_BOARD_ASUS_WL320GE: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl320ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WL330GE: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl330ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GD: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gd); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GPV1: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gpv1); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500GPV2: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gpv2); -+ break; -+ case BCM47XX_BOARD_ASUS_WL500W: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500w); -+ break; -+ case BCM47XX_BOARD_ASUS_WL520GC: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl520gc); -+ break; -+ case BCM47XX_BOARD_ASUS_WL520GU: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl520gu); -+ break; -+ case BCM47XX_BOARD_ASUS_WL700GE: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl700ge); -+ break; -+ case BCM47XX_BOARD_ASUS_WLHDD: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wlhdd); -+ break; -+ -+ case BCM47XX_BOARD_BELKIN_F7D4301: -+ bcm47xx_set_pdata(bcm47xx_leds_belkin_f7d4301); -+ break; -+ -+ case BCM47XX_BOARD_BUFFALO_WHR2_A54G54: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr2_a54g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_G125: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_g125); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_G54S: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_g54s); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WHR_HP_G54: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_whr_hp_g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_G300N: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_g300n); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_RS_G54: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_rs_g54); -+ break; -+ case BCM47XX_BOARD_BUFFALO_WZR_RS_G54HP: -+ bcm47xx_set_pdata(bcm47xx_leds_buffalo_wzr_rs_g54hp); -+ break; -+ -+ case BCM47XX_BOARD_DELL_TM2300: -+ bcm47xx_set_pdata(bcm47xx_leds_dell_tm2300); -+ break; -+ -+ case BCM47XX_BOARD_DLINK_DIR130: -+ bcm47xx_set_pdata(bcm47xx_leds_dlink_dir130); -+ break; -+ case BCM47XX_BOARD_DLINK_DIR330: -+ bcm47xx_set_pdata(bcm47xx_leds_dlink_dir330); -+ break; -+ -+ case BCM47XX_BOARD_HUAWEI_E970: -+ bcm47xx_set_pdata(bcm47xx_leds_huawei_e970); -+ break; -+ -+ case BCM47XX_BOARD_LINKSYS_E1000V1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e1000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E1000V21: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e1000v21); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E2000V1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e2000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E3000V1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e3000v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E3200V1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e3200v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_E4200V1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_e4200v1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT150NV1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt150nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT150NV11: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt150nv11); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT160NV1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt160nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT160NV3: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt160nv3); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT300NV11: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt300nv11); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT310NV1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT610NV1: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT610NV2: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2); -+ break; -+ -+ case BCM47XX_BOARD_MOTOROLA_WE800G: -+ bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g); -+ break; -+ case BCM47XX_BOARD_MOTOROLA_WR850GP: -+ bcm47xx_set_pdata(bcm47xx_leds_motorola_wr850gp); -+ break; -+ case BCM47XX_BOARD_MOTOROLA_WR850GV2V3: -+ bcm47xx_set_pdata(bcm47xx_leds_motorola_wr850gv2v3); -+ break; -+ -+ case BCM47XX_BOARD_NETGEAR_WNDR3400V1: -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr3400v1); -+ break; - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500_v1_leds); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR834BV2: -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); -+ break; -+ -+ case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE: -+ bcm47xx_set_pdata(bcm47xx_leds_simpletech_simpleshare); -+ break; -+ - default: - pr_debug("No LEDs configuration found for this device\n"); - return; diff --git a/target/linux/brcm47xx/patches-3.10/124-MIPS-BCM47XX-Enable-buttons-support-on-SSB.patch b/target/linux/brcm47xx/patches-3.10/124-MIPS-BCM47XX-Enable-buttons-support-on-SSB.patch deleted file mode 100644 index 7d59955..0000000 --- a/target/linux/brcm47xx/patches-3.10/124-MIPS-BCM47XX-Enable-buttons-support-on-SSB.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 6dac092b12755ccbc00412871cd9535b687d16d7 Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Fri, 3 Jan 2014 09:55:30 +0100 -Subject: [PATCH] MIPS: BCM47XX: Enable buttons support on SSB - -This is supported since implementing IRQ domain in ssb. - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/buttons.c | 8 -------- - 1 file changed, 8 deletions(-) - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -3,7 +3,6 @@ - #include <linux/input.h> - #include <linux/gpio_keys.h> - #include <linux/interrupt.h> --#include <linux/ssb/ssb_embedded.h> - #include <bcm47xx_board.h> - #include <bcm47xx.h> - -@@ -371,13 +370,6 @@ int __init bcm47xx_buttons_register(void - enum bcm47xx_board board = bcm47xx_board_get(); - int err; - --#ifdef CONFIG_BCM47XX_SSB -- if (bcm47xx_bus_type == BCM47XX_BUS_TYPE_SSB) { -- pr_debug("Buttons on SSB are not supported yet.\n"); -- return -ENOTSUPP; -- } --#endif -- - switch (board) { - case BCM47XX_BOARD_ASUS_RTN12: - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12); diff --git a/target/linux/brcm47xx/patches-3.10/125-MIPS-BCM47XX-Convert-WNDR4500-to-new-syntax.patch b/target/linux/brcm47xx/patches-3.10/125-MIPS-BCM47XX-Convert-WNDR4500-to-new-syntax.patch deleted file mode 100644 index 00f962a..0000000 --- a/target/linux/brcm47xx/patches-3.10/125-MIPS-BCM47XX-Convert-WNDR4500-to-new-syntax.patch +++ /dev/null @@ -1,118 +0,0 @@ -From 2d842783d4aaa25803e92f663869ea64a4eddd00 Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Fri, 3 Jan 2014 09:37:42 +0100 -Subject: [PATCH] MIPS: BCM47XX: Convert WNDR4500 to new syntax - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/buttons.c | 22 ++++-------------- - arch/mips/bcm47xx/leds.c | 53 ++++++++----------------------------------- - 2 files changed, 14 insertions(+), 61 deletions(-) - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -304,22 +304,10 @@ bcm47xx_buttons_netgear_wndr3700v3[] __i - }; - - static const struct gpio_keys_button --bcm47xx_buttons_netgear_wndr4500_v1[] __initconst = { -- { -- .code = KEY_WPS_BUTTON, -- .gpio = 4, -- .active_low = 1, -- }, -- { -- .code = KEY_RFKILL, -- .gpio = 5, -- .active_low = 1, -- }, -- { -- .code = KEY_RESTART, -- .gpio = 6, -- .active_low = 1, -- }, -+bcm47xx_buttons_netgear_wndr4500v1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(5, KEY_RFKILL), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; - - static const struct gpio_keys_button -@@ -515,7 +503,7 @@ int __init bcm47xx_buttons_register(void - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3700v3); - break; - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: -- err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500_v1); -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500v1); - break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2); ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -332,49 +332,14 @@ bcm47xx_leds_netgear_wndr3400v1[] __init - }; - - static const struct gpio_led --bcm47xx_leds_netgear_wndr4500_v1_leds[] __initconst = { -- { -- .name = "bcm47xx:green:wps", -- .gpio = 1, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:green:power", -- .gpio = 2, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:orange:power", -- .gpio = 3, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:green:usb1", -- .gpio = 8, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:green:2ghz", -- .gpio = 9, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:blue:5ghz", -- .gpio = 11, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -- { -- .name = "bcm47xx:green:usb2", -- .gpio = 14, -- .active_low = 1, -- .default_state = LEDS_GPIO_DEFSTATE_KEEP, -- }, -+bcm47xx_leds_netgear_wndr4500v1[] __initconst = { -+ BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(3, "amber", "power", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(8, "green", "usb1", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(9, "green", "2ghz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(11, "blue", "5ghz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(14, "green", "usb2", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - static const struct gpio_led -@@ -548,7 +513,7 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr3400v1); - break; - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: -- bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500_v1_leds); -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500v1); - break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); diff --git a/target/linux/brcm47xx/patches-3.10/126-MIPS-BCM47XX-Use-timer-trigger-for-status-LEDs.patch b/target/linux/brcm47xx/patches-3.10/126-MIPS-BCM47XX-Use-timer-trigger-for-status-LEDs.patch deleted file mode 100644 index e14bea9..0000000 --- a/target/linux/brcm47xx/patches-3.10/126-MIPS-BCM47XX-Use-timer-trigger-for-status-LEDs.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 5c985c2a17ae0bdbc95fd8246631e00a35746396 Mon Sep 17 00:00:00 2001 -From: Rafa? Mi?ecki <zajec5@gmail.com> -Date: Fri, 3 Jan 2014 09:04:39 +0100 -Subject: [PATCH] MIPS: BCM47XX: Use "timer" trigger for status LEDs - -Some devices have power LED as well as status LED. The second one is -used to show the firmware is up and running. Set "timer" trigger for -such LEDs. - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/leds.c | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -16,6 +16,16 @@ - .default_state = _default_state, \ - } - -+#define BCM47XX_GPIO_LED_TRIGGER(_gpio, _color, _function, _active_low, \ -+ _default_trigger) \ -+ { \ -+ .name = "bcm47xx:" _color ":" _function, \ -+ .gpio = _gpio, \ -+ .active_low = _active_low, \ -+ .default_state = LEDS_GPIO_DEFSTATE_OFF, \ -+ .default_trigger = _default_trigger, \ -+ } -+ - /* Asus */ - - static const struct gpio_led -@@ -176,13 +186,13 @@ bcm47xx_leds_dell_tm2300[] __initconst = - - static const struct gpio_led - bcm47xx_leds_dlink_dir130[] __initconst = { -- BCM47XX_GPIO_LED(0, "green", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* Originally blinking when device is ready, separated from "power" LED */ -+ BCM47XX_GPIO_LED_TRIGGER(0, "green", "status", 1, "timer"), /* Originally blinking when device is ready, separated from "power" LED */ - BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - static const struct gpio_led - bcm47xx_leds_dlink_dir330[] __initconst = { -- BCM47XX_GPIO_LED(0, "green", "status", 1, LEDS_GPIO_DEFSTATE_OFF), /* Originally blinking when device is ready, separated from "power" LED */ -+ BCM47XX_GPIO_LED_TRIGGER(0, "green", "status", 1, "timer"), /* Originally blinking when device is ready, separated from "power" LED */ - BCM47XX_GPIO_LED(4, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(6, "blue", "unk", 1, LEDS_GPIO_DEFSTATE_OFF), - }; diff --git a/target/linux/brcm47xx/patches-3.10/127-MIPS-BCM47XX-Drop-WGT634U-hacks.patch b/target/linux/brcm47xx/patches-3.10/127-MIPS-BCM47XX-Drop-WGT634U-hacks.patch deleted file mode 100644 index 5a091e6..0000000 --- a/target/linux/brcm47xx/patches-3.10/127-MIPS-BCM47XX-Drop-WGT634U-hacks.patch +++ /dev/null @@ -1,207 +0,0 @@ -From 68e30f30875d4e4608cebec27ca8bd07be0d0f64 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 2 Jan 2014 13:53:15 +0100 -Subject: [PATCH] MIPS: BCM47XX: Drop WGT634U hacks -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This old wgt634u.c was trying to implement a bit ugly support for -Netgear WGT634U. It provided info about LED, flash mapping & layout and -was trying to handle reset button. - -This is not needed anymore as we have replacement for all this stuff. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: John Crispin <blogic@openwrt.org> -Patchwork: http://patchwork.linux-mips.org/patch/6302/ ---- - arch/mips/bcm47xx/Makefile | 1 - - arch/mips/bcm47xx/wgt634u.c | 174 -------------------------------------------- - 2 files changed, 175 deletions(-) - delete mode 100644 arch/mips/bcm47xx/wgt634u.c - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -5,4 +5,3 @@ - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o - obj-y += board.o buttons.o leds.o --obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o ---- a/arch/mips/bcm47xx/wgt634u.c -+++ /dev/null -@@ -1,174 +0,0 @@ --/* -- * This file is subject to the terms and conditions of the GNU General Public -- * License. See the file "COPYING" in the main directory of this archive -- * for more details. -- * -- * Copyright (C) 2007 Aurelien Jarno <aurelien@aurel32.net> -- */ -- --#include <linux/platform_device.h> --#include <linux/module.h> --#include <linux/leds.h> --#include <linux/mtd/physmap.h> --#include <linux/ssb/ssb.h> --#include <linux/ssb/ssb_embedded.h> --#include <linux/interrupt.h> --#include <linux/reboot.h> --#include <linux/gpio.h> --#include <asm/mach-bcm47xx/bcm47xx.h> -- --/* GPIO definitions for the WGT634U */ --#define WGT634U_GPIO_LED 3 --#define WGT634U_GPIO_RESET 2 --#define WGT634U_GPIO_TP1 7 --#define WGT634U_GPIO_TP2 6 --#define WGT634U_GPIO_TP3 5 --#define WGT634U_GPIO_TP4 4 --#define WGT634U_GPIO_TP5 1 -- --static struct gpio_led wgt634u_leds[] = { -- { -- .name = "power", -- .gpio = WGT634U_GPIO_LED, -- .active_low = 1, -- .default_trigger = "heartbeat", -- }, --}; -- --static struct gpio_led_platform_data wgt634u_led_data = { -- .num_leds = ARRAY_SIZE(wgt634u_leds), -- .leds = wgt634u_leds, --}; -- --static struct platform_device wgt634u_gpio_leds = { -- .name = "leds-gpio", -- .id = -1, -- .dev = { -- .platform_data = &wgt634u_led_data, -- } --}; -- -- --/* 8MiB flash. The struct mtd_partition matches original Netgear WGT634U -- firmware. */ --static struct mtd_partition wgt634u_partitions[] = { -- { -- .name = "cfe", -- .offset = 0, -- .size = 0x60000, /* 384k */ -- .mask_flags = MTD_WRITEABLE /* force read-only */ -- }, -- { -- .name = "config", -- .offset = 0x60000, -- .size = 0x20000 /* 128k */ -- }, -- { -- .name = "linux", -- .offset = 0x80000, -- .size = 0x140000 /* 1280k */ -- }, -- { -- .name = "jffs", -- .offset = 0x1c0000, -- .size = 0x620000 /* 6272k */ -- }, -- { -- .name = "nvram", -- .offset = 0x7e0000, -- .size = 0x20000 /* 128k */ -- }, --}; -- --static struct physmap_flash_data wgt634u_flash_data = { -- .parts = wgt634u_partitions, -- .nr_parts = ARRAY_SIZE(wgt634u_partitions) --}; -- --static struct resource wgt634u_flash_resource = { -- .flags = IORESOURCE_MEM, --}; -- --static struct platform_device wgt634u_flash = { -- .name = "physmap-flash", -- .id = 0, -- .dev = { .platform_data = &wgt634u_flash_data, }, -- .resource = &wgt634u_flash_resource, -- .num_resources = 1, --}; -- --/* Platform devices */ --static struct platform_device *wgt634u_devices[] __initdata = { -- &wgt634u_flash, -- &wgt634u_gpio_leds, --}; -- --static irqreturn_t gpio_interrupt(int irq, void *ignored) --{ -- int state; -- -- /* Interrupts are shared, check if the current one is -- a GPIO interrupt. */ -- if (!ssb_chipco_irq_status(&bcm47xx_bus.ssb.chipco, -- SSB_CHIPCO_IRQ_GPIO)) -- return IRQ_NONE; -- -- state = gpio_get_value(WGT634U_GPIO_RESET); -- -- /* Interrupt are level triggered, revert the interrupt polarity -- to clear the interrupt. */ -- ssb_gpio_polarity(&bcm47xx_bus.ssb, 1 << WGT634U_GPIO_RESET, -- state ? 1 << WGT634U_GPIO_RESET : 0); -- -- if (!state) { -- printk(KERN_INFO "Reset button pressed"); -- ctrl_alt_del(); -- } -- -- return IRQ_HANDLED; --} -- --static int __init wgt634u_init(void) --{ -- /* There is no easy way to detect that we are running on a WGT634U -- * machine. Use the MAC address as an heuristic. Netgear Inc. has -- * been allocated ranges 00:09:5b:xx:xx:xx and 00:0f:b5:xx:xx:xx. -- */ -- u8 *et0mac; -- -- if (bcm47xx_bus_type != BCM47XX_BUS_TYPE_SSB) -- return -ENODEV; -- -- et0mac = bcm47xx_bus.ssb.sprom.et0mac; -- -- if (et0mac[0] == 0x00 && -- ((et0mac[1] == 0x09 && et0mac[2] == 0x5b) || -- (et0mac[1] == 0x0f && et0mac[2] == 0xb5))) { -- struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore; -- -- printk(KERN_INFO "WGT634U machine detected.\n"); -- -- if (!request_irq(gpio_to_irq(WGT634U_GPIO_RESET), -- gpio_interrupt, IRQF_SHARED, -- "WGT634U GPIO", &bcm47xx_bus.ssb.chipco)) { -- gpio_direction_input(WGT634U_GPIO_RESET); -- ssb_gpio_intmask(&bcm47xx_bus.ssb, -- 1 << WGT634U_GPIO_RESET, -- 1 << WGT634U_GPIO_RESET); -- ssb_chipco_irq_mask(&bcm47xx_bus.ssb.chipco, -- SSB_CHIPCO_IRQ_GPIO, -- SSB_CHIPCO_IRQ_GPIO); -- } -- -- wgt634u_flash_data.width = mcore->pflash.buswidth; -- wgt634u_flash_resource.start = mcore->pflash.window; -- wgt634u_flash_resource.end = mcore->pflash.window -- + mcore->pflash.window_size -- - 1; -- return platform_add_devices(wgt634u_devices, -- ARRAY_SIZE(wgt634u_devices)); -- } else -- return -ENODEV; --} -- --module_init(wgt634u_init); diff --git a/target/linux/brcm47xx/patches-3.10/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch b/target/linux/brcm47xx/patches-3.10/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch deleted file mode 100644 index 5603a53..0000000 --- a/target/linux/brcm47xx/patches-3.10/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 1f3e1c682a0b5273e3ee8799b54319971f426e6a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Wed, 29 Jan 2014 18:06:52 +0100 -Subject: [RFC V2][PATCH] MIPS: BCM47XX: Add new file for device specific workarounds - ---- -V2: Drop pr_debug for devices we don't need workarounds for. It was too - load and not useful at all. ---- - arch/mips/bcm47xx/Makefile | 2 +- - arch/mips/bcm47xx/bcm47xx_private.h | 3 +++ - arch/mips/bcm47xx/setup.c | 1 + - arch/mips/bcm47xx/workarounds.c | 25 +++++++++++++++++++++++++ - 4 files changed, 30 insertions(+), 1 deletion(-) - create mode 100644 arch/mips/bcm47xx/workarounds.c - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -4,4 +4,4 @@ - # - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o --obj-y += board.o buttons.o leds.o -+obj-y += board.o buttons.o leds.o workarounds.o ---- a/arch/mips/bcm47xx/bcm47xx_private.h -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -9,4 +9,7 @@ int __init bcm47xx_buttons_register(void - /* leds.c */ - void __init bcm47xx_leds_register(void); - -+/* workarounds.c */ -+void __init bcm47xx_workarounds(void); -+ - #endif ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -248,6 +248,7 @@ static int __init bcm47xx_register_bus_c - - bcm47xx_buttons_register(); - bcm47xx_leds_register(); -+ bcm47xx_workarounds(); - - return 0; - } ---- /dev/null -+++ b/arch/mips/bcm47xx/workarounds.c -@@ -0,0 +1,31 @@ -+#include "bcm47xx_private.h" -+ -+#include <linux/gpio.h> -+#include <bcm47xx_board.h> -+#include <bcm47xx.h> -+ -+static void __init bcm47xx_workarounds_netgear_wnr3500l(void) -+{ -+ const int usb_power = 12; -+ int err; -+ -+ err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power"); -+ if (err) -+ pr_err("Failed to request USB power gpio: %d\n", err); -+ else -+ gpio_free(usb_power); -+} -+ -+void __init bcm47xx_workarounds(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ switch (board) { -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ bcm47xx_workarounds_netgear_wnr3500l(); -+ break; -+ default: -+ /* No workaround(s) needed */ -+ break; -+ } -+} diff --git a/target/linux/brcm47xx/patches-3.10/139-MIPS-BCM47XX-detect-more-linksys-devices.patch b/target/linux/brcm47xx/patches-3.10/139-MIPS-BCM47XX-detect-more-linksys-devices.patch deleted file mode 100644 index ecb6316..0000000 --- a/target/linux/brcm47xx/patches-3.10/139-MIPS-BCM47XX-detect-more-linksys-devices.patch +++ /dev/null @@ -1,39 +0,0 @@ -From b09189336f6d974c554aed03b4651e9f68ce0abd Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sun, 23 Feb 2014 16:38:29 +0100 -Subject: [PATCH 3/6] MIPS: BCM47XX: detect some more Linksys devices - -The Linksys WRT54G/GS/GL family uses the same boardtype numbers, and -the same gpio configuration. The boardtype numbers are changing with -the hardware versions, but these hardware numbers are different or each -model. -Detect them all as one device, this also worked in OpenWrt. ---- - arch/mips/bcm47xx/board.c | 4 +++- - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -175,7 +175,9 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54GSV1, "Linksys WRT54GS V1"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, - { {0}, NULL}, - }; - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -66,7 +66,7 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT310NV1, - BCM47XX_BOARD_LINKSYS_WRT310NV2, - BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -- BCM47XX_BOARD_LINKSYS_WRT54GSV1, -+ BCM47XX_BOARD_LINKSYS_WRT54G, - BCM47XX_BOARD_LINKSYS_WRT610NV1, - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, diff --git a/target/linux/brcm47xx/patches-3.10/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch b/target/linux/brcm47xx/patches-3.10/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch deleted file mode 100644 index 94ead79..0000000 --- a/target/linux/brcm47xx/patches-3.10/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch +++ /dev/null @@ -1,133 +0,0 @@ -From e3d15471f1be2bd2fd4db82907ad4b2d74ec2636 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 10 Jan 2014 23:55:28 +0100 -Subject: [PATCH 4/6] MIPS: BCM47XX: add button and led configuration for some - Linksys devices - -This adds led and button GPIO configuration for Linksys wrt54g3gv2, -wrt54gsv1 and wrtsl54gs. This is based on OpenWrt broadcom-diag code. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/buttons.c | 27 +++++++++++++++++++++++++++ - arch/mips/bcm47xx/leds.c | 33 +++++++++++++++++++++++++++++++++ - 2 files changed, 60 insertions(+) - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -259,6 +259,18 @@ bcm47xx_buttons_linksys_wrt310nv1[] __in - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_WIMAX), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt54gsv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON), -@@ -270,6 +282,12 @@ bcm47xx_buttons_linksys_wrt610nv2[] __in - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; - -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrtsl54gs[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ - /* Motorola */ - - static const struct gpio_keys_button -@@ -479,12 +497,21 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1); - break; - case BCM47XX_BOARD_LINKSYS_WRT610NV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRTSL54GS: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs); -+ break; - - case BCM47XX_BOARD_MOTOROLA_WE800G: - err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g); ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -292,6 +292,21 @@ bcm47xx_leds_linksys_wrt310nv1[] __initc - }; - - static const struct gpio_led -+bcm47xx_leds_linksys_wrt54gsv1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g3gv2[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "green", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -308,6 +323,15 @@ bcm47xx_leds_linksys_wrt610nv2[] __initc - BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+static const struct gpio_led -+bcm47xx_leds_linksys_wrtsl54gs[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - /* Motorola */ - - static const struct gpio_led -@@ -502,12 +526,21 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1); - break; - case BCM47XX_BOARD_LINKSYS_WRT610NV2: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRTSL54GS: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs); -+ break; - - case BCM47XX_BOARD_MOTOROLA_WE800G: - bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g); diff --git a/target/linux/brcm47xx/patches-3.10/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch b/target/linux/brcm47xx/patches-3.10/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch deleted file mode 100644 index 9d19d41..0000000 --- a/target/linux/brcm47xx/patches-3.10/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch +++ /dev/null @@ -1,89 +0,0 @@ -From c546fa49901252cbc1e4046d7188858b2f9e130f Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 10 Jan 2014 23:55:43 +0100 -Subject: [PATCH 2/2] MIPS: BCM47XX: add detection and GPIO config for Siemens - SE505v2 - -This adds board detection for the Siemens SE505v2 and the led gpio -configuration. This board does not have any buttons. -This is based on OpenWrt broadcom-diag and Manuel Munz's nvram dump. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/board.c | 17 +++++++++++++++++ - arch/mips/bcm47xx/leds.c | 12 ++++++++++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 2 ++ - 3 files changed, 31 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -181,6 +181,13 @@ struct bcm47xx_board_type_list3 bcm47xx_ - { {0}, NULL}, - }; - -+/* boardtype, boardrev */ -+static const -+struct bcm47xx_board_type_list2 bcm47xx_board_list_board_type_rev[] __initconst = { -+ {{BCM47XX_BOARD_SIEMENS_SE505V2, "Siemens SE505 V2"}, "0x0101", "0x10"}, -+ { {0}, NULL}, -+}; -+ - static const - struct bcm47xx_board_type bcm47xx_board_unknown[] __initconst = { - {BCM47XX_BOARD_UNKNOWN, "Unknown Board"}, -@@ -274,6 +281,16 @@ static __init const struct bcm47xx_board - return &e3->board; - } - } -+ -+ if (bcm47xx_nvram_getenv("boardtype", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boardrev", buf2, sizeof(buf2)) >= 0 && -+ bcm47xx_nvram_getenv("boardnum", buf3, sizeof(buf3)) == -ENOENT) { -+ for (e2 = bcm47xx_board_list_board_type_rev; e2->value1; e2++) { -+ if (!strcmp(buf1, e2->value1) && -+ !strcmp(buf2, e2->value2)) -+ return &e2->board; -+ } -+ } - return bcm47xx_board_unknown; - } - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -383,6 +383,14 @@ bcm47xx_leds_netgear_wnr834bv2[] __initc - BCM47XX_GPIO_LED(7, "unk", "connected", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Siemens */ -+static const struct gpio_led -+bcm47xx_leds_siemens_se505v2[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ - /* SimpleTech */ - - static const struct gpio_led -@@ -562,6 +570,10 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); - break; - -+ case BCM47XX_BOARD_SIEMENS_SE505V2: -+ bcm47xx_set_pdata(bcm47xx_leds_siemens_se505v2); -+ break; -+ - case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE: - bcm47xx_set_pdata(bcm47xx_leds_simpletech_simpleshare); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -94,6 +94,8 @@ enum bcm47xx_board { - - BCM47XX_BOARD_PHICOMM_M1, - -+ BCM47XX_BOARD_SIEMENS_SE505V2, -+ - BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE, - - BCM47XX_BOARD_ZTE_H218N, diff --git a/target/linux/brcm47xx/patches-3.10/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch b/target/linux/brcm47xx/patches-3.10/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch deleted file mode 100644 index ff6c388..0000000 --- a/target/linux/brcm47xx/patches-3.10/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 44927df87162ae9beb6e7b934b0e75818b88e350 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Thu, 2 Jan 2014 19:10:05 +0100 -Subject: [PATCH] MIPS: BCM47XX: add Belkin F7Dxxxx board detection - -From: Cody P Schafer <devel@codyps.com> - -Add a few Belkin F7Dxxxx entries, with F7D4401 sourced from online -documentation and the "F7D7302" being observed. F7D3301, F7D3302, and -F7D4302 are reasonable guesses which are unlikely to cause -mis-detection. - -Signed-off-by: Cody P Schafer <devel@codyps.com> -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/board.c | 4 ++++ - arch/mips/bcm47xx/buttons.c | 4 ++++ - arch/mips/bcm47xx/leds.c | 4 ++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 4 ++++ - 4 files changed, 16 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -71,7 +71,11 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_ASUS_WL500W, "Asus WL500W"}, "WL500gW-"}, - {{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-"}, - {{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-"}, -+ {{BCM47XX_BOARD_BELKIN_F7D3301, "Belkin F7D3301"}, "F7D3301"}, -+ {{BCM47XX_BOARD_BELKIN_F7D3302, "Belkin F7D3302"}, "F7D3302"}, - {{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301"}, -+ {{BCM47XX_BOARD_BELKIN_F7D4302, "Belkin F7D4302"}, "F7D4302"}, -+ {{BCM47XX_BOARD_BELKIN_F7D4401, "Belkin F7D4401"}, "F7D4401"}, - { {0}, NULL}, - }; - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -420,7 +420,11 @@ int __init bcm47xx_buttons_register(void - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wlhdd); - break; - -+ case BCM47XX_BOARD_BELKIN_F7D3301: -+ case BCM47XX_BOARD_BELKIN_F7D3302: - case BCM47XX_BOARD_BELKIN_F7D4301: -+ case BCM47XX_BOARD_BELKIN_F7D4302: -+ case BCM47XX_BOARD_BELKIN_F7D4401: - err = bcm47xx_copy_bdata(bcm47xx_buttons_belkin_f7d4301); - break; - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -457,7 +457,11 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_asus_wlhdd); - break; - -+ case BCM47XX_BOARD_BELKIN_F7D3301: -+ case BCM47XX_BOARD_BELKIN_F7D3302: - case BCM47XX_BOARD_BELKIN_F7D4301: -+ case BCM47XX_BOARD_BELKIN_F7D4302: -+ case BCM47XX_BOARD_BELKIN_F7D4401: - bcm47xx_set_pdata(bcm47xx_leds_belkin_f7d4301); - break; - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -27,7 +27,11 @@ enum bcm47xx_board { - BCM47XX_BOARD_ASUS_WL700GE, - BCM47XX_BOARD_ASUS_WLHDD, - -+ BCM47XX_BOARD_BELKIN_F7D3301, -+ BCM47XX_BOARD_BELKIN_F7D3302, - BCM47XX_BOARD_BELKIN_F7D4301, -+ BCM47XX_BOARD_BELKIN_F7D4302, -+ BCM47XX_BOARD_BELKIN_F7D4401, - - BCM47XX_BOARD_BUFFALO_WBR2_G54, - BCM47XX_BOARD_BUFFALO_WHR2_A54G54, diff --git a/target/linux/brcm47xx/patches-3.10/143-MIPS-BCM47XX-Check-all-32-GPIOs-when-looking-for-a-p.patch b/target/linux/brcm47xx/patches-3.10/143-MIPS-BCM47XX-Check-all-32-GPIOs-when-looking-for-a-p.patch deleted file mode 100644 index 42ce9fe..0000000 --- a/target/linux/brcm47xx/patches-3.10/143-MIPS-BCM47XX-Check-all-32-GPIOs-when-looking-for-a-p.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4fe2169acecb6e62821dfe14bc5c5852870b516f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 13 Feb 2014 17:48:12 +0100 -Subject: MIPS: BCM47XX: Check all (32) GPIOs when looking for a pin -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Broadcom boards support 32 GPIOs and NVRAM may have entires for higher -ones too. Example: -gpio23=wombo_reset - -Signed-off-by: Rafa? Mi?ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Cc: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Patchwork: https://patchwork.linux-mips.org/patch/6547/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> - ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -197,7 +197,7 @@ int bcm47xx_nvram_gpio_pin(const char *n - char nvram_var[10]; - char buf[30]; - -- for (i = 0; i < 16; i++) { -+ for (i = 0; i < 32; i++) { - err = snprintf(nvram_var, sizeof(nvram_var), "gpio%i", i); - if (err <= 0) - continue; diff --git a/target/linux/brcm47xx/patches-3.10/144-make-reboot-more-reliable.patch b/target/linux/brcm47xx/patches-3.10/144-make-reboot-more-reliable.patch deleted file mode 100644 index 50431de..0000000 --- a/target/linux/brcm47xx/patches-3.10/144-make-reboot-more-reliable.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 26db431400c336c4cc658cb4888bab18d254c64a Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sat, 9 Aug 2014 00:00:09 +0200 -Subject: [PATCH] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785 - -This adds some code based on code from the Broadcom GPL tar to fix the -reboot problems on BCM4705/BCM4785. I tried rebooting my device for ~10 -times and have never seen a problem. This reverts the changes in the -previous commit and adds the real fix as suggested by RafaÅ‚. - -Setting bit 22 in Reg 22, sel 4 puts the BIU (Bus Interface Unit) into -async mode. - -The previous try was this: -commit 316cad5c1d4daee998cd1f83ccdb437f6f20d45c -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Mon Jul 28 23:53:57 2014 +0200 - - MIPS: BCM47XX: make reboot more relaiable - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -55,7 +55,16 @@ static void bcm47xx_machine_restart(char - switch (bcm47xx_bus_type) { - #ifdef CONFIG_BCM47XX_SSB - case BCM47XX_BUS_TYPE_SSB: -+ if (bcm47xx_bus.ssb.chip_id == 0x4785) -+ write_c0_diag4(1 << 22); - ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 1); -+ if (bcm47xx_bus.ssb.chip_id == 0x4785) { -+ __asm__ __volatile__( -+ ".set\tmips3\n\t" -+ "sync\n\t" -+ "wait\n\t" -+ ".set\tmips0"); -+ } - break; - #endif - #ifdef CONFIG_BCM47XX_BCMA diff --git a/target/linux/brcm47xx/patches-3.10/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch b/target/linux/brcm47xx/patches-3.10/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch deleted file mode 100644 index 2ee5442..0000000 --- a/target/linux/brcm47xx/patches-3.10/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 103c0bf3ff46486466bc9138d70c25133d516003 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Tue, 29 Jul 2014 00:08:01 +0200 -Subject: [PATCH] MIPS: BCM47XX: fixup broken MAC addresses in nvram - -The address prefix 00:90:4C is used by Broadcom in their initial -configuration. When a mac address with the prefix 00:90:4C is used all -devices from the same series are sharing the same mac address. To -prevent mac address collisions we replace them with a mac address based -on the base address. To generate such addresses we take the main mac -address from et0macaddr and increase it by two for the first wifi -device and by 3 for the second one. This matches the printed mac -address on the device. The main mac address increased by one is used as -wan address by the vendor code. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: zajec5@gmail.com -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7489/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/sprom.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - ---- a/arch/mips/bcm47xx/sprom.c -+++ b/arch/mips/bcm47xx/sprom.c -@@ -28,6 +28,8 @@ - - #include <bcm47xx.h> - #include <bcm47xx_nvram.h> -+#include <linux/if_ether.h> -+#include <linux/etherdevice.h> - - static void create_key(const char *prefix, const char *postfix, - const char *name, char *buf, int len) -@@ -631,6 +633,33 @@ static void bcm47xx_fill_sprom_path_r45( - } - } - -+static bool bcm47xx_is_valid_mac(u8 *mac) -+{ -+ return mac && !(mac[0] == 0x00 && mac[1] == 0x90 && mac[2] == 0x4c); -+} -+ -+static int bcm47xx_increase_mac_addr(u8 *mac, u8 num) -+{ -+ u8 *oui = mac + ETH_ALEN/2 - 1; -+ u8 *p = mac + ETH_ALEN - 1; -+ -+ do { -+ (*p) += num; -+ if (*p > num) -+ break; -+ p--; -+ num = 1; -+ } while (p != oui); -+ -+ if (p == oui) { -+ pr_err("unable to fetch mac address\n"); -+ return -ENOENT; -+ } -+ return 0; -+} -+ -+static int mac_addr_used = 2; -+ - static void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, - const char *prefix, bool fallback) - { -@@ -648,6 +677,25 @@ static void bcm47xx_fill_sprom_ethernet( - - nvram_read_macaddr(prefix, "macaddr", sprom->il0mac, fallback); - nvram_read_macaddr(prefix, "il0macaddr", sprom->il0mac, fallback); -+ -+ /* The address prefix 00:90:4C is used by Broadcom in their initial -+ configuration. When a mac address with the prefix 00:90:4C is used -+ all devices from the same series are sharing the same mac address. -+ To prevent mac address collisions we replace them with a mac address -+ based on the base address. */ -+ if (!bcm47xx_is_valid_mac(sprom->il0mac)) { -+ u8 mac[6]; -+ -+ nvram_read_macaddr(NULL, "et0macaddr", mac, false); -+ if (bcm47xx_is_valid_mac(mac)) { -+ int err = bcm47xx_increase_mac_addr(mac, mac_addr_used); -+ -+ if (!err) { -+ memcpy(sprom->il0mac, mac, ETH_ALEN); -+ mac_addr_used++; -+ } -+ } -+ } - } - - static void bcm47xx_fill_board_data(struct ssb_sprom *sprom, const char *prefix, diff --git a/target/linux/brcm47xx/patches-3.10/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch b/target/linux/brcm47xx/patches-3.10/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch deleted file mode 100644 index eee4b04..0000000 --- a/target/linux/brcm47xx/patches-3.10/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 250dc03727b9cce91bd86091f05bf2443e2be9ec Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Tue, 29 Jul 2014 00:12:09 +0200 -Subject: [PATCH] MIPS: BCM47XX: add Microsoft MN-700 and Asus WL500G - -This patch adds detection for the Microsoft MN-700 and the Asus WL500G -router. This is based on some old code from OpenWrt. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: zajec5@gmail.com -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7490/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 17 +++++++++++++++++ - arch/mips/bcm47xx/buttons.c | 19 +++++++++++++++++++ - arch/mips/bcm47xx/leds.c | 19 +++++++++++++++++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 3 +++ - 4 files changed, 58 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -79,6 +79,14 @@ struct bcm47xx_board_type_list1 bcm47xx_ - { {0}, NULL}, - }; - -+/* hardware_version, boardnum */ -+static const -+struct bcm47xx_board_type_list2 bcm47xx_board_list_hw_version_num[] __initconst = { -+ {{BCM47XX_BOARD_MICROSOFT_MN700, "Microsoft MN-700"}, "WL500-", "mn700"}, -+ {{BCM47XX_BOARD_ASUS_WL500G, "Asus WL500G"}, "WL500-", "asusX"}, -+ { {0}, NULL}, -+}; -+ - /* productid */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_productid[] __initconst = { -@@ -236,6 +244,15 @@ static __init const struct bcm47xx_board - } - } - -+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boardtype", buf2, sizeof(buf2)) >= 0) { -+ for (e2 = bcm47xx_board_list_boot_hw; e2->value1; e2++) { -+ if (!strstarts(buf1, e2->value1) && -+ !strcmp(buf2, e2->value2)) -+ return &e2->board; -+ } -+ } -+ - if (bcm47xx_nvram_getenv("productid", buf1, sizeof(buf1)) >= 0) { - for (e1 = bcm47xx_board_list_productid; e1->value1; e1++) { - if (!strcmp(buf1, e1->value1)) ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -56,6 +56,11 @@ bcm47xx_buttons_asus_wl330ge[] __initcon - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500g[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_asus_wl500gd[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -288,6 +293,13 @@ bcm47xx_buttons_linksys_wrtsl54gs[] __in - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; - -+/* Microsoft */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_microsoft_nm700[] __initconst = { -+ BCM47XX_GPIO_KEY(7, KEY_RESTART), -+}; -+ - /* Motorola */ - - static const struct gpio_keys_button -@@ -395,6 +407,9 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_ASUS_WL330GE: - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl330ge); - break; -+ case BCM47XX_BOARD_ASUS_WL500G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500g); -+ break; - case BCM47XX_BOARD_ASUS_WL500GD: - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gd); - break; -@@ -517,6 +532,10 @@ int __init bcm47xx_buttons_register(void - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs); - break; - -+ case BCM47XX_BOARD_MICROSOFT_MN700: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_microsoft_nm700); -+ break; -+ - case BCM47XX_BOARD_MOTOROLA_WE800G: - err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -64,6 +64,11 @@ bcm47xx_leds_asus_wl330ge[] __initconst - }; - - static const struct gpio_led -+bcm47xx_leds_asus_wl500g[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_asus_wl500gd[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), - }; -@@ -332,6 +337,13 @@ bcm47xx_leds_linksys_wrtsl54gs[] __initc - BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Microsoft */ -+ -+static const struct gpio_led -+bcm47xx_leds_microsoft_nm700[] __initconst = { -+ BCM47XX_GPIO_LED(6, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+}; -+ - /* Motorola */ - - static const struct gpio_led -@@ -432,6 +444,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_ASUS_WL330GE: - bcm47xx_set_pdata(bcm47xx_leds_asus_wl330ge); - break; -+ case BCM47XX_BOARD_ASUS_WL500G: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500g); -+ break; - case BCM47XX_BOARD_ASUS_WL500GD: - bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gd); - break; -@@ -554,6 +569,10 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs); - break; - -+ case BCM47XX_BOARD_MICROSOFT_MN700: -+ bcm47xx_set_pdata(bcm47xx_leds_microsoft_nm700); -+ break; -+ - case BCM47XX_BOARD_MOTOROLA_WE800G: - bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -18,6 +18,7 @@ enum bcm47xx_board { - BCM47XX_BOARD_ASUS_WL300G, - BCM47XX_BOARD_ASUS_WL320GE, - BCM47XX_BOARD_ASUS_WL330GE, -+ BCM47XX_BOARD_ASUS_WL500G, - BCM47XX_BOARD_ASUS_WL500GD, - BCM47XX_BOARD_ASUS_WL500GPV1, - BCM47XX_BOARD_ASUS_WL500GPV2, -@@ -75,6 +76,8 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, - -+ BCM47XX_BOARD_MICROSOFT_MN700, -+ - BCM47XX_BOARD_MOTOROLA_WE800G, - BCM47XX_BOARD_MOTOROLA_WR850GP, - BCM47XX_BOARD_MOTOROLA_WR850GV2V3, diff --git a/target/linux/brcm47xx/patches-3.10/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch b/target/linux/brcm47xx/patches-3.10/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch deleted file mode 100644 index 86a98f2..0000000 --- a/target/linux/brcm47xx/patches-3.10/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 41a867cb07443c77c24747dcbad1a40002516469 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Fri, 20 Jun 2014 07:56:39 +0200 -Subject: [PATCH] MIPS: BCM47xx: Distinguish WRT54G series devices by boardtype -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Catalin reported that GPIOs used by bcm47xx don't match layout of his -WRT54GS V1.0 board. It seems we need to distinguish these 54G* devices. - -Reported-by: Catalin Patulea <cat@vv.carleton.ca> -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7112/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 6 +++--- - arch/mips/bcm47xx/buttons.c | 10 ++++++---- - arch/mips/bcm47xx/leds.c | 10 ++++++---- - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 4 +++- - 4 files changed, 18 insertions(+), 12 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -187,9 +187,9 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, - { {0}, NULL}, - }; - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -270,7 +270,7 @@ bcm47xx_buttons_linksys_wrt54g3gv2[] __i - }; - - static const struct gpio_keys_button --bcm47xx_buttons_linksys_wrt54gsv1[] __initconst = { -+bcm47xx_buttons_linksys_wrt54g_generic[] __initconst = { - BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -516,12 +516,14 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1); - break; -- case BCM47XX_BOARD_LINKSYS_WRT54G: -- err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1); -- break; - case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g_generic); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -297,7 +297,7 @@ bcm47xx_leds_linksys_wrt310nv1[] __initc - }; - - static const struct gpio_led --bcm47xx_leds_linksys_wrt54gsv1[] __initconst = { -+bcm47xx_leds_linksys_wrt54g_generic[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -553,12 +553,14 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1); - break; -- case BCM47XX_BOARD_LINKSYS_WRT54G: -- bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1); -- break; - case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -71,7 +71,9 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT310NV1, - BCM47XX_BOARD_LINKSYS_WRT310NV2, - BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -- BCM47XX_BOARD_LINKSYS_WRT54G, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708, - BCM47XX_BOARD_LINKSYS_WRT610NV1, - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, diff --git a/target/linux/brcm47xx/patches-3.10/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch b/target/linux/brcm47xx/patches-3.10/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch deleted file mode 100644 index 181758e..0000000 --- a/target/linux/brcm47xx/patches-3.10/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 7bb26b1691166d0d830c42c1a25caf82208bf90d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Fri, 20 Jun 2014 07:56:40 +0200 -Subject: [PATCH] MIPS: BCM47xx: Fix LEDs on WRT54GS V1.0 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Reported-by: Catalin Patulea <cat@vv.carleton.ca> -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7113/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/leds.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -311,6 +311,14 @@ bcm47xx_leds_linksys_wrt54g3gv2[] __init - BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Verified on: WRT54GS V1.0 */ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g_type_0101[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -557,6 +565,8 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); - break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0101); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); diff --git a/target/linux/brcm47xx/patches-3.10/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch b/target/linux/brcm47xx/patches-3.10/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch deleted file mode 100644 index 59afdd4..0000000 --- a/target/linux/brcm47xx/patches-3.10/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c949c0bc55571209fe6742f645b1e2eb20099591 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Tue, 17 Jun 2014 16:36:50 +0200 -Subject: [PATCH 149/150] MIPS: BCM47XX: Move shared symbols to the config - BCM47XX -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7100/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/Kconfig | 2 ++ - arch/mips/bcm47xx/Kconfig | 4 ---- - 2 files changed, 2 insertions(+), 4 deletions(-) - ---- a/arch/mips/Kconfig -+++ b/arch/mips/Kconfig -@@ -119,6 +119,8 @@ config BCM47XX - select SYS_SUPPORTS_LITTLE_ENDIAN - select SYS_HAS_EARLY_PRINTK - select EARLY_PRINTK_8250 if EARLY_PRINTK -+ select GPIOLIB -+ select LEDS_GPIO_REGISTER - help - Support for BCM47XX based boards - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -11,8 +11,6 @@ config BCM47XX_SSB - select SSB_DRIVER_PCICORE if PCI - select SSB_PCICORE_HOSTMODE if PCI - select SSB_DRIVER_GPIO -- select GPIOLIB -- select LEDS_GPIO_REGISTER - default y - help - Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support. -@@ -29,8 +27,6 @@ config BCM47XX_BCMA - select BCMA_HOST_PCI if PCI - select BCMA_DRIVER_PCI_HOSTMODE if PCI - select BCMA_DRIVER_GPIO -- select GPIOLIB -- select LEDS_GPIO_REGISTER - default y - help - Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus. diff --git a/target/linux/brcm47xx/patches-3.10/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch b/target/linux/brcm47xx/patches-3.10/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch deleted file mode 100644 index 2fa4442..0000000 --- a/target/linux/brcm47xx/patches-3.10/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch +++ /dev/null @@ -1,32 +0,0 @@ -From ce01cbef8b0b71d01f8a68cba59da3198165bae6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Tue, 17 Jun 2014 16:36:51 +0200 -Subject: [PATCH 150/150] MIPS: BCM47XX: Select SYS_SUPPORTS_HIGHMEM for - BCM47XX_BCMA -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It seems that bcm47xx can handle only 128 MiB of RAM directly. There -are few devices with 256 MiB, but Broadcom's SDK uses highmem to handle -anything above 128 MiB. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7101/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/Kconfig | 1 + - 1 file changed, 1 insertion(+) - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -20,6 +20,7 @@ config BCM47XX_SSB - config BCM47XX_BCMA - bool "BCMA Support for Broadcom BCM47XX" - select SYS_HAS_CPU_MIPS32_R2 -+ select SYS_SUPPORTS_HIGHMEM - select CPU_MIPSR2_IRQ_VI - select BCMA - select BCMA_HOST_SOC diff --git a/target/linux/brcm47xx/patches-3.10/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch b/target/linux/brcm47xx/patches-3.10/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch deleted file mode 100644 index 78846d4..0000000 --- a/target/linux/brcm47xx/patches-3.10/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 9194b3431616567ffbf69ef970506d695912be0b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:24:30 +0200 -Subject: [PATCH] MIPS: BCM47XX: Devices database update for 3.17 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Detect more devices and register leds & buttons for them. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7394/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 3 ++- - arch/mips/bcm47xx/buttons.c | 9 ++++++++ - arch/mips/bcm47xx/leds.c | 53 +++++++++++++++++++++++++++++++++++++-------- - 3 files changed, 55 insertions(+), 10 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -57,6 +57,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_hardware_version[] __initconst = { - {{BCM47XX_BOARD_ASUS_RTN10U, "Asus RT-N10U"}, "RTN10U"}, -+ {{BCM47XX_BOARD_ASUS_RTN10D, "Asus RT-N10D"}, "RTN10D"}, - {{BCM47XX_BOARD_ASUS_RTN12, "Asus RT-N12"}, "RT-N12"}, - {{BCM47XX_BOARD_ASUS_RTN12B1, "Asus RT-N12B1"}, "RTN12B1"}, - {{BCM47XX_BOARD_ASUS_RTN12C1, "Asus RT-N12C1"}, "RTN12C1"}, -@@ -105,7 +106,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - /* ModelId */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_ModelId[] __initconst = { -- {{BCM47XX_BOARD_DELL_TM2300, "Dell WX-5565"}, "WX-5565"}, -+ {{BCM47XX_BOARD_DELL_TM2300, "Dell TrueMobile 2300"}, "WX-5565"}, - {{BCM47XX_BOARD_MOTOROLA_WE800G, "Motorola WE800G"}, "WE800G"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GP, "Motorola WR850GP"}, "WR850GP"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GV2V3, "Motorola WR850G"}, "WR850G"}, ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -341,6 +341,12 @@ bcm47xx_buttons_netgear_wndr4500v1[] __i - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wnr3500lv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_netgear_wnr834bv2[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -557,6 +563,9 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500v1); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr3500lv1); -+ break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -35,6 +35,15 @@ bcm47xx_leds_asus_rtn12[] __initconst = - }; - - static const struct gpio_led -+bcm47xx_leds_asus_rtn15u[] __initconst = { -+ /* TODO: Add "wlan" LED */ -+ BCM47XX_GPIO_LED(3, "blue", "wan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(4, "blue", "lan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(9, "blue", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_asus_rtn16[] __initconst = { - BCM47XX_GPIO_LED(1, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(7, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -42,8 +51,8 @@ bcm47xx_leds_asus_rtn16[] __initconst = - - static const struct gpio_led - bcm47xx_leds_asus_rtn66u[] __initconst = { -- BCM47XX_GPIO_LED(12, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -- BCM47XX_GPIO_LED(15, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(12, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(15, "blue", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - static const struct gpio_led -@@ -221,8 +230,8 @@ bcm47xx_leds_linksys_e1000v1[] __initcon - - static const struct gpio_led - bcm47xx_leds_linksys_e1000v21[] __initconst = { -- BCM47XX_GPIO_LED(5, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(6, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(7, "amber", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(8, "blue", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), - }; -@@ -319,6 +328,16 @@ bcm47xx_leds_linksys_wrt54g_type_0101[] - BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Verified on: WRT54GL V1.1 */ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g_type_0467[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -338,11 +357,10 @@ bcm47xx_leds_linksys_wrt610nv2[] __initc - - static const struct gpio_led - bcm47xx_leds_linksys_wrtsl54gs[] __initconst = { -- BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -- BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(0, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - /* Microsoft */ -@@ -397,6 +415,15 @@ bcm47xx_leds_netgear_wndr4500v1[] __init - }; - - static const struct gpio_led -+bcm47xx_leds_netgear_wnr3500lv1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "green", "wan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_netgear_wnr834bv2[] __initconst = { - BCM47XX_GPIO_LED(2, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(3, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -437,6 +464,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_ASUS_RTN12: - bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12); - break; -+ case BCM47XX_BOARD_ASUS_RTN15U: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_rtn15u); -+ break; - case BCM47XX_BOARD_ASUS_RTN16: - bcm47xx_set_pdata(bcm47xx_leds_asus_rtn16); - break; -@@ -568,6 +598,8 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0101); - break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0467); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); - break; -@@ -601,6 +633,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500v1); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr3500lv1); -+ break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); - break; diff --git a/target/linux/brcm47xx/patches-3.10/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch b/target/linux/brcm47xx/patches-3.10/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch deleted file mode 100644 index 8fb06b2..0000000 --- a/target/linux/brcm47xx/patches-3.10/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch +++ /dev/null @@ -1,107 +0,0 @@ -From d377732c8c9aac14ccb900b65678558b0fb8f0f3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:26:32 +0200 -Subject: [PATCH 152/153] Revert "MIPS: Delete unused function - add_temporary_entry." -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit d7a887a73dec6c387b02a966a71aac767bbd9ce6. - -Function add_temporary_entry is needed by bcm47xx to support highmem. We -need to add a temporary entry to check for amount of RAM. -The only change made in this revert was replacing (ENTER|EXIT)_CRITICAL. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7395/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/include/asm/pgtable-32.h | 10 ++++++++ - arch/mips/mm/tlb-r4k.c | 47 ++++++++++++++++++++++++++++++++++++++ - 2 files changed, 57 insertions(+) - ---- a/arch/mips/include/asm/pgtable-32.h -+++ b/arch/mips/include/asm/pgtable-32.h -@@ -19,6 +19,16 @@ - #include <asm-generic/pgtable-nopmd.h> - - /* -+ * - add_temporary_entry() add a temporary TLB entry. We use TLB entries -+ * starting at the top and working down. This is for populating the -+ * TLB before trap_init() puts the TLB miss handler in place. It -+ * should be used only for entries matching the actual page tables, -+ * to prevent inconsistencies. -+ */ -+extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, -+ unsigned long entryhi, unsigned long pagemask); -+ -+/* - * Basically we have the same two-level (which is the logical three level - * Linux page table layout folded) page tables as the i386. Some day - * when we have proper page coloring support we can have a 1% quicker ---- a/arch/mips/mm/tlb-r4k.c -+++ b/arch/mips/mm/tlb-r4k.c -@@ -389,6 +389,51 @@ int __init has_transparent_hugepage(void - - #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ - -+/* -+ * Used for loading TLB entries before trap_init() has started, when we -+ * don't actually want to add a wired entry which remains throughout the -+ * lifetime of the system -+ */ -+ -+static int temp_tlb_entry __cpuinitdata; -+ -+__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, -+ unsigned long entryhi, unsigned long pagemask) -+{ -+ int ret = 0; -+ unsigned long flags; -+ unsigned long wired; -+ unsigned long old_pagemask; -+ unsigned long old_ctx; -+ -+ local_irq_save(flags); -+ /* Save old context and create impossible VPN2 value */ -+ old_ctx = read_c0_entryhi(); -+ old_pagemask = read_c0_pagemask(); -+ wired = read_c0_wired(); -+ if (--temp_tlb_entry < wired) { -+ printk(KERN_WARNING -+ "No TLB space left for add_temporary_entry\n"); -+ ret = -ENOSPC; -+ goto out; -+ } -+ -+ write_c0_index(temp_tlb_entry); -+ write_c0_pagemask(pagemask); -+ write_c0_entryhi(entryhi); -+ write_c0_entrylo0(entrylo0); -+ write_c0_entrylo1(entrylo1); -+ mtc0_tlbw_hazard(); -+ tlb_write_indexed(); -+ tlbw_use_hazard(); -+ -+ write_c0_entryhi(old_ctx); -+ write_c0_pagemask(old_pagemask); -+out: -+ local_irq_restore(flags); -+ return ret; -+} -+ - static int __cpuinitdata ntlb; - static int __init set_ntlb(char *str) - { -@@ -426,6 +471,8 @@ void __cpuinit tlb_init(void) - write_c0_pagegrain(pg); - } - -+ temp_tlb_entry = current_cpu_data.tlbsize - 1; -+ - /* From this point on the ARC firmware is dead. */ - local_flush_tlb_all(); - diff --git a/target/linux/brcm47xx/patches-3.10/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch b/target/linux/brcm47xx/patches-3.10/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch deleted file mode 100644 index ed5695d..0000000 --- a/target/linux/brcm47xx/patches-3.10/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 6ee1d93455384cef8a0426effe85da241b525b63 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:26:33 +0200 -Subject: [PATCH 153/153] MIPS: BCM47XX: Detect more then 128 MiB of RAM - (HIGHMEM) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -So far BCM47XX can only detect amount of HIGHMEM. It still requires -adding (registering) and well-testing before enabling by default. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7396/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/bcm47xx_private.h | 3 ++ - arch/mips/bcm47xx/prom.c | 68 ++++++++++++++++++++++++++++++++++++- - arch/mips/bcm47xx/setup.c | 3 ++ - arch/mips/include/asm/pgtable-32.h | 2 ++ - arch/mips/mm/tlb-r4k.c | 2 +- - 5 files changed, 76 insertions(+), 2 deletions(-) - ---- a/arch/mips/bcm47xx/bcm47xx_private.h -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -3,6 +3,9 @@ - - #include <linux/kernel.h> - -+/* prom.c */ -+void __init bcm47xx_prom_highmem_init(void); -+ - /* buttons.c */ - int __init bcm47xx_buttons_register(void); - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -51,6 +51,8 @@ __init void bcm47xx_set_system_type(u16 - chip_id); - } - -+static unsigned long lowmem __initdata; -+ - static __init void prom_init_mem(void) - { - unsigned long mem; -@@ -84,6 +86,7 @@ static __init void prom_init_mem(void) - if (!memcmp(prom_init, prom_init + mem, 32)) - break; - } -+ lowmem = mem; - - /* Ignoring the last page when ddr size is 128M. Cached - * accesses to last page is causing the processor to prefetch -@@ -92,7 +95,6 @@ static __init void prom_init_mem(void) - */ - if (c->cputype == CPU_74K && (mem == (128 << 20))) - mem -= 0x1000; -- - add_memory_region(0, mem, BOOT_MEM_RAM); - } - -@@ -111,3 +113,67 @@ void __init prom_init(void) - void __init prom_free_prom_memory(void) - { - } -+ -+#if defined(CONFIG_BCM47XX_BCMA) && defined(CONFIG_HIGHMEM) -+ -+#define EXTVBASE 0xc0000000 -+#define ENTRYLO(x) ((pte_val(pfn_pte((x) >> _PFN_SHIFT, PAGE_KERNEL_UNCACHED)) >> 6) | 1) -+ -+#include <asm/tlbflush.h> -+ -+/* Stripped version of tlb_init, with the call to build_tlb_refill_handler -+ * dropped. Calling it at this stage causes a hang. -+ */ -+void __cpuinit early_tlb_init(void) -+{ -+ write_c0_pagemask(PM_DEFAULT_MASK); -+ write_c0_wired(0); -+ temp_tlb_entry = current_cpu_data.tlbsize - 1; -+ local_flush_tlb_all(); -+} -+ -+void __init bcm47xx_prom_highmem_init(void) -+{ -+ unsigned long off = (unsigned long)prom_init; -+ unsigned long extmem = 0; -+ bool highmem_region = false; -+ -+ if (WARN_ON(bcm47xx_bus_type != BCM47XX_BUS_TYPE_BCMA)) -+ return; -+ -+ if (bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4706) -+ highmem_region = true; -+ -+ if (lowmem != 128 << 20 || !highmem_region) -+ return; -+ -+ early_tlb_init(); -+ -+ /* Add one temporary TLB entry to map SDRAM Region 2. -+ * Physical Virtual -+ * 0x80000000 0xc0000000 (1st: 256MB) -+ * 0x90000000 0xd0000000 (2nd: 256MB) -+ */ -+ add_temporary_entry(ENTRYLO(0x80000000), -+ ENTRYLO(0x80000000 + (256 << 20)), -+ EXTVBASE, PM_256M); -+ -+ off = EXTVBASE + __pa(off); -+ for (extmem = 128 << 20; extmem < 512 << 20; extmem <<= 1) { -+ if (!memcmp(prom_init, (void *)(off + extmem), 16)) -+ break; -+ } -+ extmem -= lowmem; -+ -+ early_tlb_init(); -+ -+ if (!extmem) -+ return; -+ -+ pr_warn("Found %lu MiB of extra memory, but highmem is unsupported yet!\n", -+ extmem >> 20); -+ -+ /* TODO: Register extra memory */ -+} -+ -+#endif /* defined(CONFIG_BCM47XX_BCMA) && defined(CONFIG_HIGHMEM) */ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -223,6 +223,9 @@ void __init plat_mem_setup(void) - bcm47xx_bus_type = BCM47XX_BUS_TYPE_BCMA; - bcm47xx_register_bcma(); - bcm47xx_set_system_type(bcm47xx_bus.bcma.bus.chipinfo.id); -+#ifdef CONFIG_HIGHMEM -+ bcm47xx_prom_highmem_init(); -+#endif - #endif - } else { - printk(KERN_INFO "bcm47xx: using ssb bus\n"); ---- a/arch/mips/include/asm/pgtable-32.h -+++ b/arch/mips/include/asm/pgtable-32.h -@@ -18,6 +18,8 @@ - - #include <asm-generic/pgtable-nopmd.h> - -+extern int temp_tlb_entry __cpuinitdata; -+ - /* - * - add_temporary_entry() add a temporary TLB entry. We use TLB entries - * starting at the top and working down. This is for populating the ---- a/arch/mips/mm/tlb-r4k.c -+++ b/arch/mips/mm/tlb-r4k.c -@@ -395,7 +395,7 @@ int __init has_transparent_hugepage(void - * lifetime of the system - */ - --static int temp_tlb_entry __cpuinitdata; -+int temp_tlb_entry __cpuinitdata; - - __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, - unsigned long entryhi, unsigned long pagemask) diff --git a/target/linux/brcm47xx/patches-3.10/159-cpu_fixes.patch b/target/linux/brcm47xx/patches-3.10/159-cpu_fixes.patch deleted file mode 100644 index 984624a..0000000 --- a/target/linux/brcm47xx/patches-3.10/159-cpu_fixes.patch +++ /dev/null @@ -1,368 +0,0 @@ ---- a/arch/mips/include/asm/r4kcache.h -+++ b/arch/mips/include/asm/r4kcache.h -@@ -17,6 +17,20 @@ - #include <asm/cpu-features.h> - #include <asm/mipsmtregs.h> - -+#ifdef CONFIG_BCM47XX -+#include <asm/paccess.h> -+#include <linux/ssb/ssb.h> -+#define BCM4710_DUMMY_RREG() ((void) *((u8 *) KSEG1ADDR(SSB_ENUM_BASE))) -+ -+#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr)) -+#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); }) -+#else -+#define BCM4710_DUMMY_RREG() -+ -+#define BCM4710_FILL_TLB(addr) -+#define BCM4710_PROTECTED_FILL_TLB(addr) -+#endif -+ - /* - * This macro return a properly sign-extended address suitable as base address - * for indexed cache operations. Two issues here: -@@ -150,6 +164,7 @@ static inline void flush_icache_line_ind - static inline void flush_dcache_line_indexed(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Index_Writeback_Inv_D, addr); - __dflush_epilogue - } -@@ -169,6 +184,7 @@ static inline void flush_icache_line(uns - static inline void flush_dcache_line(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Hit_Writeback_Inv_D, addr); - __dflush_epilogue - } -@@ -176,6 +192,7 @@ static inline void flush_dcache_line(uns - static inline void invalidate_dcache_line(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Hit_Invalidate_D, addr); - __dflush_epilogue - } -@@ -208,6 +225,7 @@ static inline void flush_scache_line(uns - */ - static inline void protected_flush_icache_line(unsigned long addr) - { -+ BCM4710_DUMMY_RREG(); - protected_cache_op(Hit_Invalidate_I, addr); - } - -@@ -219,6 +237,7 @@ static inline void protected_flush_icach - */ - static inline void protected_writeback_dcache_line(unsigned long addr) - { -+ BCM4710_DUMMY_RREG(); - protected_cache_op(Hit_Writeback_Inv_D, addr); - } - -@@ -339,8 +358,52 @@ static inline void invalidate_tcache_pag - : "r" (base), \ - "i" (op)); - -+static inline void blast_dcache(void) -+{ -+ unsigned long start = KSEG0; -+ unsigned long dcache_size = current_cpu_data.dcache.waysize * current_cpu_data.dcache.ways; -+ unsigned long end = (start + dcache_size); -+ -+ do { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Index_Writeback_Inv_D, start); -+ start += current_cpu_data.dcache.linesz; -+ } while(start < end); -+} -+ -+static inline void blast_dcache_page(unsigned long page) -+{ -+ unsigned long start = page; -+ unsigned long end = start + PAGE_SIZE; -+ -+ BCM4710_FILL_TLB(start); -+ do { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Hit_Writeback_Inv_D, start); -+ start += current_cpu_data.dcache.linesz; -+ } while(start < end); -+} -+ -+static inline void blast_dcache_page_indexed(unsigned long page) -+{ -+ unsigned long start = page; -+ unsigned long end = start + PAGE_SIZE; -+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit; -+ unsigned long ws_end = current_cpu_data.dcache.ways << -+ current_cpu_data.dcache.waybit; -+ unsigned long ws, addr; -+ for (ws = 0; ws < ws_end; ws += ws_inc) { -+ start = page + ws; -+ for (addr = start; addr < end; addr += current_cpu_data.dcache.linesz) { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Index_Writeback_Inv_D, addr); -+ } -+ } -+} -+ -+ - /* build blast_xxx, blast_xxx_page, blast_xxx_page_indexed */ --#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize) \ -+#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize, war) \ - static inline void blast_##pfx##cache##lsize(void) \ - { \ - unsigned long start = INDEX_BASE; \ -@@ -352,6 +415,7 @@ static inline void blast_##pfx##cache##l - \ - __##pfx##flush_prologue \ - \ -+ war \ - for (ws = 0; ws < ws_end; ws += ws_inc) \ - for (addr = start; addr < end; addr += lsize * 32) \ - cache##lsize##_unroll32(addr|ws, indexop); \ -@@ -366,6 +430,7 @@ static inline void blast_##pfx##cache##l - \ - __##pfx##flush_prologue \ - \ -+ war \ - do { \ - cache##lsize##_unroll32(start, hitop); \ - start += lsize * 32; \ -@@ -384,6 +449,8 @@ static inline void blast_##pfx##cache##l - current_cpu_data.desc.waybit; \ - unsigned long ws, addr; \ - \ -+ war \ -+ \ - __##pfx##flush_prologue \ - \ - for (ws = 0; ws < ws_end; ws += ws_inc) \ -@@ -393,36 +460,38 @@ static inline void blast_##pfx##cache##l - __##pfx##flush_epilogue \ - } - --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16) --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32) --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128) -- --__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16) --__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16, ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16, BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16, ) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32, ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32, BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32, ) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64, ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64, BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64, ) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128, ) -+ -+__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16, ) -+__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32, ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16, ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32, ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64, ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128, ) - - /* build blast_xxx_range, protected_blast_xxx_range */ --#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot) \ -+#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot, war, war2) \ - static inline void prot##blast_##pfx##cache##_range(unsigned long start, \ - unsigned long end) \ - { \ - unsigned long lsize = cpu_##desc##_line_size(); \ - unsigned long addr = start & ~(lsize - 1); \ - unsigned long aend = (end - 1) & ~(lsize - 1); \ -+ war \ - \ - __##pfx##flush_prologue \ - \ - while (1) { \ -+ war2 \ - prot##cache_op(hitop, addr); \ - if (addr == aend) \ - break; \ -@@ -432,13 +501,13 @@ static inline void prot##blast_##pfx##ca - __##pfx##flush_epilogue \ - } - --__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_) --__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_) --__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_) --__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, ) --__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, ) -+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_, BCM4710_PROTECTED_FILL_TLB(addr); BCM4710_PROTECTED_FILL_TLB(aend);, BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_,, ) -+__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_,, ) -+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D,, BCM4710_FILL_TLB(addr); BCM4710_FILL_TLB(aend);, BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD,,, ) - /* blast_inv_dcache_range */ --__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, ) --__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, ) -+__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D,,,BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD,,, ) - - #endif /* _ASM_R4KCACHE_H */ ---- a/arch/mips/include/asm/stackframe.h -+++ b/arch/mips/include/asm/stackframe.h -@@ -449,6 +449,10 @@ - .macro RESTORE_SP_AND_RET - LONG_L sp, PT_R29(sp) - .set mips3 -+#ifdef CONFIG_BCM47XX -+ nop -+ nop -+#endif - eret - .set mips0 - .endm ---- a/arch/mips/kernel/genex.S -+++ b/arch/mips/kernel/genex.S -@@ -46,6 +46,10 @@ - NESTED(except_vec3_generic, 0, sp) - .set push - .set noat -+#ifdef CONFIG_BCM47XX -+ nop -+ nop -+#endif - #if R5432_CP0_INTERRUPT_WAR - mfc0 k0, CP0_INDEX - #endif ---- a/arch/mips/mm/c-r4k.c -+++ b/arch/mips/mm/c-r4k.c -@@ -35,6 +35,9 @@ - #include <asm/traps.h> - #include <asm/dma-coherence.h> - -+/* For enabling BCM4710 cache workarounds */ -+int bcm4710 = 0; -+ - /* - * Special Variant of smp_call_function for use by cache functions: - * -@@ -111,6 +114,9 @@ static void __cpuinit r4k_blast_dcache_p - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache_page = blast_dcache_page; -+ else - if (dc_lsize == 0) - r4k_blast_dcache_page = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -127,6 +133,9 @@ static void __cpuinit r4k_blast_dcache_p - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache_page_indexed = blast_dcache_page_indexed; -+ else - if (dc_lsize == 0) - r4k_blast_dcache_page_indexed = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -144,6 +153,9 @@ static void __cpuinit r4k_blast_dcache_s - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache = blast_dcache; -+ else - if (dc_lsize == 0) - r4k_blast_dcache = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -674,6 +686,8 @@ static void local_r4k_flush_cache_sigtra - unsigned long addr = (unsigned long) arg; - - R4600_HIT_CACHEOP_WAR_IMPL; -+ BCM4710_PROTECTED_FILL_TLB(addr); -+ BCM4710_PROTECTED_FILL_TLB(addr + 4); - if (dc_lsize) - protected_writeback_dcache_line(addr & ~(dc_lsize - 1)); - if (!cpu_icache_snoops_remote_store && scache_size) -@@ -1357,6 +1371,17 @@ static void __cpuinit coherency_setup(vo - * silly idea of putting something else there ... - */ - switch (current_cpu_type()) { -+ case CPU_BMIPS3300: -+ { -+ u32 cm; -+ cm = read_c0_diag(); -+ /* Enable icache */ -+ cm |= (1 << 31); -+ /* Enable dcache */ -+ cm |= (1 << 30); -+ write_c0_diag(cm); -+ } -+ break; - case CPU_R4000PC: - case CPU_R4000SC: - case CPU_R4000MC: -@@ -1404,6 +1429,15 @@ void __cpuinit r4k_cache_init(void) - extern void build_copy_page(void); - struct cpuinfo_mips *c = ¤t_cpu_data; - -+ /* Check if special workarounds are required */ -+#ifdef CONFIG_BCM47XX -+ if (current_cpu_data.cputype == CPU_BMIPS32 && (current_cpu_data.processor_id & 0xff) == 0) { -+ printk("Enabling BCM4710A0 cache workarounds.\n"); -+ bcm4710 = 1; -+ } else -+#endif -+ bcm4710 = 0; -+ - probe_pcache(); - setup_scache(); - -@@ -1469,6 +1503,14 @@ void __cpuinit r4k_cache_init(void) - */ - local_r4k___flush_cache_all(NULL); - -+#ifdef CONFIG_BCM47XX -+ { -+ static void (*_coherency_setup)(void); -+ _coherency_setup = (void (*)(void)) KSEG1ADDR(coherency_setup); -+ _coherency_setup(); -+ } -+#else - coherency_setup(); -+#endif - board_cache_error_setup = r4k_cache_error_setup; - } ---- a/arch/mips/mm/tlbex.c -+++ b/arch/mips/mm/tlbex.c -@@ -1311,6 +1311,9 @@ static void __cpuinit build_r4000_tlb_re - /* No need for uasm_i_nop */ - } - -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+#endif - #ifdef CONFIG_64BIT - build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */ - #else -@@ -1842,6 +1845,9 @@ build_r4000_tlbchange_handler_head(u32 * - { - struct work_registers wr = build_get_work_registers(p); - -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - #ifdef CONFIG_64BIT - build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ - #else diff --git a/target/linux/brcm47xx/patches-3.10/160-kmap_coherent.patch b/target/linux/brcm47xx/patches-3.10/160-kmap_coherent.patch deleted file mode 100644 index 3c9f550..0000000 --- a/target/linux/brcm47xx/patches-3.10/160-kmap_coherent.patch +++ /dev/null @@ -1,70 +0,0 @@ ---- a/arch/mips/include/asm/cpu-features.h -+++ b/arch/mips/include/asm/cpu-features.h -@@ -120,6 +120,9 @@ - #ifndef cpu_has_local_ebase - #define cpu_has_local_ebase 1 - #endif -+#ifndef cpu_use_kmap_coherent -+#define cpu_use_kmap_coherent 1 -+#endif - - /* - * I-Cache snoops remote store. This only matters on SMP. Some multiprocessors ---- a/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h -+++ b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h -@@ -79,4 +79,6 @@ - #define cpu_scache_line_size() 0 - #define cpu_has_vz 0 - -+#define cpu_use_kmap_coherent 0 -+ - #endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */ ---- a/arch/mips/mm/c-r4k.c -+++ b/arch/mips/mm/c-r4k.c -@@ -509,7 +509,7 @@ static inline void local_r4k_flush_cache - */ - map_coherent = (cpu_has_dc_aliases && - page_mapped(page) && !Page_dcache_dirty(page)); -- if (map_coherent) -+ if (map_coherent && cpu_use_kmap_coherent) - vaddr = kmap_coherent(page, addr); - else - vaddr = kmap_atomic(page); -@@ -532,7 +532,7 @@ static inline void local_r4k_flush_cache - } - - if (vaddr) { -- if (map_coherent) -+ if (map_coherent && cpu_use_kmap_coherent) - kunmap_coherent(); - else - kunmap_atomic(vaddr); ---- a/arch/mips/mm/init.c -+++ b/arch/mips/mm/init.c -@@ -203,7 +203,7 @@ void copy_user_highpage(struct page *to, - void *vfrom, *vto; - - vto = kmap_atomic(to); -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(from) && !Page_dcache_dirty(from)) { - vfrom = kmap_coherent(from, vaddr); - copy_page(vto, vfrom); -@@ -225,7 +225,7 @@ void copy_to_user_page(struct vm_area_st - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) - { -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(page) && !Page_dcache_dirty(page)) { - void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); - memcpy(vto, src, len); -@@ -243,7 +243,7 @@ void copy_from_user_page(struct vm_area_ - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) - { -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(page) && !Page_dcache_dirty(page)) { - void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); - memcpy(dst, vfrom, len); diff --git a/target/linux/brcm47xx/patches-3.10/170-fix-74k-cpu.patch b/target/linux/brcm47xx/patches-3.10/170-fix-74k-cpu.patch deleted file mode 100644 index 2cdd887..0000000 --- a/target/linux/brcm47xx/patches-3.10/170-fix-74k-cpu.patch +++ /dev/null @@ -1,56 +0,0 @@ -From fb143ba7f7cd215bc2fc34a478c4c0b6dc56e537 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Mon, 6 Jan 2014 14:51:59 +0100 -Subject: [PATCH] MIPS: BCM47XX: fix position of cpu_wait disabling - -The disabling of cpu_wait was done too early, before the detection was -done. This moves the code to a position where it actually works. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Acked-by: Rafa? Mi?ecki <zajec5@gmail.com> ---- - arch/mips/bcm47xx/setup.c | 34 +++++++++++++++++++++++++--------- - 1 file changed, 25 insertions(+), 9 deletions(-) - ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -37,6 +37,7 @@ - #include <asm/prom.h> - #include <asm/reboot.h> - #include <asm/time.h> -+#include <asm/idle.h> - #include <bcm47xx.h> - #include <bcm47xx_nvram.h> - #include <bcm47xx_board.h> -@@ -243,6 +244,31 @@ void __init plat_mem_setup(void) - mips_set_machine_name(bcm47xx_board_get_name()); - } - -+static int __init bcm47xx_cpu_fixes(void) -+{ -+ switch (bcm47xx_bus_type) { -+#ifdef CONFIG_BCM47XX_SSB -+ case BCM47XX_BUS_TYPE_SSB: -+ /* Nothing to do */ -+ break; -+#endif -+#ifdef CONFIG_BCM47XX_BCMA -+ case BCM47XX_BUS_TYPE_BCMA: -+ /* The BCM4706 has a problem with the CPU wait instruction. -+ * When r4k_wait or r4k_wait_irqoff is used will just hang and -+ * not return from a msleep(). Removing the cpu_wait -+ * functionality is a workaround for this problem. The BCM4716 -+ * does not have this problem. -+ */ -+ if (bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4706) -+ cpu_wait = NULL; -+ break; -+#endif -+ } -+ return 0; -+} -+arch_initcall(bcm47xx_cpu_fixes); -+ - static int __init bcm47xx_register_bus_complete(void) - { - switch (bcm47xx_bus_type) { diff --git a/target/linux/brcm47xx/patches-3.10/200-b44-add-support-for-Byte-Queue-Limits.patch b/target/linux/brcm47xx/patches-3.10/200-b44-add-support-for-Byte-Queue-Limits.patch deleted file mode 100644 index 127c984..0000000 --- a/target/linux/brcm47xx/patches-3.10/200-b44-add-support-for-Byte-Queue-Limits.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -596,6 +596,7 @@ static void b44_timer(unsigned long __op - static void b44_tx(struct b44 *bp) - { - u32 cur, cons; -+ unsigned bytes_compl = 0, pkts_compl = 0; - - cur = br32(bp, B44_DMATX_STAT) & DMATX_STAT_CDMASK; - cur /= sizeof(struct dma_desc); -@@ -612,9 +613,14 @@ static void b44_tx(struct b44 *bp) - skb->len, - DMA_TO_DEVICE); - rp->skb = NULL; -+ -+ bytes_compl += skb->len; -+ pkts_compl++; -+ - dev_kfree_skb_irq(skb); - } - -+ netdev_completed_queue(bp->dev, pkts_compl, bytes_compl); - bp->tx_cons = cons; - if (netif_queue_stopped(bp->dev) && - TX_BUFFS_AVAIL(bp) > B44_TX_WAKEUP_THRESH) -@@ -1018,6 +1024,8 @@ static netdev_tx_t b44_start_xmit(struct - if (bp->flags & B44_FLAG_REORDER_BUG) - br32(bp, B44_DMATX_PTR); - -+ netdev_sent_queue(dev, skb->len); -+ - if (TX_BUFFS_AVAIL(bp) < 1) - netif_stop_queue(dev); - -@@ -1416,6 +1424,8 @@ static void b44_init_hw(struct b44 *bp, - - val = br32(bp, B44_ENET_CTRL); - bw32(bp, B44_ENET_CTRL, (val | ENET_CTRL_ENABLE)); -+ -+ netdev_reset_queue(bp->dev); - } - - static int b44_open(struct net_device *dev) diff --git a/target/linux/brcm47xx/patches-3.10/201-b44-check-register-instead-of-PHY-address-to-detect-.patch b/target/linux/brcm47xx/patches-3.10/201-b44-check-register-instead-of-PHY-address-to-detect-.patch deleted file mode 100644 index a9b3fa8..0000000 --- a/target/linux/brcm47xx/patches-3.10/201-b44-check-register-instead-of-PHY-address-to-detect-.patch +++ /dev/null @@ -1,116 +0,0 @@ -From d61941952d5e7d062c3884e6d81bd503a37702b4 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:06 +0100 -Subject: [PATCH 201/208] b44: check register instead of PHY address to detect - external PHY - -The Ethernet core supported by b44 supports an internal PHY integrated -into the mac core, which is supported by the b44 driver and an external -PHY to which the mac core is connected. This external PHY could be a -switch connected through MII, which is often the case when this core is -used on home routers. The usage of an external PHY was assumed when the -PHY address 30 was used and an internal PHY was assumed when the PHY -address was different. To verify that b44_phy_reset() was called and -checked if it worked, otherwise PHY address 30 was assumed, an external -PHY. It is better to check the register which says which PHY is -connected to the MAC instead of checking the PHY address. -The interface to an external PHY was only activated when this register -was set. - -This also changes B44_FLAG_INTERNAL_PHY to B44_FLAG_EXTERNAL_PHY, it is -easier to check. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 18 +++++++++--------- - drivers/net/ethernet/broadcom/b44.h | 2 +- - 2 files changed, 10 insertions(+), 10 deletions(-) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -284,7 +284,7 @@ static int __b44_writephy(struct b44 *bp - - static inline int b44_readphy(struct b44 *bp, int reg, u32 *val) - { -- if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; - - return __b44_readphy(bp, bp->phy_addr, reg, val); -@@ -292,7 +292,7 @@ static inline int b44_readphy(struct b44 - - static inline int b44_writephy(struct b44 *bp, int reg, u32 val) - { -- if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; - - return __b44_writephy(bp, bp->phy_addr, reg, val); -@@ -321,7 +321,7 @@ static int b44_phy_reset(struct b44 *bp) - u32 val; - int err; - -- if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; - err = b44_writephy(bp, MII_BMCR, BMCR_RESET); - if (err) -@@ -423,7 +423,7 @@ static int b44_setup_phy(struct b44 *bp) - - b44_wap54g10_workaround(bp); - -- if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; - if ((err = b44_readphy(bp, B44_MII_ALEDCTRL, &val)) != 0) - goto out; -@@ -521,7 +521,7 @@ static void b44_check_phy(struct b44 *bp - { - u32 bmsr, aux; - -- if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) { -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) { - bp->flags |= B44_FLAG_100_BASE_T; - bp->flags |= B44_FLAG_FULL_DUPLEX; - if (!netif_carrier_ok(bp->dev)) { -@@ -1315,7 +1315,7 @@ static void b44_chip_reset(struct b44 *b - if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) { - bw32(bp, B44_ENET_CTRL, ENET_CTRL_EPSEL); - br32(bp, B44_ENET_CTRL); -- bp->flags &= ~B44_FLAG_INTERNAL_PHY; -+ bp->flags |= B44_FLAG_EXTERNAL_PHY; - } else { - u32 val = br32(bp, B44_DEVCTRL); - -@@ -1324,7 +1324,7 @@ static void b44_chip_reset(struct b44 *b - br32(bp, B44_DEVCTRL); - udelay(100); - } -- bp->flags |= B44_FLAG_INTERNAL_PHY; -+ bp->flags &= ~B44_FLAG_EXTERNAL_PHY; - } - } - -@@ -1828,8 +1828,8 @@ static int b44_get_settings(struct net_d - DUPLEX_FULL : DUPLEX_HALF; - cmd->port = 0; - cmd->phy_address = bp->phy_addr; -- cmd->transceiver = (bp->flags & B44_FLAG_INTERNAL_PHY) ? -- XCVR_INTERNAL : XCVR_EXTERNAL; -+ cmd->transceiver = (bp->flags & B44_FLAG_EXTERNAL_PHY) ? -+ XCVR_EXTERNAL : XCVR_INTERNAL; - cmd->autoneg = (bp->flags & B44_FLAG_FORCE_LINK) ? - AUTONEG_DISABLE : AUTONEG_ENABLE; - if (cmd->autoneg == AUTONEG_ENABLE) ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -376,7 +376,7 @@ struct b44 { - #define B44_FLAG_ADV_10FULL 0x02000000 - #define B44_FLAG_ADV_100HALF 0x04000000 - #define B44_FLAG_ADV_100FULL 0x08000000 --#define B44_FLAG_INTERNAL_PHY 0x10000000 -+#define B44_FLAG_EXTERNAL_PHY 0x10000000 - #define B44_FLAG_RX_RING_HACK 0x20000000 - #define B44_FLAG_TX_RING_HACK 0x40000000 - #define B44_FLAG_WOL_ENABLE 0x80000000 diff --git a/target/linux/brcm47xx/patches-3.10/202-b44-rename-B44_PHY_ADDR_NO_PHY-to-B44_PHY_ADDR_NO_LO.patch b/target/linux/brcm47xx/patches-3.10/202-b44-rename-B44_PHY_ADDR_NO_PHY-to-B44_PHY_ADDR_NO_LO.patch deleted file mode 100644 index a1ae7f4..0000000 --- a/target/linux/brcm47xx/patches-3.10/202-b44-rename-B44_PHY_ADDR_NO_PHY-to-B44_PHY_ADDR_NO_LO.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 5ab6329c5224d8135d76da18066edf3395f679f5 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:07 +0100 -Subject: [PATCH 202/208] b44: rename B44_PHY_ADDR_NO_PHY to - B44_PHY_ADDR_NO_LOCAL_PHY - -The PHY address 30 means there is no local PHY, but there could be an -external PHY like a switch connected via MII. This is the case on most -embedded home routers where this driver is used. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 2 +- - drivers/net/ethernet/broadcom/b44.h | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -2238,7 +2238,7 @@ static int b44_init_one(struct ssb_devic - - /* do a phy reset to test if there is an active phy */ - if (b44_phy_reset(bp) < 0) -- bp->phy_addr = B44_PHY_ADDR_NO_PHY; -+ bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; - - netdev_info(dev, "%s %pM\n", DRV_DESCRIPTION, dev->dev_addr); - ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -280,9 +280,9 @@ struct ring_info { - dma_addr_t mapping; - }; - --#define B44_MCAST_TABLE_SIZE 32 --#define B44_PHY_ADDR_NO_PHY 30 --#define B44_MDC_RATIO 5000000 -+#define B44_MCAST_TABLE_SIZE 32 -+#define B44_PHY_ADDR_NO_LOCAL_PHY 30 /* no local phy regs */ -+#define B44_MDC_RATIO 5000000 - - #define B44_STAT_REG_DECLARE \ - _B44(tx_good_octets) \ diff --git a/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch b/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch deleted file mode 100644 index 8ed078a..0000000 --- a/target/linux/brcm47xx/patches-3.10/203-b44-abort-when-no-PHY-is-available-at-all.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7befa6abe09c84269b8af614a166409090346cf8 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:08 +0100 -Subject: [PATCH 203/208] b44: abort when no PHY is available at all - -When the phy address is 31, this means that there is no PHY connected -to this MAC at all, no internal and no external PHY. Reading these PHY -registers causes a system reset on some routers. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 6 ++++++ - drivers/net/ethernet/broadcom/b44.h | 1 + - 2 files changed, 7 insertions(+) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -2207,6 +2207,12 @@ static int b44_init_one(struct ssb_devic - goto err_out_powerdown; - } - -+ if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) { -+ dev_err(sdev->dev, "No PHY present on this MAC, aborting\n"); -+ err = -ENODEV; -+ goto err_out_powerdown; -+ } -+ - bp->mii_if.dev = dev; - bp->mii_if.mdio_read = b44_mii_read; - bp->mii_if.mdio_write = b44_mii_write; ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -282,6 +282,7 @@ struct ring_info { - - #define B44_MCAST_TABLE_SIZE 32 - #define B44_PHY_ADDR_NO_LOCAL_PHY 30 /* no local phy regs */ -+#define B44_PHY_ADDR_NO_PHY 31 /* no phy present at all */ - #define B44_MDC_RATIO 5000000 - - #define B44_STAT_REG_DECLARE \ diff --git a/target/linux/brcm47xx/patches-3.10/204-b44-rename-b44_mii_-read-write-to-b44_mdio_-read-wri.patch b/target/linux/brcm47xx/patches-3.10/204-b44-rename-b44_mii_-read-write-to-b44_mdio_-read-wri.patch deleted file mode 100644 index 09e3315..0000000 --- a/target/linux/brcm47xx/patches-3.10/204-b44-rename-b44_mii_-read-write-to-b44_mdio_-read-wri.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 348baa6c81cf774811040e4da01438d077a08301 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:09 +0100 -Subject: [PATCH 204/208] b44: rename b44_mii_{read, write} to b44_mdio_{read, - write}_mii - -The next patch will add these functions for phylib, and we should -rename the old ones before. This now indicates that these functions are -used for the mdio registers and on the mii interface. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -299,7 +299,7 @@ static inline int b44_writephy(struct b4 - } - - /* miilib interface */ --static int b44_mii_read(struct net_device *dev, int phy_id, int location) -+static int b44_mdio_read_mii(struct net_device *dev, int phy_id, int location) - { - u32 val; - struct b44 *bp = netdev_priv(dev); -@@ -309,8 +309,8 @@ static int b44_mii_read(struct net_devic - return val; - } - --static void b44_mii_write(struct net_device *dev, int phy_id, int location, -- int val) -+static void b44_mdio_write_mii(struct net_device *dev, int phy_id, int location, -+ int val) - { - struct b44 *bp = netdev_priv(dev); - __b44_writephy(bp, phy_id, location, val); -@@ -2214,8 +2214,8 @@ static int b44_init_one(struct ssb_devic - } - - bp->mii_if.dev = dev; -- bp->mii_if.mdio_read = b44_mii_read; -- bp->mii_if.mdio_write = b44_mii_write; -+ bp->mii_if.mdio_read = b44_mdio_read_mii; -+ bp->mii_if.mdio_write = b44_mdio_write_mii; - bp->mii_if.phy_id = bp->phy_addr; - bp->mii_if.phy_id_mask = 0x1f; - bp->mii_if.reg_num_mask = 0x1f; diff --git a/target/linux/brcm47xx/patches-3.10/205-b44-add-phylib-support.patch b/target/linux/brcm47xx/patches-3.10/205-b44-add-phylib-support.patch deleted file mode 100644 index 82fd965..0000000 --- a/target/linux/brcm47xx/patches-3.10/205-b44-add-phylib-support.patch +++ /dev/null @@ -1,332 +0,0 @@ -From 86f4ea63e696db996f68d1065b55506e75a7d765 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:10 +0100 -Subject: [PATCH 205/208] b44: add phylib support - -Most of the older home routers based on the Broadcom BCM47XX SoC series -are using a MAC that is supported by b44. On most of these routers not -the internal PHY of this MAC core is used, but a switch sometimes on an -external chip or integrated into the same SoC as the Ethernet core. -For this switch a special PHY driver is needed which should not be -integrated into b44 as the same switches are also used by other -Broadcom home networking SoCs which are using different Ethernet MAC -drivers. This was tested with the b53 switch driver which is currently -on its way to mainline. - -If the internal PHY is not used, b44 will now search on the MDIO bus -for a phy and use the Linux phylib subsystem to register a driver. -Support for the internal PHY must stay here, because there are some -device which are suing the internal phy. - -With this patch we scan the mdio bus when the sprom or nvram says that -the PHY address is 30, if a PHY was found at this address b44 uses it. - -This was tested with a BCM4704, BCM4712 and BCM5354. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/Kconfig | 1 + - drivers/net/ethernet/broadcom/b44.c | 190 ++++++++++++++++++++++++++++++++- - drivers/net/ethernet/broadcom/b44.h | 3 + - 3 files changed, 189 insertions(+), 5 deletions(-) - ---- a/drivers/net/ethernet/broadcom/Kconfig -+++ b/drivers/net/ethernet/broadcom/Kconfig -@@ -24,6 +24,7 @@ config B44 - select SSB - select NET_CORE - select MII -+ select PHYLIB - ---help--- - If you have a network (Ethernet) controller of this type, say Y - or M and read the Ethernet-HOWTO, available from ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -6,6 +6,7 @@ - * Copyright (C) 2006 Felix Fietkau (nbd@openwrt.org) - * Copyright (C) 2006 Broadcom Corporation. - * Copyright (C) 2007 Michael Buesch <m@bues.ch> -+ * Copyright (C) 2013 Hauke Mehrtens <hauke@hauke-m.de> - * - * Distribute under GPL. - */ -@@ -29,6 +30,7 @@ - #include <linux/dma-mapping.h> - #include <linux/ssb/ssb.h> - #include <linux/slab.h> -+#include <linux/phy.h> - - #include <asm/uaccess.h> - #include <asm/io.h> -@@ -316,6 +318,23 @@ static void b44_mdio_write_mii(struct ne - __b44_writephy(bp, phy_id, location, val); - } - -+static int b44_mdio_read_phylib(struct mii_bus *bus, int phy_id, int location) -+{ -+ u32 val; -+ struct b44 *bp = bus->priv; -+ int rc = __b44_readphy(bp, phy_id, location, &val); -+ if (rc) -+ return 0xffffffff; -+ return val; -+} -+ -+static int b44_mdio_write_phylib(struct mii_bus *bus, int phy_id, int location, -+ u16 val) -+{ -+ struct b44 *bp = bus->priv; -+ return __b44_writephy(bp, phy_id, location, val); -+} -+ - static int b44_phy_reset(struct b44 *bp) - { - u32 val; -@@ -523,10 +542,12 @@ static void b44_check_phy(struct b44 *bp - - if (bp->flags & B44_FLAG_EXTERNAL_PHY) { - bp->flags |= B44_FLAG_100_BASE_T; -- bp->flags |= B44_FLAG_FULL_DUPLEX; - if (!netif_carrier_ok(bp->dev)) { - u32 val = br32(bp, B44_TX_CTRL); -- val |= TX_CTRL_DUPLEX; -+ if (bp->flags & B44_FLAG_FULL_DUPLEX) -+ val |= TX_CTRL_DUPLEX; -+ else -+ val &= ~TX_CTRL_DUPLEX; - bw32(bp, B44_TX_CTRL, val); - netif_carrier_on(bp->dev); - b44_link_report(bp); -@@ -1805,6 +1826,11 @@ static int b44_get_settings(struct net_d - { - struct b44 *bp = netdev_priv(dev); - -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) { -+ BUG_ON(!bp->phydev); -+ return phy_ethtool_gset(bp->phydev, cmd); -+ } -+ - cmd->supported = (SUPPORTED_Autoneg); - cmd->supported |= (SUPPORTED_100baseT_Half | - SUPPORTED_100baseT_Full | -@@ -1846,7 +1872,23 @@ static int b44_get_settings(struct net_d - static int b44_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) - { - struct b44 *bp = netdev_priv(dev); -- u32 speed = ethtool_cmd_speed(cmd); -+ u32 speed; -+ int ret; -+ -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) { -+ BUG_ON(!bp->phydev); -+ spin_lock_irq(&bp->lock); -+ if (netif_running(dev)) -+ b44_setup_phy(bp); -+ -+ ret = phy_ethtool_sset(bp->phydev, cmd); -+ -+ spin_unlock_irq(&bp->lock); -+ -+ return ret; -+ } -+ -+ speed = ethtool_cmd_speed(cmd); - - /* We do not support gigabit. */ - if (cmd->autoneg == AUTONEG_ENABLE) { -@@ -2076,7 +2118,6 @@ static const struct ethtool_ops b44_etht - - static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) - { -- struct mii_ioctl_data *data = if_mii(ifr); - struct b44 *bp = netdev_priv(dev); - int err = -EINVAL; - -@@ -2084,7 +2125,12 @@ static int b44_ioctl(struct net_device * - goto out; - - spin_lock_irq(&bp->lock); -- err = generic_mii_ioctl(&bp->mii_if, data, cmd, NULL); -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) { -+ BUG_ON(!bp->phydev); -+ err = phy_mii_ioctl(bp->phydev, ifr, cmd); -+ } else { -+ err = generic_mii_ioctl(&bp->mii_if, if_mii(ifr), cmd, NULL); -+ } - spin_unlock_irq(&bp->lock); - out: - return err; -@@ -2146,6 +2192,127 @@ static const struct net_device_ops b44_n - #endif - }; - -+static void b44_adjust_link(struct net_device *dev) -+{ -+ struct b44 *bp = netdev_priv(dev); -+ struct phy_device *phydev = bp->phydev; -+ bool status_changed = 0; -+ -+ BUG_ON(!phydev); -+ -+ if (bp->old_link != phydev->link) { -+ status_changed = 1; -+ bp->old_link = phydev->link; -+ } -+ -+ /* reflect duplex change */ -+ if (phydev->link) { -+ if ((phydev->duplex == DUPLEX_HALF) && -+ (bp->flags & B44_FLAG_FULL_DUPLEX)) { -+ status_changed = 1; -+ bp->flags &= ~B44_FLAG_FULL_DUPLEX; -+ } else if ((phydev->duplex == DUPLEX_FULL) && -+ !(bp->flags & B44_FLAG_FULL_DUPLEX)) { -+ status_changed = 1; -+ bp->flags |= B44_FLAG_FULL_DUPLEX; -+ } -+ } -+ -+ if (status_changed) { -+ b44_check_phy(bp); -+ phy_print_status(phydev); -+ } -+} -+ -+static int b44_register_phy_one(struct b44 *bp) -+{ -+ struct mii_bus *mii_bus; -+ struct ssb_device *sdev = bp->sdev; -+ struct phy_device *phydev; -+ char bus_id[MII_BUS_ID_SIZE + 3]; -+ int err; -+ -+ mii_bus = mdiobus_alloc(); -+ if (!mii_bus) { -+ dev_err(sdev->dev, "mdiobus_alloc() failed\n"); -+ err = -ENOMEM; -+ goto err_out; -+ } -+ -+ mii_bus->priv = bp; -+ mii_bus->read = b44_mdio_read_phylib; -+ mii_bus->write = b44_mdio_write_phylib; -+ mii_bus->name = "b44_eth_mii"; -+ mii_bus->parent = sdev->dev; -+ mii_bus->phy_mask = ~(1 << bp->phy_addr); -+ snprintf(mii_bus->id, MII_BUS_ID_SIZE, "%x", instance); -+ mii_bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL); -+ if (!mii_bus->irq) { -+ dev_err(sdev->dev, "mii_bus irq allocation failed\n"); -+ err = -ENOMEM; -+ goto err_out_mdiobus; -+ } -+ -+ memset(mii_bus->irq, PHY_POLL, sizeof(int) * PHY_MAX_ADDR); -+ -+ bp->mii_bus = mii_bus; -+ -+ err = mdiobus_register(mii_bus); -+ if (err) { -+ dev_err(sdev->dev, "failed to register MII bus\n"); -+ goto err_out_mdiobus_irq; -+ } -+ -+ snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, mii_bus->id, bp->phy_addr); -+ -+ phydev = phy_connect(bp->dev, bus_id, &b44_adjust_link, -+ PHY_INTERFACE_MODE_MII); -+ if (IS_ERR(phydev)) { -+ dev_err(sdev->dev, "could not attach PHY at %i\n", -+ bp->phy_addr); -+ err = PTR_ERR(phydev); -+ goto err_out_mdiobus_unregister; -+ } -+ -+ /* mask with MAC supported features */ -+ phydev->supported &= (SUPPORTED_100baseT_Half | -+ SUPPORTED_100baseT_Full | -+ SUPPORTED_Autoneg | -+ SUPPORTED_MII); -+ phydev->advertising = phydev->supported; -+ -+ bp->phydev = phydev; -+ bp->old_link = 0; -+ bp->phy_addr = phydev->addr; -+ -+ dev_info(sdev->dev, "attached PHY driver [%s] (mii_bus:phy_addr=%s)\n", -+ phydev->drv->name, dev_name(&phydev->dev)); -+ -+ return 0; -+ -+err_out_mdiobus_unregister: -+ mdiobus_unregister(mii_bus); -+ -+err_out_mdiobus_irq: -+ kfree(mii_bus->irq); -+ -+err_out_mdiobus: -+ mdiobus_free(mii_bus); -+ -+err_out: -+ return err; -+} -+ -+static void b44_unregister_phy_one(struct b44 *bp) -+{ -+ struct mii_bus *mii_bus = bp->mii_bus; -+ -+ phy_disconnect(bp->phydev); -+ mdiobus_unregister(mii_bus); -+ kfree(mii_bus->irq); -+ mdiobus_free(mii_bus); -+} -+ - static int b44_init_one(struct ssb_device *sdev, - const struct ssb_device_id *ent) - { -@@ -2246,10 +2413,20 @@ static int b44_init_one(struct ssb_devic - if (b44_phy_reset(bp) < 0) - bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; - -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) { -+ err = b44_register_phy_one(bp); -+ if (err) { -+ dev_err(sdev->dev, "Cannot register PHY, aborting\n"); -+ goto err_out_unregister_netdev; -+ } -+ } -+ - netdev_info(dev, "%s %pM\n", DRV_DESCRIPTION, dev->dev_addr); - - return 0; - -+err_out_unregister_netdev: -+ unregister_netdev(dev); - err_out_powerdown: - ssb_bus_may_powerdown(sdev->bus); - -@@ -2263,8 +2440,11 @@ out: - static void b44_remove_one(struct ssb_device *sdev) - { - struct net_device *dev = ssb_get_drvdata(sdev); -+ struct b44 *bp = netdev_priv(dev); - - unregister_netdev(dev); -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) -+ b44_unregister_phy_one(bp); - ssb_device_disable(sdev, 0); - ssb_bus_may_powerdown(sdev->bus); - free_netdev(dev); ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -397,6 +397,9 @@ struct b44 { - u32 tx_pending; - u8 phy_addr; - u8 force_copybreak; -+ struct phy_device *phydev; -+ struct mii_bus *mii_bus; -+ int old_link; - struct mii_if_info mii_if; - }; - diff --git a/target/linux/brcm47xx/patches-3.10/206-b44-activate-PHY-when-MAC-is-off.patch b/target/linux/brcm47xx/patches-3.10/206-b44-activate-PHY-when-MAC-is-off.patch deleted file mode 100644 index 57212bb..0000000 --- a/target/linux/brcm47xx/patches-3.10/206-b44-activate-PHY-when-MAC-is-off.patch +++ /dev/null @@ -1,29 +0,0 @@ -From bea69c47f5b93b3142f8833f8a34b666d5d7d6a7 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:11 +0100 -Subject: [PATCH 206/208] b44: activate PHY when MAC is off - -Without this patch we can not access the PHY when the MAC is switched -off. This PHY access is needed to configure the switch, which is done -through PHY registers. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -1360,7 +1360,10 @@ static void b44_halt(struct b44 *bp) - bw32(bp, B44_MAC_CTRL, MAC_CTRL_PHY_PDOWN); - /* now reset the chip, but without enabling the MAC&PHY - * part of it. This has to be done _after_ we shut down the PHY */ -- b44_chip_reset(bp, B44_CHIP_RESET_PARTIAL); -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) -+ b44_chip_reset(bp, B44_CHIP_RESET_FULL); -+ else -+ b44_chip_reset(bp, B44_CHIP_RESET_PARTIAL); - } - - /* bp->lock is held. */ diff --git a/target/linux/brcm47xx/patches-3.10/207-b44-do-not-set-PHY-address-to-30-for-every-ext-PHY.patch b/target/linux/brcm47xx/patches-3.10/207-b44-do-not-set-PHY-address-to-30-for-every-ext-PHY.patch deleted file mode 100644 index d4eda98..0000000 --- a/target/linux/brcm47xx/patches-3.10/207-b44-do-not-set-PHY-address-to-30-for-every-ext-PHY.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 656a7c2b1210deddf76444ecc76e058c0404ce80 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:12 +0100 -Subject: [PATCH 207/208] b44: do not set PHY address to 30 for every ext PHY - -b44_phy_reset() will fail for an external PHY and only work with the -internal PHY, this was an old workaround when the detection of an -external switch based on the PHY address failed and it is not needed -any more. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/ethernet/broadcom/b44.c | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -2413,8 +2413,11 @@ static int b44_init_one(struct ssb_devic - b44_chip_reset(bp, B44_CHIP_RESET_FULL); - - /* do a phy reset to test if there is an active phy */ -- if (b44_phy_reset(bp) < 0) -- bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; -+ err = b44_phy_reset(bp); -+ if (err < 0) { -+ dev_err(sdev->dev, "phy reset failed\n"); -+ goto err_out_unregister_netdev; -+ } - - if (bp->flags & B44_FLAG_EXTERNAL_PHY) { - err = b44_register_phy_one(bp); diff --git a/target/linux/brcm47xx/patches-3.10/208-b44-use-fixed-PHY-device-if-we-do-not-find-any.patch b/target/linux/brcm47xx/patches-3.10/208-b44-use-fixed-PHY-device-if-we-do-not-find-any.patch deleted file mode 100644 index ae539a3..0000000 --- a/target/linux/brcm47xx/patches-3.10/208-b44-use-fixed-PHY-device-if-we-do-not-find-any.patch +++ /dev/null @@ -1,97 +0,0 @@ -From b04138b335203b79ffe1b14750fa245a4dab7191 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 20 Dec 2013 02:16:13 +0100 -Subject: [PATCH 208/208] b44: use fixed PHY device if we do not find any - -The ADM6996L switch and some Broadcom switches with two MII interfaces -like the BCM5325F connected to two MACs on the SoC, used on some -routers do not return a valid value when reading the PHY id register -and Linux thinks there is no PHY at all, but that is wrong. -This patch registers a fixed phy in the arch code and then searches it -when there is no other phy in the Ethernet driver code. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - arch/mips/bcm47xx/setup.c | 10 ++++++++++ - drivers/net/ethernet/broadcom/b44.c | 16 +++++++++++++++- - drivers/net/ethernet/broadcom/b44.h | 3 +++ - 3 files changed, 28 insertions(+), 1 deletion(-) - ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -30,6 +30,9 @@ - - #include <linux/export.h> - #include <linux/types.h> -+#include <linux/ethtool.h> -+#include <linux/phy.h> -+#include <linux/phy_fixed.h> - #include <linux/ssb/ssb.h> - #include <linux/ssb/ssb_embedded.h> - #include <linux/bcma/bcma_soc.h> -@@ -269,6 +272,12 @@ static int __init bcm47xx_cpu_fixes(void - } - arch_initcall(bcm47xx_cpu_fixes); - -+static struct fixed_phy_status bcm47xx_fixed_phy_status __initdata = { -+ .link = 1, -+ .speed = SPEED_100, -+ .duplex = DUPLEX_FULL, -+}; -+ - static int __init bcm47xx_register_bus_complete(void) - { - switch (bcm47xx_bus_type) { -@@ -287,6 +296,7 @@ static int __init bcm47xx_register_bus_c - bcm47xx_buttons_register(); - bcm47xx_leds_register(); - bcm47xx_workarounds(); -+ fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status); - - return 0; - } ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -2233,6 +2233,7 @@ static int b44_register_phy_one(struct b - struct ssb_device *sdev = bp->sdev; - struct phy_device *phydev; - char bus_id[MII_BUS_ID_SIZE + 3]; -+ struct ssb_sprom *sprom = &sdev->bus->sprom; - int err; - - mii_bus = mdiobus_alloc(); -@@ -2266,7 +2267,20 @@ static int b44_register_phy_one(struct b - goto err_out_mdiobus_irq; - } - -- snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, mii_bus->id, bp->phy_addr); -+ if (!bp->mii_bus->phy_map[bp->phy_addr] && -+ (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { -+ -+ dev_info(sdev->dev, -+ "could not find PHY at %i, use fixed one\n", -+ bp->phy_addr); -+ -+ bp->phy_addr = 0; -+ snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, "fixed-0", -+ bp->phy_addr); -+ } else { -+ snprintf(bus_id, sizeof(bus_id), PHY_ID_FMT, mii_bus->id, -+ bp->phy_addr); -+ } - - phydev = phy_connect(bp->dev, bus_id, &b44_adjust_link, - PHY_INTERFACE_MODE_MII); ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -345,6 +345,9 @@ B44_STAT_REG_DECLARE - struct u64_stats_sync syncp; - }; - -+#define B44_BOARDFLAG_ROBO 0x0010 /* Board has robo switch */ -+#define B44_BOARDFLAG_ADM 0x0080 /* Board has ADMtek switch */ -+ - struct ssb_device; - - struct b44 { diff --git a/target/linux/brcm47xx/patches-3.10/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-3.10/209-b44-register-adm-switch.patch deleted file mode 100644 index 62bb89c..0000000 --- a/target/linux/brcm47xx/patches-3.10/209-b44-register-adm-switch.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b36f694256f41bc71571f467646d015dda128d14 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sat, 9 Nov 2013 17:03:59 +0100 -Subject: [PATCH 210/210] b44: register adm switch - ---- - drivers/net/ethernet/broadcom/b44.c | 57 +++++++++++++++++++++++++++++++++++ - drivers/net/ethernet/broadcom/b44.h | 3 ++ - 2 files changed, 60 insertions(+) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -31,6 +31,8 @@ - #include <linux/ssb/ssb.h> - #include <linux/slab.h> - #include <linux/phy.h> -+#include <linux/platform_device.h> -+#include <linux/platform_data/adm6996-gpio.h> - - #include <asm/uaccess.h> - #include <asm/io.h> -@@ -2227,6 +2229,70 @@ static void b44_adjust_link(struct net_d - } - } - -+#ifdef CONFIG_BCM47XX -+static int b44_register_adm_switch(struct b44 *bp) -+{ -+ int gpio; -+ struct platform_device *pdev; -+ struct adm6996_gpio_platform_data adm_data = {0}; -+ struct platform_device_info info = {0}; -+ -+ adm_data.model = ADM6996L; -+ gpio = bcm47xx_nvram_gpio_pin("adm_eecs"); -+ if (gpio >= 0) -+ adm_data.eecs = gpio; -+ else -+ adm_data.eecs = 2; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_eesk"); -+ if (gpio >= 0) -+ adm_data.eesk = gpio; -+ else -+ adm_data.eesk = 3; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_eedi"); -+ if (gpio >= 0) -+ adm_data.eedi = gpio; -+ else -+ adm_data.eedi = 4; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_rc"); -+ if (gpio >= 0) -+ adm_data.eerc = gpio; -+ else -+ adm_data.eerc = 5; -+ -+ info.parent = bp->sdev->dev; -+ info.name = "adm6996_gpio"; -+ info.id = -1; -+ info.data = &adm_data; -+ info.size_data = sizeof(adm_data); -+ -+ if (!bp->adm_switch) { -+ pdev = platform_device_register_full(&info); -+ if (IS_ERR(pdev)) -+ return PTR_ERR(pdev); -+ -+ bp->adm_switch = pdev; -+ } -+ return 0; -+} -+static void b44_unregister_adm_switch(struct b44 *bp) -+{ -+ if (bp->adm_switch) -+ platform_device_unregister(bp->adm_switch); -+} -+#else -+static int b44_register_adm_switch(struct b44 *bp) -+{ -+ return 0; -+} -+static void b44_unregister_adm_switch(struct b44 *bp) -+{ -+ -+} -+#endif /* CONFIG_BCM47XX */ -+ - static int b44_register_phy_one(struct b44 *bp) - { - struct mii_bus *mii_bus; -@@ -2270,6 +2336,9 @@ static int b44_register_phy_one(struct b - if (!bp->mii_bus->phy_map[bp->phy_addr] && - (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { - -+ if (sprom->boardflags_lo & B44_BOARDFLAG_ADM) -+ b44_register_adm_switch(bp); -+ - dev_info(sdev->dev, - "could not find PHY at %i, use fixed one\n", - bp->phy_addr); -@@ -2465,6 +2534,7 @@ static void b44_remove_one(struct ssb_de - unregister_netdev(dev); - if (bp->flags & B44_FLAG_EXTERNAL_PHY) - b44_unregister_phy_one(bp); -+ b44_unregister_adm_switch(bp); - ssb_device_disable(sdev, 0); - ssb_bus_may_powerdown(sdev->bus); - free_netdev(dev); ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -404,6 +404,9 @@ struct b44 { - struct mii_bus *mii_bus; - int old_link; - struct mii_if_info mii_if; -+ -+ /* platform device for associated switch */ -+ struct platform_device *adm_switch; - }; - - #endif /* _B44_H */ diff --git a/target/linux/brcm47xx/patches-3.10/210-b44_phy_fix.patch b/target/linux/brcm47xx/patches-3.10/210-b44_phy_fix.patch deleted file mode 100644 index 452ea2e..0000000 --- a/target/linux/brcm47xx/patches-3.10/210-b44_phy_fix.patch +++ /dev/null @@ -1,54 +0,0 @@ ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -431,10 +431,34 @@ static void b44_wap54g10_workaround(stru - error: - pr_warning("PHY: cannot reset MII transceiver isolate bit\n"); - } -+ -+static void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+ char buf[20]; -+ struct ssb_device *sdev = bp->sdev; -+ -+ /* Toshiba WRC-1000, Siemens SE505 v1, Askey RT-210W, RT-220W */ -+ if (sdev->bus->sprom.board_num == 100) { -+ bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; -+ } else { -+ /* WL-HDD */ -+ if (bcm47xx_nvram_getenv("hardware_version", buf, sizeof(buf)) >= 0 && -+ !strncmp(buf, "WL300-", strlen("WL300-"))) { -+ if (sdev->bus->sprom.et0phyaddr == 0 && -+ sdev->bus->sprom.et1phyaddr == 1) -+ bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; -+ } -+ } -+ return; -+} - #else - static inline void b44_wap54g10_workaround(struct b44 *bp) - { - } -+ -+static inline void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+} - #endif - - static int b44_setup_phy(struct b44 *bp) -@@ -443,6 +467,7 @@ static int b44_setup_phy(struct b44 *bp) - int err; - - b44_wap54g10_workaround(bp); -+ b44_bcm47xx_workarounds(bp); - - if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; -@@ -2162,6 +2187,8 @@ static int b44_get_invariants(struct b44 - * valid PHY address. */ - bp->phy_addr &= 0x1F; - -+ b44_bcm47xx_workarounds(bp); -+ - memcpy(bp->dev->dev_addr, addr, 6); - - if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ diff --git a/target/linux/brcm47xx/patches-3.10/211-b44-start_phy.patch b/target/linux/brcm47xx/patches-3.10/211-b44-start_phy.patch deleted file mode 100644 index c542966..0000000 --- a/target/linux/brcm47xx/patches-3.10/211-b44-start_phy.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -576,7 +576,6 @@ static void b44_check_phy(struct b44 *bp - else - val &= ~TX_CTRL_DUPLEX; - bw32(bp, B44_TX_CTRL, val); -- netif_carrier_on(bp->dev); - b44_link_report(bp); - } - return; -@@ -1511,6 +1510,10 @@ static int b44_open(struct net_device *d - add_timer(&bp->timer); - - b44_enable_ints(bp); -+ -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) -+ phy_start(bp->phydev); -+ - netif_start_queue(dev); - out: - return err; -@@ -1673,6 +1676,9 @@ static int b44_close(struct net_device * - - netif_stop_queue(dev); - -+ if (bp->flags & B44_FLAG_EXTERNAL_PHY) -+ phy_stop(bp->phydev); -+ - napi_disable(&bp->napi); - - del_timer_sync(&bp->timer); -@@ -2251,8 +2257,13 @@ static void b44_adjust_link(struct net_d - } - - if (status_changed) { -- b44_check_phy(bp); -- phy_print_status(phydev); -+ u32 val = br32(bp, B44_TX_CTRL); -+ if (bp->flags & B44_FLAG_FULL_DUPLEX) -+ val |= TX_CTRL_DUPLEX; -+ else -+ val &= ~TX_CTRL_DUPLEX; -+ bw32(bp, B44_TX_CTRL, val); -+ b44_link_report(bp); - } - } - diff --git a/target/linux/brcm47xx/patches-3.10/280-activate_ssb_support_in_usb.patch b/target/linux/brcm47xx/patches-3.10/280-activate_ssb_support_in_usb.patch deleted file mode 100644 index 748710f..0000000 --- a/target/linux/brcm47xx/patches-3.10/280-activate_ssb_support_in_usb.patch +++ /dev/null @@ -1,25 +0,0 @@ -This prevents the options from being delete with make kernel_oldconfig. ---- - drivers/ssb/Kconfig | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/bcma/Kconfig -+++ b/drivers/bcma/Kconfig -@@ -38,6 +38,7 @@ config BCMA_DRIVER_PCI_HOSTMODE - config BCMA_HOST_SOC - bool "Support for BCMA in a SoC" - depends on BCMA -+ select USB_HCD_BCMA if USB_EHCI_HCD || USB_OHCI_HCD - help - Host interface for a Broadcom AIX bus directly mapped into - the memory. This only works with the Broadcom SoCs from the ---- a/drivers/ssb/Kconfig -+++ b/drivers/ssb/Kconfig -@@ -146,6 +146,7 @@ config SSB_SFLASH - config SSB_EMBEDDED - bool - depends on SSB_DRIVER_MIPS && SSB_PCICORE_HOSTMODE -+ select USB_HCD_SSB if USB_EHCI_HCD || USB_OHCI_HCD - default y - - config SSB_DRIVER_EXTIF diff --git a/target/linux/brcm47xx/patches-3.10/300-fork_cacheflush.patch b/target/linux/brcm47xx/patches-3.10/300-fork_cacheflush.patch deleted file mode 100644 index 686fb1b..0000000 --- a/target/linux/brcm47xx/patches-3.10/300-fork_cacheflush.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/arch/mips/include/asm/cacheflush.h -+++ b/arch/mips/include/asm/cacheflush.h -@@ -32,7 +32,7 @@ - extern void (*flush_cache_all)(void); - extern void (*__flush_cache_all)(void); - extern void (*flush_cache_mm)(struct mm_struct *mm); --#define flush_cache_dup_mm(mm) do { (void) (mm); } while (0) -+#define flush_cache_dup_mm(mm) flush_cache_mm(mm) - extern void (*flush_cache_range)(struct vm_area_struct *vma, - unsigned long start, unsigned long end); - extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); diff --git a/target/linux/brcm47xx/patches-3.10/310-no_highpage.patch b/target/linux/brcm47xx/patches-3.10/310-no_highpage.patch deleted file mode 100644 index bdf5672..0000000 --- a/target/linux/brcm47xx/patches-3.10/310-no_highpage.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- a/arch/mips/include/asm/page.h -+++ b/arch/mips/include/asm/page.h -@@ -46,6 +46,7 @@ - #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ - - #include <linux/pfn.h> -+#include <asm/cpu-features.h> - - extern void build_clear_page(void); - extern void build_copy_page(void); -@@ -80,13 +81,16 @@ static inline void clear_user_page(void - flush_data_cache_page((unsigned long)addr); - } - --extern void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, -- struct page *to); --struct vm_area_struct; --extern void copy_user_highpage(struct page *to, struct page *from, -- unsigned long vaddr, struct vm_area_struct *vma); -+static inline void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, -+ struct page *to) -+{ -+ extern void (*flush_data_cache_page)(unsigned long addr); - --#define __HAVE_ARCH_COPY_USER_HIGHPAGE -+ copy_page(vto, vfrom); -+ if (!cpu_has_ic_fills_f_dc || -+ pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) -+ flush_data_cache_page((unsigned long)vto); -+} - - /* - * These are used to make use of C type-checking.. ---- a/arch/mips/mm/init.c -+++ b/arch/mips/mm/init.c -@@ -197,30 +197,6 @@ void kunmap_coherent(void) - preempt_check_resched(); - } - --void copy_user_highpage(struct page *to, struct page *from, -- unsigned long vaddr, struct vm_area_struct *vma) --{ -- void *vfrom, *vto; -- -- vto = kmap_atomic(to); -- if (cpu_has_dc_aliases && cpu_use_kmap_coherent && -- page_mapped(from) && !Page_dcache_dirty(from)) { -- vfrom = kmap_coherent(from, vaddr); -- copy_page(vto, vfrom); -- kunmap_coherent(); -- } else { -- vfrom = kmap_atomic(from); -- copy_page(vto, vfrom); -- kunmap_atomic(vfrom); -- } -- if ((!cpu_has_ic_fills_f_dc) || -- pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) -- flush_data_cache_page((unsigned long)vto); -- kunmap_atomic(vto); -- /* Make sure this page is cleared on other CPU's too before using it */ -- smp_wmb(); --} -- - void copy_to_user_page(struct vm_area_struct *vma, - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) diff --git a/target/linux/brcm47xx/patches-3.10/610-pci_ide_fix.patch b/target/linux/brcm47xx/patches-3.10/610-pci_ide_fix.patch deleted file mode 100644 index f254b20..0000000 --- a/target/linux/brcm47xx/patches-3.10/610-pci_ide_fix.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/include/linux/ide.h -+++ b/include/linux/ide.h -@@ -195,7 +195,11 @@ static inline void ide_std_init_ports(st - hw->io_ports.ctl_addr = ctl_addr; - } - -+#if defined CONFIG_BCM47XX -+# define MAX_HWIFS 2 -+#else - #define MAX_HWIFS 10 -+#endif - - /* - * Now for the data we need to maintain per-drive: ide_drive_t diff --git a/target/linux/brcm47xx/patches-3.10/790-tg3-phylib.patch b/target/linux/brcm47xx/patches-3.10/790-tg3-phylib.patch deleted file mode 100644 index a1ab0d2..0000000 --- a/target/linux/brcm47xx/patches-3.10/790-tg3-phylib.patch +++ /dev/null @@ -1,197 +0,0 @@ ---- a/drivers/net/ethernet/broadcom/tg3.c -+++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -1367,7 +1367,7 @@ static int tg3_mdio_read(struct mii_bus - - spin_lock_bh(&tp->lock); - -- if (tg3_readphy(tp, reg, &val)) -+ if (__tg3_readphy(tp, mii_id, reg, &val)) - val = -EIO; - - spin_unlock_bh(&tp->lock); -@@ -1382,7 +1382,7 @@ static int tg3_mdio_write(struct mii_bus - - spin_lock_bh(&tp->lock); - -- if (tg3_writephy(tp, reg, val)) -+ if (__tg3_writephy(tp, mii_id, reg, val)) - ret = -EIO; - - spin_unlock_bh(&tp->lock); -@@ -1400,7 +1400,7 @@ static void tg3_mdio_config_5785(struct - u32 val; - struct phy_device *phydev; - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - switch (phydev->drv->phy_id & phydev->drv->phy_id_mask) { - case PHY_ID_BCM50610: - case PHY_ID_BCM50610M: -@@ -1505,6 +1505,13 @@ static int tg3_mdio_init(struct tg3 *tp) - TG3_CPMU_PHY_STRAP_IS_SERDES; - if (is_serdes) - tp->phy_addr += 7; -+ } else if (tg3_flag(tp, IS_SSB_CORE) && tg3_flag(tp, ROBOSWITCH)) { -+ int addr; -+ -+ addr = ssb_gige_get_phyaddr(tp->pdev); -+ if (addr < 0) -+ return addr; -+ tp->phy_addr = addr; - } else - tp->phy_addr = TG3_PHY_MII_ADDR; - -@@ -1525,7 +1532,7 @@ static int tg3_mdio_init(struct tg3 *tp) - tp->mdio_bus->read = &tg3_mdio_read; - tp->mdio_bus->write = &tg3_mdio_write; - tp->mdio_bus->reset = &tg3_mdio_reset; -- tp->mdio_bus->phy_mask = ~(1 << TG3_PHY_MII_ADDR); -+ tp->mdio_bus->phy_mask = ~(1 << tp->phy_addr); - tp->mdio_bus->irq = &tp->mdio_irq[0]; - - for (i = 0; i < PHY_MAX_ADDR; i++) -@@ -1546,7 +1553,7 @@ static int tg3_mdio_init(struct tg3 *tp) - return i; - } - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - if (!phydev || !phydev->drv) { - dev_warn(&tp->pdev->dev, "No PHY devices\n"); -@@ -1963,7 +1970,7 @@ static void tg3_setup_flow_control(struc - u32 old_tx_mode = tp->tx_mode; - - if (tg3_flag(tp, USE_PHYLIB)) -- autoneg = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]->autoneg; -+ autoneg = tp->mdio_bus->phy_map[tp->phy_addr]->autoneg; - else - autoneg = tp->link_config.autoneg; - -@@ -1999,7 +2006,7 @@ static void tg3_adjust_link(struct net_d - u8 oldflowctrl, linkmesg = 0; - u32 mac_mode, lcl_adv, rmt_adv; - struct tg3 *tp = netdev_priv(dev); -- struct phy_device *phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ struct phy_device *phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - spin_lock_bh(&tp->lock); - -@@ -2088,7 +2095,7 @@ static int tg3_phy_init(struct tg3 *tp) - /* Bring the PHY back to a known state. */ - tg3_bmcr_reset(tp); - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - /* Attach the MAC to the PHY. */ - phydev = phy_connect(tp->dev, dev_name(&phydev->dev), -@@ -2115,7 +2122,7 @@ static int tg3_phy_init(struct tg3 *tp) - SUPPORTED_Asym_Pause); - break; - default: -- phy_disconnect(tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]); -+ phy_disconnect(tp->mdio_bus->phy_map[tp->phy_addr]); - return -EINVAL; - } - -@@ -2133,7 +2140,7 @@ static void tg3_phy_start(struct tg3 *tp - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return; - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - if (tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER) { - tp->phy_flags &= ~TG3_PHYFLG_IS_LOW_POWER; -@@ -2153,13 +2160,13 @@ static void tg3_phy_stop(struct tg3 *tp) - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return; - -- phy_stop(tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]); -+ phy_stop(tp->mdio_bus->phy_map[tp->phy_addr]); - } - - static void tg3_phy_fini(struct tg3 *tp) - { - if (tp->phy_flags & TG3_PHYFLG_IS_CONNECTED) { -- phy_disconnect(tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]); -+ phy_disconnect(tp->mdio_bus->phy_map[tp->phy_addr]); - tp->phy_flags &= ~TG3_PHYFLG_IS_CONNECTED; - } - } -@@ -3999,7 +4006,7 @@ static int tg3_power_down_prepare(struct - struct phy_device *phydev; - u32 phyid, advertising; - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - tp->phy_flags |= TG3_PHYFLG_IS_LOW_POWER; - -@@ -11782,7 +11789,7 @@ static int tg3_get_settings(struct net_d - struct phy_device *phydev; - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return -EAGAIN; -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - return phy_ethtool_gset(phydev, cmd); - } - -@@ -11849,7 +11856,7 @@ static int tg3_set_settings(struct net_d - struct phy_device *phydev; - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return -EAGAIN; -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - return phy_ethtool_sset(phydev, cmd); - } - -@@ -12006,7 +12013,7 @@ static int tg3_nway_reset(struct net_dev - if (tg3_flag(tp, USE_PHYLIB)) { - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return -EAGAIN; -- r = phy_start_aneg(tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]); -+ r = phy_start_aneg(tp->mdio_bus->phy_map[tp->phy_addr]); - } else { - u32 bmcr; - -@@ -12124,7 +12131,7 @@ static int tg3_set_pauseparam(struct net - u32 newadv; - struct phy_device *phydev; - -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - - if (!(phydev->supported & SUPPORTED_Pause) || - (!(phydev->supported & SUPPORTED_Asym_Pause) && -@@ -13558,7 +13565,7 @@ static int tg3_ioctl(struct net_device * - struct phy_device *phydev; - if (!(tp->phy_flags & TG3_PHYFLG_IS_CONNECTED)) - return -EAGAIN; -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - return phy_mii_ioctl(phydev, ifr, cmd); - } - -@@ -17194,8 +17201,10 @@ static int tg3_init_one(struct pci_dev * - tg3_flag_set(tp, FLUSH_POSTED_WRITES); - if (ssb_gige_one_dma_at_once(pdev)) - tg3_flag_set(tp, ONE_DMA_AT_ONCE); -- if (ssb_gige_have_roboswitch(pdev)) -+ if (ssb_gige_have_roboswitch(pdev)) { -+ tg3_flag_set(tp, USE_PHYLIB); - tg3_flag_set(tp, ROBOSWITCH); -+ } - if (ssb_gige_is_rgmii(pdev)) - tg3_flag_set(tp, RGMII_MODE); - } -@@ -17464,7 +17473,7 @@ static int tg3_init_one(struct pci_dev * - - if (tp->phy_flags & TG3_PHYFLG_IS_CONNECTED) { - struct phy_device *phydev; -- phydev = tp->mdio_bus->phy_map[TG3_PHY_MII_ADDR]; -+ phydev = tp->mdio_bus->phy_map[tp->phy_addr]; - netdev_info(dev, - "attached PHY driver [%s] (mii_bus:phy_addr=%s)\n", - phydev->drv->name, dev_name(&phydev->dev)); diff --git a/target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch b/target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch deleted file mode 100644 index f8b2c7c..0000000 --- a/target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch +++ /dev/null @@ -1,17 +0,0 @@ -When the Ethernet controller is powered down and someone wants to -access the mdio bus like the witch driver (b53) the system crashed if -PCI_D3hot was set before. This patch deactivates this power sawing mode -when a switch driver is in use. - ---- a/drivers/net/ethernet/broadcom/tg3.c -+++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -4221,7 +4221,8 @@ static void tg3_power_down(struct tg3 *t - tg3_power_down_prepare(tp); - - pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE)); -- pci_set_power_state(tp->pdev, PCI_D3hot); -+ if (!tg3_flag(tp, ROBOSWITCH)) -+ pci_set_power_state(tp->pdev, PCI_D3hot); - } - - static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex) diff --git a/target/linux/brcm47xx/patches-3.10/820-wgt634u-nvram-fix.patch b/target/linux/brcm47xx/patches-3.10/820-wgt634u-nvram-fix.patch deleted file mode 100644 index f666cf3..0000000 --- a/target/linux/brcm47xx/patches-3.10/820-wgt634u-nvram-fix.patch +++ /dev/null @@ -1,296 +0,0 @@ -The Netgear wgt634u uses a different format for storing the -configuration. This patch is needed to read out the correct -configuration. The cfe_env.c file uses a different method way to read -out the configuration than the in kernel cfe config reader. - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -5,3 +5,4 @@ - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o - obj-y += board.o buttons.o leds.o workarounds.o -+obj-y += cfe_env.o ---- /dev/null -+++ b/arch/mips/bcm47xx/cfe_env.c -@@ -0,0 +1,229 @@ -+/* -+ * CFE environment variable access -+ * -+ * Copyright 2001-2003, Broadcom Corporation -+ * Copyright 2006, Felix Fietkau <nbd@openwrt.org> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ */ -+ -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/string.h> -+#include <asm/io.h> -+#include <asm/uaccess.h> -+ -+#define NVRAM_SIZE (0x1ff0) -+static char _nvdata[NVRAM_SIZE]; -+static char _valuestr[256]; -+ -+/* -+ * TLV types. These codes are used in the "type-length-value" -+ * encoding of the items stored in the NVRAM device (flash or EEPROM) -+ * -+ * The layout of the flash/nvram is as follows: -+ * -+ * <type> <length> <data ...> <type> <length> <data ...> <type_end> -+ * -+ * The type code of "ENV_TLV_TYPE_END" marks the end of the list. -+ * The "length" field marks the length of the data section, not -+ * including the type and length fields. -+ * -+ * Environment variables are stored as follows: -+ * -+ * <type_env> <length> <flags> <name> = <value> -+ * -+ * If bit 0 (low bit) is set, the length is an 8-bit value. -+ * If bit 0 (low bit) is clear, the length is a 16-bit value -+ * -+ * Bit 7 set indicates "user" TLVs. In this case, bit 0 still -+ * indicates the size of the length field. -+ * -+ * Flags are from the constants below: -+ * -+ */ -+#define ENV_LENGTH_16BITS 0x00 /* for low bit */ -+#define ENV_LENGTH_8BITS 0x01 -+ -+#define ENV_TYPE_USER 0x80 -+ -+#define ENV_CODE_SYS(n,l) (((n)<<1)|(l)) -+#define ENV_CODE_USER(n,l) ((((n)<<1)|(l)) | ENV_TYPE_USER) -+ -+/* -+ * The actual TLV types we support -+ */ -+ -+#define ENV_TLV_TYPE_END 0x00 -+#define ENV_TLV_TYPE_ENV ENV_CODE_SYS(0,ENV_LENGTH_8BITS) -+ -+/* -+ * Environment variable flags -+ */ -+ -+#define ENV_FLG_NORMAL 0x00 /* normal read/write */ -+#define ENV_FLG_BUILTIN 0x01 /* builtin - not stored in flash */ -+#define ENV_FLG_READONLY 0x02 /* read-only - cannot be changed */ -+ -+#define ENV_FLG_MASK 0xFF /* mask of attributes we keep */ -+#define ENV_FLG_ADMIN 0x100 /* lets us internally override permissions */ -+ -+ -+/* ********************************************************************* -+ * _nvram_read(buffer,offset,length) -+ * -+ * Read data from the NVRAM device -+ * -+ * Input parameters: -+ * buffer - destination buffer -+ * offset - offset of data to read -+ * length - number of bytes to read -+ * -+ * Return value: -+ * number of bytes read, or <0 if error occured -+ ********************************************************************* */ -+static int -+_nvram_read(unsigned char *nv_buf, unsigned char *buffer, int offset, int length) -+{ -+ int i; -+ if (offset > NVRAM_SIZE) -+ return -1; -+ -+ for ( i = 0; i < length; i++) { -+ buffer[i] = ((volatile unsigned char*)nv_buf)[offset + i]; -+ } -+ return length; -+} -+ -+ -+static char* -+_strnchr(const char *dest,int c,size_t cnt) -+{ -+ while (*dest && (cnt > 0)) { -+ if (*dest == c) return (char *) dest; -+ dest++; -+ cnt--; -+ } -+ return NULL; -+} -+ -+ -+ -+/* -+ * Core support API: Externally visible. -+ */ -+ -+/* -+ * Get the value of an NVRAM variable -+ * @param name name of variable to get -+ * @return value of variable or NULL if undefined -+ */ -+ -+char* -+cfe_env_get(unsigned char *nv_buf, char* name) -+{ -+ int size; -+ unsigned char *buffer; -+ unsigned char *ptr; -+ unsigned char *envval; -+ unsigned int reclen; -+ unsigned int rectype; -+ int offset; -+ int flg; -+ -+ if (!strcmp(name, "nvram_type")) -+ return "cfe"; -+ -+ size = NVRAM_SIZE; -+ buffer = &_nvdata[0]; -+ -+ ptr = buffer; -+ offset = 0; -+ -+ /* Read the record type and length */ -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) { -+ goto error; -+ } -+ -+ while ((*ptr != ENV_TLV_TYPE_END) && (size > 1)) { -+ -+ /* Adjust pointer for TLV type */ -+ rectype = *(ptr); -+ offset++; -+ size--; -+ -+ /* -+ * Read the length. It can be either 1 or 2 bytes -+ * depending on the code -+ */ -+ if (rectype & ENV_LENGTH_8BITS) { -+ /* Read the record type and length - 8 bits */ -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) { -+ goto error; -+ } -+ reclen = *(ptr); -+ size--; -+ offset++; -+ } -+ else { -+ /* Read the record type and length - 16 bits, MSB first */ -+ if (_nvram_read(nv_buf, ptr,offset,2) != 2) { -+ goto error; -+ } -+ reclen = (((unsigned int) *(ptr)) << 8) + (unsigned int) *(ptr+1); -+ size -= 2; -+ offset += 2; -+ } -+ -+ if (reclen > size) -+ break; /* should not happen, bad NVRAM */ -+ -+ switch (rectype) { -+ case ENV_TLV_TYPE_ENV: -+ /* Read the TLV data */ -+ if (_nvram_read(nv_buf, ptr,offset,reclen) != reclen) -+ goto error; -+ flg = *ptr++; -+ envval = (unsigned char *) _strnchr(ptr,'=',(reclen-1)); -+ if (envval) { -+ *envval++ = '\0'; -+ memcpy(_valuestr,envval,(reclen-1)-(envval-ptr)); -+ _valuestr[(reclen-1)-(envval-ptr)] = '\0'; -+#if 0 -+ printk(KERN_INFO "NVRAM:%s=%s\n", ptr, _valuestr); -+#endif -+ if(!strcmp(ptr, name)){ -+ return _valuestr; -+ } -+ if((strlen(ptr) > 1) && !strcmp(&ptr[1], name)) -+ return _valuestr; -+ } -+ break; -+ -+ default: -+ /* Unknown TLV type, skip it. */ -+ break; -+ } -+ -+ /* -+ * Advance to next TLV -+ */ -+ -+ size -= (int)reclen; -+ offset += reclen; -+ -+ /* Read the next record type */ -+ ptr = buffer; -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) -+ goto error; -+ } -+ -+error: -+ return NULL; -+ -+} -+ ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -22,6 +22,8 @@ - #include <asm/mach-bcm47xx/bcm47xx.h> - - static char nvram_buf[NVRAM_SPACE]; -+static int cfe_env; -+extern char *cfe_env_get(char *nv_buf, const char *name); - - static u32 find_nvram_size(u32 end) - { -@@ -47,6 +49,26 @@ static int nvram_find_and_copy(u32 base, - u32 *src, *dst; - u32 size; - -+ cfe_env = 0; -+ -+ /* XXX: hack for supporting the CFE environment stuff on WGT634U */ -+ if (lim >= 8 * 1024 * 1024) { -+ src = (u32 *) KSEG1ADDR(base + 8 * 1024 * 1024 - 0x2000); -+ dst = (u32 *) nvram_buf; -+ -+ if ((*src & 0xff00ff) == 0x000001) { -+ printk("early_nvram_init: WGT634U NVRAM found.\n"); -+ -+ for (i = 0; i < 0x1ff0; i++) { -+ if (*src == 0xFFFFFFFF) -+ break; -+ *dst++ = *src++; -+ } -+ cfe_env = 1; -+ return 0; -+ } -+ } -+ - /* TODO: when nvram is on nand flash check for bad blocks first. */ - off = FLASH_MIN; - while (off <= lim) { -@@ -173,6 +195,13 @@ int bcm47xx_nvram_getenv(char *name, cha - return err; - } - -+ if (cfe_env) { -+ value = cfe_env_get(nvram_buf, name); -+ if (!value) -+ return -ENOENT; -+ return snprintf(val, val_len, "%s", value); -+ } -+ - /* Look for name=value and return value */ - var = &nvram_buf[sizeof(struct nvram_header)]; - end = nvram_buf + sizeof(nvram_buf) - 2; diff --git a/target/linux/brcm47xx/patches-3.10/830-huawei_e970_support.patch b/target/linux/brcm47xx/patches-3.10/830-huawei_e970_support.patch deleted file mode 100644 index 6aaac83..0000000 --- a/target/linux/brcm47xx/patches-3.10/830-huawei_e970_support.patch +++ /dev/null @@ -1,101 +0,0 @@ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -36,6 +36,7 @@ - #include <linux/ssb/ssb.h> - #include <linux/ssb/ssb_embedded.h> - #include <linux/bcma/bcma_soc.h> -+#include <linux/gpio_wdt.h> - #include <asm/bootinfo.h> - #include <asm/prom.h> - #include <asm/reboot.h> -@@ -278,6 +279,33 @@ static struct fixed_phy_status bcm47xx_f - .duplex = DUPLEX_FULL, - }; - -+static struct gpio_wdt_platform_data gpio_wdt_data; -+ -+static struct platform_device gpio_wdt_device = { -+ .name = "gpio-wdt", -+ .id = 0, -+ .dev = { -+ .platform_data = &gpio_wdt_data, -+ }, -+}; -+ -+static int __init bcm47xx_register_gpio_watchdog(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ switch (board) { -+ case BCM47XX_BOARD_HUAWEI_E970: -+ pr_info("bcm47xx: detected Huawei E970 or similar, starting early gpio_wdt timer\n"); -+ gpio_wdt_data.gpio = 7; -+ gpio_wdt_data.interval = HZ; -+ gpio_wdt_data.first_interval = HZ / 5; -+ return platform_device_register(&gpio_wdt_device); -+ default: -+ /* Nothing to do */ -+ return 0; -+ } -+} -+ - static int __init bcm47xx_register_bus_complete(void) - { - switch (bcm47xx_bus_type) { -@@ -297,6 +325,7 @@ static int __init bcm47xx_register_bus_c - bcm47xx_leds_register(); - bcm47xx_workarounds(); - fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status); -+ bcm47xx_register_gpio_watchdog(); - - return 0; - } ---- a/arch/mips/configs/bcm47xx_defconfig -+++ b/arch/mips/configs/bcm47xx_defconfig -@@ -379,6 +379,7 @@ CONFIG_THERMAL=y - CONFIG_WATCHDOG=y - CONFIG_WATCHDOG_NOWAYOUT=y - CONFIG_BCM47XX_WDT=y -+CONFIG_GPIO_WDT=y - CONFIG_SSB_DRIVER_GIGE=y - CONFIG_DISPLAY_SUPPORT=m - CONFIG_SOUND=m ---- a/drivers/ssb/embedded.c -+++ b/drivers/ssb/embedded.c -@@ -34,11 +34,36 @@ int ssb_watchdog_timer_set(struct ssb_bu - } - EXPORT_SYMBOL(ssb_watchdog_timer_set); - -+#ifdef CONFIG_BCM47XX -+#include <bcm47xx_board.h> -+ -+static bool ssb_watchdog_supported(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ /* The Huawei E970 has a hardware watchdog using a GPIO */ -+ switch (board) { -+ case BCM47XX_BOARD_HUAWEI_E970: -+ return false; -+ default: -+ return true; -+ } -+} -+#else -+static bool ssb_watchdog_supported(void) -+{ -+ return true; -+} -+#endif -+ - int ssb_watchdog_register(struct ssb_bus *bus) - { - struct bcm47xx_wdt wdt = {}; - struct platform_device *pdev; - -+ if (!ssb_watchdog_supported()) -+ return 0; -+ - if (ssb_chipco_available(&bus->chipco)) { - wdt.driver_data = &bus->chipco; - wdt.timer_set = ssb_chipco_watchdog_timer_set_wdt; diff --git a/target/linux/brcm47xx/patches-3.10/920-cache-wround.patch b/target/linux/brcm47xx/patches-3.10/920-cache-wround.patch deleted file mode 100644 index bac6899..0000000 --- a/target/linux/brcm47xx/patches-3.10/920-cache-wround.patch +++ /dev/null @@ -1,138 +0,0 @@ ---- a/arch/mips/include/asm/r4kcache.h -+++ b/arch/mips/include/asm/r4kcache.h -@@ -20,10 +20,28 @@ - #ifdef CONFIG_BCM47XX - #include <asm/paccess.h> - #include <linux/ssb/ssb.h> --#define BCM4710_DUMMY_RREG() ((void) *((u8 *) KSEG1ADDR(SSB_ENUM_BASE))) -+#define BCM4710_DUMMY_RREG() bcm4710_dummy_rreg() -+ -+static inline unsigned long bcm4710_dummy_rreg(void) -+{ -+ return *(volatile unsigned long *)(KSEG1ADDR(SSB_ENUM_BASE)); -+} -+ -+#define BCM4710_FILL_TLB(addr) bcm4710_fill_tlb((void *)(addr)) -+ -+static inline unsigned long bcm4710_fill_tlb(void *addr) -+{ -+ return *(unsigned long *)addr; -+} -+ -+#define BCM4710_PROTECTED_FILL_TLB(addr) bcm4710_protected_fill_tlb((void *)(addr)) -+ -+static inline void bcm4710_protected_fill_tlb(void *addr) -+{ -+ unsigned long x; -+ get_dbe(x, (unsigned long *)addr);; -+} - --#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr)) --#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); }) - #else - #define BCM4710_DUMMY_RREG() - ---- a/arch/mips/mm/tlbex.c -+++ b/arch/mips/mm/tlbex.c -@@ -969,6 +969,9 @@ build_get_pgde32(u32 **p, unsigned int t - #endif - uasm_i_addu(p, ptr, tmp, ptr); - #else -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - UASM_i_LA_mostly(p, ptr, pgdc); - #endif - uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */ -@@ -1311,12 +1314,12 @@ static void __cpuinit build_r4000_tlb_re - /* No need for uasm_i_nop */ - } - --#ifdef CONFIG_BCM47XX -- uasm_i_nop(&p); --#endif - #ifdef CONFIG_64BIT - build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */ - #else -+# ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+# endif - build_get_pgde32(&p, K0, K1); /* get pgd in K1 */ - #endif - -@@ -1328,6 +1331,9 @@ static void __cpuinit build_r4000_tlb_re - build_update_entries(&p, K0, K1); - build_tlb_write_entry(&p, &l, &r, tlb_random); - uasm_l_leave(&l, p); -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+#endif - uasm_i_eret(&p); /* return from trap */ - } - #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT -@@ -1845,12 +1851,12 @@ build_r4000_tlbchange_handler_head(u32 * - { - struct work_registers wr = build_get_work_registers(p); - --#ifdef CONFIG_BCM47XX -- uasm_i_nop(p); --#endif - #ifdef CONFIG_64BIT - build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ - #else -+# ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+# endif - build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */ - #endif - -@@ -1889,6 +1895,9 @@ build_r4000_tlbchange_handler_tail(u32 * - build_tlb_write_entry(p, l, r, tlb_indexed); - uasm_l_leave(l, *p); - build_restore_work_registers(p); -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - uasm_i_eret(p); /* return from trap */ - - #ifdef CONFIG_64BIT ---- a/arch/mips/kernel/genex.S -+++ b/arch/mips/kernel/genex.S -@@ -21,6 +21,19 @@ - #include <asm/war.h> - #include <asm/thread_info.h> - -+#ifdef CONFIG_BCM47XX -+# ifdef eret -+# undef eret -+# endif -+# define eret \ -+ .set push; \ -+ .set noreorder; \ -+ nop; \ -+ nop; \ -+ eret; \ -+ .set pop; -+#endif -+ - #ifdef CONFIG_MIPS_MT_SMTC - #define PANIC_PIC(msg) \ - .set push; \ -@@ -48,7 +61,6 @@ NESTED(except_vec3_generic, 0, sp) - .set noat - #ifdef CONFIG_BCM47XX - nop -- nop - #endif - #if R5432_CP0_INTERRUPT_WAR - mfc0 k0, CP0_INDEX -@@ -73,6 +85,9 @@ NESTED(except_vec3_r4000, 0, sp) - .set push - .set mips3 - .set noat -+#ifdef CONFIG_BCM47XX -+ nop -+#endif - mfc0 k1, CP0_CAUSE - li k0, 31<<2 - andi k1, k1, 0x7c diff --git a/target/linux/brcm47xx/patches-3.10/940-bcm47xx-yenta.patch b/target/linux/brcm47xx/patches-3.10/940-bcm47xx-yenta.patch deleted file mode 100644 index 1739ff7..0000000 --- a/target/linux/brcm47xx/patches-3.10/940-bcm47xx-yenta.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/drivers/pcmcia/yenta_socket.c -+++ b/drivers/pcmcia/yenta_socket.c -@@ -920,6 +920,8 @@ static unsigned int yenta_probe_irq(stru - * Probe for usable interrupts using the force - * register to generate bogus card status events. - */ -+#ifndef CONFIG_BCM47XX -+ /* WRT54G3G does not like this */ - cb_writel(socket, CB_SOCKET_EVENT, -1); - cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); - reg = exca_readb(socket, I365_CSCINT); -@@ -935,6 +937,7 @@ static unsigned int yenta_probe_irq(stru - } - cb_writel(socket, CB_SOCKET_MASK, 0); - exca_writeb(socket, I365_CSCINT, reg); -+#endif - - mask = probe_irq_mask(val) & 0xffff; - -@@ -1019,6 +1022,10 @@ static void yenta_get_socket_capabilitie - else - socket->socket.irq_mask = 0; - -+ /* irq mask probing is broken for the WRT54G3G */ -+ if (socket->socket.irq_mask == 0) -+ socket->socket.irq_mask = 0x6f8; -+ - dev_printk(KERN_INFO, &socket->dev->dev, - "ISA IRQ mask 0x%04x, PCI irq %d\n", - socket->socket.irq_mask, socket->cb_irq); -@@ -1257,6 +1264,15 @@ static int yenta_probe(struct pci_dev *d - dev_printk(KERN_INFO, &dev->dev, - "Socket status: %08x\n", cb_readl(socket, CB_SOCKET_STATE)); - -+ /* Generate an interrupt on card insert/remove */ -+ config_writew(socket, CB_SOCKET_MASK, CB_CSTSMASK | CB_CDMASK); -+ -+ /* Set up Multifunction Routing Status Register */ -+ config_writew(socket, 0x8C, 0x1000 /* MFUNC3 to GPIO3 */ | 0x2 /* MFUNC0 to INTA */); -+ -+ /* Switch interrupts to parallelized */ -+ config_writeb(socket, 0x92, 0x64); -+ - yenta_fixup_parent_bridge(dev->subordinate); - - /* Register it with the pcmcia layer.. */ diff --git a/target/linux/brcm47xx/patches-3.10/976-ssb_increase_pci_delay.patch b/target/linux/brcm47xx/patches-3.10/976-ssb_increase_pci_delay.patch deleted file mode 100644 index b56f1d5..0000000 --- a/target/linux/brcm47xx/patches-3.10/976-ssb_increase_pci_delay.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/drivers/ssb/driver_pcicore.c -+++ b/drivers/ssb/driver_pcicore.c -@@ -375,7 +375,7 @@ static void ssb_pcicore_init_hostmode(st - set_io_port_base(ssb_pcicore_controller.io_map_base); - /* Give some time to the PCI controller to configure itself with the new - * values. Not waiting at this point causes crashes of the machine. */ -- mdelay(10); -+ mdelay(300); - register_pci_controller(&ssb_pcicore_controller); - } - diff --git a/target/linux/brcm47xx/patches-3.10/980-wnr834b_no_cardbus_invariant.patch b/target/linux/brcm47xx/patches-3.10/980-wnr834b_no_cardbus_invariant.patch deleted file mode 100644 index 8bab5f0..0000000 --- a/target/linux/brcm47xx/patches-3.10/980-wnr834b_no_cardbus_invariant.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -136,6 +136,10 @@ static int bcm47xx_get_invariants(struct - if (bcm47xx_nvram_getenv("cardbus", buf, sizeof(buf)) >= 0) - iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10); - -+ /* Do not indicate cardbus for Netgear WNR834B V1 and V2 */ -+ if (iv->boardinfo.type == 0x0472 && iv->has_cardbus_slot) -+ iv->has_cardbus_slot = 0; -+ - return 0; - } - diff --git a/target/linux/brcm47xx/patches-3.10/999-wl_exports.patch b/target/linux/brcm47xx/patches-3.10/999-wl_exports.patch deleted file mode 100644 index 2c464bd..0000000 --- a/target/linux/brcm47xx/patches-3.10/999-wl_exports.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -21,7 +21,8 @@ - #include <bcm47xx_nvram.h> - #include <asm/mach-bcm47xx/bcm47xx.h> - --static char nvram_buf[NVRAM_SPACE]; -+char nvram_buf[NVRAM_SPACE]; -+EXPORT_SYMBOL(nvram_buf); - static int cfe_env; - extern char *cfe_env_get(char *nv_buf, const char *name); - ---- a/arch/mips/mm/cache.c -+++ b/arch/mips/mm/cache.c -@@ -59,6 +59,7 @@ void (*_dma_cache_wback)(unsigned long s - void (*_dma_cache_inv)(unsigned long start, unsigned long size); - - EXPORT_SYMBOL(_dma_cache_wback_inv); -+EXPORT_SYMBOL(_dma_cache_inv); - - #endif /* CONFIG_DMA_NONCOHERENT */ - diff --git a/target/linux/brcm47xx/patches-3.14/027-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.14/027-mtd-bcm47xxpart-get-nvram.patch deleted file mode 100644 index 0b3874b..0000000 --- a/target/linux/brcm47xx/patches-3.14/027-mtd-bcm47xxpart-get-nvram.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- a/drivers/mtd/bcm47xxpart.c -+++ b/drivers/mtd/bcm47xxpart.c -@@ -89,6 +89,7 @@ static int bcm47xxpart_parse(struct mtd_ - int trx_part = -1; - int last_trx_part = -1; - int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; -+ bool found_nvram = false; - - if (blocksize <= 0x10000) - blocksize = 0x10000; -@@ -269,12 +270,23 @@ static int bcm47xxpart_parse(struct mtd_ - if (buf[0] == NVRAM_HEADER) { - bcm47xxpart_add_part(&parts[curr_part++], "nvram", - master->size - blocksize, 0); -+ found_nvram = true; - break; - } - } - - kfree(buf); - -+ if (!found_nvram) { -+ pr_err("can not find a nvram partition reserve last block\n"); -+ bcm47xxpart_add_part(&parts[curr_part++], "nvram_guess", -+ master->size - blocksize * 2, MTD_WRITEABLE); -+ for (i = 0; i < curr_part; i++) { -+ if (parts[i].size + parts[i].offset == master->size) -+ parts[i].offset -= blocksize * 2; -+ } -+ } -+ - /* - * Assume that partitions end at the beginning of the one they are - * followed by. diff --git a/target/linux/brcm47xx/patches-3.14/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch b/target/linux/brcm47xx/patches-3.14/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch deleted file mode 100644 index e5bdb97..0000000 --- a/target/linux/brcm47xx/patches-3.14/128-MIPS-BCM47XX-Add-new-file-for-device-specific-workar.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 1f3e1c682a0b5273e3ee8799b54319971f426e6a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Wed, 29 Jan 2014 18:06:52 +0100 -Subject: [RFC V2][PATCH] MIPS: BCM47XX: Add new file for device specific workarounds - ---- -V2: Drop pr_debug for devices we don't need workarounds for. It was too - load and not useful at all. ---- - arch/mips/bcm47xx/Makefile | 2 +- - arch/mips/bcm47xx/bcm47xx_private.h | 3 +++ - arch/mips/bcm47xx/setup.c | 1 + - arch/mips/bcm47xx/workarounds.c | 25 +++++++++++++++++++++++++ - 4 files changed, 30 insertions(+), 1 deletion(-) - create mode 100644 arch/mips/bcm47xx/workarounds.c - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -4,4 +4,4 @@ - # - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o --obj-y += board.o buttons.o leds.o -+obj-y += board.o buttons.o leds.o workarounds.o ---- a/arch/mips/bcm47xx/bcm47xx_private.h -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -9,4 +9,7 @@ int __init bcm47xx_buttons_register(void - /* leds.c */ - void __init bcm47xx_leds_register(void); - -+/* workarounds.c */ -+void __init bcm47xx_workarounds(void); -+ - #endif ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -282,6 +282,7 @@ static int __init bcm47xx_register_bus_c - } - bcm47xx_buttons_register(); - bcm47xx_leds_register(); -+ bcm47xx_workarounds(); - - fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status); - return 0; ---- /dev/null -+++ b/arch/mips/bcm47xx/workarounds.c -@@ -0,0 +1,31 @@ -+#include "bcm47xx_private.h" -+ -+#include <linux/gpio.h> -+#include <bcm47xx_board.h> -+#include <bcm47xx.h> -+ -+static void __init bcm47xx_workarounds_netgear_wnr3500l(void) -+{ -+ const int usb_power = 12; -+ int err; -+ -+ err = gpio_request_one(usb_power, GPIOF_OUT_INIT_HIGH, "usb_power"); -+ if (err) -+ pr_err("Failed to request USB power gpio: %d\n", err); -+ else -+ gpio_free(usb_power); -+} -+ -+void __init bcm47xx_workarounds(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ switch (board) { -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ bcm47xx_workarounds_netgear_wnr3500l(); -+ break; -+ default: -+ /* No workaround(s) needed */ -+ break; -+ } -+} diff --git a/target/linux/brcm47xx/patches-3.14/139-MIPS-BCM47XX-detect-more-linksys-devices.patch b/target/linux/brcm47xx/patches-3.14/139-MIPS-BCM47XX-detect-more-linksys-devices.patch deleted file mode 100644 index 27828ff..0000000 --- a/target/linux/brcm47xx/patches-3.14/139-MIPS-BCM47XX-detect-more-linksys-devices.patch +++ /dev/null @@ -1,39 +0,0 @@ -From b09189336f6d974c554aed03b4651e9f68ce0abd Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sun, 23 Feb 2014 16:38:29 +0100 -Subject: [PATCH 3/6] MIPS: BCM47XX: detect some more Linksys devices - -The Linksys WRT54G/GS/GL family uses the same boardtype numbers, and -the same gpio configuration. The boardtype numbers are changing with -the hardware versions, but these hardware numbers are different or each -model. -Detect them all as one device, this also worked in OpenWrt. ---- - arch/mips/bcm47xx/board.c | 4 +++- - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 2 +- - 2 files changed, 4 insertions(+), 2 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -176,7 +176,9 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54GSV1, "Linksys WRT54GS V1"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, - { {0}, NULL}, - }; - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -66,7 +66,7 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT310NV1, - BCM47XX_BOARD_LINKSYS_WRT310NV2, - BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -- BCM47XX_BOARD_LINKSYS_WRT54GSV1, -+ BCM47XX_BOARD_LINKSYS_WRT54G, - BCM47XX_BOARD_LINKSYS_WRT610NV1, - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, diff --git a/target/linux/brcm47xx/patches-3.14/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch b/target/linux/brcm47xx/patches-3.14/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch deleted file mode 100644 index 94ead79..0000000 --- a/target/linux/brcm47xx/patches-3.14/140-MIPS-BCM47XX-add-button-and-led-configuration-for-so.patch +++ /dev/null @@ -1,133 +0,0 @@ -From e3d15471f1be2bd2fd4db82907ad4b2d74ec2636 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 10 Jan 2014 23:55:28 +0100 -Subject: [PATCH 4/6] MIPS: BCM47XX: add button and led configuration for some - Linksys devices - -This adds led and button GPIO configuration for Linksys wrt54g3gv2, -wrt54gsv1 and wrtsl54gs. This is based on OpenWrt broadcom-diag code. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/buttons.c | 27 +++++++++++++++++++++++++++ - arch/mips/bcm47xx/leds.c | 33 +++++++++++++++++++++++++++++++++ - 2 files changed, 60 insertions(+) - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -259,6 +259,18 @@ bcm47xx_buttons_linksys_wrt310nv1[] __in - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = { -+ BCM47XX_GPIO_KEY(5, KEY_WIMAX), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrt54gsv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - BCM47XX_GPIO_KEY(8, KEY_WPS_BUTTON), -@@ -270,6 +282,12 @@ bcm47xx_buttons_linksys_wrt610nv2[] __in - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; - -+static const struct gpio_keys_button -+bcm47xx_buttons_linksys_wrtsl54gs[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ - /* Motorola */ - - static const struct gpio_keys_button -@@ -479,12 +497,21 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1); - break; - case BCM47XX_BOARD_LINKSYS_WRT610NV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRTSL54GS: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs); -+ break; - - case BCM47XX_BOARD_MOTOROLA_WE800G: - err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g); ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -292,6 +292,21 @@ bcm47xx_leds_linksys_wrt310nv1[] __initc - }; - - static const struct gpio_led -+bcm47xx_leds_linksys_wrt54gsv1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g3gv2[] __initconst = { -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "green", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -308,6 +323,15 @@ bcm47xx_leds_linksys_wrt610nv2[] __initc - BCM47XX_GPIO_LED(7, "unk", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+static const struct gpio_led -+bcm47xx_leds_linksys_wrtsl54gs[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - /* Motorola */ - - static const struct gpio_led -@@ -502,12 +526,21 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1); -+ break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1); - break; - case BCM47XX_BOARD_LINKSYS_WRT610NV2: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRTSL54GS: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs); -+ break; - - case BCM47XX_BOARD_MOTOROLA_WE800G: - bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g); diff --git a/target/linux/brcm47xx/patches-3.14/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch b/target/linux/brcm47xx/patches-3.14/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch deleted file mode 100644 index 8830bfa..0000000 --- a/target/linux/brcm47xx/patches-3.14/141-MIPS-BCM47XX-add-detection-and-GPIO-config-for-Sieme.patch +++ /dev/null @@ -1,89 +0,0 @@ -From c546fa49901252cbc1e4046d7188858b2f9e130f Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Fri, 10 Jan 2014 23:55:43 +0100 -Subject: [PATCH 2/2] MIPS: BCM47XX: add detection and GPIO config for Siemens - SE505v2 - -This adds board detection for the Siemens SE505v2 and the led gpio -configuration. This board does not have any buttons. -This is based on OpenWrt broadcom-diag and Manuel Munz's nvram dump. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/board.c | 17 +++++++++++++++++ - arch/mips/bcm47xx/leds.c | 12 ++++++++++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 2 ++ - 3 files changed, 31 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -182,6 +182,13 @@ struct bcm47xx_board_type_list3 bcm47xx_ - { {0}, NULL}, - }; - -+/* boardtype, boardrev */ -+static const -+struct bcm47xx_board_type_list2 bcm47xx_board_list_board_type_rev[] __initconst = { -+ {{BCM47XX_BOARD_SIEMENS_SE505V2, "Siemens SE505 V2"}, "0x0101", "0x10"}, -+ { {0}, NULL}, -+}; -+ - static const - struct bcm47xx_board_type bcm47xx_board_unknown[] __initconst = { - {BCM47XX_BOARD_UNKNOWN, "Unknown Board"}, -@@ -275,6 +282,16 @@ static __init const struct bcm47xx_board - return &e3->board; - } - } -+ -+ if (bcm47xx_nvram_getenv("boardtype", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boardrev", buf2, sizeof(buf2)) >= 0 && -+ bcm47xx_nvram_getenv("boardnum", buf3, sizeof(buf3)) == -ENOENT) { -+ for (e2 = bcm47xx_board_list_board_type_rev; e2->value1; e2++) { -+ if (!strcmp(buf1, e2->value1) && -+ !strcmp(buf2, e2->value2)) -+ return &e2->board; -+ } -+ } - return bcm47xx_board_unknown; - } - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -383,6 +383,14 @@ bcm47xx_leds_netgear_wnr834bv2[] __initc - BCM47XX_GPIO_LED(7, "unk", "connected", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Siemens */ -+static const struct gpio_led -+bcm47xx_leds_siemens_se505v2[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(5, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ - /* SimpleTech */ - - static const struct gpio_led -@@ -562,6 +570,10 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); - break; - -+ case BCM47XX_BOARD_SIEMENS_SE505V2: -+ bcm47xx_set_pdata(bcm47xx_leds_siemens_se505v2); -+ break; -+ - case BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE: - bcm47xx_set_pdata(bcm47xx_leds_simpletech_simpleshare); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -94,6 +94,8 @@ enum bcm47xx_board { - - BCM47XX_BOARD_PHICOMM_M1, - -+ BCM47XX_BOARD_SIEMENS_SE505V2, -+ - BCM47XX_BOARD_SIMPLETECH_SIMPLESHARE, - - BCM47XX_BOARD_ZTE_H218N, diff --git a/target/linux/brcm47xx/patches-3.14/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch b/target/linux/brcm47xx/patches-3.14/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch deleted file mode 100644 index fd3557e..0000000 --- a/target/linux/brcm47xx/patches-3.14/142-MIPS-BCM47XX-add-Belkin-F7Dxxxx-board-detection.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 44927df87162ae9beb6e7b934b0e75818b88e350 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Thu, 2 Jan 2014 19:10:05 +0100 -Subject: [PATCH] MIPS: BCM47XX: add Belkin F7Dxxxx board detection - -From: Cody P Schafer <devel@codyps.com> - -Add a few Belkin F7Dxxxx entries, with F7D4401 sourced from online -documentation and the "F7D7302" being observed. F7D3301, F7D3302, and -F7D4302 are reasonable guesses which are unlikely to cause -mis-detection. - -Signed-off-by: Cody P Schafer <devel@codyps.com> -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- - arch/mips/bcm47xx/board.c | 4 ++++ - arch/mips/bcm47xx/buttons.c | 4 ++++ - arch/mips/bcm47xx/leds.c | 4 ++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 4 ++++ - 4 files changed, 16 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -72,7 +72,11 @@ struct bcm47xx_board_type_list1 bcm47xx_ - {{BCM47XX_BOARD_ASUS_WL500W, "Asus WL500W"}, "WL500gW-"}, - {{BCM47XX_BOARD_ASUS_WL520GC, "Asus WL520GC"}, "WL520GC-"}, - {{BCM47XX_BOARD_ASUS_WL520GU, "Asus WL520GU"}, "WL520GU-"}, -+ {{BCM47XX_BOARD_BELKIN_F7D3301, "Belkin F7D3301"}, "F7D3301"}, -+ {{BCM47XX_BOARD_BELKIN_F7D3302, "Belkin F7D3302"}, "F7D3302"}, - {{BCM47XX_BOARD_BELKIN_F7D4301, "Belkin F7D4301"}, "F7D4301"}, -+ {{BCM47XX_BOARD_BELKIN_F7D4302, "Belkin F7D4302"}, "F7D4302"}, -+ {{BCM47XX_BOARD_BELKIN_F7D4401, "Belkin F7D4401"}, "F7D4401"}, - { {0}, NULL}, - }; - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -420,7 +420,11 @@ int __init bcm47xx_buttons_register(void - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wlhdd); - break; - -+ case BCM47XX_BOARD_BELKIN_F7D3301: -+ case BCM47XX_BOARD_BELKIN_F7D3302: - case BCM47XX_BOARD_BELKIN_F7D4301: -+ case BCM47XX_BOARD_BELKIN_F7D4302: -+ case BCM47XX_BOARD_BELKIN_F7D4401: - err = bcm47xx_copy_bdata(bcm47xx_buttons_belkin_f7d4301); - break; - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -457,7 +457,11 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_asus_wlhdd); - break; - -+ case BCM47XX_BOARD_BELKIN_F7D3301: -+ case BCM47XX_BOARD_BELKIN_F7D3302: - case BCM47XX_BOARD_BELKIN_F7D4301: -+ case BCM47XX_BOARD_BELKIN_F7D4302: -+ case BCM47XX_BOARD_BELKIN_F7D4401: - bcm47xx_set_pdata(bcm47xx_leds_belkin_f7d4301); - break; - ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -27,7 +27,11 @@ enum bcm47xx_board { - BCM47XX_BOARD_ASUS_WL700GE, - BCM47XX_BOARD_ASUS_WLHDD, - -+ BCM47XX_BOARD_BELKIN_F7D3301, -+ BCM47XX_BOARD_BELKIN_F7D3302, - BCM47XX_BOARD_BELKIN_F7D4301, -+ BCM47XX_BOARD_BELKIN_F7D4302, -+ BCM47XX_BOARD_BELKIN_F7D4401, - - BCM47XX_BOARD_BUFFALO_WBR2_G54, - BCM47XX_BOARD_BUFFALO_WHR2_A54G54, diff --git a/target/linux/brcm47xx/patches-3.14/144-make-reboot-more-reliable.patch b/target/linux/brcm47xx/patches-3.14/144-make-reboot-more-reliable.patch deleted file mode 100644 index 3e1a4bb..0000000 --- a/target/linux/brcm47xx/patches-3.14/144-make-reboot-more-reliable.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 26db431400c336c4cc658cb4888bab18d254c64a Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sat, 9 Aug 2014 00:00:09 +0200 -Subject: [PATCH] MIPS: BCM47XX: fix reboot problem on BCM4705/BCM4785 - -This adds some code based on code from the Broadcom GPL tar to fix the -reboot problems on BCM4705/BCM4785. I tried rebooting my device for ~10 -times and have never seen a problem. This reverts the changes in the -previous commit and adds the real fix as suggested by RafaÅ‚. - -Setting bit 22 in Reg 22, sel 4 puts the BIU (Bus Interface Unit) into -async mode. - -The previous try was this: -commit 316cad5c1d4daee998cd1f83ccdb437f6f20d45c -Author: Hauke Mehrtens <hauke@hauke-m.de> -Date: Mon Jul 28 23:53:57 2014 +0200 - - MIPS: BCM47XX: make reboot more relaiable - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -59,7 +59,16 @@ static void bcm47xx_machine_restart(char - switch (bcm47xx_bus_type) { - #ifdef CONFIG_BCM47XX_SSB - case BCM47XX_BUS_TYPE_SSB: -+ if (bcm47xx_bus.ssb.chip_id == 0x4785) -+ write_c0_diag4(1 << 22); - ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 1); -+ if (bcm47xx_bus.ssb.chip_id == 0x4785) { -+ __asm__ __volatile__( -+ ".set\tmips3\n\t" -+ "sync\n\t" -+ "wait\n\t" -+ ".set\tmips0"); -+ } - break; - #endif - #ifdef CONFIG_BCM47XX_BCMA diff --git a/target/linux/brcm47xx/patches-3.14/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch b/target/linux/brcm47xx/patches-3.14/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch deleted file mode 100644 index 3e99a3b..0000000 --- a/target/linux/brcm47xx/patches-3.14/145-MIPS-BCM47XX-fixup-broken-MAC-addresses-in-nvram.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 103c0bf3ff46486466bc9138d70c25133d516003 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Tue, 29 Jul 2014 00:08:01 +0200 -Subject: [PATCH] MIPS: BCM47XX: fixup broken MAC addresses in nvram - -The address prefix 00:90:4C is used by Broadcom in their initial -configuration. When a mac address with the prefix 00:90:4C is used all -devices from the same series are sharing the same mac address. To -prevent mac address collisions we replace them with a mac address based -on the base address. To generate such addresses we take the main mac -address from et0macaddr and increase it by two for the first wifi -device and by 3 for the second one. This matches the printed mac -address on the device. The main mac address increased by one is used as -wan address by the vendor code. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: zajec5@gmail.com -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7489/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/sprom.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 48 insertions(+) - ---- a/arch/mips/bcm47xx/sprom.c -+++ b/arch/mips/bcm47xx/sprom.c -@@ -28,6 +28,8 @@ - - #include <bcm47xx.h> - #include <bcm47xx_nvram.h> -+#include <linux/if_ether.h> -+#include <linux/etherdevice.h> - - static void create_key(const char *prefix, const char *postfix, - const char *name, char *buf, int len) -@@ -631,6 +633,33 @@ static void bcm47xx_fill_sprom_path_r45( - } - } - -+static bool bcm47xx_is_valid_mac(u8 *mac) -+{ -+ return mac && !(mac[0] == 0x00 && mac[1] == 0x90 && mac[2] == 0x4c); -+} -+ -+static int bcm47xx_increase_mac_addr(u8 *mac, u8 num) -+{ -+ u8 *oui = mac + ETH_ALEN/2 - 1; -+ u8 *p = mac + ETH_ALEN - 1; -+ -+ do { -+ (*p) += num; -+ if (*p > num) -+ break; -+ p--; -+ num = 1; -+ } while (p != oui); -+ -+ if (p == oui) { -+ pr_err("unable to fetch mac address\n"); -+ return -ENOENT; -+ } -+ return 0; -+} -+ -+static int mac_addr_used = 2; -+ - static void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, - const char *prefix, bool fallback) - { -@@ -648,6 +677,25 @@ static void bcm47xx_fill_sprom_ethernet( - - nvram_read_macaddr(prefix, "macaddr", sprom->il0mac, fallback); - nvram_read_macaddr(prefix, "il0macaddr", sprom->il0mac, fallback); -+ -+ /* The address prefix 00:90:4C is used by Broadcom in their initial -+ configuration. When a mac address with the prefix 00:90:4C is used -+ all devices from the same series are sharing the same mac address. -+ To prevent mac address collisions we replace them with a mac address -+ based on the base address. */ -+ if (!bcm47xx_is_valid_mac(sprom->il0mac)) { -+ u8 mac[6]; -+ -+ nvram_read_macaddr(NULL, "et0macaddr", mac, false); -+ if (bcm47xx_is_valid_mac(mac)) { -+ int err = bcm47xx_increase_mac_addr(mac, mac_addr_used); -+ -+ if (!err) { -+ ether_addr_copy(sprom->il0mac, mac); -+ mac_addr_used++; -+ } -+ } -+ } - } - - static void bcm47xx_fill_board_data(struct ssb_sprom *sprom, const char *prefix, diff --git a/target/linux/brcm47xx/patches-3.14/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch b/target/linux/brcm47xx/patches-3.14/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch deleted file mode 100644 index a7acd15..0000000 --- a/target/linux/brcm47xx/patches-3.14/146-MIPS-BCM47XX-add-Microsoft-MN-700-and-Asus-WL500G.patch +++ /dev/null @@ -1,170 +0,0 @@ -From 250dc03727b9cce91bd86091f05bf2443e2be9ec Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Tue, 29 Jul 2014 00:12:09 +0200 -Subject: [PATCH] MIPS: BCM47XX: add Microsoft MN-700 and Asus WL500G - -This patch adds detection for the Microsoft MN-700 and the Asus WL500G -router. This is based on some old code from OpenWrt. - -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: zajec5@gmail.com -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7490/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 17 +++++++++++++++++ - arch/mips/bcm47xx/buttons.c | 19 +++++++++++++++++++ - arch/mips/bcm47xx/leds.c | 19 +++++++++++++++++++ - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 3 +++ - 4 files changed, 58 insertions(+) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -80,6 +80,14 @@ struct bcm47xx_board_type_list1 bcm47xx_ - { {0}, NULL}, - }; - -+/* hardware_version, boardnum */ -+static const -+struct bcm47xx_board_type_list2 bcm47xx_board_list_hw_version_num[] __initconst = { -+ {{BCM47XX_BOARD_MICROSOFT_MN700, "Microsoft MN-700"}, "WL500-", "mn700"}, -+ {{BCM47XX_BOARD_ASUS_WL500G, "Asus WL500G"}, "WL500-", "asusX"}, -+ { {0}, NULL}, -+}; -+ - /* productid */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_productid[] __initconst = { -@@ -237,6 +245,15 @@ static __init const struct bcm47xx_board - } - } - -+ if (bcm47xx_nvram_getenv("hardware_version", buf1, sizeof(buf1)) >= 0 && -+ bcm47xx_nvram_getenv("boardtype", buf2, sizeof(buf2)) >= 0) { -+ for (e2 = bcm47xx_board_list_boot_hw; e2->value1; e2++) { -+ if (!strstarts(buf1, e2->value1) && -+ !strcmp(buf2, e2->value2)) -+ return &e2->board; -+ } -+ } -+ - if (bcm47xx_nvram_getenv("productid", buf1, sizeof(buf1)) >= 0) { - for (e1 = bcm47xx_board_list_productid; e1->value1; e1++) { - if (!strcmp(buf1, e1->value1)) ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -56,6 +56,11 @@ bcm47xx_buttons_asus_wl330ge[] __initcon - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_asus_wl500g[] __initconst = { -+ BCM47XX_GPIO_KEY(6, KEY_RESTART), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_asus_wl500gd[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -288,6 +293,13 @@ bcm47xx_buttons_linksys_wrtsl54gs[] __in - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; - -+/* Microsoft */ -+ -+static const struct gpio_keys_button -+bcm47xx_buttons_microsoft_nm700[] __initconst = { -+ BCM47XX_GPIO_KEY(7, KEY_RESTART), -+}; -+ - /* Motorola */ - - static const struct gpio_keys_button -@@ -395,6 +407,9 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_ASUS_WL330GE: - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl330ge); - break; -+ case BCM47XX_BOARD_ASUS_WL500G: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500g); -+ break; - case BCM47XX_BOARD_ASUS_WL500GD: - err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_wl500gd); - break; -@@ -517,6 +532,10 @@ int __init bcm47xx_buttons_register(void - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrtsl54gs); - break; - -+ case BCM47XX_BOARD_MICROSOFT_MN700: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_microsoft_nm700); -+ break; -+ - case BCM47XX_BOARD_MOTOROLA_WE800G: - err = bcm47xx_copy_bdata(bcm47xx_buttons_motorola_we800g); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -64,6 +64,11 @@ bcm47xx_leds_asus_wl330ge[] __initconst - }; - - static const struct gpio_led -+bcm47xx_leds_asus_wl500g[] __initconst = { -+ BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_asus_wl500gd[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), - }; -@@ -332,6 +337,13 @@ bcm47xx_leds_linksys_wrtsl54gs[] __initc - BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Microsoft */ -+ -+static const struct gpio_led -+bcm47xx_leds_microsoft_nm700[] __initconst = { -+ BCM47XX_GPIO_LED(6, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+}; -+ - /* Motorola */ - - static const struct gpio_led -@@ -432,6 +444,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_ASUS_WL330GE: - bcm47xx_set_pdata(bcm47xx_leds_asus_wl330ge); - break; -+ case BCM47XX_BOARD_ASUS_WL500G: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_wl500g); -+ break; - case BCM47XX_BOARD_ASUS_WL500GD: - bcm47xx_set_pdata(bcm47xx_leds_asus_wl500gd); - break; -@@ -554,6 +569,10 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrtsl54gs); - break; - -+ case BCM47XX_BOARD_MICROSOFT_MN700: -+ bcm47xx_set_pdata(bcm47xx_leds_microsoft_nm700); -+ break; -+ - case BCM47XX_BOARD_MOTOROLA_WE800G: - bcm47xx_set_pdata(bcm47xx_leds_motorola_we800g); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -18,6 +18,7 @@ enum bcm47xx_board { - BCM47XX_BOARD_ASUS_WL300G, - BCM47XX_BOARD_ASUS_WL320GE, - BCM47XX_BOARD_ASUS_WL330GE, -+ BCM47XX_BOARD_ASUS_WL500G, - BCM47XX_BOARD_ASUS_WL500GD, - BCM47XX_BOARD_ASUS_WL500GPV1, - BCM47XX_BOARD_ASUS_WL500GPV2, -@@ -75,6 +76,8 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, - -+ BCM47XX_BOARD_MICROSOFT_MN700, -+ - BCM47XX_BOARD_MOTOROLA_WE800G, - BCM47XX_BOARD_MOTOROLA_WR850GP, - BCM47XX_BOARD_MOTOROLA_WR850GV2V3, diff --git a/target/linux/brcm47xx/patches-3.14/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch b/target/linux/brcm47xx/patches-3.14/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch deleted file mode 100644 index e923ac1..0000000 --- a/target/linux/brcm47xx/patches-3.14/147-MIPS-BCM47xx-Distinguish-WRT54G-series-devices-by-bo.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 41a867cb07443c77c24747dcbad1a40002516469 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Fri, 20 Jun 2014 07:56:39 +0200 -Subject: [PATCH] MIPS: BCM47xx: Distinguish WRT54G series devices by boardtype -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Catalin reported that GPIOs used by bcm47xx don't match layout of his -WRT54GS V1.0 board. It seems we need to distinguish these 54G* devices. - -Reported-by: Catalin Patulea <cat@vv.carleton.ca> -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7112/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 6 +++--- - arch/mips/bcm47xx/buttons.c | 10 ++++++---- - arch/mips/bcm47xx/leds.c | 10 ++++++---- - arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h | 4 +++- - 4 files changed, 18 insertions(+), 12 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -188,9 +188,9 @@ struct bcm47xx_board_type_list3 bcm47xx_ - {{BCM47XX_BOARD_PHICOMM_M1, "Phicomm M1"}, "0x0590", "80", "0x1104"}, - {{BCM47XX_BOARD_ZTE_H218N, "ZTE H218N"}, "0x053d", "1234", "0x1305"}, - {{BCM47XX_BOARD_NETGEAR_WNR3500L, "Netgear WNR3500L"}, "0x04CF", "3500", "02"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -- {{BCM47XX_BOARD_LINKSYS_WRT54G, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101, "Linksys WRT54G/GS/GL"}, "0x0101", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467, "Linksys WRT54G/GS/GL"}, "0x0467", "42", "0x10"}, -+ {{BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708, "Linksys WRT54G/GS/GL"}, "0x0708", "42", "0x10"}, - { {0}, NULL}, - }; - ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -270,7 +270,7 @@ bcm47xx_buttons_linksys_wrt54g3gv2[] __i - }; - - static const struct gpio_keys_button --bcm47xx_buttons_linksys_wrt54gsv1[] __initconst = { -+bcm47xx_buttons_linksys_wrt54g_generic[] __initconst = { - BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON), - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -516,12 +516,14 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1); - break; -- case BCM47XX_BOARD_LINKSYS_WRT54G: -- err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54gsv1); -- break; - case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g_generic); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt610nv1); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -297,7 +297,7 @@ bcm47xx_leds_linksys_wrt310nv1[] __initc - }; - - static const struct gpio_led --bcm47xx_leds_linksys_wrt54gsv1[] __initconst = { -+bcm47xx_leds_linksys_wrt54g_generic[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -553,12 +553,14 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_LINKSYS_WRT310NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1); - break; -- case BCM47XX_BOARD_LINKSYS_WRT54G: -- bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54gsv1); -- break; - case BCM47XX_BOARD_LINKSYS_WRT54G3GV2: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); - break; -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT610NV1: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt610nv1); - break; ---- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx_board.h -@@ -71,7 +71,9 @@ enum bcm47xx_board { - BCM47XX_BOARD_LINKSYS_WRT310NV1, - BCM47XX_BOARD_LINKSYS_WRT310NV2, - BCM47XX_BOARD_LINKSYS_WRT54G3GV2, -- BCM47XX_BOARD_LINKSYS_WRT54G, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467, -+ BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708, - BCM47XX_BOARD_LINKSYS_WRT610NV1, - BCM47XX_BOARD_LINKSYS_WRT610NV2, - BCM47XX_BOARD_LINKSYS_WRTSL54GS, diff --git a/target/linux/brcm47xx/patches-3.14/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch b/target/linux/brcm47xx/patches-3.14/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch deleted file mode 100644 index 181758e..0000000 --- a/target/linux/brcm47xx/patches-3.14/148-MIPS-BCM47xx-Fix-LEDs-on-WRT54GS-V1.0.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 7bb26b1691166d0d830c42c1a25caf82208bf90d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Fri, 20 Jun 2014 07:56:40 +0200 -Subject: [PATCH] MIPS: BCM47xx: Fix LEDs on WRT54GS V1.0 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Reported-by: Catalin Patulea <cat@vv.carleton.ca> -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7113/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/leds.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -311,6 +311,14 @@ bcm47xx_leds_linksys_wrt54g3gv2[] __init - BCM47XX_GPIO_LED(3, "blue", "3g", 0, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Verified on: WRT54GS V1.0 */ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g_type_0101[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -557,6 +565,8 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2); - break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0101: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0101); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); diff --git a/target/linux/brcm47xx/patches-3.14/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch b/target/linux/brcm47xx/patches-3.14/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch deleted file mode 100644 index 4babed9..0000000 --- a/target/linux/brcm47xx/patches-3.14/149-MIPS-BCM47XX-Move-shared-symbols-to-the-config-BCM47.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c949c0bc55571209fe6742f645b1e2eb20099591 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Tue, 17 Jun 2014 16:36:50 +0200 -Subject: [PATCH 149/150] MIPS: BCM47XX: Move shared symbols to the config - BCM47XX -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7100/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/Kconfig | 2 ++ - arch/mips/bcm47xx/Kconfig | 4 ---- - 2 files changed, 2 insertions(+), 4 deletions(-) - ---- a/arch/mips/Kconfig -+++ b/arch/mips/Kconfig -@@ -124,6 +124,8 @@ config BCM47XX - select SYS_SUPPORTS_LITTLE_ENDIAN - select SYS_HAS_EARLY_PRINTK - select EARLY_PRINTK_8250 if EARLY_PRINTK -+ select GPIOLIB -+ select LEDS_GPIO_REGISTER - help - Support for BCM47XX based boards - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -11,8 +11,6 @@ config BCM47XX_SSB - select SSB_DRIVER_PCICORE if PCI - select SSB_PCICORE_HOSTMODE if PCI - select SSB_DRIVER_GPIO -- select GPIOLIB -- select LEDS_GPIO_REGISTER - default y - help - Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support. -@@ -29,8 +27,6 @@ config BCM47XX_BCMA - select BCMA_HOST_PCI if PCI - select BCMA_DRIVER_PCI_HOSTMODE if PCI - select BCMA_DRIVER_GPIO -- select GPIOLIB -- select LEDS_GPIO_REGISTER - default y - help - Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus. diff --git a/target/linux/brcm47xx/patches-3.14/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch b/target/linux/brcm47xx/patches-3.14/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch deleted file mode 100644 index 2fa4442..0000000 --- a/target/linux/brcm47xx/patches-3.14/150-MIPS-BCM47XX-Select-SYS_SUPPORTS_HIGHMEM-for-BCM47XX.patch +++ /dev/null @@ -1,32 +0,0 @@ -From ce01cbef8b0b71d01f8a68cba59da3198165bae6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Tue, 17 Jun 2014 16:36:51 +0200 -Subject: [PATCH 150/150] MIPS: BCM47XX: Select SYS_SUPPORTS_HIGHMEM for - BCM47XX_BCMA -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It seems that bcm47xx can handle only 128 MiB of RAM directly. There -are few devices with 256 MiB, but Broadcom's SDK uses highmem to handle -anything above 128 MiB. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7101/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/Kconfig | 1 + - 1 file changed, 1 insertion(+) - ---- a/arch/mips/bcm47xx/Kconfig -+++ b/arch/mips/bcm47xx/Kconfig -@@ -20,6 +20,7 @@ config BCM47XX_SSB - config BCM47XX_BCMA - bool "BCMA Support for Broadcom BCM47XX" - select SYS_HAS_CPU_MIPS32_R2 -+ select SYS_SUPPORTS_HIGHMEM - select CPU_MIPSR2_IRQ_VI - select BCMA - select BCMA_HOST_SOC diff --git a/target/linux/brcm47xx/patches-3.14/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch b/target/linux/brcm47xx/patches-3.14/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch deleted file mode 100644 index 7f01ae3..0000000 --- a/target/linux/brcm47xx/patches-3.14/151-MIPS-BCM47XX-Devices-database-update-for-3.17.patch +++ /dev/null @@ -1,183 +0,0 @@ -From 9194b3431616567ffbf69ef970506d695912be0b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:24:30 +0200 -Subject: [PATCH] MIPS: BCM47XX: Devices database update for 3.17 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Detect more devices and register leds & buttons for them. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7394/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/board.c | 3 ++- - arch/mips/bcm47xx/buttons.c | 9 ++++++++ - arch/mips/bcm47xx/leds.c | 53 +++++++++++++++++++++++++++++++++++++-------- - 3 files changed, 55 insertions(+), 10 deletions(-) - ---- a/arch/mips/bcm47xx/board.c -+++ b/arch/mips/bcm47xx/board.c -@@ -58,6 +58,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_hardware_version[] __initconst = { - {{BCM47XX_BOARD_ASUS_RTN10U, "Asus RT-N10U"}, "RTN10U"}, -+ {{BCM47XX_BOARD_ASUS_RTN10D, "Asus RT-N10D"}, "RTN10D"}, - {{BCM47XX_BOARD_ASUS_RTN12, "Asus RT-N12"}, "RT-N12"}, - {{BCM47XX_BOARD_ASUS_RTN12B1, "Asus RT-N12B1"}, "RTN12B1"}, - {{BCM47XX_BOARD_ASUS_RTN12C1, "Asus RT-N12C1"}, "RTN12C1"}, -@@ -106,7 +107,7 @@ struct bcm47xx_board_type_list1 bcm47xx_ - /* ModelId */ - static const - struct bcm47xx_board_type_list1 bcm47xx_board_list_ModelId[] __initconst = { -- {{BCM47XX_BOARD_DELL_TM2300, "Dell WX-5565"}, "WX-5565"}, -+ {{BCM47XX_BOARD_DELL_TM2300, "Dell TrueMobile 2300"}, "WX-5565"}, - {{BCM47XX_BOARD_MOTOROLA_WE800G, "Motorola WE800G"}, "WE800G"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GP, "Motorola WR850GP"}, "WR850GP"}, - {{BCM47XX_BOARD_MOTOROLA_WR850GV2V3, "Motorola WR850G"}, "WR850G"}, ---- a/arch/mips/bcm47xx/buttons.c -+++ b/arch/mips/bcm47xx/buttons.c -@@ -341,6 +341,12 @@ bcm47xx_buttons_netgear_wndr4500v1[] __i - }; - - static const struct gpio_keys_button -+bcm47xx_buttons_netgear_wnr3500lv1[] __initconst = { -+ BCM47XX_GPIO_KEY(4, KEY_RESTART), -+ BCM47XX_GPIO_KEY(6, KEY_WPS_BUTTON), -+}; -+ -+static const struct gpio_keys_button - bcm47xx_buttons_netgear_wnr834bv2[] __initconst = { - BCM47XX_GPIO_KEY(6, KEY_RESTART), - }; -@@ -557,6 +563,9 @@ int __init bcm47xx_buttons_register(void - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr4500v1); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr3500lv1); -+ break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wnr834bv2); - break; ---- a/arch/mips/bcm47xx/leds.c -+++ b/arch/mips/bcm47xx/leds.c -@@ -35,6 +35,15 @@ bcm47xx_leds_asus_rtn12[] __initconst = - }; - - static const struct gpio_led -+bcm47xx_leds_asus_rtn15u[] __initconst = { -+ /* TODO: Add "wlan" LED */ -+ BCM47XX_GPIO_LED(3, "blue", "wan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(4, "blue", "lan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(9, "blue", "usb", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_asus_rtn16[] __initconst = { - BCM47XX_GPIO_LED(1, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(7, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -42,8 +51,8 @@ bcm47xx_leds_asus_rtn16[] __initconst = - - static const struct gpio_led - bcm47xx_leds_asus_rtn66u[] __initconst = { -- BCM47XX_GPIO_LED(12, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -- BCM47XX_GPIO_LED(15, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(12, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(15, "blue", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - static const struct gpio_led -@@ -221,8 +230,8 @@ bcm47xx_leds_linksys_e1000v1[] __initcon - - static const struct gpio_led - bcm47xx_leds_linksys_e1000v21[] __initconst = { -- BCM47XX_GPIO_LED(5, "unk", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(6, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "blue", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(6, "blue", "power", 1, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(7, "amber", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), - BCM47XX_GPIO_LED(8, "blue", "wps", 0, LEDS_GPIO_DEFSTATE_OFF), - }; -@@ -319,6 +328,16 @@ bcm47xx_leds_linksys_wrt54g_type_0101[] - BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - -+/* Verified on: WRT54GL V1.1 */ -+static const struct gpio_led -+bcm47xx_leds_linksys_wrt54g_type_0467[] __initconst = { -+ BCM47XX_GPIO_LED(0, "green", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ - static const struct gpio_led - bcm47xx_leds_linksys_wrt610nv1[] __initconst = { - BCM47XX_GPIO_LED(0, "unk", "usb", 1, LEDS_GPIO_DEFSTATE_OFF), -@@ -338,11 +357,10 @@ bcm47xx_leds_linksys_wrt610nv2[] __initc - - static const struct gpio_led - bcm47xx_leds_linksys_wrtsl54gs[] __initconst = { -- BCM47XX_GPIO_LED(0, "unk", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(1, "unk", "power", 0, LEDS_GPIO_DEFSTATE_ON), -- BCM47XX_GPIO_LED(2, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(3, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -- BCM47XX_GPIO_LED(7, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(0, "green", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(5, "white", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(7, "orange", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), - }; - - /* Microsoft */ -@@ -397,6 +415,15 @@ bcm47xx_leds_netgear_wndr4500v1[] __init - }; - - static const struct gpio_led -+bcm47xx_leds_netgear_wnr3500lv1[] __initconst = { -+ BCM47XX_GPIO_LED(0, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(1, "green", "wps", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(2, "green", "wan", 1, LEDS_GPIO_DEFSTATE_OFF), -+ BCM47XX_GPIO_LED(3, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), -+ BCM47XX_GPIO_LED(7, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -+}; -+ -+static const struct gpio_led - bcm47xx_leds_netgear_wnr834bv2[] __initconst = { - BCM47XX_GPIO_LED(2, "green", "power", 0, LEDS_GPIO_DEFSTATE_ON), - BCM47XX_GPIO_LED(3, "amber", "power", 0, LEDS_GPIO_DEFSTATE_OFF), -@@ -437,6 +464,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_ASUS_RTN12: - bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12); - break; -+ case BCM47XX_BOARD_ASUS_RTN15U: -+ bcm47xx_set_pdata(bcm47xx_leds_asus_rtn15u); -+ break; - case BCM47XX_BOARD_ASUS_RTN16: - bcm47xx_set_pdata(bcm47xx_leds_asus_rtn16); - break; -@@ -568,6 +598,8 @@ void __init bcm47xx_leds_register(void) - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0101); - break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0467: -+ bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_type_0467); -+ break; - case BCM47XX_BOARD_LINKSYS_WRT54G_TYPE_0708: - bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g_generic); - break; -@@ -601,6 +633,9 @@ void __init bcm47xx_leds_register(void) - case BCM47XX_BOARD_NETGEAR_WNDR4500V1: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wndr4500v1); - break; -+ case BCM47XX_BOARD_NETGEAR_WNR3500L: -+ bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr3500lv1); -+ break; - case BCM47XX_BOARD_NETGEAR_WNR834BV2: - bcm47xx_set_pdata(bcm47xx_leds_netgear_wnr834bv2); - break; diff --git a/target/linux/brcm47xx/patches-3.14/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch b/target/linux/brcm47xx/patches-3.14/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch deleted file mode 100644 index 7d81016..0000000 --- a/target/linux/brcm47xx/patches-3.14/152-Revert-MIPS-Delete-unused-function-add_temporary_ent.patch +++ /dev/null @@ -1,107 +0,0 @@ -From d377732c8c9aac14ccb900b65678558b0fb8f0f3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:26:32 +0200 -Subject: [PATCH 152/153] Revert "MIPS: Delete unused function - add_temporary_entry." -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This reverts commit d7a887a73dec6c387b02a966a71aac767bbd9ce6. - -Function add_temporary_entry is needed by bcm47xx to support highmem. We -need to add a temporary entry to check for amount of RAM. -The only change made in this revert was replacing (ENTER|EXIT)_CRITICAL. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Cc: linux-mips@linux-mips.org -Cc: Hauke Mehrtens <hauke@hauke-m.de> -Patchwork: https://patchwork.linux-mips.org/patch/7395/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/include/asm/pgtable-32.h | 10 ++++++++ - arch/mips/mm/tlb-r4k.c | 47 ++++++++++++++++++++++++++++++++++++++ - 2 files changed, 57 insertions(+) - ---- a/arch/mips/include/asm/pgtable-32.h -+++ b/arch/mips/include/asm/pgtable-32.h -@@ -19,6 +19,16 @@ - #include <asm-generic/pgtable-nopmd.h> - - /* -+ * - add_temporary_entry() add a temporary TLB entry. We use TLB entries -+ * starting at the top and working down. This is for populating the -+ * TLB before trap_init() puts the TLB miss handler in place. It -+ * should be used only for entries matching the actual page tables, -+ * to prevent inconsistencies. -+ */ -+extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, -+ unsigned long entryhi, unsigned long pagemask); -+ -+/* - * Basically we have the same two-level (which is the logical three level - * Linux page table layout folded) page tables as the i386. Some day - * when we have proper page coloring support we can have a 1% quicker ---- a/arch/mips/mm/tlb-r4k.c -+++ b/arch/mips/mm/tlb-r4k.c -@@ -411,6 +411,51 @@ int __init has_transparent_hugepage(void - - #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ - -+/* -+ * Used for loading TLB entries before trap_init() has started, when we -+ * don't actually want to add a wired entry which remains throughout the -+ * lifetime of the system -+ */ -+ -+static int temp_tlb_entry __cpuinitdata; -+ -+__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, -+ unsigned long entryhi, unsigned long pagemask) -+{ -+ int ret = 0; -+ unsigned long flags; -+ unsigned long wired; -+ unsigned long old_pagemask; -+ unsigned long old_ctx; -+ -+ local_irq_save(flags); -+ /* Save old context and create impossible VPN2 value */ -+ old_ctx = read_c0_entryhi(); -+ old_pagemask = read_c0_pagemask(); -+ wired = read_c0_wired(); -+ if (--temp_tlb_entry < wired) { -+ printk(KERN_WARNING -+ "No TLB space left for add_temporary_entry\n"); -+ ret = -ENOSPC; -+ goto out; -+ } -+ -+ write_c0_index(temp_tlb_entry); -+ write_c0_pagemask(pagemask); -+ write_c0_entryhi(entryhi); -+ write_c0_entrylo0(entrylo0); -+ write_c0_entrylo1(entrylo1); -+ mtc0_tlbw_hazard(); -+ tlb_write_indexed(); -+ tlbw_use_hazard(); -+ -+ write_c0_entryhi(old_ctx); -+ write_c0_pagemask(old_pagemask); -+out: -+ local_irq_restore(flags); -+ return ret; -+} -+ - static int ntlb; - static int __init set_ntlb(char *str) - { -@@ -448,6 +493,8 @@ void tlb_init(void) - write_c0_pagegrain(pg); - } - -+ temp_tlb_entry = current_cpu_data.tlbsize - 1; -+ - /* From this point on the ARC firmware is dead. */ - local_flush_tlb_all(); - diff --git a/target/linux/brcm47xx/patches-3.14/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch b/target/linux/brcm47xx/patches-3.14/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch deleted file mode 100644 index 777e93b..0000000 --- a/target/linux/brcm47xx/patches-3.14/153-MIPS-BCM47XX-Detect-more-then-128-MiB-of-RAM-HIGHMEM.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 6ee1d93455384cef8a0426effe85da241b525b63 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> -Date: Thu, 17 Jul 2014 23:26:33 +0200 -Subject: [PATCH 153/153] MIPS: BCM47XX: Detect more then 128 MiB of RAM - (HIGHMEM) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -So far BCM47XX can only detect amount of HIGHMEM. It still requires -adding (registering) and well-testing before enabling by default. - -Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com> -Acked-by: Hauke Mehrtens <hauke@hauke-m.de> -Cc: linux-mips@linux-mips.org -Patchwork: https://patchwork.linux-mips.org/patch/7396/ -Signed-off-by: Ralf Baechle <ralf@linux-mips.org> ---- - arch/mips/bcm47xx/bcm47xx_private.h | 3 ++ - arch/mips/bcm47xx/prom.c | 68 ++++++++++++++++++++++++++++++++++++- - arch/mips/bcm47xx/setup.c | 3 ++ - arch/mips/include/asm/pgtable-32.h | 2 ++ - arch/mips/mm/tlb-r4k.c | 2 +- - 5 files changed, 76 insertions(+), 2 deletions(-) - ---- a/arch/mips/bcm47xx/bcm47xx_private.h -+++ b/arch/mips/bcm47xx/bcm47xx_private.h -@@ -3,6 +3,9 @@ - - #include <linux/kernel.h> - -+/* prom.c */ -+void __init bcm47xx_prom_highmem_init(void); -+ - /* buttons.c */ - int __init bcm47xx_buttons_register(void); - ---- a/arch/mips/bcm47xx/prom.c -+++ b/arch/mips/bcm47xx/prom.c -@@ -51,6 +51,8 @@ __init void bcm47xx_set_system_type(u16 - chip_id); - } - -+static unsigned long lowmem __initdata; -+ - static __init void prom_init_mem(void) - { - unsigned long mem; -@@ -84,6 +86,7 @@ static __init void prom_init_mem(void) - if (!memcmp(prom_init, prom_init + mem, 32)) - break; - } -+ lowmem = mem; - - /* Ignoring the last page when ddr size is 128M. Cached - * accesses to last page is causing the processor to prefetch -@@ -92,7 +95,6 @@ static __init void prom_init_mem(void) - */ - if (c->cputype == CPU_74K && (mem == (128 << 20))) - mem -= 0x1000; -- - add_memory_region(0, mem, BOOT_MEM_RAM); - } - -@@ -111,3 +113,67 @@ void __init prom_init(void) - void __init prom_free_prom_memory(void) - { - } -+ -+#if defined(CONFIG_BCM47XX_BCMA) && defined(CONFIG_HIGHMEM) -+ -+#define EXTVBASE 0xc0000000 -+#define ENTRYLO(x) ((pte_val(pfn_pte((x) >> _PFN_SHIFT, PAGE_KERNEL_UNCACHED)) >> 6) | 1) -+ -+#include <asm/tlbflush.h> -+ -+/* Stripped version of tlb_init, with the call to build_tlb_refill_handler -+ * dropped. Calling it at this stage causes a hang. -+ */ -+void __cpuinit early_tlb_init(void) -+{ -+ write_c0_pagemask(PM_DEFAULT_MASK); -+ write_c0_wired(0); -+ temp_tlb_entry = current_cpu_data.tlbsize - 1; -+ local_flush_tlb_all(); -+} -+ -+void __init bcm47xx_prom_highmem_init(void) -+{ -+ unsigned long off = (unsigned long)prom_init; -+ unsigned long extmem = 0; -+ bool highmem_region = false; -+ -+ if (WARN_ON(bcm47xx_bus_type != BCM47XX_BUS_TYPE_BCMA)) -+ return; -+ -+ if (bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4706) -+ highmem_region = true; -+ -+ if (lowmem != 128 << 20 || !highmem_region) -+ return; -+ -+ early_tlb_init(); -+ -+ /* Add one temporary TLB entry to map SDRAM Region 2. -+ * Physical Virtual -+ * 0x80000000 0xc0000000 (1st: 256MB) -+ * 0x90000000 0xd0000000 (2nd: 256MB) -+ */ -+ add_temporary_entry(ENTRYLO(0x80000000), -+ ENTRYLO(0x80000000 + (256 << 20)), -+ EXTVBASE, PM_256M); -+ -+ off = EXTVBASE + __pa(off); -+ for (extmem = 128 << 20; extmem < 512 << 20; extmem <<= 1) { -+ if (!memcmp(prom_init, (void *)(off + extmem), 16)) -+ break; -+ } -+ extmem -= lowmem; -+ -+ early_tlb_init(); -+ -+ if (!extmem) -+ return; -+ -+ pr_warn("Found %lu MiB of extra memory, but highmem is unsupported yet!\n", -+ extmem >> 20); -+ -+ /* TODO: Register extra memory */ -+} -+ -+#endif /* defined(CONFIG_BCM47XX_BCMA) && defined(CONFIG_HIGHMEM) */ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -227,6 +227,9 @@ void __init plat_mem_setup(void) - bcm47xx_bus_type = BCM47XX_BUS_TYPE_BCMA; - bcm47xx_register_bcma(); - bcm47xx_set_system_type(bcm47xx_bus.bcma.bus.chipinfo.id); -+#ifdef CONFIG_HIGHMEM -+ bcm47xx_prom_highmem_init(); -+#endif - #endif - } else { - printk(KERN_INFO "bcm47xx: using ssb bus\n"); ---- a/arch/mips/include/asm/pgtable-32.h -+++ b/arch/mips/include/asm/pgtable-32.h -@@ -18,6 +18,8 @@ - - #include <asm-generic/pgtable-nopmd.h> - -+extern int temp_tlb_entry __cpuinitdata; -+ - /* - * - add_temporary_entry() add a temporary TLB entry. We use TLB entries - * starting at the top and working down. This is for populating the ---- a/arch/mips/mm/tlb-r4k.c -+++ b/arch/mips/mm/tlb-r4k.c -@@ -417,7 +417,7 @@ int __init has_transparent_hugepage(void - * lifetime of the system - */ - --static int temp_tlb_entry __cpuinitdata; -+int temp_tlb_entry __cpuinitdata; - - __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, - unsigned long entryhi, unsigned long pagemask) diff --git a/target/linux/brcm47xx/patches-3.14/159-cpu_fixes.patch b/target/linux/brcm47xx/patches-3.14/159-cpu_fixes.patch deleted file mode 100644 index 70de78c..0000000 --- a/target/linux/brcm47xx/patches-3.14/159-cpu_fixes.patch +++ /dev/null @@ -1,373 +0,0 @@ ---- a/arch/mips/include/asm/r4kcache.h -+++ b/arch/mips/include/asm/r4kcache.h -@@ -18,6 +18,20 @@ - #include <asm/cpu-type.h> - #include <asm/mipsmtregs.h> - -+#ifdef CONFIG_BCM47XX -+#include <asm/paccess.h> -+#include <linux/ssb/ssb.h> -+#define BCM4710_DUMMY_RREG() ((void) *((u8 *) KSEG1ADDR(SSB_ENUM_BASE))) -+ -+#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr)) -+#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); }) -+#else -+#define BCM4710_DUMMY_RREG() -+ -+#define BCM4710_FILL_TLB(addr) -+#define BCM4710_PROTECTED_FILL_TLB(addr) -+#endif -+ - /* - * This macro return a properly sign-extended address suitable as base address - * for indexed cache operations. Two issues here: -@@ -151,6 +165,7 @@ static inline void flush_icache_line_ind - static inline void flush_dcache_line_indexed(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Index_Writeback_Inv_D, addr); - __dflush_epilogue - } -@@ -178,6 +193,7 @@ static inline void flush_icache_line(uns - static inline void flush_dcache_line(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Hit_Writeback_Inv_D, addr); - __dflush_epilogue - } -@@ -185,6 +201,7 @@ static inline void flush_dcache_line(uns - static inline void invalidate_dcache_line(unsigned long addr) - { - __dflush_prologue -+ BCM4710_DUMMY_RREG(); - cache_op(Hit_Invalidate_D, addr); - __dflush_epilogue - } -@@ -223,6 +240,7 @@ static inline void protected_flush_icach - break; - - default: -+ BCM4710_DUMMY_RREG(); - protected_cache_op(Hit_Invalidate_I, addr); - break; - } -@@ -236,6 +254,7 @@ static inline void protected_flush_icach - */ - static inline void protected_writeback_dcache_line(unsigned long addr) - { -+ BCM4710_DUMMY_RREG(); - protected_cache_op(Hit_Writeback_Inv_D, addr); - } - -@@ -356,8 +375,51 @@ static inline void invalidate_tcache_pag - : "r" (base), \ - "i" (op)); - -+static inline void blast_dcache(void) -+{ -+ unsigned long start = KSEG0; -+ unsigned long dcache_size = current_cpu_data.dcache.waysize * current_cpu_data.dcache.ways; -+ unsigned long end = (start + dcache_size); -+ -+ do { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Index_Writeback_Inv_D, start); -+ start += current_cpu_data.dcache.linesz; -+ } while(start < end); -+} -+ -+static inline void blast_dcache_page(unsigned long page) -+{ -+ unsigned long start = page; -+ unsigned long end = start + PAGE_SIZE; -+ -+ BCM4710_FILL_TLB(start); -+ do { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Hit_Writeback_Inv_D, start); -+ start += current_cpu_data.dcache.linesz; -+ } while(start < end); -+} -+ -+static inline void blast_dcache_page_indexed(unsigned long page) -+{ -+ unsigned long start = page; -+ unsigned long end = start + PAGE_SIZE; -+ unsigned long ws_inc = 1UL << current_cpu_data.dcache.waybit; -+ unsigned long ws_end = current_cpu_data.dcache.ways << -+ current_cpu_data.dcache.waybit; -+ unsigned long ws, addr; -+ for (ws = 0; ws < ws_end; ws += ws_inc) { -+ start = page + ws; -+ for (addr = start; addr < end; addr += current_cpu_data.dcache.linesz) { -+ BCM4710_DUMMY_RREG(); -+ cache_op(Index_Writeback_Inv_D, addr); -+ } -+ } -+} -+ - /* build blast_xxx, blast_xxx_page, blast_xxx_page_indexed */ --#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize, extra) \ -+#define __BUILD_BLAST_CACHE(pfx, desc, indexop, hitop, lsize, extra, war) \ - static inline void extra##blast_##pfx##cache##lsize(void) \ - { \ - unsigned long start = INDEX_BASE; \ -@@ -369,6 +431,7 @@ static inline void extra##blast_##pfx##c - \ - __##pfx##flush_prologue \ - \ -+ war \ - for (ws = 0; ws < ws_end; ws += ws_inc) \ - for (addr = start; addr < end; addr += lsize * 32) \ - cache##lsize##_unroll32(addr|ws, indexop); \ -@@ -383,6 +446,7 @@ static inline void extra##blast_##pfx##c - \ - __##pfx##flush_prologue \ - \ -+ war \ - do { \ - cache##lsize##_unroll32(start, hitop); \ - start += lsize * 32; \ -@@ -401,6 +465,8 @@ static inline void extra##blast_##pfx##c - current_cpu_data.desc.waybit; \ - unsigned long ws, addr; \ - \ -+ war \ -+ \ - __##pfx##flush_prologue \ - \ - for (ws = 0; ws < ws_end; ws += ws_inc) \ -@@ -410,37 +476,40 @@ static inline void extra##blast_##pfx##c - __##pfx##flush_epilogue \ - } - --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16, ) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16, ) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16, ) --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32, ) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32, ) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I_Loongson2, 32, loongson2_) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32, ) --__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64, ) --__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64, ) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64, ) --__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128, ) -- --__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16, ) --__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32, ) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16, ) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32, ) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64, ) --__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128, ) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 16, , ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 16, , BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 16, , ) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 32, , ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 32, , BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I_Loongson2, 32, loongson2_, BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 32, , ) -+__BUILD_BLAST_CACHE(d, dcache, Index_Writeback_Inv_D, Hit_Writeback_Inv_D, 64, , ) -+__BUILD_BLAST_CACHE(i, icache, Index_Invalidate_I, Hit_Invalidate_I, 64, , BCM4710_FILL_TLB(start);) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 64, , ) -+__BUILD_BLAST_CACHE(s, scache, Index_Writeback_Inv_SD, Hit_Writeback_Inv_SD, 128, , ) -+ -+__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 16, , ) -+__BUILD_BLAST_CACHE(inv_d, dcache, Index_Writeback_Inv_D, Hit_Invalidate_D, 32, , ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 16, , ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 32, , ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 64, , ) -+__BUILD_BLAST_CACHE(inv_s, scache, Index_Writeback_Inv_SD, Hit_Invalidate_SD, 128, , ) -+ - - /* build blast_xxx_range, protected_blast_xxx_range */ --#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot, extra) \ -+#define __BUILD_BLAST_CACHE_RANGE(pfx, desc, hitop, prot, extra, war, war2) \ - static inline void prot##extra##blast_##pfx##cache##_range(unsigned long start, \ - unsigned long end) \ - { \ - unsigned long lsize = cpu_##desc##_line_size(); \ - unsigned long addr = start & ~(lsize - 1); \ - unsigned long aend = (end - 1) & ~(lsize - 1); \ -+ war \ - \ - __##pfx##flush_prologue \ - \ - while (1) { \ -+ war2 \ - prot##cache_op(hitop, addr); \ - if (addr == aend) \ - break; \ -@@ -450,15 +519,15 @@ static inline void prot##extra##blast_## - __##pfx##flush_epilogue \ - } - --__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_, ) --__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_, ) --__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_, ) -+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, protected_, , BCM4710_PROTECTED_FILL_TLB(addr); BCM4710_PROTECTED_FILL_TLB(aend);, BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, protected_, , , ) -+__BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I, protected_, , , ) - __BUILD_BLAST_CACHE_RANGE(i, icache, Hit_Invalidate_I_Loongson2, \ -- protected_, loongson2_) --__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, , ) --__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, , ) -+ protected_, loongson2_, , ) -+__BUILD_BLAST_CACHE_RANGE(d, dcache, Hit_Writeback_Inv_D, , , BCM4710_FILL_TLB(addr); BCM4710_FILL_TLB(aend);, BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(s, scache, Hit_Writeback_Inv_SD, , , , ) - /* blast_inv_dcache_range */ --__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , ) --__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, , ) -+__BUILD_BLAST_CACHE_RANGE(inv_d, dcache, Hit_Invalidate_D, , , , BCM4710_DUMMY_RREG();) -+__BUILD_BLAST_CACHE_RANGE(inv_s, scache, Hit_Invalidate_SD, , , , ) - - #endif /* _ASM_R4KCACHE_H */ ---- a/arch/mips/include/asm/stackframe.h -+++ b/arch/mips/include/asm/stackframe.h -@@ -436,6 +436,10 @@ - .macro RESTORE_SP_AND_RET - LONG_L sp, PT_R29(sp) - .set mips3 -+#ifdef CONFIG_BCM47XX -+ nop -+ nop -+#endif - eret - .set mips0 - .endm ---- a/arch/mips/kernel/genex.S -+++ b/arch/mips/kernel/genex.S -@@ -46,6 +46,10 @@ - NESTED(except_vec3_generic, 0, sp) - .set push - .set noat -+#ifdef CONFIG_BCM47XX -+ nop -+ nop -+#endif - #if R5432_CP0_INTERRUPT_WAR - mfc0 k0, CP0_INDEX - #endif ---- a/arch/mips/mm/c-r4k.c -+++ b/arch/mips/mm/c-r4k.c -@@ -37,6 +37,9 @@ - #include <asm/traps.h> - #include <asm/dma-coherence.h> - -+/* For enabling BCM4710 cache workarounds */ -+int bcm4710 = 0; -+ - /* - * Special Variant of smp_call_function for use by cache functions: - * -@@ -113,6 +116,9 @@ static void r4k_blast_dcache_page_setup( - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache_page = blast_dcache_page; -+ else - if (dc_lsize == 0) - r4k_blast_dcache_page = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -129,6 +135,9 @@ static void r4k_blast_dcache_page_indexe - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache_page_indexed = blast_dcache_page_indexed; -+ else - if (dc_lsize == 0) - r4k_blast_dcache_page_indexed = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -146,6 +155,9 @@ static void r4k_blast_dcache_setup(void) - { - unsigned long dc_lsize = cpu_dcache_line_size(); - -+ if (bcm4710) -+ r4k_blast_dcache = blast_dcache; -+ else - if (dc_lsize == 0) - r4k_blast_dcache = (void *)cache_noop; - else if (dc_lsize == 16) -@@ -703,6 +715,8 @@ static void local_r4k_flush_cache_sigtra - unsigned long addr = (unsigned long) arg; - - R4600_HIT_CACHEOP_WAR_IMPL; -+ BCM4710_PROTECTED_FILL_TLB(addr); -+ BCM4710_PROTECTED_FILL_TLB(addr + 4); - if (dc_lsize) - protected_writeback_dcache_line(addr & ~(dc_lsize - 1)); - if (!cpu_icache_snoops_remote_store && scache_size) -@@ -1403,6 +1417,17 @@ static void coherency_setup(void) - * silly idea of putting something else there ... - */ - switch (current_cpu_type()) { -+ case CPU_BMIPS3300: -+ { -+ u32 cm; -+ cm = read_c0_diag(); -+ /* Enable icache */ -+ cm |= (1 << 31); -+ /* Enable dcache */ -+ cm |= (1 << 30); -+ write_c0_diag(cm); -+ } -+ break; - case CPU_R4000PC: - case CPU_R4000SC: - case CPU_R4000MC: -@@ -1449,6 +1474,15 @@ void r4k_cache_init(void) - extern void build_copy_page(void); - struct cpuinfo_mips *c = ¤t_cpu_data; - -+ /* Check if special workarounds are required */ -+#ifdef CONFIG_BCM47XX -+ if (current_cpu_data.cputype == CPU_BMIPS32 && (current_cpu_data.processor_id & 0xff) == 0) { -+ printk("Enabling BCM4710A0 cache workarounds.\n"); -+ bcm4710 = 1; -+ } else -+#endif -+ bcm4710 = 0; -+ - probe_pcache(); - setup_scache(); - -@@ -1514,6 +1548,14 @@ void r4k_cache_init(void) - */ - local_r4k___flush_cache_all(NULL); - -+#ifdef CONFIG_BCM47XX -+ { -+ static void (*_coherency_setup)(void); -+ _coherency_setup = (void (*)(void)) KSEG1ADDR(coherency_setup); -+ _coherency_setup(); -+ } -+#else - coherency_setup(); -+#endif - board_cache_error_setup = r4k_cache_error_setup; - } ---- a/arch/mips/mm/tlbex.c -+++ b/arch/mips/mm/tlbex.c -@@ -1277,6 +1277,9 @@ static void build_r4000_tlb_refill_handl - /* No need for uasm_i_nop */ - } - -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+#endif - #ifdef CONFIG_64BIT - build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */ - #else -@@ -1835,6 +1838,9 @@ build_r4000_tlbchange_handler_head(u32 * - { - struct work_registers wr = build_get_work_registers(p); - -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - #ifdef CONFIG_64BIT - build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ - #else diff --git a/target/linux/brcm47xx/patches-3.14/160-kmap_coherent.patch b/target/linux/brcm47xx/patches-3.14/160-kmap_coherent.patch deleted file mode 100644 index 60d9da0..0000000 --- a/target/linux/brcm47xx/patches-3.14/160-kmap_coherent.patch +++ /dev/null @@ -1,70 +0,0 @@ ---- a/arch/mips/include/asm/cpu-features.h -+++ b/arch/mips/include/asm/cpu-features.h -@@ -133,6 +133,9 @@ - #ifndef cpu_has_local_ebase - #define cpu_has_local_ebase 1 - #endif -+#ifndef cpu_use_kmap_coherent -+#define cpu_use_kmap_coherent 1 -+#endif - - /* - * I-Cache snoops remote store. This only matters on SMP. Some multiprocessors ---- a/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h -+++ b/arch/mips/include/asm/mach-bcm47xx/cpu-feature-overrides.h -@@ -79,4 +79,6 @@ - #define cpu_scache_line_size() 0 - #define cpu_has_vz 0 - -+#define cpu_use_kmap_coherent 0 -+ - #endif /* __ASM_MACH_BCM47XX_CPU_FEATURE_OVERRIDES_H */ ---- a/arch/mips/mm/c-r4k.c -+++ b/arch/mips/mm/c-r4k.c -@@ -523,7 +523,7 @@ static inline void local_r4k_flush_cache - */ - map_coherent = (cpu_has_dc_aliases && - page_mapped(page) && !Page_dcache_dirty(page)); -- if (map_coherent) -+ if (map_coherent && cpu_use_kmap_coherent) - vaddr = kmap_coherent(page, addr); - else - vaddr = kmap_atomic(page); -@@ -546,7 +546,7 @@ static inline void local_r4k_flush_cache - } - - if (vaddr) { -- if (map_coherent) -+ if (map_coherent && cpu_use_kmap_coherent) - kunmap_coherent(); - else - kunmap_atomic(vaddr); ---- a/arch/mips/mm/init.c -+++ b/arch/mips/mm/init.c -@@ -200,7 +200,7 @@ void copy_user_highpage(struct page *to, - void *vfrom, *vto; - - vto = kmap_atomic(to); -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(from) && !Page_dcache_dirty(from)) { - vfrom = kmap_coherent(from, vaddr); - copy_page(vto, vfrom); -@@ -222,7 +222,7 @@ void copy_to_user_page(struct vm_area_st - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) - { -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(page) && !Page_dcache_dirty(page)) { - void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); - memcpy(vto, src, len); -@@ -240,7 +240,7 @@ void copy_from_user_page(struct vm_area_ - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) - { -- if (cpu_has_dc_aliases && -+ if (cpu_has_dc_aliases && cpu_use_kmap_coherent && - page_mapped(page) && !Page_dcache_dirty(page)) { - void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); - memcpy(dst, vfrom, len); diff --git a/target/linux/brcm47xx/patches-3.14/209-b44-register-adm-switch.patch b/target/linux/brcm47xx/patches-3.14/209-b44-register-adm-switch.patch deleted file mode 100644 index 108d79c..0000000 --- a/target/linux/brcm47xx/patches-3.14/209-b44-register-adm-switch.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b36f694256f41bc71571f467646d015dda128d14 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens <hauke@hauke-m.de> -Date: Sat, 9 Nov 2013 17:03:59 +0100 -Subject: [PATCH 210/210] b44: register adm switch - ---- - drivers/net/ethernet/broadcom/b44.c | 57 +++++++++++++++++++++++++++++++++++ - drivers/net/ethernet/broadcom/b44.h | 3 ++ - 2 files changed, 60 insertions(+) - ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -31,6 +31,8 @@ - #include <linux/ssb/ssb.h> - #include <linux/slab.h> - #include <linux/phy.h> -+#include <linux/platform_device.h> -+#include <linux/platform_data/adm6996-gpio.h> - - #include <asm/uaccess.h> - #include <asm/io.h> -@@ -2239,6 +2241,70 @@ static void b44_adjust_link(struct net_d - } - } - -+#ifdef CONFIG_BCM47XX -+static int b44_register_adm_switch(struct b44 *bp) -+{ -+ int gpio; -+ struct platform_device *pdev; -+ struct adm6996_gpio_platform_data adm_data = {0}; -+ struct platform_device_info info = {0}; -+ -+ adm_data.model = ADM6996L; -+ gpio = bcm47xx_nvram_gpio_pin("adm_eecs"); -+ if (gpio >= 0) -+ adm_data.eecs = gpio; -+ else -+ adm_data.eecs = 2; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_eesk"); -+ if (gpio >= 0) -+ adm_data.eesk = gpio; -+ else -+ adm_data.eesk = 3; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_eedi"); -+ if (gpio >= 0) -+ adm_data.eedi = gpio; -+ else -+ adm_data.eedi = 4; -+ -+ gpio = bcm47xx_nvram_gpio_pin("adm_rc"); -+ if (gpio >= 0) -+ adm_data.eerc = gpio; -+ else -+ adm_data.eerc = 5; -+ -+ info.parent = bp->sdev->dev; -+ info.name = "adm6996_gpio"; -+ info.id = -1; -+ info.data = &adm_data; -+ info.size_data = sizeof(adm_data); -+ -+ if (!bp->adm_switch) { -+ pdev = platform_device_register_full(&info); -+ if (IS_ERR(pdev)) -+ return PTR_ERR(pdev); -+ -+ bp->adm_switch = pdev; -+ } -+ return 0; -+} -+static void b44_unregister_adm_switch(struct b44 *bp) -+{ -+ if (bp->adm_switch) -+ platform_device_unregister(bp->adm_switch); -+} -+#else -+static int b44_register_adm_switch(struct b44 *bp) -+{ -+ return 0; -+} -+static void b44_unregister_adm_switch(struct b44 *bp) -+{ -+ -+} -+#endif /* CONFIG_BCM47XX */ -+ - static int b44_register_phy_one(struct b44 *bp) - { - struct mii_bus *mii_bus; -@@ -2282,6 +2348,9 @@ static int b44_register_phy_one(struct b - if (!bp->mii_bus->phy_map[bp->phy_addr] && - (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { - -+ if (sprom->boardflags_lo & B44_BOARDFLAG_ADM) -+ b44_register_adm_switch(bp); -+ - dev_info(sdev->dev, - "could not find PHY at %i, use fixed one\n", - bp->phy_addr); -@@ -2476,6 +2545,7 @@ static void b44_remove_one(struct ssb_de - unregister_netdev(dev); - if (bp->flags & B44_FLAG_EXTERNAL_PHY) - b44_unregister_phy_one(bp); -+ b44_unregister_adm_switch(bp); - ssb_device_disable(sdev, 0); - ssb_bus_may_powerdown(sdev->bus); - free_netdev(dev); ---- a/drivers/net/ethernet/broadcom/b44.h -+++ b/drivers/net/ethernet/broadcom/b44.h -@@ -404,6 +404,9 @@ struct b44 { - struct mii_bus *mii_bus; - int old_link; - struct mii_if_info mii_if; -+ -+ /* platform device for associated switch */ -+ struct platform_device *adm_switch; - }; - - #endif /* _B44_H */ diff --git a/target/linux/brcm47xx/patches-3.14/210-b44_phy_fix.patch b/target/linux/brcm47xx/patches-3.14/210-b44_phy_fix.patch deleted file mode 100644 index 7bedd03..0000000 --- a/target/linux/brcm47xx/patches-3.14/210-b44_phy_fix.patch +++ /dev/null @@ -1,54 +0,0 @@ ---- a/drivers/net/ethernet/broadcom/b44.c -+++ b/drivers/net/ethernet/broadcom/b44.c -@@ -431,10 +431,34 @@ static void b44_wap54g10_workaround(stru - error: - pr_warning("PHY: cannot reset MII transceiver isolate bit\n"); - } -+ -+static void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+ char buf[20]; -+ struct ssb_device *sdev = bp->sdev; -+ -+ /* Toshiba WRC-1000, Siemens SE505 v1, Askey RT-210W, RT-220W */ -+ if (sdev->bus->sprom.board_num == 100) { -+ bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; -+ } else { -+ /* WL-HDD */ -+ if (bcm47xx_nvram_getenv("hardware_version", buf, sizeof(buf)) >= 0 && -+ !strncmp(buf, "WL300-", strlen("WL300-"))) { -+ if (sdev->bus->sprom.et0phyaddr == 0 && -+ sdev->bus->sprom.et1phyaddr == 1) -+ bp->phy_addr = B44_PHY_ADDR_NO_LOCAL_PHY; -+ } -+ } -+ return; -+} - #else - static inline void b44_wap54g10_workaround(struct b44 *bp) - { - } -+ -+static inline void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+} - #endif - - static int b44_setup_phy(struct b44 *bp) -@@ -443,6 +467,7 @@ static int b44_setup_phy(struct b44 *bp) - int err; - - b44_wap54g10_workaround(bp); -+ b44_bcm47xx_workarounds(bp); - - if (bp->flags & B44_FLAG_EXTERNAL_PHY) - return 0; -@@ -2169,6 +2194,8 @@ static int b44_get_invariants(struct b44 - * valid PHY address. */ - bp->phy_addr &= 0x1F; - -+ b44_bcm47xx_workarounds(bp); -+ - memcpy(bp->dev->dev_addr, addr, ETH_ALEN); - - if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ diff --git a/target/linux/brcm47xx/patches-3.14/280-activate_ssb_support_in_usb.patch b/target/linux/brcm47xx/patches-3.14/280-activate_ssb_support_in_usb.patch deleted file mode 100644 index 748710f..0000000 --- a/target/linux/brcm47xx/patches-3.14/280-activate_ssb_support_in_usb.patch +++ /dev/null @@ -1,25 +0,0 @@ -This prevents the options from being delete with make kernel_oldconfig. ---- - drivers/ssb/Kconfig | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/bcma/Kconfig -+++ b/drivers/bcma/Kconfig -@@ -38,6 +38,7 @@ config BCMA_DRIVER_PCI_HOSTMODE - config BCMA_HOST_SOC - bool "Support for BCMA in a SoC" - depends on BCMA -+ select USB_HCD_BCMA if USB_EHCI_HCD || USB_OHCI_HCD - help - Host interface for a Broadcom AIX bus directly mapped into - the memory. This only works with the Broadcom SoCs from the ---- a/drivers/ssb/Kconfig -+++ b/drivers/ssb/Kconfig -@@ -146,6 +146,7 @@ config SSB_SFLASH - config SSB_EMBEDDED - bool - depends on SSB_DRIVER_MIPS && SSB_PCICORE_HOSTMODE -+ select USB_HCD_SSB if USB_EHCI_HCD || USB_OHCI_HCD - default y - - config SSB_DRIVER_EXTIF diff --git a/target/linux/brcm47xx/patches-3.14/300-fork_cacheflush.patch b/target/linux/brcm47xx/patches-3.14/300-fork_cacheflush.patch deleted file mode 100644 index 686fb1b..0000000 --- a/target/linux/brcm47xx/patches-3.14/300-fork_cacheflush.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/arch/mips/include/asm/cacheflush.h -+++ b/arch/mips/include/asm/cacheflush.h -@@ -32,7 +32,7 @@ - extern void (*flush_cache_all)(void); - extern void (*__flush_cache_all)(void); - extern void (*flush_cache_mm)(struct mm_struct *mm); --#define flush_cache_dup_mm(mm) do { (void) (mm); } while (0) -+#define flush_cache_dup_mm(mm) flush_cache_mm(mm) - extern void (*flush_cache_range)(struct vm_area_struct *vma, - unsigned long start, unsigned long end); - extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn); diff --git a/target/linux/brcm47xx/patches-3.14/310-no_highpage.patch b/target/linux/brcm47xx/patches-3.14/310-no_highpage.patch deleted file mode 100644 index d71c39d..0000000 --- a/target/linux/brcm47xx/patches-3.14/310-no_highpage.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- a/arch/mips/include/asm/page.h -+++ b/arch/mips/include/asm/page.h -@@ -71,6 +71,7 @@ static inline unsigned int page_size_ftl - #endif /* CONFIG_MIPS_HUGE_TLB_SUPPORT */ - - #include <linux/pfn.h> -+#include <asm/cpu-features.h> - - extern void build_clear_page(void); - extern void build_copy_page(void); -@@ -105,13 +106,16 @@ static inline void clear_user_page(void - flush_data_cache_page((unsigned long)addr); - } - --extern void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, -- struct page *to); --struct vm_area_struct; --extern void copy_user_highpage(struct page *to, struct page *from, -- unsigned long vaddr, struct vm_area_struct *vma); -+static inline void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, -+ struct page *to) -+{ -+ extern void (*flush_data_cache_page)(unsigned long addr); - --#define __HAVE_ARCH_COPY_USER_HIGHPAGE -+ copy_page(vto, vfrom); -+ if (!cpu_has_ic_fills_f_dc || -+ pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) -+ flush_data_cache_page((unsigned long)vto); -+} - - /* - * These are used to make use of C type-checking.. ---- a/arch/mips/mm/init.c -+++ b/arch/mips/mm/init.c -@@ -194,30 +194,6 @@ void kunmap_coherent(void) - pagefault_enable(); - } - --void copy_user_highpage(struct page *to, struct page *from, -- unsigned long vaddr, struct vm_area_struct *vma) --{ -- void *vfrom, *vto; -- -- vto = kmap_atomic(to); -- if (cpu_has_dc_aliases && cpu_use_kmap_coherent && -- page_mapped(from) && !Page_dcache_dirty(from)) { -- vfrom = kmap_coherent(from, vaddr); -- copy_page(vto, vfrom); -- kunmap_coherent(); -- } else { -- vfrom = kmap_atomic(from); -- copy_page(vto, vfrom); -- kunmap_atomic(vfrom); -- } -- if ((!cpu_has_ic_fills_f_dc) || -- pages_do_alias((unsigned long)vto, vaddr & PAGE_MASK)) -- flush_data_cache_page((unsigned long)vto); -- kunmap_atomic(vto); -- /* Make sure this page is cleared on other CPU's too before using it */ -- smp_wmb(); --} -- - void copy_to_user_page(struct vm_area_struct *vma, - struct page *page, unsigned long vaddr, void *dst, const void *src, - unsigned long len) diff --git a/target/linux/brcm47xx/patches-3.14/610-pci_ide_fix.patch b/target/linux/brcm47xx/patches-3.14/610-pci_ide_fix.patch deleted file mode 100644 index 76751e8..0000000 --- a/target/linux/brcm47xx/patches-3.14/610-pci_ide_fix.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/include/linux/ide.h -+++ b/include/linux/ide.h -@@ -191,7 +191,11 @@ static inline void ide_std_init_ports(st - hw->io_ports.ctl_addr = ctl_addr; - } - -+#if defined CONFIG_BCM47XX -+# define MAX_HWIFS 2 -+#else - #define MAX_HWIFS 10 -+#endif - - /* - * Now for the data we need to maintain per-drive: ide_drive_t diff --git a/target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch b/target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch deleted file mode 100644 index cb46f46..0000000 --- a/target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch +++ /dev/null @@ -1,17 +0,0 @@ -When the Ethernet controller is powered down and someone wants to -access the mdio bus like the witch driver (b53) the system crashed if -PCI_D3hot was set before. This patch deactivates this power sawing mode -when a switch driver is in use. - ---- a/drivers/net/ethernet/broadcom/tg3.c -+++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -4269,7 +4269,8 @@ static int tg3_power_down_prepare(struct - static void tg3_power_down(struct tg3 *tp) - { - pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE)); -- pci_set_power_state(tp->pdev, PCI_D3hot); -+ if (!tg3_flag(tp, ROBOSWITCH)) -+ pci_set_power_state(tp->pdev, PCI_D3hot); - } - - static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex) diff --git a/target/linux/brcm47xx/patches-3.14/820-wgt634u-nvram-fix.patch b/target/linux/brcm47xx/patches-3.14/820-wgt634u-nvram-fix.patch deleted file mode 100644 index e2bbdcc..0000000 --- a/target/linux/brcm47xx/patches-3.14/820-wgt634u-nvram-fix.patch +++ /dev/null @@ -1,296 +0,0 @@ -The Netgear wgt634u uses a different format for storing the -configuration. This patch is needed to read out the correct -configuration. The cfe_env.c file uses a different method way to read -out the configuration than the in kernel cfe config reader. - ---- a/arch/mips/bcm47xx/Makefile -+++ b/arch/mips/bcm47xx/Makefile -@@ -5,3 +5,4 @@ - - obj-y += irq.o nvram.o prom.o serial.o setup.o time.o sprom.o - obj-y += board.o buttons.o leds.o workarounds.o -+obj-y += cfe_env.o ---- /dev/null -+++ b/arch/mips/bcm47xx/cfe_env.c -@@ -0,0 +1,229 @@ -+/* -+ * CFE environment variable access -+ * -+ * Copyright 2001-2003, Broadcom Corporation -+ * Copyright 2006, Felix Fietkau <nbd@openwrt.org> -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License as published by the -+ * Free Software Foundation; either version 2 of the License, or (at your -+ * option) any later version. -+ */ -+ -+#include <linux/init.h> -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/string.h> -+#include <asm/io.h> -+#include <asm/uaccess.h> -+ -+#define NVRAM_SIZE (0x1ff0) -+static char _nvdata[NVRAM_SIZE]; -+static char _valuestr[256]; -+ -+/* -+ * TLV types. These codes are used in the "type-length-value" -+ * encoding of the items stored in the NVRAM device (flash or EEPROM) -+ * -+ * The layout of the flash/nvram is as follows: -+ * -+ * <type> <length> <data ...> <type> <length> <data ...> <type_end> -+ * -+ * The type code of "ENV_TLV_TYPE_END" marks the end of the list. -+ * The "length" field marks the length of the data section, not -+ * including the type and length fields. -+ * -+ * Environment variables are stored as follows: -+ * -+ * <type_env> <length> <flags> <name> = <value> -+ * -+ * If bit 0 (low bit) is set, the length is an 8-bit value. -+ * If bit 0 (low bit) is clear, the length is a 16-bit value -+ * -+ * Bit 7 set indicates "user" TLVs. In this case, bit 0 still -+ * indicates the size of the length field. -+ * -+ * Flags are from the constants below: -+ * -+ */ -+#define ENV_LENGTH_16BITS 0x00 /* for low bit */ -+#define ENV_LENGTH_8BITS 0x01 -+ -+#define ENV_TYPE_USER 0x80 -+ -+#define ENV_CODE_SYS(n,l) (((n)<<1)|(l)) -+#define ENV_CODE_USER(n,l) ((((n)<<1)|(l)) | ENV_TYPE_USER) -+ -+/* -+ * The actual TLV types we support -+ */ -+ -+#define ENV_TLV_TYPE_END 0x00 -+#define ENV_TLV_TYPE_ENV ENV_CODE_SYS(0,ENV_LENGTH_8BITS) -+ -+/* -+ * Environment variable flags -+ */ -+ -+#define ENV_FLG_NORMAL 0x00 /* normal read/write */ -+#define ENV_FLG_BUILTIN 0x01 /* builtin - not stored in flash */ -+#define ENV_FLG_READONLY 0x02 /* read-only - cannot be changed */ -+ -+#define ENV_FLG_MASK 0xFF /* mask of attributes we keep */ -+#define ENV_FLG_ADMIN 0x100 /* lets us internally override permissions */ -+ -+ -+/* ********************************************************************* -+ * _nvram_read(buffer,offset,length) -+ * -+ * Read data from the NVRAM device -+ * -+ * Input parameters: -+ * buffer - destination buffer -+ * offset - offset of data to read -+ * length - number of bytes to read -+ * -+ * Return value: -+ * number of bytes read, or <0 if error occured -+ ********************************************************************* */ -+static int -+_nvram_read(unsigned char *nv_buf, unsigned char *buffer, int offset, int length) -+{ -+ int i; -+ if (offset > NVRAM_SIZE) -+ return -1; -+ -+ for ( i = 0; i < length; i++) { -+ buffer[i] = ((volatile unsigned char*)nv_buf)[offset + i]; -+ } -+ return length; -+} -+ -+ -+static char* -+_strnchr(const char *dest,int c,size_t cnt) -+{ -+ while (*dest && (cnt > 0)) { -+ if (*dest == c) return (char *) dest; -+ dest++; -+ cnt--; -+ } -+ return NULL; -+} -+ -+ -+ -+/* -+ * Core support API: Externally visible. -+ */ -+ -+/* -+ * Get the value of an NVRAM variable -+ * @param name name of variable to get -+ * @return value of variable or NULL if undefined -+ */ -+ -+char* -+cfe_env_get(unsigned char *nv_buf, char* name) -+{ -+ int size; -+ unsigned char *buffer; -+ unsigned char *ptr; -+ unsigned char *envval; -+ unsigned int reclen; -+ unsigned int rectype; -+ int offset; -+ int flg; -+ -+ if (!strcmp(name, "nvram_type")) -+ return "cfe"; -+ -+ size = NVRAM_SIZE; -+ buffer = &_nvdata[0]; -+ -+ ptr = buffer; -+ offset = 0; -+ -+ /* Read the record type and length */ -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) { -+ goto error; -+ } -+ -+ while ((*ptr != ENV_TLV_TYPE_END) && (size > 1)) { -+ -+ /* Adjust pointer for TLV type */ -+ rectype = *(ptr); -+ offset++; -+ size--; -+ -+ /* -+ * Read the length. It can be either 1 or 2 bytes -+ * depending on the code -+ */ -+ if (rectype & ENV_LENGTH_8BITS) { -+ /* Read the record type and length - 8 bits */ -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) { -+ goto error; -+ } -+ reclen = *(ptr); -+ size--; -+ offset++; -+ } -+ else { -+ /* Read the record type and length - 16 bits, MSB first */ -+ if (_nvram_read(nv_buf, ptr,offset,2) != 2) { -+ goto error; -+ } -+ reclen = (((unsigned int) *(ptr)) << 8) + (unsigned int) *(ptr+1); -+ size -= 2; -+ offset += 2; -+ } -+ -+ if (reclen > size) -+ break; /* should not happen, bad NVRAM */ -+ -+ switch (rectype) { -+ case ENV_TLV_TYPE_ENV: -+ /* Read the TLV data */ -+ if (_nvram_read(nv_buf, ptr,offset,reclen) != reclen) -+ goto error; -+ flg = *ptr++; -+ envval = (unsigned char *) _strnchr(ptr,'=',(reclen-1)); -+ if (envval) { -+ *envval++ = '\0'; -+ memcpy(_valuestr,envval,(reclen-1)-(envval-ptr)); -+ _valuestr[(reclen-1)-(envval-ptr)] = '\0'; -+#if 0 -+ printk(KERN_INFO "NVRAM:%s=%s\n", ptr, _valuestr); -+#endif -+ if(!strcmp(ptr, name)){ -+ return _valuestr; -+ } -+ if((strlen(ptr) > 1) && !strcmp(&ptr[1], name)) -+ return _valuestr; -+ } -+ break; -+ -+ default: -+ /* Unknown TLV type, skip it. */ -+ break; -+ } -+ -+ /* -+ * Advance to next TLV -+ */ -+ -+ size -= (int)reclen; -+ offset += reclen; -+ -+ /* Read the next record type */ -+ ptr = buffer; -+ if (_nvram_read(nv_buf, ptr,offset,1) != 1) -+ goto error; -+ } -+ -+error: -+ return NULL; -+ -+} -+ ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -22,6 +22,8 @@ - - static char nvram_buf[NVRAM_SPACE]; - static const u32 nvram_sizes[] = {0x8000, 0xF000, 0x10000}; -+static int cfe_env; -+extern char *cfe_env_get(char *nv_buf, const char *name); - - static u32 find_nvram_size(u32 end) - { -@@ -46,6 +48,26 @@ static int nvram_find_and_copy(u32 base, - u32 *src, *dst; - u32 size; - -+ cfe_env = 0; -+ -+ /* XXX: hack for supporting the CFE environment stuff on WGT634U */ -+ if (lim >= 8 * 1024 * 1024) { -+ src = (u32 *) KSEG1ADDR(base + 8 * 1024 * 1024 - 0x2000); -+ dst = (u32 *) nvram_buf; -+ -+ if ((*src & 0xff00ff) == 0x000001) { -+ printk("early_nvram_init: WGT634U NVRAM found.\n"); -+ -+ for (i = 0; i < 0x1ff0; i++) { -+ if (*src == 0xFFFFFFFF) -+ break; -+ *dst++ = *src++; -+ } -+ cfe_env = 1; -+ return 0; -+ } -+ } -+ - /* TODO: when nvram is on nand flash check for bad blocks first. */ - off = FLASH_MIN; - while (off <= lim) { -@@ -172,6 +194,13 @@ int bcm47xx_nvram_getenv(char *name, cha - return err; - } - -+ if (cfe_env) { -+ value = cfe_env_get(nvram_buf, name); -+ if (!value) -+ return -ENOENT; -+ return snprintf(val, val_len, "%s", value); -+ } -+ - /* Look for name=value and return value */ - var = &nvram_buf[sizeof(struct nvram_header)]; - end = nvram_buf + sizeof(nvram_buf) - 2; diff --git a/target/linux/brcm47xx/patches-3.14/830-huawei_e970_support.patch b/target/linux/brcm47xx/patches-3.14/830-huawei_e970_support.patch deleted file mode 100644 index ee35eed..0000000 --- a/target/linux/brcm47xx/patches-3.14/830-huawei_e970_support.patch +++ /dev/null @@ -1,101 +0,0 @@ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -36,6 +36,7 @@ - #include <linux/ssb/ssb.h> - #include <linux/ssb/ssb_embedded.h> - #include <linux/bcma/bcma_soc.h> -+#include <linux/old_gpio_wdt.h> - #include <asm/bootinfo.h> - #include <asm/idle.h> - #include <asm/prom.h> -@@ -278,6 +279,33 @@ static struct fixed_phy_status bcm47xx_f - .duplex = DUPLEX_FULL, - }; - -+static struct gpio_wdt_platform_data gpio_wdt_data; -+ -+static struct platform_device gpio_wdt_device = { -+ .name = "gpio-wdt", -+ .id = 0, -+ .dev = { -+ .platform_data = &gpio_wdt_data, -+ }, -+}; -+ -+static int __init bcm47xx_register_gpio_watchdog(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ switch (board) { -+ case BCM47XX_BOARD_HUAWEI_E970: -+ pr_info("bcm47xx: detected Huawei E970 or similar, starting early gpio_wdt timer\n"); -+ gpio_wdt_data.gpio = 7; -+ gpio_wdt_data.interval = HZ; -+ gpio_wdt_data.first_interval = HZ / 5; -+ return platform_device_register(&gpio_wdt_device); -+ default: -+ /* Nothing to do */ -+ return 0; -+ } -+} -+ - static int __init bcm47xx_register_bus_complete(void) - { - switch (bcm47xx_bus_type) { -@@ -297,6 +325,7 @@ static int __init bcm47xx_register_bus_c - bcm47xx_workarounds(); - - fixed_phy_add(PHY_POLL, 0, &bcm47xx_fixed_phy_status); -+ bcm47xx_register_gpio_watchdog(); - return 0; - } - device_initcall(bcm47xx_register_bus_complete); ---- a/arch/mips/configs/bcm47xx_defconfig -+++ b/arch/mips/configs/bcm47xx_defconfig -@@ -67,6 +67,7 @@ CONFIG_HW_RANDOM=y - CONFIG_GPIO_SYSFS=y - CONFIG_WATCHDOG=y - CONFIG_BCM47XX_WDT=y -+CONFIG_GPIO_WDT=y - CONFIG_SSB_DEBUG=y - CONFIG_SSB_DRIVER_GIGE=y - CONFIG_BCMA_DRIVER_GMAC_CMN=y ---- a/drivers/ssb/embedded.c -+++ b/drivers/ssb/embedded.c -@@ -34,11 +34,36 @@ int ssb_watchdog_timer_set(struct ssb_bu - } - EXPORT_SYMBOL(ssb_watchdog_timer_set); - -+#ifdef CONFIG_BCM47XX -+#include <bcm47xx_board.h> -+ -+static bool ssb_watchdog_supported(void) -+{ -+ enum bcm47xx_board board = bcm47xx_board_get(); -+ -+ /* The Huawei E970 has a hardware watchdog using a GPIO */ -+ switch (board) { -+ case BCM47XX_BOARD_HUAWEI_E970: -+ return false; -+ default: -+ return true; -+ } -+} -+#else -+static bool ssb_watchdog_supported(void) -+{ -+ return true; -+} -+#endif -+ - int ssb_watchdog_register(struct ssb_bus *bus) - { - struct bcm47xx_wdt wdt = {}; - struct platform_device *pdev; - -+ if (!ssb_watchdog_supported()) -+ return 0; -+ - if (ssb_chipco_available(&bus->chipco)) { - wdt.driver_data = &bus->chipco; - wdt.timer_set = ssb_chipco_watchdog_timer_set_wdt; diff --git a/target/linux/brcm47xx/patches-3.14/920-cache-wround.patch b/target/linux/brcm47xx/patches-3.14/920-cache-wround.patch deleted file mode 100644 index 51c233a..0000000 --- a/target/linux/brcm47xx/patches-3.14/920-cache-wround.patch +++ /dev/null @@ -1,138 +0,0 @@ ---- a/arch/mips/include/asm/r4kcache.h -+++ b/arch/mips/include/asm/r4kcache.h -@@ -21,10 +21,28 @@ - #ifdef CONFIG_BCM47XX - #include <asm/paccess.h> - #include <linux/ssb/ssb.h> --#define BCM4710_DUMMY_RREG() ((void) *((u8 *) KSEG1ADDR(SSB_ENUM_BASE))) -+#define BCM4710_DUMMY_RREG() bcm4710_dummy_rreg() -+ -+static inline unsigned long bcm4710_dummy_rreg(void) -+{ -+ return *(volatile unsigned long *)(KSEG1ADDR(SSB_ENUM_BASE)); -+} -+ -+#define BCM4710_FILL_TLB(addr) bcm4710_fill_tlb((void *)(addr)) -+ -+static inline unsigned long bcm4710_fill_tlb(void *addr) -+{ -+ return *(unsigned long *)addr; -+} -+ -+#define BCM4710_PROTECTED_FILL_TLB(addr) bcm4710_protected_fill_tlb((void *)(addr)) -+ -+static inline void bcm4710_protected_fill_tlb(void *addr) -+{ -+ unsigned long x; -+ get_dbe(x, (unsigned long *)addr);; -+} - --#define BCM4710_FILL_TLB(addr) (*(volatile unsigned long *)(addr)) --#define BCM4710_PROTECTED_FILL_TLB(addr) ({ unsigned long x; get_dbe(x, (volatile unsigned long *)(addr)); }) - #else - #define BCM4710_DUMMY_RREG() - ---- a/arch/mips/mm/tlbex.c -+++ b/arch/mips/mm/tlbex.c -@@ -935,6 +935,9 @@ build_get_pgde32(u32 **p, unsigned int t - uasm_i_srl(p, ptr, ptr, SMP_CPUID_PTRSHIFT); - uasm_i_addu(p, ptr, tmp, ptr); - #else -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - UASM_i_LA_mostly(p, ptr, pgdc); - #endif - uasm_i_mfc0(p, tmp, C0_BADVADDR); /* get faulting address */ -@@ -1277,12 +1280,12 @@ static void build_r4000_tlb_refill_handl - /* No need for uasm_i_nop */ - } - --#ifdef CONFIG_BCM47XX -- uasm_i_nop(&p); --#endif - #ifdef CONFIG_64BIT - build_get_pmde64(&p, &l, &r, K0, K1); /* get pmd in K1 */ - #else -+# ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+# endif - build_get_pgde32(&p, K0, K1); /* get pgd in K1 */ - #endif - -@@ -1294,6 +1297,9 @@ static void build_r4000_tlb_refill_handl - build_update_entries(&p, K0, K1); - build_tlb_write_entry(&p, &l, &r, tlb_random); - uasm_l_leave(&l, p); -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(&p); -+#endif - uasm_i_eret(&p); /* return from trap */ - } - #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT -@@ -1838,12 +1844,12 @@ build_r4000_tlbchange_handler_head(u32 * - { - struct work_registers wr = build_get_work_registers(p); - --#ifdef CONFIG_BCM47XX -- uasm_i_nop(p); --#endif - #ifdef CONFIG_64BIT - build_get_pmde64(p, l, r, wr.r1, wr.r2); /* get pmd in ptr */ - #else -+# ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+# endif - build_get_pgde32(p, wr.r1, wr.r2); /* get pgd in ptr */ - #endif - -@@ -1882,6 +1888,9 @@ build_r4000_tlbchange_handler_tail(u32 * - build_tlb_write_entry(p, l, r, tlb_indexed); - uasm_l_leave(l, *p); - build_restore_work_registers(p); -+#ifdef CONFIG_BCM47XX -+ uasm_i_nop(p); -+#endif - uasm_i_eret(p); /* return from trap */ - - #ifdef CONFIG_64BIT ---- a/arch/mips/kernel/genex.S -+++ b/arch/mips/kernel/genex.S -@@ -21,6 +21,19 @@ - #include <asm/war.h> - #include <asm/thread_info.h> - -+#ifdef CONFIG_BCM47XX -+# ifdef eret -+# undef eret -+# endif -+# define eret \ -+ .set push; \ -+ .set noreorder; \ -+ nop; \ -+ nop; \ -+ eret; \ -+ .set pop; -+#endif -+ - #ifdef CONFIG_MIPS_MT_SMTC - #define PANIC_PIC(msg) \ - .set push; \ -@@ -48,7 +61,6 @@ NESTED(except_vec3_generic, 0, sp) - .set noat - #ifdef CONFIG_BCM47XX - nop -- nop - #endif - #if R5432_CP0_INTERRUPT_WAR - mfc0 k0, CP0_INDEX -@@ -73,6 +85,9 @@ NESTED(except_vec3_r4000, 0, sp) - .set push - .set mips3 - .set noat -+#ifdef CONFIG_BCM47XX -+ nop -+#endif - mfc0 k1, CP0_CAUSE - li k0, 31<<2 - andi k1, k1, 0x7c diff --git a/target/linux/brcm47xx/patches-3.14/940-bcm47xx-yenta.patch b/target/linux/brcm47xx/patches-3.14/940-bcm47xx-yenta.patch deleted file mode 100644 index 1739ff7..0000000 --- a/target/linux/brcm47xx/patches-3.14/940-bcm47xx-yenta.patch +++ /dev/null @@ -1,46 +0,0 @@ ---- a/drivers/pcmcia/yenta_socket.c -+++ b/drivers/pcmcia/yenta_socket.c -@@ -920,6 +920,8 @@ static unsigned int yenta_probe_irq(stru - * Probe for usable interrupts using the force - * register to generate bogus card status events. - */ -+#ifndef CONFIG_BCM47XX -+ /* WRT54G3G does not like this */ - cb_writel(socket, CB_SOCKET_EVENT, -1); - cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); - reg = exca_readb(socket, I365_CSCINT); -@@ -935,6 +937,7 @@ static unsigned int yenta_probe_irq(stru - } - cb_writel(socket, CB_SOCKET_MASK, 0); - exca_writeb(socket, I365_CSCINT, reg); -+#endif - - mask = probe_irq_mask(val) & 0xffff; - -@@ -1019,6 +1022,10 @@ static void yenta_get_socket_capabilitie - else - socket->socket.irq_mask = 0; - -+ /* irq mask probing is broken for the WRT54G3G */ -+ if (socket->socket.irq_mask == 0) -+ socket->socket.irq_mask = 0x6f8; -+ - dev_printk(KERN_INFO, &socket->dev->dev, - "ISA IRQ mask 0x%04x, PCI irq %d\n", - socket->socket.irq_mask, socket->cb_irq); -@@ -1257,6 +1264,15 @@ static int yenta_probe(struct pci_dev *d - dev_printk(KERN_INFO, &dev->dev, - "Socket status: %08x\n", cb_readl(socket, CB_SOCKET_STATE)); - -+ /* Generate an interrupt on card insert/remove */ -+ config_writew(socket, CB_SOCKET_MASK, CB_CSTSMASK | CB_CDMASK); -+ -+ /* Set up Multifunction Routing Status Register */ -+ config_writew(socket, 0x8C, 0x1000 /* MFUNC3 to GPIO3 */ | 0x2 /* MFUNC0 to INTA */); -+ -+ /* Switch interrupts to parallelized */ -+ config_writeb(socket, 0x92, 0x64); -+ - yenta_fixup_parent_bridge(dev->subordinate); - - /* Register it with the pcmcia layer.. */ diff --git a/target/linux/brcm47xx/patches-3.14/960-fix-phy-device.patch b/target/linux/brcm47xx/patches-3.14/960-fix-phy-device.patch deleted file mode 100644 index f8d9239..0000000 --- a/target/linux/brcm47xx/patches-3.14/960-fix-phy-device.patch +++ /dev/null @@ -1,22 +0,0 @@ -This fixes a problem introduced in this commit: - -commit 87aa9f9c61ad56d505641681812e92ad976f8608 -Author: Florian Fainelli <f.fainelli@gmail.com> -Date: Fri Dec 6 13:01:34 2013 -0800 - - net: phy: consolidate PHY reset in phy_init_hw() - -The fixups are not executed before the switch gets registered but after -the kernel searches for the right switch driver. When the search is -executed it searches for the phy_id 0x00, because it was not fixed. - ---- a/drivers/net/phy/phy_device.c -+++ b/drivers/net/phy/phy_device.c -@@ -353,6 +353,7 @@ int phy_device_register(struct phy_devic - phydev->bus->phy_map[phydev->addr] = phydev; - - /* Run all of the fixups for this PHY */ -+ phy_scan_fixups(phydev); - err = phy_init_hw(phydev); - if (err) { - pr_err("PHY %d failed to initialize\n", phydev->addr); diff --git a/target/linux/brcm47xx/patches-3.14/976-ssb_increase_pci_delay.patch b/target/linux/brcm47xx/patches-3.14/976-ssb_increase_pci_delay.patch deleted file mode 100644 index b56f1d5..0000000 --- a/target/linux/brcm47xx/patches-3.14/976-ssb_increase_pci_delay.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/drivers/ssb/driver_pcicore.c -+++ b/drivers/ssb/driver_pcicore.c -@@ -375,7 +375,7 @@ static void ssb_pcicore_init_hostmode(st - set_io_port_base(ssb_pcicore_controller.io_map_base); - /* Give some time to the PCI controller to configure itself with the new - * values. Not waiting at this point causes crashes of the machine. */ -- mdelay(10); -+ mdelay(300); - register_pci_controller(&ssb_pcicore_controller); - } - diff --git a/target/linux/brcm47xx/patches-3.14/980-wnr834b_no_cardbus_invariant.patch b/target/linux/brcm47xx/patches-3.14/980-wnr834b_no_cardbus_invariant.patch deleted file mode 100644 index 8bab5f0..0000000 --- a/target/linux/brcm47xx/patches-3.14/980-wnr834b_no_cardbus_invariant.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/arch/mips/bcm47xx/setup.c -+++ b/arch/mips/bcm47xx/setup.c -@@ -136,6 +136,10 @@ static int bcm47xx_get_invariants(struct - if (bcm47xx_nvram_getenv("cardbus", buf, sizeof(buf)) >= 0) - iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10); - -+ /* Do not indicate cardbus for Netgear WNR834B V1 and V2 */ -+ if (iv->boardinfo.type == 0x0472 && iv->has_cardbus_slot) -+ iv->has_cardbus_slot = 0; -+ - return 0; - } - diff --git a/target/linux/brcm47xx/patches-3.14/999-wl_exports.patch b/target/linux/brcm47xx/patches-3.14/999-wl_exports.patch deleted file mode 100644 index fbecb50..0000000 --- a/target/linux/brcm47xx/patches-3.14/999-wl_exports.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- a/arch/mips/bcm47xx/nvram.c -+++ b/arch/mips/bcm47xx/nvram.c -@@ -20,7 +20,8 @@ - #include <bcm47xx_nvram.h> - #include <asm/mach-bcm47xx/bcm47xx.h> - --static char nvram_buf[NVRAM_SPACE]; -+char nvram_buf[NVRAM_SPACE]; -+EXPORT_SYMBOL(nvram_buf); - static const u32 nvram_sizes[] = {0x8000, 0xF000, 0x10000}; - static int cfe_env; - extern char *cfe_env_get(char *nv_buf, const char *name); ---- a/arch/mips/mm/cache.c -+++ b/arch/mips/mm/cache.c -@@ -58,6 +58,7 @@ void (*_dma_cache_wback)(unsigned long s - void (*_dma_cache_inv)(unsigned long start, unsigned long size); - - EXPORT_SYMBOL(_dma_cache_wback_inv); -+EXPORT_SYMBOL(_dma_cache_inv); - - #endif /* CONFIG_DMA_NONCOHERENT */ - |