From 5f12aa1919fbdc1e9f0b103f385bc82a5dc17782 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 1 Aug 2009 16:56:36 +0000 Subject: [PATCH 1/1] [brcm63xx] add experimental support for 2.6.30.4 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17081 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- target/linux/brcm63xx/config-2.6.30 | 220 ++++++++++++++++++ ...01-add_broadcom_63xx_cpu_definitions.patch | 95 ++++++++ ...2-add_support_for_broadcom_63xx_cpus.patch | 122 ++++++++++ ...add_serial_driver_for_bcm63xx_integr.patch | 66 ++++++ .../patches-2.6.30/004_add_pci_support.patch | 33 +++ .../006-pcmcia_cardbus_support.patch | 43 ++++ .../patches-2.6.30/007-usb_ohci_support.patch | 56 +++++ .../patches-2.6.30/008-usb_ehci_support.patch | 58 +++++ ...-add_integrated_ethernet_mac_support.patch | 48 ++++ ...-add_integrated_ethernet_phy_support.patch | 38 +++ .../patches-2.6.30/020-watchdog.patch | 29 +++ .../040-bcm963xx_flashmap.patch | 73 ++++++ .../brcm63xx/patches-2.6.30/050-spi.patch | 26 +++ 13 files changed, 907 insertions(+) create mode 100644 target/linux/brcm63xx/config-2.6.30 create mode 100644 target/linux/brcm63xx/patches-2.6.30/001-add_broadcom_63xx_cpu_definitions.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/002-add_support_for_broadcom_63xx_cpus.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/003-add_serial_driver_for_bcm63xx_integr.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/004_add_pci_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/006-pcmcia_cardbus_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/007-usb_ohci_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/008-usb_ehci_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/009-add_integrated_ethernet_mac_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/010-add_integrated_ethernet_phy_support.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/020-watchdog.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/040-bcm963xx_flashmap.patch create mode 100644 target/linux/brcm63xx/patches-2.6.30/050-spi.patch diff --git a/target/linux/brcm63xx/config-2.6.30 b/target/linux/brcm63xx/config-2.6.30 new file mode 100644 index 000000000..e6bc3d3b3 --- /dev/null +++ b/target/linux/brcm63xx/config-2.6.30 @@ -0,0 +1,220 @@ +CONFIG_32BIT=y +# CONFIG_64BIT 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_BINARY_PRINTF=y +CONFIG_BITREVERSE=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_BOARD_BCM963XX=y +# CONFIG_BOARD_LIVEBOX is not set +CONFIG_BSD_PROCESS_ACCT_V3=y +# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set +# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_CEVT_R4K=y +CONFIG_CEVT_R4K_LIB=y +CONFIG_CMDLINE="root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200" +CONFIG_CPU_BIG_ENDIAN=y +# CONFIG_CPU_CAVIUM_OCTEON is not set +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_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CSRC_R4K=y +CONFIG_CSRC_R4K_LIB=y +CONFIG_DECOMPRESS_LZMA=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_FTRACE_STARTUP_TEST is not set +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +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_MLOCK=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_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_NET_DROP_MONITOR is not set +CONFIG_NOP_TRACER=y +# 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_POSIX_MQUEUE_SYSCTL=y +# CONFIG_PROBE_INITRD_HEADER is not set +# CONFIG_PROM_EMU is not set +CONFIG_RELAY=y +CONFIG_RING_BUFFER=y +CONFIG_SCHED_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_SLOW_WORK is not set +CONFIG_SQUASHFS_EMBEDDED=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_STACKTRACE=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_TRACEPOINTS=y +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=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_VM_EVENT_COUNTERS=y +CONFIG_WATCHDOG_NOWAYOUT=y +CONFIG_ZONE_DMA_FLAG=0 diff --git a/target/linux/brcm63xx/patches-2.6.30/001-add_broadcom_63xx_cpu_definitions.patch b/target/linux/brcm63xx/patches-2.6.30/001-add_broadcom_63xx_cpu_definitions.patch new file mode 100644 index 000000000..856413247 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/001-add_broadcom_63xx_cpu_definitions.patch @@ -0,0 +1,95 @@ +From a9f65413f9ea81ef2208da66a3db9cb8a9020eef Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Fri, 18 Jul 2008 15:53:08 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add Broadcom 63xx CPU definitions. + +Signed-off-by: Maxime Bizon +--- + arch/mips/kernel/cpu-probe.c | 25 +++++++++++++++++++++++++ + arch/mips/mm/tlbex.c | 4 ++++ + arch/mips/include/asm/cpu.h | 7 +++++++ + 3 files changed, 36 insertions(+), 0 deletions(-) + +--- a/arch/mips/kernel/cpu-probe.c ++++ b/arch/mips/kernel/cpu-probe.c +@@ -158,6 +158,9 @@ void __init check_wait(void) + case CPU_25KF: + case CPU_PR4450: + case CPU_BCM3302: ++ case CPU_BCM6338: ++ case CPU_BCM6348: ++ case CPU_BCM6358: + case CPU_CAVIUM_OCTEON: + cpu_wait = r4k_wait; + break; +@@ -855,6 +858,7 @@ static inline void cpu_probe_broadcom(st + { + decode_configs(c); + switch (c->processor_id & 0xff00) { ++ /* same as PRID_IMP_BCM6338 */ + case PRID_IMP_BCM3302: + c->cputype = CPU_BCM3302; + __cpu_name[cpu] = "Broadcom BCM3302"; +@@ -863,6 +867,26 @@ static inline void cpu_probe_broadcom(st + c->cputype = CPU_BCM4710; + __cpu_name[cpu] = "Broadcom BCM4710"; + break; ++ case PRID_IMP_BCM6345: ++ c->cputype = CPU_BCM6345; ++ __cpu_name[cpu] = "Broadcom BCM6345"; ++ break; ++ case PRID_IMP_BCM6348: ++ c->cputype = CPU_BCM6348; ++ __cpu_name[cpu] = "Broadcom BCM6348"; ++ break; ++ case PRID_IMP_BCM4350: ++ switch (c->processor_id & 0xf0) { ++ case PRID_REV_BCM6358: ++ c->cputype = CPU_BCM6358; ++ __cpu_name[cpu] = "Broadcom BCM6358"; ++ break; ++ default: ++ c->cputype = CPU_UNKNOWN; ++ __cpu_name[cpu] = "Broadcom BCM63xx"; ++ break; ++ } ++ break; + } + } + +--- a/arch/mips/mm/tlbex.c ++++ b/arch/mips/mm/tlbex.c +@@ -310,6 +310,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: + case CPU_CAVIUM_OCTEON: + case CPU_R5500: + if (m4kc_tlbp_war()) +--- a/arch/mips/include/asm/cpu.h ++++ b/arch/mips/include/asm/cpu.h +@@ -113,6 +113,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 + + /* + * These are the PRID's for when 23:16 == PRID_COMP_CAVIUM +@@ -210,6 +216,7 @@ enum cpu_type_enum { + */ + CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K, + CPU_ALCHEMY, CPU_PR4450, CPU_BCM3302, CPU_BCM4710, ++ CPU_BCM6338, CPU_BCM6345, CPU_BCM6348, CPU_BCM6358, + + /* + * MIPS64 class processors diff --git a/target/linux/brcm63xx/patches-2.6.30/002-add_support_for_broadcom_63xx_cpus.patch b/target/linux/brcm63xx/patches-2.6.30/002-add_support_for_broadcom_63xx_cpus.patch new file mode 100644 index 000000000..9137889cf --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/002-add_support_for_broadcom_63xx_cpus.patch @@ -0,0 +1,122 @@ +From 0713aadd2a4e543b69022aa40bdec3e1dc5bc1e5 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Mon, 18 Aug 2008 13:56:57 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add support for Broadcom 63xx CPUs. + +Signed-off-by: Maxime Bizon +--- + 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 ++++++ + arch/mips/include/asm/fixmap.h | 4 + + arch/mips/include/asm/mach-bcm63xx/bcm63xx_clk.h | 11 + + arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h | 314 +++++++++ + arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h | 10 + + arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 14 + + arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h | 93 +++ + arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h | 15 + + arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | 728 ++++++++++++++++++++ + arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h | 11 + + .../asm-mips/mach-bcm63xx/cpu-feature-overrides.h | 51 ++ + arch/mips/include/asm/mach-bcm63xx/gpio.h | 52 ++ + arch/mips/include/asm/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 arch/mips/include/asm/mach-bcm63xx/bcm63xx_clk.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_cs.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_io.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_irq.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_timer.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/cpu-feature-overrides.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/gpio.h + create mode 100644 arch/mips/include/asm/mach-bcm63xx/war.h + +--- a/arch/mips/Kconfig ++++ b/arch/mips/Kconfig +@@ -60,6 +60,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 +@@ -635,6 +650,7 @@ endchoice + + source "arch/mips/alchemy/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 +@@ -551,6 +551,13 @@ cflags-$(CONFIG_BCM47XX) += -I$(srctree) + load-$(CONFIG_BCM47XX) := 0xffffffff80001000 + + # ++# Broadcom BCM63XX boards ++# ++core-$(CONFIG_BCM63XX) += arch/mips/bcm63xx/ ++cflags-$(CONFIG_BCM63XX) += -Iarch/mips/include/asm/mach-bcm63xx/ ++load-$(CONFIG_BCM63XX) := 0xffffffff80010000 ++ ++# + # SNI RM + # + core-$(CONFIG_SNI_RM) += arch/mips/sni/ +--- a/arch/mips/include/asm/fixmap.h ++++ b/arch/mips/include/asm/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) + diff --git a/target/linux/brcm63xx/patches-2.6.30/003-add_serial_driver_for_bcm63xx_integr.patch b/target/linux/brcm63xx/patches-2.6.30/003-add_serial_driver_for_bcm63xx_integr.patch new file mode 100644 index 000000000..478147d30 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/003-add_serial_driver_for_bcm63xx_integr.patch @@ -0,0 +1,66 @@ +From 6c489656b09998ed6a6f857e01ccf630e29358dd Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +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 +--- + 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 +@@ -1433,4 +1433,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 +@@ -34,6 +34,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 +@@ -167,6 +167,8 @@ + /* MAX3100 */ + #define PORT_MAX3100 86 + ++#define PORT_BCM63XX 83 ++ + #ifdef __KERNEL__ + + #include diff --git a/target/linux/brcm63xx/patches-2.6.30/004_add_pci_support.patch b/target/linux/brcm63xx/patches-2.6.30/004_add_pci_support.patch new file mode 100644 index 000000000..4e65c41d4 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/004_add_pci_support.patch @@ -0,0 +1,33 @@ +From 2a7fa2dbbf68650644f807a50cc2d84ca30835c1 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Sun, 21 Sep 2008 04:47:13 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add PCI support. + +Signed-off-by: Maxime Bizon +--- + 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_NEC_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. diff --git a/target/linux/brcm63xx/patches-2.6.30/006-pcmcia_cardbus_support.patch b/target/linux/brcm63xx/patches-2.6.30/006-pcmcia_cardbus_support.patch new file mode 100644 index 000000000..e6e867f17 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/006-pcmcia_cardbus_support.patch @@ -0,0 +1,43 @@ +From b17597be763621ba63534fda6e1ea0a802be2087 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Fri, 18 Jul 2008 21:18:51 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add PCMCIA & Cardbus support. + +Signed-off-by: Maxime Bizon +--- + 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 +@@ -192,6 +192,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 +@@ -27,6 +27,7 @@ obj-$(CONFIG_PCMCIA_SA1111) += sa11xx_ + 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 diff --git a/target/linux/brcm63xx/patches-2.6.30/007-usb_ohci_support.patch b/target/linux/brcm63xx/patches-2.6.30/007-usb_ohci_support.patch new file mode 100644 index 000000000..a43c06a47 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/007-usb_ohci_support.patch @@ -0,0 +1,56 @@ +From f7416412febd7efc1d33c7506c81265719368667 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Mon, 21 Jul 2008 14:58:19 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add USB OHCI support. + +Signed-off-by: Maxime Bizon +--- + 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 +@@ -1047,6 +1047,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 +@@ -536,6 +536,11 @@ static inline struct usb_hcd *ohci_to_hc + #define big_endian_mmio(ohci) 0 /* only little endian */ + #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 ++ + /* + * Big-endian read/write functions are arch-specific. + * Other arches can be added if/when they're needed. +@@ -646,7 +651,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 diff --git a/target/linux/brcm63xx/patches-2.6.30/008-usb_ehci_support.patch b/target/linux/brcm63xx/patches-2.6.30/008-usb_ehci_support.patch new file mode 100644 index 000000000..29433d94b --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/008-usb_ehci_support.patch @@ -0,0 +1,58 @@ +From 2940d1996c86c4c4dd7a82214f846d0c0b707165 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Mon, 21 Jul 2008 18:24:42 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add USB EHCI support. + +Signed-off-by: Maxime Bizon +--- + 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 +@@ -1072,6 +1072,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 +@@ -597,6 +597,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 +@@ -41,7 +41,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 diff --git a/target/linux/brcm63xx/patches-2.6.30/009-add_integrated_ethernet_mac_support.patch b/target/linux/brcm63xx/patches-2.6.30/009-add_integrated_ethernet_mac_support.patch new file mode 100644 index 000000000..82015ae16 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/009-add_integrated_ethernet_mac_support.patch @@ -0,0 +1,48 @@ +From 49aa7ffcd9bd2d9a0af99fced7b8511160dbf345 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +Date: Sun, 21 Sep 2008 03:43:26 +0200 +Subject: [PATCH] [MIPS] BCM63XX: Add integrated ethernet mac support. + +Signed-off-by: Maxime Bizon +--- + 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 +@@ -2035,6 +2035,15 @@ config ATL2 + To compile this driver as a module, choose M here. The module + will be called atl2. + ++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 +@@ -130,6 +130,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 8390.o ++obj-$(CONFIG_BCM63XX_ENET) += bcm63xx_enet.o + obj-$(CONFIG_AX88796) += ax88796.o + + obj-$(CONFIG_TSI108_ETH) += tsi108_eth.o diff --git a/target/linux/brcm63xx/patches-2.6.30/010-add_integrated_ethernet_phy_support.patch b/target/linux/brcm63xx/patches-2.6.30/010-add_integrated_ethernet_phy_support.patch new file mode 100644 index 000000000..b2eace1c5 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/010-add_integrated_ethernet_phy_support.patch @@ -0,0 +1,38 @@ +From 7eefcb968019804e024c8243e28afb1eebd674a2 Mon Sep 17 00:00:00 2001 +From: Maxime Bizon +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 +--- + 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 diff --git a/target/linux/brcm63xx/patches-2.6.30/020-watchdog.patch b/target/linux/brcm63xx/patches-2.6.30/020-watchdog.patch new file mode 100644 index 000000000..302c6c79b --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/020-watchdog.patch @@ -0,0 +1,29 @@ +--- a/drivers/watchdog/Makefile ++++ b/drivers/watchdog/Makefile +@@ -105,6 +105,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 +@@ -764,6 +764,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 diff --git a/target/linux/brcm63xx/patches-2.6.30/040-bcm963xx_flashmap.patch b/target/linux/brcm63xx/patches-2.6.30/040-bcm963xx_flashmap.patch new file mode 100644 index 000000000..f8d37abd8 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/040-bcm963xx_flashmap.patch @@ -0,0 +1,73 @@ +From e734ace5baa04e0e8af1d4483475fbd6bd2b32a1 Mon Sep 17 00:00:00 2001 +From: Axel Gembe +Date: Mon, 12 May 2008 18:54:09 +0200 +Subject: [PATCH] bcm963xx: flashmap support + + +Signed-off-by: Axel Gembe +--- + 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 +@@ -268,6 +268,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 +@@ -62,3 +62,4 @@ obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_ + obj-$(CONFIG_MTD_BFIN_ASYNC) += bfin-async-flash.o + obj-$(CONFIG_MTD_RBTX4939) += rbtx4939-flash.o + obj-$(CONFIG_MTD_VMU) += vmu-flash.o ++obj-$(CONFIG_MTD_BCM963XX) += bcm963xx-flash.o diff --git a/target/linux/brcm63xx/patches-2.6.30/050-spi.patch b/target/linux/brcm63xx/patches-2.6.30/050-spi.patch new file mode 100644 index 000000000..64eb6a7d2 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.30/050-spi.patch @@ -0,0 +1,26 @@ +--- a/drivers/spi/Kconfig ++++ b/drivers/spi/Kconfig +@@ -229,6 +229,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 +@@ -31,6 +31,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) -- 2.20.1