You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/brcm63xx/patches-2.6.27/002-add_support_for_broadco...

123 lines
4.8 KiB
Diff

From 0713aadd2a4e543b69022aa40bdec3e1dc5bc1e5 Mon Sep 17 00:00:00 2001
From: Maxime Bizon <mbizon@freebox.fr>
Date: Mon, 18 Aug 2008 13:56:57 +0200
Subject: [PATCH] [MIPS] BCM63XX: Add support for Broadcom 63xx CPUs.
Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
---
arch/mips/Kconfig | 16 +
arch/mips/Makefile | 7 +
arch/mips/bcm63xx/Kconfig | 9 +
arch/mips/bcm63xx/Makefile | 2 +
arch/mips/bcm63xx/clk.c | 220 ++++++
arch/mips/bcm63xx/cpu.c | 245 +++++++
arch/mips/bcm63xx/cs.c | 144 ++++
arch/mips/bcm63xx/early_printk.c | 30 +
arch/mips/bcm63xx/gpio.c | 98 +++
arch/mips/bcm63xx/irq.c | 253 +++++++
arch/mips/bcm63xx/prom.c | 43 ++
arch/mips/bcm63xx/setup.c | 108 +++
arch/mips/bcm63xx/timer.c | 205 ++++++
include/asm-mips/fixmap.h | 4 +
include/asm-mips/mach-bcm63xx/bcm63xx_clk.h | 11 +
include/asm-mips/mach-bcm63xx/bcm63xx_cpu.h | 314 +++++++++
include/asm-mips/mach-bcm63xx/bcm63xx_cs.h | 10 +
include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h | 14 +
include/asm-mips/mach-bcm63xx/bcm63xx_io.h | 93 +++
include/asm-mips/mach-bcm63xx/bcm63xx_irq.h | 15 +
include/asm-mips/mach-bcm63xx/bcm63xx_regs.h | 728 ++++++++++++++++++++
include/asm-mips/mach-bcm63xx/bcm63xx_timer.h | 11 +
.../asm-mips/mach-bcm63xx/cpu-feature-overrides.h | 51 ++
include/asm-mips/mach-bcm63xx/gpio.h | 52 ++
include/asm-mips/mach-bcm63xx/war.h | 25 +
25 files changed, 2708 insertions(+), 0 deletions(-)
create mode 100644 arch/mips/bcm63xx/Kconfig
create mode 100644 arch/mips/bcm63xx/Makefile
create mode 100644 arch/mips/bcm63xx/clk.c
create mode 100644 arch/mips/bcm63xx/cpu.c
create mode 100644 arch/mips/bcm63xx/cs.c
create mode 100644 arch/mips/bcm63xx/early_printk.c
create mode 100644 arch/mips/bcm63xx/gpio.c
create mode 100644 arch/mips/bcm63xx/irq.c
create mode 100644 arch/mips/bcm63xx/prom.c
create mode 100644 arch/mips/bcm63xx/setup.c
create mode 100644 arch/mips/bcm63xx/timer.c
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_clk.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_cpu.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_cs.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_gpio.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_io.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_irq.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_regs.h
create mode 100644 include/asm-mips/mach-bcm63xx/bcm63xx_timer.h
create mode 100644 include/asm-mips/mach-bcm63xx/cpu-feature-overrides.h
create mode 100644 include/asm-mips/mach-bcm63xx/gpio.h
create mode 100644 include/asm-mips/mach-bcm63xx/war.h
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -59,6 +59,21 @@ config BCM47XX
help
Support for BCM47XX based boards
+config BCM63XX
+ bool "Broadcom 63xx based boards"
+ select CEVT_R4K
+ select CSRC_R4K
+ select DMA_NONCOHERENT
+ select IRQ_CPU
+ select SYS_HAS_CPU_MIPS32_R1
+ select SYS_SUPPORTS_32BIT_KERNEL
+ select SYS_SUPPORTS_BIG_ENDIAN
+ select SYS_HAS_EARLY_PRINTK
+ select SWAP_IO_SPACE
+ select ARCH_REQUIRE_GPIOLIB
+ help
+ Support for BCM63XX based boards
+
config MIPS_COBALT
bool "Cobalt Server"
select CEVT_R4K
@@ -600,6 +615,7 @@ endchoice
source "arch/mips/au1000/Kconfig"
source "arch/mips/basler/excite/Kconfig"
+source "arch/mips/bcm63xx/Kconfig"
source "arch/mips/jazz/Kconfig"
source "arch/mips/lasat/Kconfig"
source "arch/mips/pmc-sierra/Kconfig"
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -533,6 +533,13 @@ cflags-$(CONFIG_BCM47XX) += -Iinclude/as
load-$(CONFIG_BCM47XX) := 0xffffffff80001000
#
+# Broadcom BCM63XX boards
+#
+core-$(CONFIG_BCM63XX) += arch/mips/bcm63xx/
+cflags-$(CONFIG_BCM63XX) += -Iinclude/asm-mips/mach-bcm63xx/
+load-$(CONFIG_BCM63XX) := 0xffffffff80010000
+
+#
# SNI RM
#
core-$(CONFIG_SNI_RM) += arch/mips/sni/
--- a/include/asm-mips/fixmap.h
+++ b/include/asm-mips/fixmap.h
@@ -67,11 +67,15 @@ enum fixed_addresses {
* the start of the fixmap, and leave one page empty
* at the top of mem..
*/
+#ifdef CONFIG_BCM63XX
+#define FIXADDR_TOP ((unsigned long)(long)(int)0xff000000)
+#else
#if defined(CONFIG_CPU_TX39XX) || defined(CONFIG_CPU_TX49XX)
#define FIXADDR_TOP ((unsigned long)(long)(int)(0xff000000 - 0x20000))
#else
#define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000)
#endif
+#endif
#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)