Index: linux-2.6.23/arch/mips/Kconfig =================================================================== --- linux-2.6.23.orig/arch/mips/Kconfig 2007-10-13 02:23:06.662507926 +0200 +++ linux-2.6.23/arch/mips/Kconfig 2007-10-13 02:23:41.484492317 +0200 @@ -4,6 +4,10 @@ # Horrible source of confusion. Die, die, die ... select EMBEDDED +config CFE + bool + # Common Firmware Environment + mainmenu "Linux/MIPS Kernel Configuration" menu "Machine selection" @@ -44,6 +48,23 @@ note that a kernel built with this option selected will not be able to run on normal units. +config BCM947XX + bool "Support for BCM947xx based boards" + select DMA_NONCOHERENT + select HW_HAS_PCI + select IRQ_CPU + select SYS_HAS_CPU_MIPS32_R1 + select SYS_SUPPORTS_32BIT_KERNEL + select SYS_SUPPORTS_LITTLE_ENDIAN + select SSB + select SSB_SERIAL + select SSB_DRIVER_PCICORE + select SSB_PCICORE_HOSTMODE + select CFE + select GENERIC_GPIO + help + Support for BCM947xx based boards + config MIPS_COBALT bool "Cobalt Server" select DMA_NONCOHERENT Index: linux-2.6.23/arch/mips/kernel/cpu-probe.c =================================================================== --- linux-2.6.23.orig/arch/mips/kernel/cpu-probe.c 2007-10-13 02:23:06.666508151 +0200 +++ linux-2.6.23/arch/mips/kernel/cpu-probe.c 2007-10-13 02:23:11.210767122 +0200 @@ -793,6 +793,28 @@ } +static inline void cpu_probe_broadcom(struct cpuinfo_mips *c) +{ + decode_config1(c); + switch (c->processor_id & 0xff00) { + case PRID_IMP_BCM3302: + c->cputype = CPU_BCM3302; + c->isa_level = MIPS_CPU_ISA_M32R1; + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX | + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER; + break; + case PRID_IMP_BCM4710: + c->cputype = CPU_BCM4710; + c->isa_level = MIPS_CPU_ISA_M32R1; + c->options = MIPS_CPU_TLB | MIPS_CPU_4KEX | + MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER; + break; + default: + c->cputype = CPU_UNKNOWN; + break; + } +} + __init void cpu_probe(void) { struct cpuinfo_mips *c = ¤t_cpu_data; @@ -815,6 +837,9 @@ case PRID_COMP_SIBYTE: cpu_probe_sibyte(c); break; + case PRID_COMP_BROADCOM: + cpu_probe_broadcom(c); + break; case PRID_COMP_SANDCRAFT: cpu_probe_sandcraft(c); break; Index: linux-2.6.23/arch/mips/kernel/proc.c =================================================================== --- linux-2.6.23.orig/arch/mips/kernel/proc.c 2007-10-13 02:23:06.678508839 +0200 +++ linux-2.6.23/arch/mips/kernel/proc.c 2007-10-13 02:23:11.210767122 +0200 @@ -82,6 +82,8 @@ [CPU_VR4181] = "NEC VR4181", [CPU_VR4181A] = "NEC VR4181A", [CPU_SR71000] = "Sandcraft SR71000", + [CPU_BCM3302] = "Broadcom BCM3302", + [CPU_BCM4710] = "Broadcom BCM4710", [CPU_PR4450] = "Philips PR4450", [CPU_LOONGSON2] = "ICT Loongson-2", }; Index: linux-2.6.23/arch/mips/Makefile =================================================================== --- linux-2.6.23.orig/arch/mips/Makefile 2007-10-13 02:23:06.682509066 +0200 +++ linux-2.6.23/arch/mips/Makefile 2007-10-13 02:23:11.210767122 +0200 @@ -533,6 +533,18 @@ load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000 # +# Broadcom BCM47XX boards +# +core-$(CONFIG_BCM947XX) += arch/mips/bcm947xx/ +cflags-$(CONFIG_BCM947XX) += -Iarch/mips/bcm947xx/include -Iinclude/asm-mips/mach-bcm947xx +load-$(CONFIG_BCM947XX) := 0xffffffff80001000 + +# +# Common Firmware Environment +# +core-$(CONFIG_CFE) += arch/mips/cfe/ + +# # SNI RM # core-$(CONFIG_SNI_RM) += arch/mips/sni/ Index: linux-2.6.23/arch/mips/mm/tlbex.c =================================================================== --- linux-2.6.23.orig/arch/mips/mm/tlbex.c 2007-10-13 02:23:06.694509748 +0200 +++ linux-2.6.23/arch/mips/mm/tlbex.c 2007-10-13 02:26:00.272401391 +0200 @@ -895,6 +895,8 @@ case CPU_AU1550: case CPU_AU1200: case CPU_PR4450: + case CPU_BCM3302: + case CPU_BCM4710: i_nop(p); tlbw(p); break; Index: linux-2.6.23/drivers/Kconfig =================================================================== --- linux-2.6.23.orig/drivers/Kconfig 2007-10-13 02:23:06.702510206 +0200 +++ linux-2.6.23/drivers/Kconfig 2007-10-13 02:23:11.214767346 +0200 @@ -58,6 +58,8 @@ source "drivers/hwmon/Kconfig" +source "drivers/ssb/Kconfig" + source "drivers/mfd/Kconfig" source "drivers/media/Kconfig" Index: linux-2.6.23/include/asm-mips/bootinfo.h =================================================================== --- linux-2.6.23.orig/include/asm-mips/bootinfo.h 2007-10-13 02:23:06.718511119 +0200 +++ linux-2.6.23/include/asm-mips/bootinfo.h 2007-10-13 02:23:11.214767346 +0200 @@ -208,6 +208,12 @@ #define MACH_GROUP_WINDRIVER 28 /* Windriver boards */ #define MACH_WRPPMC 1 +/* + * Valid machtype for group Broadcom + */ +#define MACH_GROUP_BRCM 23 /* Broadcom */ +#define MACH_BCM47XX 1 /* Broadcom BCM47xx */ + #define CL_SIZE COMMAND_LINE_SIZE const char *get_system_type(void); Index: linux-2.6.23/include/asm-mips/cpu.h =================================================================== --- linux-2.6.23.orig/include/asm-mips/cpu.h 2007-10-13 02:23:06.726511570 +0200 +++ linux-2.6.23/include/asm-mips/cpu.h 2007-10-13 02:27:43.994312161 +0200 @@ -106,6 +106,13 @@ #define PRID_IMP_SR71000 0x0400 /* + * These are the PRID's for when 23:16 == PRID_COMP_BROADCOM + */ + +#define PRID_IMP_BCM4710 0x4000 +#define PRID_IMP_BCM3302 0x9000 + +/* * Definitions for 7:0 on legacy processors */ @@ -217,8 +224,10 @@ #define CPU_R14000 64 #define CPU_LOONGSON1 65 #define CPU_LOONGSON2 66 +#define CPU_BCM3302 67 +#define CPU_BCM4710 68 -#define CPU_LAST 66 +#define CPU_LAST 68 /* * ISA Level encodings Index: linux-2.6.23.1/drivers/Makefile =================================================================== --- linux-2.6.23.1.orig/drivers/Makefile 2008-01-27 04:34:31.000000000 +0100 +++ linux-2.6.23.1/drivers/Makefile 2008-01-27 04:39:57.000000000 +0100 @@ -89,3 +89,4 @@ obj-$(CONFIG_PPC_PS3) += ps3/ obj-$(CONFIG_OF) += of/ obj-$(CONFIG_GPIO_DEVICE) += gpio/ +obj-$(CONFIG_SSB) += ssb/ Index: linux-2.6.23.1/include/linux/pci_ids.h =================================================================== --- linux-2.6.23.1.orig/include/linux/pci_ids.h 2008-01-27 04:55:18.000000000 +0100 +++ linux-2.6.23.1/include/linux/pci_ids.h 2008-01-27 04:55:22.000000000 +0100 @@ -1972,6 +1972,7 @@ #define PCI_DEVICE_ID_TIGON3_5906M 0x1713 #define PCI_DEVICE_ID_BCM4401 0x4401 #define PCI_DEVICE_ID_BCM4401B0 0x4402 +#define PCI_DEVICE_ID_BCM4713 0x4713 #define PCI_VENDOR_ID_TOPIC 0x151f #define PCI_DEVICE_ID_TOPIC_TP560 0x0000