[brcm63xx] add experimental support for 2.6.28.10, tested on bcm6338
authorFlorian Fainelli <florian@openwrt.org>
Thu, 30 Jul 2009 21:29:25 +0000 (21:29 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Thu, 30 Jul 2009 21:29:25 +0000 (21:29 +0000)
SVN-Revision: 17054

16 files changed:
target/linux/brcm63xx/config-2.6.28 [new file with mode: 0644]
target/linux/brcm63xx/files/arch/mips/include/asm/mach-bcm63xx [new symlink]
target/linux/brcm63xx/files/drivers/net/bcm63xx_enet.c
target/linux/brcm63xx/patches-2.6.28/001-add_broadcom_63xx_cpu_definitions.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/002-add_support_for_broadcom_63xx_cpus.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/003-add_serial_driver_for_bcm63xx_integr.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/004_add_pci_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/006-pcmcia_cardbus_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/007-usb_ohci_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/008-usb_ehci_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/009-add_integrated_ethernet_mac_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/010-add_integrated_ethernet_phy_support.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/020-watchdog.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/040-bcm963xx_flashmap.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/050-spi.patch [new file with mode: 0644]
target/linux/brcm63xx/patches-2.6.28/500-lzma_initramfs.patch [new file with mode: 0644]

diff --git a/target/linux/brcm63xx/config-2.6.28 b/target/linux/brcm63xx/config-2.6.28
new file mode 100644 (file)
index 0000000..9f0ad2d
--- /dev/null
@@ -0,0 +1,204 @@
+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_PROM_EMU 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
diff --git a/target/linux/brcm63xx/files/arch/mips/include/asm/mach-bcm63xx b/target/linux/brcm63xx/files/arch/mips/include/asm/mach-bcm63xx
new file mode 120000 (symlink)
index 0000000..8482b2e
--- /dev/null
@@ -0,0 +1 @@
+../../../../include/asm-mips/mach-bcm63xx
\ No newline at end of file
index 27d03eb5b9214ad50c2a461c90266482770b7dbb..d338bbc08d5550aec56e23b0738a4db0502084a1 100644 (file)
@@ -1718,7 +1718,7 @@ static int __devinit bcm_enet_probe(struct platform_device *pdev)
        if (priv->has_phy) {
                bus = &priv->mii_bus;
                bus->name = "bcm63xx_enet MII bus";
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
                bus->dev = &pdev->dev;
 #else
                bus->parent = &pdev->dev;
diff --git a/target/linux/brcm63xx/patches-2.6.28/001-add_broadcom_63xx_cpu_definitions.patch b/target/linux/brcm63xx/patches-2.6.28/001-add_broadcom_63xx_cpu_definitions.patch
new file mode 100644 (file)
index 0000000..fa6d258
--- /dev/null
@@ -0,0 +1,95 @@
+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 ++++
+ 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
+@@ -154,6 +154,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;
+@@ -864,6 +867,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";
+@@ -872,6 +876,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
+@@ -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/arch/mips/include/asm/cpu.h
++++ b/arch/mips/include/asm/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
diff --git a/target/linux/brcm63xx/patches-2.6.28/002-add_support_for_broadcom_63xx_cpus.patch b/target/linux/brcm63xx/patches-2.6.28/002-add_support_for_broadcom_63xx_cpus.patch
new file mode 100644 (file)
index 0000000..5671776
--- /dev/null
@@ -0,0 +1,122 @@
+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 ++++++
+ 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
+@@ -599,6 +614,7 @@ endchoice
+ source "arch/mips/alchemy/Kconfig"
+ source "arch/mips/basler/excite/Kconfig"
++source "arch/mips/bcm63xx/Kconfig"
+ source "arch/mips/emma/Kconfig"
+ source "arch/mips/jazz/Kconfig"
+ source "arch/mips/lasat/Kconfig"
+--- a/arch/mips/Makefile
++++ b/arch/mips/Makefile
+@@ -553,6 +553,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.28/003-add_serial_driver_for_bcm63xx_integr.patch b/target/linux/brcm63xx/patches-2.6.28/003-add_serial_driver_for_bcm63xx_integr.patch
new file mode 100644 (file)
index 0000000..95e4c7f
--- /dev/null
@@ -0,0 +1,66 @@
+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
+@@ -1372,4 +1372,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
+@@ -158,6 +158,8 @@
+ /* SH-SCI */
+ #define PORT_SCIFA    83
++#define PORT_BCM63XX          83
++
+ #ifdef __KERNEL__
+ #include <linux/compiler.h>
diff --git a/target/linux/brcm63xx/patches-2.6.28/004_add_pci_support.patch b/target/linux/brcm63xx/patches-2.6.28/004_add_pci_support.patch
new file mode 100644 (file)
index 0000000..4e65c41
--- /dev/null
@@ -0,0 +1,33 @@
+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_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.28/006-pcmcia_cardbus_support.patch b/target/linux/brcm63xx/patches-2.6.28/006-pcmcia_cardbus_support.patch
new file mode 100644 (file)
index 0000000..e6e867f
--- /dev/null
@@ -0,0 +1,43 @@
+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
+@@ -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.28/007-usb_ohci_support.patch b/target/linux/brcm63xx/patches-2.6.28/007-usb_ohci_support.patch
new file mode 100644 (file)
index 0000000..6f6d465
--- /dev/null
@@ -0,0 +1,56 @@
+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
+@@ -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.28/008-usb_ehci_support.patch b/target/linux/brcm63xx/patches-2.6.28/008-usb_ehci_support.patch
new file mode 100644 (file)
index 0000000..60dd30e
--- /dev/null
@@ -0,0 +1,58 @@
+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
+@@ -1036,6 +1036,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
+@@ -621,6 +621,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
diff --git a/target/linux/brcm63xx/patches-2.6.28/009-add_integrated_ethernet_mac_support.patch b/target/linux/brcm63xx/patches-2.6.28/009-add_integrated_ethernet_mac_support.patch
new file mode 100644 (file)
index 0000000..780e978
--- /dev/null
@@ -0,0 +1,48 @@
+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
+@@ -1987,6 +1987,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
+@@ -126,6 +126,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
diff --git a/target/linux/brcm63xx/patches-2.6.28/010-add_integrated_ethernet_phy_support.patch b/target/linux/brcm63xx/patches-2.6.28/010-add_integrated_ethernet_phy_support.patch
new file mode 100644 (file)
index 0000000..b2eace1
--- /dev/null
@@ -0,0 +1,38 @@
+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
diff --git a/target/linux/brcm63xx/patches-2.6.28/020-watchdog.patch b/target/linux/brcm63xx/patches-2.6.28/020-watchdog.patch
new file mode 100644 (file)
index 0000000..1426794
--- /dev/null
@@ -0,0 +1,29 @@
+--- a/drivers/watchdog/Makefile
++++ b/drivers/watchdog/Makefile
+@@ -106,6 +106,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
+@@ -747,6 +747,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.28/040-bcm963xx_flashmap.patch b/target/linux/brcm63xx/patches-2.6.28/040-bcm963xx_flashmap.patch
new file mode 100644 (file)
index 0000000..835a801
--- /dev/null
@@ -0,0 +1,73 @@
+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
+@@ -61,3 +61,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
diff --git a/target/linux/brcm63xx/patches-2.6.28/050-spi.patch b/target/linux/brcm63xx/patches-2.6.28/050-spi.patch
new file mode 100644 (file)
index 0000000..64eb6a7
--- /dev/null
@@ -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)
diff --git a/target/linux/brcm63xx/patches-2.6.28/500-lzma_initramfs.patch b/target/linux/brcm63xx/patches-2.6.28/500-lzma_initramfs.patch
new file mode 100644 (file)
index 0000000..6a4a666
--- /dev/null
@@ -0,0 +1,125 @@
+--- a/init/initramfs.c
++++ b/init/initramfs.c
+@@ -7,6 +7,7 @@
+ #include <linux/string.h>
+ #include <linux/syscalls.h>
+ #include <linux/utime.h>
++#include <linux/vmalloc.h>
+ static __initdata char *message;
+ static void __init error(char *x)
+@@ -475,6 +476,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;
+@@ -509,12 +573,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