diff options
| author | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-07-30 21:29:25 +0000 | 
|---|---|---|
| committer | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-07-30 21:29:25 +0000 | 
| commit | 5abca50d4d73492ce2749de05a3539b75ab83439 (patch) | |
| tree | 6f4d333ec4e5049c134d0144bf438d15b506c822 | |
| parent | fe8a4ad530831ef7b897a9617b30a6d280fd2814 (diff) | |
[brcm63xx] add experimental support for 2.6.28.10, tested on bcm6338
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17054 3c298f89-4303-0410-b956-a3cf2f4a3e73
16 files changed, 1018 insertions, 1 deletions
| diff --git a/target/linux/brcm63xx/config-2.6.28 b/target/linux/brcm63xx/config-2.6.28 new file mode 100644 index 000000000..9f0ad2d9f --- /dev/null +++ b/target/linux/brcm63xx/config-2.6.28 @@ -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 index 000000000..8482b2ecf --- /dev/null +++ b/target/linux/brcm63xx/files/arch/mips/include/asm/mach-bcm63xx @@ -0,0 +1 @@ +../../../../include/asm-mips/mach-bcm63xx
\ No newline at end of file diff --git a/target/linux/brcm63xx/files/drivers/net/bcm63xx_enet.c b/target/linux/brcm63xx/files/drivers/net/bcm63xx_enet.c index 27d03eb5b..d338bbc08 100644 --- a/target/linux/brcm63xx/files/drivers/net/bcm63xx_enet.c +++ b/target/linux/brcm63xx/files/drivers/net/bcm63xx_enet.c @@ -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 index 000000000..fa6d258de --- /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 000000000..56717763b --- /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 000000000..95e4c7fcf --- /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 000000000..4e65c41d4 --- /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 000000000..e6e867f17 --- /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 000000000..6f6d46539 --- /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 000000000..60dd30ef1 --- /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 000000000..780e978da --- /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 000000000..b2eace1c5 --- /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 000000000..14267945d --- /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 000000000..835a801c0 --- /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 000000000..64eb6a7d2 --- /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 000000000..6a4a666c3 --- /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 | 
