[PATCH] MSP82XX Acadia board support.

From: Anoop P.A
Date: Tue Feb 22 2011 - 09:59:31 EST


From: Anoop P A <anoop.pa@xxxxxxxxx>

MSP82XX series of processors comes under MSP7100 family.
Currently couple of SoC's (MSP8210 and MSP8220) available in this series.

Signed-off-by: Anoop P A <anoop.pa@xxxxxxxxx>
---
This patch depends on following two patches

http://patchwork.linux-mips.org/patch/2094/
http://patchwork.linux-mips.org/patch/2073/

arch/mips/include/asm/bootinfo.h | 1 +
arch/mips/pmc-sierra/Kconfig | 38 ++++++++++++++++++++++++++++++
arch/mips/pmc-sierra/msp71xx/msp_irq.c | 9 ++++++-
arch/mips/pmc-sierra/msp71xx/msp_prom.c | 6 ++++
arch/mips/pmc-sierra/msp71xx/msp_setup.c | 4 ++-
arch/mips/pmc-sierra/msp71xx/msp_time.c | 2 +
6 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/arch/mips/include/asm/bootinfo.h b/arch/mips/include/asm/bootinfo.h
index 35cd1ba..3604102 100644
--- a/arch/mips/include/asm/bootinfo.h
+++ b/arch/mips/include/asm/bootinfo.h
@@ -50,6 +50,7 @@
#define MACH_MSP7120_EVAL 3 /* PMC-Sierra MSP7120 Evaluation */
#define MACH_MSP7120_GW 4 /* PMC-Sierra MSP7120 Residential GW */
#define MACH_MSP7120_FPGA 5 /* PMC-Sierra MSP7120 Emulation */
+#define MACH_MSP82XX_ACADIA 9 /* PMC-Sierra MSP82XX Acadia */
#define MACH_MSP_OTHER 255 /* PMC-Sierra unknown board type */

/*
diff --git a/arch/mips/pmc-sierra/Kconfig b/arch/mips/pmc-sierra/Kconfig
index d4984c3..0147b01 100644
--- a/arch/mips/pmc-sierra/Kconfig
+++ b/arch/mips/pmc-sierra/Kconfig
@@ -32,12 +32,50 @@ config PMC_MSP7120_FPGA
select IRQ_MSP_CIC
select MSP_HAS_PCI

+config PMC_MSP8210
+ bool "PMC-Sierra MSP8210 SoC"
+ select PMC_MSP82XX_ACADIA
+ help
+ Support for the PMC-Sierra MSP8210 System-on-a-Chip with
+ custom mips 34Kc core (7 TC) cpu.
+ For info http://www.pmc-sierra.com/products/details/msp8210/
+
+config PMC_MSP8220
+ bool "PMC-Sierra MSP8220 Security SoC"
+ select PMC_MSP82XX_ACADIA
+ select MSP_HAS_SEC
+ help
+ Support for the PMC-Sierra MSP8220 System-on-a-Chip with
+ custom mips 34Kc core (7 TC) cpu and IPSEC accelartion engine.
+ For info http://www.pmc-sierra.com/products/details/msp8220/
+
endchoice

config HYPERTRANSPORT
bool "Hypertransport Support for PMC-Sierra Yosemite"
depends on PMC_YOSEMITE

+config PMC_MSP82XX_ACADIA
+ select SYS_SUPPORTS_MULTITHREADING
+ select IRQ_MSP_CIC
+ select HW_HAS_CARB
+ select DMA_TO_SPRAM
+ select MSP_HAS_DUAL_USB
+ select MSP_HAS_TSMAC
+ select MSP_HAS_PCI
+ bool
+
+config MSP_HAS_DUAL_USB
+ select MSP_HAS_USB
+ bool
+
+config MSP_HAS_TSMAC
+ select MSP_HAS_MAC
+ bool
+
+config MSP_HAS_SEC
+ bool
+
config MSP_HAS_USB
boolean
depends on PMC_MSP
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq.c b/arch/mips/pmc-sierra/msp71xx/msp_irq.c
index 4531c4a..5b74d3a 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_irq.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_irq.c
@@ -37,7 +37,9 @@ static inline void mac0_int_dispatch(void) { do_IRQ(MSP_INT_MAC0); }
static inline void mac1_int_dispatch(void) { do_IRQ(MSP_INT_MAC1); }
static inline void mac2_int_dispatch(void) { do_IRQ(MSP_INT_SAR); }
static inline void usb_int_dispatch(void) { do_IRQ(MSP_INT_USB); }
+#ifndef CONFIG_PMC_MSP8210
static inline void sec_int_dispatch(void) { do_IRQ(MSP_INT_SEC); }
+#endif

/*
* The PMC-Sierra MSP interrupts are arranged in a 3 level cascaded
@@ -79,8 +81,10 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
else if (pending & C_IRQ3)
do_IRQ(MSP_INT_SAR);

+#ifndef CONFIG_PMC_MSP8210
else if (pending & C_IRQ5)
do_IRQ(MSP_INT_SEC);
+#endif

#else
if (pending & C_IRQ5)
@@ -133,7 +137,9 @@ void __init arch_init_irq(void)
set_vi_handler(MSP_INT_MAC1, mac1_int_dispatch);
set_vi_handler(MSP_INT_SAR, mac2_int_dispatch);
set_vi_handler(MSP_INT_USB, usb_int_dispatch);
+#ifndef CONFIG_PMC_MSP8210
set_vi_handler(MSP_INT_SEC, sec_int_dispatch);
+#endif
#ifdef CONFIG_MIPS_MT_SMP
msp_vsmp_int_init();
#elif defined CONFIG_MIPS_MT_SMTC
@@ -142,8 +148,9 @@ void __init arch_init_irq(void)
irq_hwmask[MSP_INT_MAC1] = C_IRQ1;
irq_hwmask[MSP_INT_USB] = C_IRQ2;
irq_hwmask[MSP_INT_SAR] = C_IRQ3;
+#ifndef CONFIG_PMC_MSP8210
irq_hwmask[MSP_INT_SEC] = C_IRQ5;
-
+#endif
#endif /* CONFIG_MIPS_MT_SMP */
#endif /* CONFIG_MIPS_MT */
/* setup the cascaded interrupts */
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_prom.c b/arch/mips/pmc-sierra/msp71xx/msp_prom.c
index db00deb..adf8f3b 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_prom.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_prom.c
@@ -71,6 +71,8 @@ static char msp_default_features[] =
"EMEMSP";
#elif defined(CONFIG_PMC_MSP7120_FPGA)
"EMEM";
+#elif defined(CONFIG_PMC_MSP82XX_ACADIA)
+ "EGEGEGSP";
#endif

/* conversion functions */
@@ -132,6 +134,10 @@ const char *get_system_type(void)
return "PMC-Sierra MSP7120 Residential Gateway";
#elif defined(CONFIG_PMC_MSP7120_FPGA)
return "PMC-Sierra MSP7120 FPGA";
+#elif defined(CONFIG_PMC_MSP8210)
+ return "PMC-Sierra MSP8210 SoC";
+#elif defined(CONFIG_PMC_MSP8220)
+ return "PMC-Sierra MSP8220 SoC";
#else
#error "What is the type of *your* MSP?"
#endif
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_setup.c b/arch/mips/pmc-sierra/msp71xx/msp_setup.c
index 3bf92cd..406353d 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_setup.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_setup.c
@@ -20,7 +20,7 @@
#include <msp_regs.h>
#include <msp_gpio_macros.h>

-#if defined(CONFIG_PMC_MSP7120_GW)
+#if defined(CONFIG_PMC_MSP7120_GW) || defined(CONFIG_PMC_MSP82XX_ACADIA)
/* GPIO 9 is the 4th GPIO of register 3*/
#define MSP_BOARD_RESET_GPIO 9
#else
@@ -203,6 +203,8 @@ void __init prom_init(void)
mips_machtype = MACH_MSP7120_EVAL;
#elif defined(CONFIG_PMC_MSP7120_GW)
mips_machtype = MACH_MSP7120_GW;
+#elif defined(CONFIG_PMC_MSP82XX_ACADIA)
+ mips_machtype = MACH_MSP82XX_ACADIA;
#else
mips_machtype = MACH_MSP_OTHER;
#endif
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_time.c b/arch/mips/pmc-sierra/msp71xx/msp_time.c
index 8b42f30..929c18a 100644
--- a/arch/mips/pmc-sierra/msp71xx/msp_time.c
+++ b/arch/mips/pmc-sierra/msp71xx/msp_time.c
@@ -74,6 +74,8 @@ void __init plat_time_init(void)
cpu_rate = 400000000;
#elif defined(CONFIG_PMC_MSP7120_FPGA)
cpu_rate = 25000000;
+#elif defined(CONFIG_PMC_MSP82XX_ACADIA)
+ cpu_rate = 60000000;
#else
cpu_rate = 150000000;
#endif
--
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/