diff options
author | Florian Fainelli <florian@openwrt.org> | 2009-07-30 21:29:25 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2009-07-30 21:29:25 +0000 |
commit | 9887dc61008ac45f29b36f5d91cef6933ca4571b (patch) | |
tree | d82f1c0b075f5cc3cdf3b9f8d47643c808862eb7 /target/linux/brcm63xx/patches-2.6.28 | |
parent | 750456aaee8c898ebaa9922e63cad735001332d6 (diff) | |
download | mtk-20170518-9887dc61008ac45f29b36f5d91cef6933ca4571b.zip mtk-20170518-9887dc61008ac45f29b36f5d91cef6933ca4571b.tar.gz mtk-20170518-9887dc61008ac45f29b36f5d91cef6933ca4571b.tar.bz2 |
add experimental support for 2.6.28.10, tested on bcm6338
SVN-Revision: 17054
Diffstat (limited to 'target/linux/brcm63xx/patches-2.6.28')
13 files changed, 812 insertions, 0 deletions
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 index 0000000..fa6d258 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/001-add_broadcom_63xx_cpu_definitions.patch @@ -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 index 0000000..5671776 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/002-add_support_for_broadcom_63xx_cpus.patch @@ -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 index 0000000..95e4c7f --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/003-add_serial_driver_for_bcm63xx_integr.patch @@ -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 index 0000000..4e65c41 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/004_add_pci_support.patch @@ -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 index 0000000..e6e867f --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/006-pcmcia_cardbus_support.patch @@ -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 index 0000000..6f6d465 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/007-usb_ohci_support.patch @@ -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 index 0000000..60dd30e --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/008-usb_ehci_support.patch @@ -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 index 0000000..780e978 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/009-add_integrated_ethernet_mac_support.patch @@ -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 index 0000000..b2eace1 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/010-add_integrated_ethernet_phy_support.patch @@ -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 index 0000000..1426794 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/020-watchdog.patch @@ -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 index 0000000..835a801 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/040-bcm963xx_flashmap.patch @@ -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 index 0000000..64eb6a7 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/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) 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 index 0000000..6a4a666 --- /dev/null +++ b/target/linux/brcm63xx/patches-2.6.28/500-lzma_initramfs.patch @@ -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 |