+++ /dev/null
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_AUDIT=y
-CONFIG_AUDIT_GENERIC=y
-CONFIG_BASE_SMALL=0
-# CONFIG_BCM47XX is not set
-CONFIG_BCM63XX=y
-CONFIG_BCM63XX_CPU_6338=y
-CONFIG_BCM63XX_CPU_6345=y
-CONFIG_BCM63XX_CPU_6348=y
-CONFIG_BCM63XX_CPU_6358=y
-CONFIG_BCM63XX_ENET=y
-CONFIG_BCM63XX_PHY=y
-CONFIG_BCM63XX_WDT=y
-CONFIG_BITREVERSE=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_BOARD_BCM963XX=y
-# CONFIG_BOARD_LIVEBOX is not set
-# CONFIG_BSD_DISKLABEL is not set
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_HAS_LLSC=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-# CONFIG_CPU_LOONGSON2 is not set
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-CONFIG_CPU_MIPSR1=y
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_VR41XX is not set
-CONFIG_CRAMFS=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEVPORT=y
-# CONFIG_DM9000 is not set
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ELF_CORE=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_FIND_FIRST_BIT is not set
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVICE=y
-CONFIG_GPIO_SYSFS=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_ARCH_TRACEHOOK is not set
-# CONFIG_HAVE_CLK is not set
-# CONFIG_HAVE_DMA_ATTRS is not set
-# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_HAVE_IOREMAP_PROT is not set
-# CONFIG_HAVE_KPROBES is not set
-# CONFIG_HAVE_KRETPROBES is not set
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HW_HAS_PCI=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_IDE is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_IRQ_CPU=y
-# CONFIG_ISDN is not set
-CONFIG_KEXEC=y
-CONFIG_LBD=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEMOTE_FULONG is not set
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MIKROTIK_RB532 is not set
-CONFIG_MIPS=y
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MIPS_FPU_EMU is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-# CONFIG_MIPS_MALTA is not set
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MTD_BCM963XX=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_GEOMETRY is not set
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_NATSEMI is not set
-# CONFIG_NO_IOPORT is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCSPKR_PLATFORM is not set
-CONFIG_PHYLIB=y
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_PROBE_INITRD_HEADER is not set
-# CONFIG_R6040 is not set
-CONFIG_RELAY=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_BCM63XX=y
-CONFIG_SERIAL_BCM63XX_CONSOLE=y
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-CONFIG_SQUASHFS_EMBEDDED=y
-CONFIG_SQUASHFS_VMALLOC=y
-CONFIG_SSB=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_DRIVER_PCICORE=y
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_SPROM=y
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-# CONFIG_TC35815 is not set
-CONFIG_TICK_ONESHOT=y
-CONFIG_TRAD_SIGNALS=y
-CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
-CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_SUPPORT=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-CONFIG_ZONE_DMA_FLAG=0
+++ /dev/null
-CONFIG_32BIT=y
-# CONFIG_64BIT is not set
-# CONFIG_8139TOO is not set
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-# CONFIG_ARCH_SUPPORTS_MSI is not set
-CONFIG_ARCH_SUPPORTS_OPROFILE=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_AUDIT=y
-CONFIG_AUDIT_GENERIC=y
-CONFIG_BASE_SMALL=0
-# CONFIG_BCM47XX is not set
-CONFIG_BCM63XX=y
-CONFIG_BCM63XX_CPU_6338=y
-CONFIG_BCM63XX_CPU_6345=y
-CONFIG_BCM63XX_CPU_6348=y
-CONFIG_BCM63XX_CPU_6358=y
-CONFIG_BCM63XX_ENET=y
-CONFIG_BCM63XX_PHY=y
-CONFIG_BCM63XX_WDT=y
-CONFIG_BITREVERSE=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_BOARD_BCM963XX=y
-# CONFIG_BOARD_LIVEBOX is not set
-# CONFIG_BSD_DISKLABEL is not set
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_CEVT_R4K=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200"
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_CPU_HAS_LLSC=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-# CONFIG_CPU_LITTLE_ENDIAN is not set
-# CONFIG_CPU_LOONGSON2 is not set
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R1=y
-# CONFIG_CPU_MIPS32_R2 is not set
-# CONFIG_CPU_MIPS64_R1 is not set
-# CONFIG_CPU_MIPS64_R2 is not set
-CONFIG_CPU_MIPSR1=y
-# CONFIG_CPU_NEVADA is not set
-# CONFIG_CPU_R10000 is not set
-# CONFIG_CPU_R3000 is not set
-# CONFIG_CPU_R4300 is not set
-# CONFIG_CPU_R4X00 is not set
-# CONFIG_CPU_R5000 is not set
-# CONFIG_CPU_R5432 is not set
-# CONFIG_CPU_R5500 is not set
-# CONFIG_CPU_R6000 is not set
-# CONFIG_CPU_R8000 is not set
-# CONFIG_CPU_RM7000 is not set
-# CONFIG_CPU_RM9000 is not set
-# CONFIG_CPU_SB1 is not set
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-# CONFIG_CPU_TX39XX is not set
-# CONFIG_CPU_TX49XX is not set
-# CONFIG_CPU_VR41XX is not set
-CONFIG_CRAMFS=y
-CONFIG_CSRC_R4K=y
-CONFIG_DEVPORT=y
-# CONFIG_DM9000 is not set
-CONFIG_DMA_NEED_PCI_MAP_STATE=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_EARLY_PRINTK=y
-CONFIG_ELF_CORE=y
-CONFIG_FIRMWARE_IN_KERNEL=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVICE=y
-CONFIG_GPIO_SYSFS=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HW_HAS_PCI=y
-CONFIG_HW_RANDOM=y
-CONFIG_HZ=250
-# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
-# CONFIG_I2C is not set
-# CONFIG_IDE is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-CONFIG_IP_PIMSM_V1=y
-CONFIG_IP_PIMSM_V2=y
-CONFIG_IRQ_CPU=y
-# CONFIG_ISDN is not set
-CONFIG_KEXEC=y
-CONFIG_LBD=y
-CONFIG_LEDS_GPIO=y
-# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
-# CONFIG_LEMOTE_FULONG is not set
-# CONFIG_MACH_ALCHEMY is not set
-# CONFIG_MACH_DECSTATION is not set
-# CONFIG_MACH_EMMA is not set
-# CONFIG_MACH_JAZZ is not set
-# CONFIG_MACH_TX39XX is not set
-# CONFIG_MACH_TX49XX is not set
-# CONFIG_MACH_VR41XX is not set
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_MIKROTIK_RB532 is not set
-CONFIG_MIPS=y
-# CONFIG_MIPS_COBALT is not set
-# CONFIG_MIPS_FPU_EMU is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-# CONFIG_MIPS_MALTA is not set
-CONFIG_MIPS_MT_DISABLED=y
-# CONFIG_MIPS_MT_SMP is not set
-# CONFIG_MIPS_MT_SMTC is not set
-# CONFIG_MIPS_SIM is not set
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MTD_BCM963XX=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_BE_BYTE_SWAP=y
-# CONFIG_MTD_CFI_GEOMETRY is not set
-# CONFIG_MTD_CFI_NOSWAP is not set
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_CONCAT=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-# CONFIG_NATSEMI is not set
-# CONFIG_NO_IOPORT is not set
-# CONFIG_NXP_STB220 is not set
-# CONFIG_NXP_STB225 is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PCI=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCSPKR_PLATFORM is not set
-CONFIG_PHYLIB=y
-# CONFIG_PMC_MSP is not set
-# CONFIG_PMC_YOSEMITE is not set
-# CONFIG_PNX8550_JBS is not set
-# CONFIG_PNX8550_STB810 is not set
-CONFIG_POSIX_MQUEUE=y
-# CONFIG_PROBE_INITRD_HEADER is not set
-# CONFIG_R6040 is not set
-CONFIG_RELAY=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SERIAL_8250 is not set
-CONFIG_SERIAL_BCM63XX=y
-CONFIG_SERIAL_BCM63XX_CONSOLE=y
-# CONFIG_SGI_IP22 is not set
-# CONFIG_SGI_IP27 is not set
-# CONFIG_SGI_IP28 is not set
-# CONFIG_SGI_IP32 is not set
-# CONFIG_SIBYTE_BIGSUR is not set
-# CONFIG_SIBYTE_CARMEL is not set
-# CONFIG_SIBYTE_CRHINE is not set
-# CONFIG_SIBYTE_CRHONE is not set
-# CONFIG_SIBYTE_LITTLESUR is not set
-# CONFIG_SIBYTE_RHONE is not set
-# CONFIG_SIBYTE_SENTOSA is not set
-# CONFIG_SIBYTE_SWARM is not set
-CONFIG_SQUASHFS_EMBEDDED=y
-CONFIG_SQUASHFS_VMALLOC=y
-CONFIG_SSB=y
-CONFIG_SSB_B43_PCI_BRIDGE=y
-# CONFIG_SSB_DRIVER_MIPS is not set
-CONFIG_SSB_DRIVER_PCICORE=y
-CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
-CONFIG_SSB_PCIHOST=y
-CONFIG_SSB_PCIHOST_POSSIBLE=y
-CONFIG_SSB_SPROM=y
-CONFIG_SWAP_IO_SPACE=y
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
-# CONFIG_TC35815 is not set
-CONFIG_TICK_ONESHOT=y
-CONFIG_TRAD_SIGNALS=y
-CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
-CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
-CONFIG_USB_SUPPORT=y
-# CONFIG_VGASTATE is not set
-# CONFIG_VIA_RHINE is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_WATCHDOG_NOWAYOUT=y
-CONFIG_ZONE_DMA_FLAG=0
+++ /dev/null
-From a9f65413f9ea81ef2208da66a3db9cb8a9020eef Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Fri, 18 Jul 2008 15:53:08 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add Broadcom 63xx CPU definitions.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/kernel/cpu-probe.c | 25 +++++++++++++++++++++++++
- arch/mips/mm/tlbex.c | 4 ++++
- include/asm-mips/cpu.h | 7 +++++++
- 3 files changed, 36 insertions(+), 0 deletions(-)
-
---- a/arch/mips/kernel/cpu-probe.c
-+++ b/arch/mips/kernel/cpu-probe.c
-@@ -153,6 +153,9 @@ void __init check_wait(void)
- case CPU_25KF:
- case CPU_PR4450:
- case CPU_BCM3302:
-+ case CPU_BCM6338:
-+ case CPU_BCM6348:
-+ case CPU_BCM6358:
- cpu_wait = r4k_wait;
- break;
-
-@@ -802,11 +805,28 @@ static inline void cpu_probe_broadcom(st
- decode_configs(c);
- switch (c->processor_id & 0xff00) {
- case PRID_IMP_BCM3302:
-+ /* same as PRID_IMP_BCM6338 */
- c->cputype = CPU_BCM3302;
- break;
- case PRID_IMP_BCM4710:
- c->cputype = CPU_BCM4710;
- break;
-+ case PRID_IMP_BCM6345:
-+ c->cputype = CPU_BCM6345;
-+ break;
-+ case PRID_IMP_BCM6348:
-+ c->cputype = CPU_BCM6348;
-+ break;
-+ case PRID_IMP_BCM4350:
-+ switch (c->processor_id & 0xf0) {
-+ case PRID_REV_BCM6358:
-+ c->cputype = CPU_BCM6358;
-+ break;
-+ default:
-+ c->cputype = CPU_UNKNOWN;
-+ break;
-+ }
-+ break;
- default:
- c->cputype = CPU_UNKNOWN;
- break;
-@@ -892,6 +912,10 @@ static __cpuinit const char *cpu_to_name
- case CPU_SR71000: name = "Sandcraft SR71000"; break;
- case CPU_BCM3302: name = "Broadcom BCM3302"; break;
- case CPU_BCM4710: name = "Broadcom BCM4710"; break;
-+ case CPU_BCM6338: name = "Broadcom BCM6338"; break;
-+ case CPU_BCM6345: name = "Broadcom BCM6345"; break;
-+ case CPU_BCM6348: name = "Broadcom BCM6348"; break;
-+ case CPU_BCM6358: name = "Broadcom BCM6358"; break;
- case CPU_PR4450: name = "Philips PR4450"; break;
- case CPU_LOONGSON2: name = "ICT Loongson-2"; break;
- default:
---- a/arch/mips/mm/tlbex.c
-+++ b/arch/mips/mm/tlbex.c
-@@ -317,6 +317,10 @@ static void __cpuinit build_tlb_write_en
- case CPU_BCM3302:
- case CPU_BCM4710:
- case CPU_LOONGSON2:
-+ case CPU_BCM6338:
-+ case CPU_BCM6345:
-+ case CPU_BCM6348:
-+ case CPU_BCM6358:
- if (m4kc_tlbp_war())
- uasm_i_nop(p);
- tlbw(p);
---- a/include/asm-mips/cpu.h
-+++ b/include/asm-mips/cpu.h
-@@ -112,6 +112,12 @@
-
- #define PRID_IMP_BCM4710 0x4000
- #define PRID_IMP_BCM3302 0x9000
-+#define PRID_IMP_BCM6338 0x9000
-+#define PRID_IMP_BCM6345 0x8000
-+#define PRID_IMP_BCM6348 0x9100
-+#define PRID_IMP_BCM4350 0xA000
-+#define PRID_REV_BCM6358 0x0010
-+#define PRID_REV_BCM6368 0x0030
-
- /*
- * Definitions for 7:0 on legacy processors
-@@ -198,6 +204,7 @@ enum cpu_type_enum {
- CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,
- CPU_AU1000, CPU_AU1100, CPU_AU1200, CPU_AU1210, CPU_AU1250, CPU_AU1500,
- CPU_AU1550, CPU_PR4450, CPU_BCM3302, CPU_BCM4710,
-+ CPU_BCM6338, CPU_BCM6345, CPU_BCM6348, CPU_BCM6358,
-
- /*
- * MIPS64 class processors
+++ /dev/null
-From 0713aadd2a4e543b69022aa40bdec3e1dc5bc1e5 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Mon, 18 Aug 2008 13:56:57 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add support for Broadcom 63xx CPUs.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/Kconfig | 16 +
- arch/mips/Makefile | 7 +
- arch/mips/bcm63xx/Kconfig | 9 +
- arch/mips/bcm63xx/Makefile | 2 +
- arch/mips/bcm63xx/clk.c | 220 ++++++
- arch/mips/bcm63xx/cpu.c | 245 +++++++
- arch/mips/bcm63xx/cs.c | 144 ++++
- arch/mips/bcm63xx/early_printk.c | 30 +
- arch/mips/bcm63xx/gpio.c | 98 +++
- arch/mips/bcm63xx/irq.c | 253 +++++++
- arch/mips/bcm63xx/prom.c | 43 ++
- arch/mips/bcm63xx/setup.c | 108 +++
- arch/mips/bcm63xx/timer.c | 205 ++++++
- include/asm-mips/fixmap.h | 4 +
- include/asm-mips/mach-bcm63xx/bcm63xx_clk.h | 11 +
- include/asm-mips/mach-bcm63xx/bcm63xx_cpu.h | 314 +++++++++
- include/asm-mips/mach-bcm63xx/bcm63xx_cs.h | 10 +
- include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h | 14 +
- include/asm-mips/mach-bcm63xx/bcm63xx_io.h | 93 +++
- include/asm-mips/mach-bcm63xx/bcm63xx_irq.h | 15 +
- include/asm-mips/mach-bcm63xx/bcm63xx_regs.h | 728 ++++++++++++++++++++
- include/asm-mips/mach-bcm63xx/bcm63xx_timer.h | 11 +
- .../asm-mips/mach-bcm63xx/cpu-feature-overrides.h | 51 ++
- include/asm-mips/mach-bcm63xx/gpio.h | 52 ++
- include/asm-mips/mach-bcm63xx/war.h | 25 +
- 25 files changed, 2708 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/bcm63xx/Kconfig
- create mode 100644 arch/mips/bcm63xx/Makefile
- create mode 100644 arch/mips/bcm63xx/clk.c
- create mode 100644 arch/mips/bcm63xx/cpu.c
- create mode 100644 arch/mips/bcm63xx/cs.c
- create mode 100644 arch/mips/bcm63xx/early_printk.c
- create mode 100644 arch/mips/bcm63xx/gpio.c
- create mode 100644 arch/mips/bcm63xx/irq.c
- create mode 100644 arch/mips/bcm63xx/prom.c
- create mode 100644 arch/mips/bcm63xx/setup.c
- create mode 100644 arch/mips/bcm63xx/timer.c
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_clk.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_cpu.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_cs.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_io.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_irq.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_regs.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_timer.h
- create mode 100644 include/asm-mips/mach-bcm63xx/cpu-feature-overrides.h
- create mode 100644 include/asm-mips/mach-bcm63xx/gpio.h
- create mode 100644 include/asm-mips/mach-bcm63xx/war.h
-
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -59,6 +59,21 @@ config BCM47XX
- help
- Support for BCM47XX based boards
-
-+config BCM63XX
-+ bool "Broadcom 63xx based boards"
-+ select CEVT_R4K
-+ select CSRC_R4K
-+ select DMA_NONCOHERENT
-+ select IRQ_CPU
-+ select SYS_HAS_CPU_MIPS32_R1
-+ select SYS_SUPPORTS_32BIT_KERNEL
-+ select SYS_SUPPORTS_BIG_ENDIAN
-+ select SYS_HAS_EARLY_PRINTK
-+ select SWAP_IO_SPACE
-+ select ARCH_REQUIRE_GPIOLIB
-+ help
-+ Support for BCM63XX based boards
-+
- config MIPS_COBALT
- bool "Cobalt Server"
- select CEVT_R4K
-@@ -600,6 +615,7 @@ endchoice
-
- source "arch/mips/au1000/Kconfig"
- source "arch/mips/basler/excite/Kconfig"
-+source "arch/mips/bcm63xx/Kconfig"
- source "arch/mips/jazz/Kconfig"
- source "arch/mips/lasat/Kconfig"
- source "arch/mips/pmc-sierra/Kconfig"
---- a/arch/mips/Makefile
-+++ b/arch/mips/Makefile
-@@ -540,6 +540,13 @@ cflags-$(CONFIG_BCM47XX) += -Iinclude/as
- load-$(CONFIG_BCM47XX) := 0xffffffff80001000
-
- #
-+# Broadcom BCM63XX boards
-+#
-+core-$(CONFIG_BCM63XX) += arch/mips/bcm63xx/
-+cflags-$(CONFIG_BCM63XX) += -Iinclude/asm-mips/mach-bcm63xx/
-+load-$(CONFIG_BCM63XX) := 0xffffffff80010000
-+
-+#
- # SNI RM
- #
- core-$(CONFIG_SNI_RM) += arch/mips/sni/
---- a/include/asm-mips/fixmap.h
-+++ b/include/asm-mips/fixmap.h
-@@ -67,11 +67,15 @@ enum fixed_addresses {
- * the start of the fixmap, and leave one page empty
- * at the top of mem..
- */
-+#ifdef CONFIG_BCM63XX
-+#define FIXADDR_TOP ((unsigned long)(long)(int)0xff000000)
-+#else
- #if defined(CONFIG_CPU_TX39XX) || defined(CONFIG_CPU_TX49XX)
- #define FIXADDR_TOP ((unsigned long)(long)(int)(0xff000000 - 0x20000))
- #else
- #define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000)
- #endif
-+#endif
- #define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
- #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
-
+++ /dev/null
-From 6c489656b09998ed6a6f857e01ccf630e29358dd Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Fri, 18 Jul 2008 19:35:55 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add serial driver for bcm63xx integrated UART.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Makefile | 1 +
- arch/mips/bcm63xx/dev-uart.c | 41 +
- drivers/serial/Kconfig | 19 +
- drivers/serial/Makefile | 1 +
- drivers/serial/bcm63xx_uart.c | 890 ++++++++++++++++++++++
- include/asm-mips/mach-bcm63xx/bcm63xx_dev_uart.h | 6 +
- include/linux/serial_core.h | 2 +
- 7 files changed, 960 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/bcm63xx/dev-uart.c
- create mode 100644 drivers/serial/bcm63xx_uart.c
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_uart.h
-
---- a/drivers/serial/Kconfig
-+++ b/drivers/serial/Kconfig
-@@ -1421,4 +1421,23 @@ config SPORT_BAUD_RATE
- default 19200 if (SERIAL_SPORT_BAUD_RATE_19200)
- default 9600 if (SERIAL_SPORT_BAUD_RATE_9600)
-
-+config SERIAL_BCM63XX
-+ tristate "bcm63xx serial port support"
-+ select SERIAL_CORE
-+ depends on BCM63XX
-+ help
-+ If you have a bcm63xx CPU, you can enable its onboard
-+ serial port by enabling this options.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called bcm963xx_uart.
-+
-+config SERIAL_BCM63XX_CONSOLE
-+ bool "Console on bcm63xx serial port"
-+ depends on SERIAL_BCM63XX
-+ select SERIAL_CORE_CONSOLE
-+ help
-+ If you have enabled the serial port on the bcm63xx CPU
-+ you can make it the console by answering Y to this option.
-+
- endmenu
---- a/drivers/serial/Makefile
-+++ b/drivers/serial/Makefile
-@@ -24,6 +24,7 @@ obj-$(CONFIG_SERIAL_CLPS711X) += clps711
- obj-$(CONFIG_SERIAL_PXA) += pxa.o
- obj-$(CONFIG_SERIAL_PNX8XXX) += pnx8xxx_uart.o
- obj-$(CONFIG_SERIAL_SA1100) += sa1100.o
-+obj-$(CONFIG_SERIAL_BCM63XX) += bcm63xx_uart.o
- obj-$(CONFIG_SERIAL_BFIN) += bfin_5xx.o
- obj-$(CONFIG_SERIAL_BFIN_SPORT) += bfin_sport_uart.o
- obj-$(CONFIG_SERIAL_SAMSUNG) += samsung.o
---- a/include/linux/serial_core.h
-+++ b/include/linux/serial_core.h
-@@ -155,6 +155,8 @@
-
- #define PORT_SC26XX 82
-
-+#define PORT_BCM63XX 83
-+
- #ifdef __KERNEL__
-
- #include <linux/compiler.h>
+++ /dev/null
-From 2a7fa2dbbf68650644f807a50cc2d84ca30835c1 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Sun, 21 Sep 2008 04:47:13 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add PCI support.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Kconfig | 2 +
- arch/mips/bcm63xx/setup.c | 2 +
- arch/mips/pci/Makefile | 2 +
- arch/mips/pci/fixup-bcm63xx.c | 21 +++
- arch/mips/pci/ops-bcm63xx.c | 179 +++++++++++++++++++++++
- arch/mips/pci/pci-bcm63xx.c | 178 ++++++++++++++++++++++
- arch/mips/pci/pci-bcm63xx.h | 27 ++++
- include/asm-mips/mach-bcm63xx/bcm63xx_dev_pci.h | 6 +
- 8 files changed, 417 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/pci/fixup-bcm63xx.c
- create mode 100644 arch/mips/pci/ops-bcm63xx.c
- create mode 100644 arch/mips/pci/pci-bcm63xx.c
- create mode 100644 arch/mips/pci/pci-bcm63xx.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_pci.h
-
---- a/arch/mips/pci/Makefile
-+++ b/arch/mips/pci/Makefile
-@@ -16,6 +16,8 @@ obj-$(CONFIG_PCI_VR41XX) += ops-vr41xx.o
- obj-$(CONFIG_MARKEINS) += ops-emma2rh.o pci-emma2rh.o fixup-emma2rh.o
- obj-$(CONFIG_PCI_TX4927) += ops-tx4927.o
- obj-$(CONFIG_BCM47XX) += pci-bcm47xx.o
-+obj-$(CONFIG_BCM63XX) += pci-bcm63xx.o fixup-bcm63xx.o \
-+ ops-bcm63xx.o
-
- #
- # These are still pretty much in the old state, watch, go blind.
+++ /dev/null
-From b17597be763621ba63534fda6e1ea0a802be2087 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Fri, 18 Jul 2008 21:18:51 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add PCMCIA & Cardbus support.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Makefile | 1 +
- arch/mips/bcm63xx/dev-pcmcia.c | 135 +++++
- drivers/pcmcia/Kconfig | 4 +
- drivers/pcmcia/Makefile | 1 +
- drivers/pcmcia/bcm63xx_pcmcia.c | 521 ++++++++++++++++++++
- drivers/pcmcia/bcm63xx_pcmcia.h | 65 +++
- include/asm-mips/mach-bcm63xx/bcm63xx_dev_pcmcia.h | 13 +
- 7 files changed, 740 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/bcm63xx/dev-pcmcia.c
- create mode 100644 drivers/pcmcia/bcm63xx_pcmcia.c
- create mode 100644 drivers/pcmcia/bcm63xx_pcmcia.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_pcmcia.h
-
---- a/drivers/pcmcia/Kconfig
-+++ b/drivers/pcmcia/Kconfig
-@@ -196,6 +196,10 @@ config PCMCIA_AU1X00
- tristate "Au1x00 pcmcia support"
- depends on SOC_AU1X00 && PCMCIA
-
-+config PCMCIA_BCM63XX
-+ tristate "bcm63xx pcmcia support"
-+ depends on BCM63XX && PCMCIA
-+
- config PCMCIA_SA1100
- tristate "SA1100 support"
- depends on ARM && ARCH_SA1100 && PCMCIA
---- a/drivers/pcmcia/Makefile
-+++ b/drivers/pcmcia/Makefile
-@@ -33,6 +33,7 @@ obj-$(CONFIG_PCMCIA_PXA2XX)
- obj-$(CONFIG_M32R_PCC) += m32r_pcc.o
- obj-$(CONFIG_M32R_CFC) += m32r_cfc.o
- obj-$(CONFIG_PCMCIA_AU1X00) += au1x00_ss.o
-+obj-$(CONFIG_PCMCIA_BCM63XX) += bcm63xx_pcmcia.o
- obj-$(CONFIG_PCMCIA_VRC4171) += vrc4171_card.o
- obj-$(CONFIG_PCMCIA_VRC4173) += vrc4173_cardu.o
- obj-$(CONFIG_OMAP_CF) += omap_cf.o
+++ /dev/null
-From f7416412febd7efc1d33c7506c81265719368667 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Mon, 21 Jul 2008 14:58:19 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add USB OHCI support.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Kconfig | 6 +
- arch/mips/bcm63xx/Makefile | 1 +
- arch/mips/bcm63xx/dev-usb-ohci.c | 50 ++++++
- drivers/usb/host/ohci-bcm63xx.c | 159 ++++++++++++++++++++
- drivers/usb/host/ohci-hcd.c | 5 +
- drivers/usb/host/ohci.h | 7 +-
- .../asm-mips/mach-bcm63xx/bcm63xx_dev_usb_ohci.h | 6 +
- 7 files changed, 233 insertions(+), 1 deletions(-)
- create mode 100644 arch/mips/bcm63xx/dev-usb-ohci.c
- create mode 100644 drivers/usb/host/ohci-bcm63xx.c
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_usb_ohci.h
-
---- a/drivers/usb/host/ohci-hcd.c
-+++ b/drivers/usb/host/ohci-hcd.c
-@@ -1050,6 +1050,11 @@ MODULE_LICENSE ("GPL");
- #define PLATFORM_DRIVER usb_hcd_pnx4008_driver
- #endif
-
-+#ifdef CONFIG_BCM63XX
-+#include "ohci-bcm63xx.c"
-+#define PLATFORM_DRIVER ohci_hcd_bcm63xx_driver
-+#endif
-+
- #if defined(CONFIG_CPU_SUBTYPE_SH7720) || \
- defined(CONFIG_CPU_SUBTYPE_SH7721) || \
- defined(CONFIG_CPU_SUBTYPE_SH7763)
---- a/drivers/usb/host/ohci.h
-+++ b/drivers/usb/host/ohci.h
-@@ -549,6 +549,11 @@ static inline struct usb_hcd *ohci_to_hc
- #define writel_be(val, addr) out_be32((__force unsigned *)addr, val)
- #endif
-
-+#if defined(CONFIG_MIPS) && defined(CONFIG_BCM63XX)
-+#define readl_be(addr) __raw_readl((__force unsigned *)addr)
-+#define writel_be(val, addr) __raw_writel(val, (__force unsigned *)addr)
-+#endif
-+
- static inline unsigned int _ohci_readl (const struct ohci_hcd *ohci,
- __hc32 __iomem * regs)
- {
-@@ -654,7 +659,7 @@ static inline u32 hc32_to_cpup (const st
- * some big-endian SOC implementations. Same thing happens with PSW access.
- */
-
--#ifdef CONFIG_PPC_MPC52xx
-+#if defined(CONFIG_PPC_MPC52xx) || defined(CONFIG_BCM63XX)
- #define big_endian_frame_no_quirk(ohci) (ohci->flags & OHCI_QUIRK_FRAME_NO)
- #else
- #define big_endian_frame_no_quirk(ohci) 0
+++ /dev/null
-From 2940d1996c86c4c4dd7a82214f846d0c0b707165 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Mon, 21 Jul 2008 18:24:42 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add USB EHCI support.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Kconfig | 2 +
- arch/mips/bcm63xx/Makefile | 1 +
- arch/mips/bcm63xx/dev-usb-ehci.c | 50 +++++++
- drivers/usb/host/ehci-bcm63xx.c | 152 ++++++++++++++++++++
- drivers/usb/host/ehci-hcd.c | 5 +
- drivers/usb/host/ehci.h | 5 +
- .../asm-mips/mach-bcm63xx/bcm63xx_dev_usb_ehci.h | 6 +
- 7 files changed, 221 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/bcm63xx/dev-usb-ehci.c
- create mode 100644 drivers/usb/host/ehci-bcm63xx.c
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_usb_ehci.h
-
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -1041,6 +1041,11 @@ MODULE_LICENSE ("GPL");
- #define PLATFORM_DRIVER ixp4xx_ehci_driver
- #endif
-
-+#ifdef CONFIG_BCM63XX
-+#include "ehci-bcm63xx.c"
-+#define PLATFORM_DRIVER ehci_hcd_bcm63xx_driver
-+#endif
-+
- #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \
- !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER)
- #error "missing bus glue for ehci-hcd"
---- a/drivers/usb/host/ehci.h
-+++ b/drivers/usb/host/ehci.h
-@@ -764,6 +764,11 @@ ehci_port_speed(struct ehci_hcd *ehci, u
- #define writel_be(val, addr) __raw_writel(val, (__force unsigned *)addr)
- #endif
-
-+#if defined(CONFIG_MIPS) && defined(CONFIG_BCM63XX)
-+#define readl_be(addr) __raw_readl((__force unsigned *)addr)
-+#define writel_be(val, addr) __raw_writel(val, (__force unsigned *)addr)
-+#endif
-+
- static inline unsigned int ehci_readl(const struct ehci_hcd *ehci,
- __u32 __iomem * regs)
- {
---- a/drivers/usb/host/Kconfig
-+++ b/drivers/usb/host/Kconfig
-@@ -44,7 +44,7 @@ config USB_EHCI_HCD
-
- config USB_EHCI_ROOT_HUB_TT
- bool "Root Hub Transaction Translators"
-- depends on USB_EHCI_HCD
-+ depends on USB_EHCI_HCD && !BCM63XX
- ---help---
- Some EHCI chips have vendor-specific extensions to integrate
- transaction translators, so that no OHCI or UHCI companion
+++ /dev/null
-From 49aa7ffcd9bd2d9a0af99fced7b8511160dbf345 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Sun, 21 Sep 2008 03:43:26 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add integrated ethernet mac support.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- arch/mips/bcm63xx/Makefile | 1 +
- arch/mips/bcm63xx/dev-enet.c | 158 ++
- drivers/net/Kconfig | 9 +
- drivers/net/Makefile | 1 +
- drivers/net/bcm63xx_enet.c | 1894 ++++++++++++++++++++++
- drivers/net/bcm63xx_enet.h | 294 ++++
- include/asm-mips/mach-bcm63xx/bcm63xx_dev_enet.h | 45 +
- 7 files changed, 2402 insertions(+), 0 deletions(-)
- create mode 100644 arch/mips/bcm63xx/dev-enet.c
- create mode 100644 drivers/net/bcm63xx_enet.c
- create mode 100644 drivers/net/bcm63xx_enet.h
- create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_dev_enet.h
-
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -1963,6 +1963,15 @@ config NE_H8300
- Say Y here if you want to use the NE2000 compatible
- controller on the Renesas H8/300 processor.
-
-+config BCM63XX_ENET
-+ tristate "Broadcom 63xx internal mac support"
-+ depends on BCM63XX
-+ select MII
-+ select PHYLIB
-+ help
-+ This driver supports the ethernet MACs in the Broadcom 63xx
-+ MIPS chipset family (BCM63XX).
-+
- source "drivers/net/fs_enet/Kconfig"
-
- endif # NET_ETHERNET
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -123,6 +123,7 @@ obj-$(CONFIG_SB1250_MAC) += sb1250-mac.o
- obj-$(CONFIG_B44) += b44.o
- obj-$(CONFIG_FORCEDETH) += forcedeth.o
- obj-$(CONFIG_NE_H8300) += ne-h8300.o
-+obj-$(CONFIG_BCM63XX_ENET) += bcm63xx_enet.o
- obj-$(CONFIG_AX88796) += ax88796.o
-
- obj-$(CONFIG_TSI108_ETH) += tsi108_eth.o
+++ /dev/null
-From 7eefcb968019804e024c8243e28afb1eebd674a2 Mon Sep 17 00:00:00 2001
-From: Maxime Bizon <mbizon@freebox.fr>
-Date: Sun, 21 Sep 2008 02:20:53 +0200
-Subject: [PATCH] [MIPS] BCM63XX: Add integrated ethernet PHY support for phylib.
-
-Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
----
- drivers/net/phy/Kconfig | 6 ++
- drivers/net/phy/Makefile | 1 +
- drivers/net/phy/bcm63xx.c | 132 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 139 insertions(+), 0 deletions(-)
- create mode 100644 drivers/net/phy/bcm63xx.c
-
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -62,6 +62,12 @@ config BROADCOM_PHY
- Currently supports the BCM5411, BCM5421, BCM5461, BCM5464, BCM5481
- and BCM5482 PHYs.
-
-+config BCM63XX_PHY
-+ tristate "Drivers for Broadcom 63xx SOCs internal PHY"
-+ depends on BCM63XX
-+ ---help---
-+ Currently supports the 6348 and 6358 PHYs.
-+
- config ICPLUS_PHY
- tristate "Drivers for ICPlus PHYs"
- ---help---
---- a/drivers/net/phy/Makefile
-+++ b/drivers/net/phy/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_QSEMI_PHY) += qsemi.o
- obj-$(CONFIG_SMSC_PHY) += smsc.o
- obj-$(CONFIG_VITESSE_PHY) += vitesse.o
- obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
-+obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
- obj-$(CONFIG_ICPLUS_PHY) += icplus.o
- obj-$(CONFIG_ADM6996_PHY) += adm6996.o
- obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
+++ /dev/null
---- a/drivers/watchdog/Makefile
-+++ b/drivers/watchdog/Makefile
-@@ -102,6 +102,7 @@ obj-$(CONFIG_WDT_RM9K_GPI) += rm9k_wdt.o
- obj-$(CONFIG_SIBYTE_WDOG) += sb_wdog.o
- obj-$(CONFIG_AR7_WDT) += ar7_wdt.o
- obj-$(CONFIG_TXX9_WDT) += txx9wdt.o
-+obj-$(CONFIG_BCM63XX_WDT) += bcm63xx_wdt.o
-
- # PARISC Architecture
-
---- a/drivers/watchdog/Kconfig
-+++ b/drivers/watchdog/Kconfig
-@@ -704,6 +704,16 @@ config TXX9_WDT
- help
- Hardware driver for the built-in watchdog timer on TXx9 MIPS SoCs.
-
-+config BCM63XX_WDT
-+ tristate "Broadcom BCM63xx hardware watchdog"
-+ depends on BCM63XX
-+ help
-+ Watchdog driver for the built in watchdog hardware in Broadcom
-+ BCM63xx SoC.
-+
-+ To compile thi driver as a loadable module, choose M here.
-+ The module will be called bcm63xx_wdt.
-+
- # PARISC Architecture
-
- # POWERPC Architecture
+++ /dev/null
-From e734ace5baa04e0e8af1d4483475fbd6bd2b32a1 Mon Sep 17 00:00:00 2001
-From: Axel Gembe <ago@bastart.eu.org>
-Date: Mon, 12 May 2008 18:54:09 +0200
-Subject: [PATCH] bcm963xx: flashmap support
-
-
-Signed-off-by: Axel Gembe <ago@bastart.eu.org>
----
- drivers/mtd/maps/Kconfig | 7 +++++++
- drivers/mtd/maps/Makefile | 1 +
- drivers/mtd/redboot.c | 13 ++++++++++---
- 3 files changed, 18 insertions(+), 3 deletions(-)
-
---- a/drivers/mtd/maps/Kconfig
-+++ b/drivers/mtd/maps/Kconfig
-@@ -257,6 +257,13 @@ config MTD_ALCHEMY
- help
- Flash memory access on AMD Alchemy Pb/Db/RDK Reference Boards
-
-+config MTD_BCM963XX
-+ tristate "BCM963xx Flash device"
-+ depends on MIPS && BCM63XX
-+ help
-+ Flash memory access on BCM963xx boards. Currently only works with
-+ RedBoot and CFE.
-+
- config MTD_DILNETPC
- tristate "CFI Flash device mapped on DIL/Net PC"
- depends on X86 && MTD_CONCAT && MTD_PARTITIONS && MTD_CFI_INTELEXT
---- a/drivers/mtd/redboot.c
-+++ b/drivers/mtd/redboot.c
-@@ -39,7 +39,7 @@ static inline int redboot_checksum(struc
- return 1;
- }
-
--static int parse_redboot_partitions(struct mtd_info *master,
-+int parse_redboot_partitions(struct mtd_info *master,
- struct mtd_partition **pparts,
- unsigned long fis_origin)
- {
-@@ -162,6 +162,14 @@ static int parse_redboot_partitions(stru
- goto out;
- }
-
-+ if (!fis_origin) {
-+ for (i = 0; i < numslots; i++) {
-+ if (!strncmp(buf[i].name, "RedBoot", 8)) {
-+ fis_origin = (buf[i].flash_base & (master->size << 1) - 1);
-+ }
-+ }
-+ }
-+
- for (i = 0; i < numslots; i++) {
- struct fis_list *new_fl, **prev;
-
-@@ -184,9 +192,8 @@ static int parse_redboot_partitions(stru
- new_fl->img = &buf[i];
- if (fis_origin) {
- buf[i].flash_base -= fis_origin;
-- } else {
-- buf[i].flash_base &= master->size-1;
- }
-+ buf[i].flash_base &= (master->size << 1) - 1;
-
- /* I'm sure the JFFS2 code has done me permanent damage.
- * I now think the following is _normal_
---- a/drivers/mtd/maps/Makefile
-+++ b/drivers/mtd/maps/Makefile
-@@ -65,3 +65,4 @@ obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
- obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
- obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o
- obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o
-+obj-$(CONFIG_MTD_BCM963XX) += bcm963xx-flash.o
+++ /dev/null
---- a/drivers/spi/Kconfig
-+++ b/drivers/spi/Kconfig
-@@ -217,6 +217,13 @@ config SPI_XILINX
- See the "OPB Serial Peripheral Interface (SPI) (v1.00e)"
- Product Specification document (DS464) for hardware details.
-
-+config SPI_BCM63XX
-+ tristate "Broadcom BCM63xx SPI controller"
-+ depends on BCM63XX
-+ select SPI_BITBANG
-+ help
-+ SPI driver for the Broadcom BCM63xx SPI controller.
-+
- #
- # Add new SPI master controllers in alphabetical order above this line
- #
---- a/drivers/spi/Makefile
-+++ b/drivers/spi/Makefile
-@@ -30,6 +30,7 @@ obj-$(CONFIG_SPI_S3C24XX) += spi_s3c24x
- obj-$(CONFIG_SPI_TXX9) += spi_txx9.o
- obj-$(CONFIG_SPI_XILINX) += xilinx_spi.o
- obj-$(CONFIG_SPI_SH_SCI) += spi_sh_sci.o
-+obj-$(CONFIG_SPI_BCM63XX) += bcm63xx_spi.o
- # ... add above this line ...
-
- # SPI protocol drivers (device/link on bus)
+++ /dev/null
---- a/init/initramfs.c
-+++ b/init/initramfs.c
-@@ -6,6 +6,7 @@
- #include <linux/delay.h>
- #include <linux/string.h>
- #include <linux/syscalls.h>
-+#include <linux/vmalloc.h>
-
- static __initdata char *message;
- static void __init error(char *x)
-@@ -423,6 +424,69 @@ static void __init flush_window(void)
- outcnt = 0;
- }
-
-+#include <linux/LzmaDecode.h>
-+static int __init lzma_unzip(void)
-+{
-+ 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 */
-+ unsigned char *workspace;
-+ unsigned char* outputbuffer;
-+ unsigned int outsizeProcessed = 0;
-+ int workspace_size;
-+ int res;
-+
-+ // lzma args
-+ i = get_byte();
-+ lc = i % 9, i = i / 9;
-+ lp = i % 5, pb = i / 5;
-+
-+ // skip dictionary size
-+ 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();
-+
-+ workspace_size = ((LZMA_BASE_SIZE + (LZMA_LIT_SIZE << (lc + lp))) * sizeof(CProb)) + 100;
-+ printk( KERN_NOTICE "initramfs: LZMA lc=%d,lp=%d,pb=%d,origSize=%d\n",
-+ lc,lp,pb,osize);
-+ outputbuffer = vmalloc(osize);
-+ if (outputbuffer == 0) {
-+ printk(KERN_ERR "initramfs: Couldn't allocate lzma output buffer\n");
-+ return -1;
-+ }
-+
-+ workspace = vmalloc(workspace_size);
-+ if (workspace == NULL) {
-+ printk(KERN_ERR "initramfs: Couldn't allocate lzma workspace\n");
-+ return -1;
-+ }
-+
-+ res = LzmaDecode(workspace, workspace_size, lc, lp, pb, inbuf + inptr, insize - inptr, outputbuffer, osize, &outsizeProcessed);
-+ if( res != 0 ) {
-+ panic( KERN_ERR "initramfs: Lzma decode failure\n");
-+ return -1;
-+ }
-+
-+ flush_buffer(outputbuffer, outsizeProcessed);
-+ inptr = insize;
-+
-+ vfree(outputbuffer);
-+ vfree(workspace);
-+ state = Reset;
-+ return 0;
-+}
-+
- static char * __init unpack_to_rootfs(char *buf, unsigned len, int check_only)
- {
- int written;
-@@ -457,12 +521,28 @@ static char * __init unpack_to_rootfs(ch
- inptr = 0;
- outcnt = 0; /* bytes in output buffer */
- bytes_out = 0;
-- crc = (ulg)0xffffffffL; /* shift register contents */
-- makecrc();
-- gunzip();
-- if (state != Reset)
-+ if( inbuf[0] == 037 && ((inbuf[1] == 0213) || (inbuf[1] == 0236)))
-+ {
-+ printk( KERN_NOTICE "detected gzip initramfs\n");
-+ crc = (ulg)0xffffffffL; /* shift register contents */
-+ makecrc();
-+ gunzip();
-+ if (state != Reset)
- error("junk in gzipped archive");
-- this_header = saved_offset + inptr;
-+ }
-+ else if(!memcmp(inbuf+1, "\x00\x00\x80\x00", 4)) /* FIXME: hardcoded dictionary size */
-+ {
-+ printk( KERN_NOTICE "detected lzma initramfs\n");
-+ lzma_unzip();
-+ }
-+ else
-+ {
-+ // skip forward ?
-+ crc = (ulg)0xffffffffL; /* shift register contents */
-+ makecrc();
-+ gunzip();
-+ }
-+ this_header = saved_offset + inptr;
- buf += inptr;
- len -= inptr;
- }
---- a/scripts/gen_initramfs_list.sh
-+++ b/scripts/gen_initramfs_list.sh
-@@ -287,7 +287,7 @@ if [ ! -z ${output_file} ]; then
- if [ "${is_cpio_compressed}" = "compressed" ]; then
- cat ${cpio_tfile} > ${output_file}
- else
-- cat ${cpio_tfile} | gzip -f -9 - > ${output_file}
-+ lzma e -lc1 -lp2 -pb2 ${cpio_tfile} ${output_file}
- fi
- [ -z ${cpio_file} ] && rm ${cpio_tfile}
- fi
+++ /dev/null
-CONFIG_4KSTACKS=y
-# CONFIG_64BIT is not set
-CONFIG_ACPI=y
-CONFIG_ACPI_AC=y
-# CONFIG_ACPI_ASUS is not set
-CONFIG_ACPI_BATTERY=y
-CONFIG_ACPI_BLACKLIST_YEAR=0
-CONFIG_ACPI_BUTTON=y
-# CONFIG_ACPI_CONTAINER is not set
-# CONFIG_ACPI_CUSTOM_DSDT is not set
-# CONFIG_ACPI_DEBUG is not set
-# CONFIG_ACPI_DOCK is not set
-CONFIG_ACPI_EC=y
-CONFIG_ACPI_FAN=y
-# CONFIG_ACPI_PCI_SLOT is not set
-CONFIG_ACPI_POWER=y
-CONFIG_ACPI_PROCESSOR=y
-# CONFIG_ACPI_PROCFS is not set
-CONFIG_ACPI_PROCFS_POWER=y
-CONFIG_ACPI_PROC_EVENT=y
-# CONFIG_ACPI_SBS is not set
-CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_SYSFS_POWER=y
-CONFIG_ACPI_SYSTEM=y
-CONFIG_ACPI_THERMAL=y
-# CONFIG_ACPI_TOSHIBA is not set
-# CONFIG_ACPI_WMI is not set
-# CONFIG_AGP is not set
-# CONFIG_AIRO is not set
-# CONFIG_APM is not set
-CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
-CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
-CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
-CONFIG_ARCH_HAS_CPU_RELAX=y
-# CONFIG_ARCH_HAS_ILOG2_U32 is not set
-# CONFIG_ARCH_HAS_ILOG2_U64 is not set
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MAY_HAVE_PC_FDC=y
-CONFIG_ARCH_POPULATES_NODE_MAP=y
-CONFIG_ARCH_SELECT_MEMORY_MODEL=y
-CONFIG_ARCH_SPARSEMEM_ENABLE=y
-CONFIG_ARCH_SUPPORTS_AOUT=y
-CONFIG_ARCH_SUPPORTS_MSI=y
-CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-# CONFIG_ATM is not set
-# CONFIG_ATMEL is not set
-# CONFIG_AUDIT_ARCH is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_BACKLIGHT_MBP_NVIDIA is not set
-# CONFIG_BACKLIGHT_PROGEAR is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-CONFIG_BASE_SMALL=0
-CONFIG_BATTERY_OLPC=y
-# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=y
-CONFIG_BITREVERSE=y
-# CONFIG_BLK_DEV is not set
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_BONDING is not set
-# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-# CONFIG_BOOT_PRINTK_DELAY is not set
-CONFIG_BOUNCE=y
-CONFIG_CAN_PM_TRACE=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_CLASSIC_RCU=y
-CONFIG_CLOCKSOURCE_WATCHDOG=y
-CONFIG_COMPAT_VDSO=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-# CONFIG_CPA_DEBUG is not set
-CONFIG_CPU_FREQ=y
-# CONFIG_CPU_FREQ_DEBUG is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
-# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
-CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
-# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_STAT=y
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
-CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_IDLE is not set
-# CONFIG_CRC_ITU_T is not set
-# CONFIG_CS5535_GPIO is not set
-# CONFIG_DCDBAS is not set
-# CONFIG_DEBUG_BOOT_PARAMS is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_DEVRES is not set
-# CONFIG_DEBUG_DRIVER is not set
-# CONFIG_DEBUG_INFO is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_NX_TEST is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
-# CONFIG_DEBUG_RODATA is not set
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_SHIRQ is not set
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
-# CONFIG_DEBUG_STACKOVERFLOW is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEFAULT_IO_DELAY_TYPE=0
-# CONFIG_DELL_RBU is not set
-CONFIG_DETECT_SOFTLOCKUP=y
-CONFIG_DEVPORT=y
-CONFIG_DISPLAY_SUPPORT=y
-CONFIG_DMI=y
-CONFIG_DMIID=y
-CONFIG_DOUBLEFAULT=y
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_EARLY_PRINTK=y
-# CONFIG_EDAC is not set
-# CONFIG_EDD is not set
-# CONFIG_EFI is not set
-CONFIG_ELF_CORE=y
-CONFIG_EXT2_FS=y
-# CONFIG_EXT3_FS is not set
-CONFIG_FAST_CMPXCHG_LOCAL=y
-# CONFIG_FAULT_INJECTION is not set
-CONFIG_FB=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-CONFIG_FB_GEODE=y
-# CONFIG_FB_GEODE_GX is not set
-# CONFIG_FB_GEODE_GX1 is not set
-CONFIG_FB_GEODE_LX=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FIRMWARE_MEMMAP is not set
-CONFIG_FIX_EARLYCON_MEM=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x16=y
-CONFIG_FONT_8x8=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FRAME_POINTER is not set
-CONFIG_GENERIC_BUG=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-# CONFIG_GENERIC_CPU is not set
-CONFIG_GENERIC_FIND_FIRST_BIT=y
-CONFIG_GENERIC_FIND_NEXT_BIT=y
-# CONFIG_GENERIC_GPIO is not set
-CONFIG_GENERIC_IOMAP=y
-CONFIG_GENERIC_ISA_DMA=y
-# CONFIG_GENERIC_LOCKBREAK is not set
-# CONFIG_GENERIC_TIME_VSYSCALL is not set
-CONFIG_GEODE_MFGPT_TIMER=y
-# CONFIG_HAMRADIO is not set
-# CONFIG_HANGCHECK_TIMER is not set
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
-CONFIG_HAVE_ARCH_KGDB=y
-# CONFIG_HAVE_ARCH_TRACEHOOK is not set
-# CONFIG_HAVE_CLK is not set
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
-# CONFIG_HAVE_DMA_ATTRS is not set
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_HAVE_FTRACE=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_IOREMAP_PROT=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_KVM=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_HAVE_OPROFILE=y
-# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
-CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
-# CONFIG_HERMES is not set
-# CONFIG_HFSPLUS_FS is not set
-# CONFIG_HFS_FS is not set
-CONFIG_HIBERNATION=y
-CONFIG_HID=y
-CONFIG_HID_SUPPORT=y
-# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
-# CONFIG_HPET is not set
-CONFIG_HPET_EMULATE_RTC=y
-CONFIG_HPET_TIMER=y
-CONFIG_HT_IRQ=y
-# CONFIG_HUGETLBFS is not set
-CONFIG_HW_CONSOLE=y
-CONFIG_HW_RANDOM=y
-# CONFIG_HW_RANDOM_AMD is not set
-CONFIG_HW_RANDOM_GEODE=y
-# CONFIG_HW_RANDOM_INTEL is not set
-CONFIG_HW_RANDOM_VIA=y
-# CONFIG_I2C is not set
-CONFIG_I2C_BOARDINFO=y
-# CONFIG_I8K is not set
-# CONFIG_IDE is not set
-# CONFIG_IEEE80211 is not set
-# CONFIG_IFB is not set
-# CONFIG_INET_AH is not set
-# CONFIG_INET_ESP is not set
-# CONFIG_INET_IPCOMP is not set
-# CONFIG_INET_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_TUNNEL is not set
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_INPUT=y
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_INPUT_MOUSE=y
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1200
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=900
-# CONFIG_IOMMU_HELPER is not set
-CONFIG_IO_DELAY_0X80=y
-# CONFIG_IO_DELAY_0XED is not set
-# CONFIG_IO_DELAY_NONE is not set
-CONFIG_IO_DELAY_TYPE_0X80=0
-CONFIG_IO_DELAY_TYPE_0XED=1
-CONFIG_IO_DELAY_TYPE_NONE=3
-CONFIG_IO_DELAY_TYPE_UDELAY=2
-# CONFIG_IO_DELAY_UDELAY is not set
-# CONFIG_IPV6 is not set
-# CONFIG_IPW2100 is not set
-# CONFIG_IPW2200 is not set
-# CONFIG_IP_NF_MATCH_AH is not set
-# CONFIG_IP_NF_MATCH_TTL is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_TARGET_REDIRECT is not set
-# CONFIG_ISA is not set
-CONFIG_ISA_DMA_API=y
-# CONFIG_ISCSI_IBFT_FIND is not set
-# CONFIG_ISDN is not set
-# CONFIG_ISO9660_FS is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
-CONFIG_KEXEC=y
-# CONFIG_KEXEC_JUMP is not set
-CONFIG_KEYBOARD_ATKBD=y
-# CONFIG_KEYBOARD_LKKBD is not set
-# CONFIG_KEYBOARD_NEWTON is not set
-# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_SUNKBD is not set
-# CONFIG_KEYBOARD_XTKBD is not set
-# CONFIG_KGDB is not set
-CONFIG_KTIME_SCALAR=y
-CONFIG_LCD_CLASS_DEVICE=y
-# CONFIG_LCD_ILI9320 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_VGG2432A4 is not set
-# CONFIG_LEDS_CLEVO_MAIL is not set
-# CONFIG_LIBERTAS is not set
-CONFIG_LIBERTAS_DEBUG=y
-# CONFIG_LIBERTAS_SDIO is not set
-# CONFIG_LIBERTAS_USB is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_LOGO is not set
-# CONFIG_M386 is not set
-# CONFIG_M486 is not set
-# CONFIG_M586 is not set
-# CONFIG_M586MMX is not set
-# CONFIG_M586TSC is not set
-# CONFIG_M686 is not set
-# CONFIG_MACINTOSH_DRIVERS is not set
-CONFIG_MARKERS=y
-# CONFIG_MATH_EMULATION is not set
-# CONFIG_MCA is not set
-# CONFIG_MCORE2 is not set
-# CONFIG_MCRUSOE is not set
-# CONFIG_MCYRIXIII is not set
-# CONFIG_MEDIA_TUNER is not set
-# CONFIG_MEDIA_TUNER_MT20XX is not set
-# CONFIG_MEDIA_TUNER_SIMPLE is not set
-# CONFIG_MEDIA_TUNER_TDA8290 is not set
-# CONFIG_MEDIA_TUNER_TDA9887 is not set
-# CONFIG_MEDIA_TUNER_TEA5761 is not set
-# CONFIG_MEDIA_TUNER_TEA5767 is not set
-# CONFIG_MEDIA_TUNER_XC2028 is not set
-# CONFIG_MEDIA_TUNER_XC5000 is not set
-# CONFIG_MEFFICEON is not set
-# CONFIG_MEMTEST is not set
-# CONFIG_MGEODEGX1 is not set
-CONFIG_MGEODE_LX=y
-CONFIG_MICROCODE=y
-CONFIG_MICROCODE_OLD_INTERFACE=y
-# CONFIG_MINIX_FS is not set
-# CONFIG_MISC_DEVICES is not set
-# CONFIG_MK6 is not set
-# CONFIG_MK7 is not set
-# CONFIG_MK8 is not set
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_SDHCI=y
-# CONFIG_MMIOTRACE is not set
-# CONFIG_MOUSE_BCM5974 is not set
-CONFIG_MOUSE_PS2=y
-CONFIG_MOUSE_PS2_ALPS=y
-CONFIG_MOUSE_PS2_LIFEBOOK=y
-CONFIG_MOUSE_PS2_LOGIPS2PP=y
-CONFIG_MOUSE_PS2_SYNAPTICS=y
-# CONFIG_MOUSE_PS2_TOUCHKIT is not set
-CONFIG_MOUSE_PS2_TRACKPOINT=y
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MPENTIUM4 is not set
-# CONFIG_MPENTIUMII is not set
-# CONFIG_MPENTIUMIII is not set
-# CONFIG_MPENTIUMM is not set
-# CONFIG_MPSC is not set
-# CONFIG_MSDOS_FS is not set
-CONFIG_MTD_BLOCK2MTD=y
-# CONFIG_MTD_CFI is not set
-CONFIG_MTD_CMDLINE_PARTS=y
-# CONFIG_MTD_OOPS is not set
-CONFIG_MTD_PCI=y
-# CONFIG_MTD_TS5500 is not set
-# CONFIG_MTRR is not set
-# CONFIG_MVIAC3_2 is not set
-# CONFIG_MVIAC7 is not set
-# CONFIG_MWINCHIP2 is not set
-# CONFIG_MWINCHIP3D is not set
-# CONFIG_MWINCHIPC6 is not set
-# CONFIG_NETDEV_1000 is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set
-# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set
-# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
-# CONFIG_NETFILTER_XT_MATCH_ESP is not set
-# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
-# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
-# CONFIG_NETFILTER_XT_MATCH_MAC is not set
-# CONFIG_NETFILTER_XT_MATCH_MARK is not set
-# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
-# CONFIG_NETFILTER_XT_MATCH_STRING is not set
-# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
-# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
-# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
-# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
-# CONFIG_NETFILTER_XT_TARGET_MARK is not set
-# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-# CONFIG_NET_ETHERNET is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_NET_KEY is not set
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_NET_SCH_DSMARK is not set
-# CONFIG_NET_SCH_GRED is not set
-# CONFIG_NET_SCH_HFSC is not set
-# CONFIG_NET_SCH_HTB is not set
-# CONFIG_NET_SCH_INGRESS is not set
-# CONFIG_NET_SCH_RED is not set
-# CONFIG_NET_SCH_SFQ is not set
-# CONFIG_NET_SCH_TBF is not set
-# CONFIG_NET_SCH_TEQL is not set
-# CONFIG_NF_CONNTRACK_AMANDA is not set
-# CONFIG_NF_CONNTRACK_H323 is not set
-# CONFIG_NF_CONNTRACK_PPTP is not set
-# CONFIG_NF_CONNTRACK_SIP is not set
-# CONFIG_NF_NAT_AMANDA is not set
-# CONFIG_NF_NAT_H323 is not set
-# CONFIG_NF_NAT_PPTP is not set
-# CONFIG_NF_NAT_SIP is not set
-# CONFIG_NF_NAT_SNMP_BASIC is not set
-# CONFIG_NLS is not set
-CONFIG_NOHIGHMEM=y
-CONFIG_NO_HZ=y
-# CONFIG_NSC_GPIO is not set
-CONFIG_NVRAM=y
-CONFIG_OLPC=y
-CONFIG_OPROFILE=y
-# CONFIG_OPTIMIZE_INLINING is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PAGE_OFFSET=0xC0000000
-# CONFIG_PARAVIRT_GUEST is not set
-# CONFIG_PARTITION_ADVANCED is not set
-# CONFIG_PC8736x_GPIO is not set
-CONFIG_PCI=y
-# CONFIG_PCIEPORTBUS is not set
-# CONFIG_PCI_DEBUG is not set
-CONFIG_PCI_DIRECT=y
-CONFIG_PCI_DOMAINS=y
-# CONFIG_PCI_GOANY is not set
-# CONFIG_PCI_GOBIOS is not set
-# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOMMCONFIG is not set
-CONFIG_PCI_GOOLPC=y
-CONFIG_PCI_OLPC=y
-CONFIG_PCSPKR_PLATFORM=y
-# CONFIG_PDA_POWER is not set
-CONFIG_PHYSICAL_ALIGN=0x100000
-CONFIG_PHYSICAL_START=0x100000
-CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-CONFIG_PM_SLEEP=y
-CONFIG_PM_STD_PARTITION=""
-# CONFIG_PM_TRACE_RTC is not set
-# CONFIG_PM_VERBOSE is not set
-CONFIG_PNP=y
-CONFIG_PNPACPI=y
-# CONFIG_PNP_DEBUG is not set
-CONFIG_POWER_SUPPLY=y
-# CONFIG_POWER_SUPPLY_DEBUG is not set
-# CONFIG_PPP is not set
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-CONFIG_PROFILING=y
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RELAY=y
-# CONFIG_RELOCATABLE is not set
-CONFIG_RTC=y
-# CONFIG_RT_MUTEX_TESTER is not set
-# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_SCHEDSTATS=y
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHED_HRTICK=y
-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
-CONFIG_SCSI=y
-# CONFIG_SCSI_WAIT_SCAN is not set
-# CONFIG_SCx200 is not set
-# CONFIG_SCx200_ACB is not set
-# CONFIG_SDIO_UART is not set
-# CONFIG_SERIAL_8250_EXTENDED is not set
-CONFIG_SERIAL_8250_PCI=y
-CONFIG_SERIAL_8250_PNP=y
-CONFIG_SERIO=y
-# CONFIG_SERIO_CT82C710 is not set
-CONFIG_SERIO_I8042=y
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_PCIPS2 is not set
-# CONFIG_SERIO_RAW is not set
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SMP is not set
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_ATIHDMI=y
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_GENERIC=y
-CONFIG_SND_HDA_HWDEP=y
-# CONFIG_SND_HDA_INTEL is not set
-# CONFIG_SND_HDA_POWER_SAVE is not set
-CONFIG_SND_PCI=y
-# CONFIG_SND_USB is not set
-CONFIG_SND_VMASTER=y
-# CONFIG_SONYPI is not set
-CONFIG_SPARSEMEM_STATIC=y
-CONFIG_STRICT_DEVMEM=y
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_SYSPROF_TRACER is not set
-# CONFIG_TELCLOCK is not set
-CONFIG_THERMAL=y
-CONFIG_TICK_ONESHOT=y
-CONFIG_TIMER_STATS=y
-# CONFIG_TOSHIBA is not set
-# CONFIG_UDF_FS is not set
-CONFIG_UID16=y
-CONFIG_USB=y
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_CATC is not set
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-# CONFIG_USB_HID is not set
-# CONFIG_USB_KAWETH is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_PEGASUS is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_PWC is not set
-# CONFIG_USB_SERIAL is not set
-CONFIG_USB_STORAGE=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_SUSPEND=y
-CONFIG_USB_UHCI_HCD=y
-# CONFIG_USB_USBNET is not set
-CONFIG_V4L_USB_DRIVERS=y
-# CONFIG_VFAT_FS is not set
-CONFIG_VGACON_SOFT_SCROLLBACK=y
-CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
-# CONFIG_VGASTATE is not set
-CONFIG_VGA_CONSOLE=y
-CONFIG_VIDEO_ALLOW_V4L1=y
-# CONFIG_VIDEO_CAFE_CCIC is not set
-CONFIG_VIDEO_CAPTURE_DRIVERS=y
-# CONFIG_VIDEO_CPIA2 is not set
-# CONFIG_VIDEO_MEDIA is not set
-# CONFIG_VIDEO_OV7670 is not set
-# CONFIG_VIDEO_OVCAMCHIP is not set
-CONFIG_VIDEO_SELECT=y
-CONFIG_VM86=y
-# CONFIG_VMSPLIT_1G is not set
-# CONFIG_VMSPLIT_2G is not set
-# CONFIG_VMSPLIT_2G_OPT is not set
-CONFIG_VMSPLIT_3G=y
-# CONFIG_VMSPLIT_3G_OPT is not set
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_W1 is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_X86=y
-CONFIG_X86_32=y
-# CONFIG_X86_64 is not set
-# CONFIG_X86_ACPI_CPUFREQ is not set
-CONFIG_X86_BIOS_REBOOT=y
-CONFIG_X86_BSWAP=y
-CONFIG_X86_CMPXCHG=y
-CONFIG_X86_CPU=y
-# CONFIG_X86_CPUFREQ_NFORCE2 is not set
-# CONFIG_X86_CPUID is not set
-CONFIG_X86_DEBUGCTLMSR=y
-# CONFIG_X86_ELAN is not set
-# CONFIG_X86_E_POWERSAVER is not set
-CONFIG_X86_FIND_SMP_CONFIG=y
-CONFIG_X86_GENERIC=y
-# CONFIG_X86_GENERICARCH is not set
-# CONFIG_X86_GX_SUSPMOD is not set
-CONFIG_X86_INTEL_USERCOPY=y
-CONFIG_X86_INVLPG=y
-CONFIG_X86_IO_APIC=y
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_LOCAL_APIC=y
-# CONFIG_X86_LONGHAUL is not set
-# CONFIG_X86_LONGRUN is not set
-# CONFIG_X86_MCE is not set
-CONFIG_X86_MINIMUM_CPU_FAMILY=4
-CONFIG_X86_MPPARSE=y
-# CONFIG_X86_MSR is not set
-# CONFIG_X86_P4_CLOCKMOD is not set
-# CONFIG_X86_PAE is not set
-CONFIG_X86_PC=y
-CONFIG_X86_PM_TIMER=y
-CONFIG_X86_POPAD_OK=y
-# CONFIG_X86_POWERNOW_K6 is not set
-# CONFIG_X86_POWERNOW_K7 is not set
-# CONFIG_X86_POWERNOW_K8 is not set
-# CONFIG_X86_PTDUMP is not set
-# CONFIG_X86_RDC321X is not set
-# CONFIG_X86_REBOOTFIXUPS is not set
-# CONFIG_X86_RESERVE_LOW_64K is not set
-# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
-# CONFIG_X86_SPEEDSTEP_ICH is not set
-# CONFIG_X86_SPEEDSTEP_LIB is not set
-# CONFIG_X86_SPEEDSTEP_SMI is not set
-CONFIG_X86_TSC=y
-CONFIG_X86_UP_APIC=y
-CONFIG_X86_UP_IOAPIC=y
-CONFIG_X86_USE_3DNOW=y
-CONFIG_X86_USE_PPRO_CHECKSUM=y
-CONFIG_X86_VERBOSE_BOOTUP=y
-# CONFIG_X86_VOYAGER is not set
-# CONFIG_X86_VSMP is not set
-CONFIG_X86_WP_WORKS_OK=y
-CONFIG_X86_XADD=y
-# CONFIG_ZONE_DMA32 is not set
+++ /dev/null
---- a/arch/x86/kernel/vmlinux_32.lds.S
-+++ b/arch/x86/kernel/vmlinux_32.lds.S
-@@ -135,6 +135,12 @@ SECTIONS
- INITCALLS
- __initcall_end = .;
- }
-+ .root_initcall.init : AT(ADDR(.root_initcall.init) - LOAD_OFFSET) {
-+ __root_initcall_start = .;
-+ INITCALLS_ROOT
-+ __root_initcall_end = .;
-+ }
-+
- .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
- __con_initcall_start = .;
- *(.con_initcall.init)
---- a/drivers/mtd/devices/block2mtd.c
-+++ b/drivers/mtd/devices/block2mtd.c
-@@ -18,10 +18,18 @@
- #include <linux/buffer_head.h>
- #include <linux/mutex.h>
- #include <linux/mount.h>
-+#include <linux/list.h>
-+#include <linux/delay.h>
-
- #define ERROR(fmt, args...) printk(KERN_ERR "block2mtd: " fmt "\n" , ## args)
- #define INFO(fmt, args...) printk(KERN_INFO "block2mtd: " fmt "\n" , ## args)
-
-+struct retry {
-+ struct list_head list;
-+ const char *val;
-+};
-+
-+static LIST_HEAD(retry_list);
-
- /* Info for the block device */
- struct block2mtd_dev {
-@@ -33,10 +41,34 @@ struct block2mtd_dev {
- char devname[0];
- };
-
-+static int block2mtd_setup2(const char *val);
-
- /* Static info about the MTD, used in cleanup_module */
- static LIST_HEAD(blkmtd_device_list);
-
-+static int add_retry(const char *val) {
-+ struct retry *r = kmalloc(sizeof(struct retry), GFP_KERNEL);
-+
-+ INIT_LIST_HEAD(&r->list);
-+ r->val = val;
-+ list_add(&r->list, &retry_list);
-+
-+ return 0;
-+}
-+
-+static int __init process_retries(void) {
-+ struct list_head *p, *tmp;
-+
-+ list_for_each_safe(p, tmp, &retry_list) {
-+ struct retry *r = list_entry(p, struct retry, list);
-+ block2mtd_setup2(r->val);
-+ msleep(100);
-+ list_del(p);
-+ kfree(r);
-+ }
-+ return 0;
-+}
-+rootfs_initcall(process_retries);
-
- static struct page *page_read(struct address_space *mapping, int index)
- {
-@@ -510,7 +542,9 @@ static int block2mtd_setup2(const char *
- if (token[2] && (strlen(token[2]) + 1 > 80))
- parse_err("mtd device name too long");
-
-- add_device(name, erase_size, token[2]);
-+ if (add_device(name, erase_size, token[2]) == NULL) {
-+ add_retry(val);
-+ }
-
- return 0;
- }
---- a/include/asm-generic/vmlinux.lds.h
-+++ b/include/asm-generic/vmlinux.lds.h
-@@ -375,12 +375,14 @@
- *(.initcall4s.init) \
- *(.initcall5.init) \
- *(.initcall5s.init) \
-- *(.initcallrootfs.init) \
- *(.initcall6.init) \
- *(.initcall6s.init) \
- *(.initcall7.init) \
- *(.initcall7s.init)
-
-+#define INITCALLS_ROOT \
-+ *(.initcallrootfs.init)
-+
- #define PERCPU(align) \
- . = ALIGN(align); \
- VMLINUX_SYMBOL(__per_cpu_start) = .; \
---- a/init/do_mounts.c
-+++ b/init/do_mounts.c
-@@ -174,16 +174,8 @@ static int __init fs_names_setup(char *s
- return 1;
- }
-
--static unsigned int __initdata root_delay;
--static int __init root_delay_setup(char *str)
--{
-- root_delay = simple_strtoul(str, NULL, 0);
-- return 1;
--}
--
- __setup("rootflags=", root_data_setup);
- __setup("rootfstype=", fs_names_setup);
--__setup("rootdelay=", root_delay_setup);
-
- static void __init get_fs_names(char *page)
- {
-@@ -359,18 +351,6 @@ void __init prepare_namespace(void)
- {
- int is_floppy;
-
-- if (root_delay) {
-- printk(KERN_INFO "Waiting %dsec before mounting root device...\n",
-- root_delay);
-- ssleep(root_delay);
-- }
--
-- /* wait for the known devices to complete their probing */
-- while (driver_probe_done() != 0)
-- msleep(100);
--
-- md_run_setup();
--
- if (saved_root_name[0]) {
- root_device_name = saved_root_name;
- if (!strncmp(root_device_name, "mtd", 3) ||
---- a/init/main.c
-+++ b/init/main.c
-@@ -70,6 +70,7 @@
- #ifdef CONFIG_X86_LOCAL_APIC
- #include <asm/smp.h>
- #endif
-+#include "do_mounts.h"
-
- /*
- * This is one of the first .c files built. Error out early if we have compiler
-@@ -745,12 +746,13 @@ int do_one_initcall(initcall_t fn)
-
-
- extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[];
-+extern initcall_t __root_initcall_start[], __root_initcall_end[];
-
--static void __init do_initcalls(void)
-+static void __init do_initcalls(initcall_t *start, initcall_t *end)
- {
- initcall_t *call;
-
-- for (call = __early_initcall_end; call < __initcall_end; call++)
-+ for (call = start; call < end; call++)
- do_one_initcall(*call);
-
- /* Make sure there is no pending stuff from the initcall sequence */
-@@ -772,7 +774,7 @@ static void __init do_basic_setup(void)
- usermodehelper_init();
- driver_init();
- init_irq_proc();
-- do_initcalls();
-+ do_initcalls(__early_initcall_end, __initcall_end);
- }
-
- static void __init do_pre_smp_initcalls(void)
-@@ -833,6 +835,13 @@ static int noinline init_post(void)
- panic("No init found. Try passing init= option to kernel.");
- }
-
-+static unsigned int __initdata root_delay;
-+static int __init root_delay_setup(char *str)
-+{
-+ root_delay = simple_strtoul(str, NULL, 0);
-+ return 1;
-+}
-+__setup("rootdelay=", root_delay_setup);
- static int __init kernel_init(void * unused)
- {
- lock_kernel();
-@@ -873,7 +882,16 @@ static int __init kernel_init(void * unu
-
- if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
- ramdisk_execute_command = NULL;
-- prepare_namespace();
-+ if (root_delay) {
-+ printk(KERN_INFO "Waiting %desc before mounting root device...\n",
-+ root_delay);
-+ ssleep(root_delay);
-+ }
-+ while (driver_probe_done() != 0)
-+ msleep(100);
-+ md_run_setup();
-+ do_initcalls(__root_initcall_start, __root_initcall_end);
-+ prepare_namespace();
- }
-
- /*