aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorMarc St-Jean <stjeanma@pmc-sierra.com>2007-06-14 17:55:31 -0400
committerRalf Baechle <ralf@linux-mips.org>2007-07-10 12:33:03 -0400
commit9267a30d1dc7dcd7cadb5eb6a5bbfed703feeefa (patch)
tree91fa5a1a4605cdf0a1f1db21e22073b87735ce7a /arch/mips
parent35832e26f95ba14a6b6f0519441c5cb64cca6bf9 (diff)
[MIPS] PMC MSP71xx mips common
Patch to add mips common support for the PMC-Sierra MSP71xx devices. Signed-off-by: Marc St-Jean <Marc_St-Jean@pmc-sierra.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/Kconfig35
-rw-r--r--arch/mips/Makefile11
-rw-r--r--arch/mips/kernel/cpu-probe.c20
-rw-r--r--arch/mips/kernel/head.S5
-rw-r--r--arch/mips/kernel/traps.c6
-rw-r--r--arch/mips/pmc-sierra/Kconfig46
6 files changed, 121 insertions, 2 deletions
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 3994f611ec26..2076d472ea99 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -250,6 +250,7 @@ config MIPS_SIM
250 select DMA_NONCOHERENT 250 select DMA_NONCOHERENT
251 select SYS_HAS_EARLY_PRINTK 251 select SYS_HAS_EARLY_PRINTK
252 select IRQ_CPU 252 select IRQ_CPU
253 select BOOT_RAW
253 select SYS_HAS_CPU_MIPS32_R1 254 select SYS_HAS_CPU_MIPS32_R1
254 select SYS_HAS_CPU_MIPS32_R2 255 select SYS_HAS_CPU_MIPS32_R2
255 select SYS_HAS_EARLY_PRINTK 256 select SYS_HAS_EARLY_PRINTK
@@ -333,6 +334,27 @@ config MACH_VR41XX
333 select SYS_HAS_CPU_VR41XX 334 select SYS_HAS_CPU_VR41XX
334 select GENERIC_HARDIRQS_NO__DO_IRQ 335 select GENERIC_HARDIRQS_NO__DO_IRQ
335 336
337config PMC_MSP
338 bool "PMC-Sierra MSP chipsets"
339 depends on EXPERIMENTAL
340 select DMA_NONCOHERENT
341 select SWAP_IO_SPACE
342 select NO_EXCEPT_FILL
343 select BOOT_RAW
344 select SYS_HAS_CPU_MIPS32_R1
345 select SYS_HAS_CPU_MIPS32_R2
346 select SYS_SUPPORTS_32BIT_KERNEL
347 select SYS_SUPPORTS_BIG_ENDIAN
348 select SYS_SUPPORTS_KGDB
349 select IRQ_CPU
350 select SERIAL_8250
351 select SERIAL_8250_CONSOLE
352 help
353 This adds support for the PMC-Sierra family of Multi-Service
354 Processor System-On-A-Chips. These parts include a number
355 of integrated peripherals, interfaces and DSPs in addition to
356 a variety of MIPS cores.
357
336config PMC_YOSEMITE 358config PMC_YOSEMITE
337 bool "PMC-Sierra Yosemite eval board" 359 bool "PMC-Sierra Yosemite eval board"
338 select DMA_COHERENT 360 select DMA_COHERENT
@@ -706,6 +728,9 @@ config ARC
706config ARCH_MAY_HAVE_PC_FDC 728config ARCH_MAY_HAVE_PC_FDC
707 bool 729 bool
708 730
731config BOOT_RAW
732 bool
733
709config DMA_COHERENT 734config DMA_COHERENT
710 bool 735 bool
711 736
@@ -812,6 +837,12 @@ config IRQ_CPU_RM7K
812config IRQ_CPU_RM9K 837config IRQ_CPU_RM9K
813 bool 838 bool
814 839
840config IRQ_MSP_SLP
841 bool
842
843config IRQ_MSP_CIC
844 bool
845
815config IRQ_MV64340 846config IRQ_MV64340
816 bool 847 bool
817 848
@@ -825,6 +856,9 @@ config MIPS_BOARDS_GEN
825config PCI_GT64XXX_PCI0 856config PCI_GT64XXX_PCI0
826 bool 857 bool
827 858
859config NO_EXCEPT_FILL
860 bool
861
828config MIPS_TX3927 862config MIPS_TX3927
829 bool 863 bool
830 select HAS_TXX9_SERIAL 864 select HAS_TXX9_SERIAL
@@ -886,6 +920,7 @@ config MIPS_L1_CACHE_SHIFT
886 int 920 int
887 default "4" if MACH_DECSTATION || SNI_RM 921 default "4" if MACH_DECSTATION || SNI_RM
888 default "7" if SGI_IP27 922 default "7" if SGI_IP27
923 default "4" if PMC_MSP4200_EVAL
889 default "5" 924 default "5"
890 925
891config HAVE_STD_PC_SERIAL_PORT 926config HAVE_STD_PC_SERIAL_PORT
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 6642ee5fdc46..2b9af2fd5507 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -343,6 +343,14 @@ cflags-$(CONFIG_MOMENCO_OCELOT) += -Iinclude/asm-mips/mach-ocelot
343load-$(CONFIG_MOMENCO_OCELOT) += 0xffffffff80100000 343load-$(CONFIG_MOMENCO_OCELOT) += 0xffffffff80100000
344 344
345# 345#
346# PMC-Sierra MSP SOCs
347#
348core-$(CONFIG_PMC_MSP) += arch/mips/pmc-sierra/msp71xx/
349cflags-$(CONFIG_PMC_MSP) += -Iinclude/asm-mips/pmc-sierra/msp71xx \
350 -mno-branch-likely
351load-$(CONFIG_PMC_MSP) += 0xffffffff80100000
352
353#
346# PMC-Sierra Yosemite 354# PMC-Sierra Yosemite
347# 355#
348core-$(CONFIG_PMC_YOSEMITE) += arch/mips/pmc-sierra/yosemite/ 356core-$(CONFIG_PMC_YOSEMITE) += arch/mips/pmc-sierra/yosemite/
@@ -595,7 +603,8 @@ JIFFIES = jiffies_64
595endif 603endif
596 604
597AFLAGS += $(cflags-y) 605AFLAGS += $(cflags-y)
598CFLAGS += $(cflags-y) 606CFLAGS += $(cflags-y) \
607 -D"VMLINUX_LOAD_ADDRESS=$(load-y)"
599 608
600LDFLAGS += -m $(ld-emul) 609LDFLAGS += -m $(ld-emul)
601 610
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 23d8a3b7dd75..c6b8b074a81a 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -186,9 +186,29 @@ static inline void check_wait(void)
186 } 186 }
187} 187}
188 188
189static inline void check_errata(void)
190{
191 struct cpuinfo_mips *c = &current_cpu_data;
192
193 switch (c->cputype) {
194 case CPU_34K:
195 /*
196 * Erratum "RPS May Cause Incorrect Instruction Execution"
197 * This code only handles VPE0, any SMP/SMTC/RTOS code
198 * making use of VPE1 will be responsable for that VPE.
199 */
200 if ((c->processor_id & PRID_REV_MASK) <= PRID_REV_34K_V1_0_2)
201 write_c0_config7(read_c0_config7() | MIPS_CONF7_RPS);
202 break;
203 default:
204 break;
205 }
206}
207
189void __init check_bugs32(void) 208void __init check_bugs32(void)
190{ 209{
191 check_wait(); 210 check_wait();
211 check_errata();
192} 212}
193 213
194/* 214/*
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S
index 1f096aa35bc0..f78538eceef7 100644
--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -16,6 +16,7 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/threads.h> 17#include <linux/threads.h>
18 18
19#include <asm/addrspace.h>
19#include <asm/asm.h> 20#include <asm/asm.h>
20#include <asm/asmmacro.h> 21#include <asm/asmmacro.h>
21#include <asm/irqflags.h> 22#include <asm/irqflags.h>
@@ -129,16 +130,18 @@
129#endif 130#endif
130 .endm 131 .endm
131 132
133#ifndef CONFIG_NO_EXCEPT_FILL
132 /* 134 /*
133 * Reserved space for exception handlers. 135 * Reserved space for exception handlers.
134 * Necessary for machines which link their kernels at KSEG0. 136 * Necessary for machines which link their kernels at KSEG0.
135 */ 137 */
136 .fill 0x400 138 .fill 0x400
139#endif
137 140
138EXPORT(stext) # used for profiling 141EXPORT(stext) # used for profiling
139EXPORT(_stext) 142EXPORT(_stext)
140 143
141#ifndef CONFIG_MIPS_SIM 144#ifdef CONFIG_BOOT_RAW
142 /* 145 /*
143 * Give us a fighting chance of running if execution beings at the 146 * Give us a fighting chance of running if execution beings at the
144 * kernel load address. This is needed because this platform does 147 * kernel load address. This is needed because this platform does
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 9b19a84d11ef..80ea4fa95bd9 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -69,6 +69,7 @@ extern asmlinkage void handle_reserved(void);
69extern int fpu_emulator_cop1Handler(struct pt_regs *xcp, 69extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
70 struct mips_fpu_struct *ctx, int has_fpu); 70 struct mips_fpu_struct *ctx, int has_fpu);
71 71
72void (*board_watchpoint_handler)(struct pt_regs *regs);
72void (*board_be_init)(void); 73void (*board_be_init)(void);
73int (*board_be_handler)(struct pt_regs *regs, int is_fixup); 74int (*board_be_handler)(struct pt_regs *regs, int is_fixup);
74void (*board_nmi_handler_setup)(void); 75void (*board_nmi_handler_setup)(void);
@@ -833,6 +834,11 @@ asmlinkage void do_mdmx(struct pt_regs *regs)
833 834
834asmlinkage void do_watch(struct pt_regs *regs) 835asmlinkage void do_watch(struct pt_regs *regs)
835{ 836{
837 if (board_watchpoint_handler) {
838 (*board_watchpoint_handler)(regs);
839 return;
840 }
841
836 /* 842 /*
837 * We use the watch exception where available to detect stack 843 * We use the watch exception where available to detect stack
838 * overflows. 844 * overflows.
diff --git a/arch/mips/pmc-sierra/Kconfig b/arch/mips/pmc-sierra/Kconfig
index 24d514c9dff9..abbd0bbfabd7 100644
--- a/arch/mips/pmc-sierra/Kconfig
+++ b/arch/mips/pmc-sierra/Kconfig
@@ -1,3 +1,49 @@
1choice
2 prompt "PMC-Sierra MSP SOC type"
3 depends on PMC_MSP
4
5config PMC_MSP4200_EVAL
6 bool "PMC-Sierra MSP4200 Eval Board"
7 select IRQ_MSP_SLP
8 select HW_HAS_PCI
9
10config PMC_MSP4200_GW
11 bool "PMC-Sierra MSP4200 VoIP Gateway"
12 select IRQ_MSP_SLP
13 select HW_HAS_PCI
14
15config PMC_MSP7120_EVAL
16 bool "PMC-Sierra MSP7120 Eval Board"
17 select SYS_SUPPORTS_MULTITHREADING
18 select IRQ_MSP_CIC
19 select HW_HAS_PCI
20
21config PMC_MSP7120_GW
22 bool "PMC-Sierra MSP7120 Residential Gateway"
23 select SYS_SUPPORTS_MULTITHREADING
24 select IRQ_MSP_CIC
25 select HW_HAS_PCI
26
27config PMC_MSP7120_FPGA
28 bool "PMC-Sierra MSP7120 FPGA"
29 select SYS_SUPPORTS_MULTITHREADING
30 select IRQ_MSP_CIC
31 select HW_HAS_PCI
32
33endchoice
34
35menu "Options for PMC-Sierra MSP chipsets"
36 depends on PMC_MSP
37
38config PMC_MSP_EMBEDDED_ROOTFS
39 bool "Root filesystem embedded in kernel image"
40 select MTD
41 select MTD_BLOCK
42 select MTD_PMC_MSP_RAMROOT
43 select MTD_RAM
44
45endmenu
46
1config HYPERTRANSPORT 47config HYPERTRANSPORT
2 bool "Hypertransport Support for PMC-Sierra Yosemite" 48 bool "Hypertransport Support for PMC-Sierra Yosemite"
3 depends on PMC_YOSEMITE 49 depends on PMC_YOSEMITE