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)
 
