[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>
This commit is contained in:
committed by
Ralf Baechle
parent
35832e26f9
commit
9267a30d1d
@@ -213,6 +213,18 @@
|
||||
#define MACH_GROUP_LEMOTE 27
|
||||
#define MACH_LEMOTE_FULONG 0
|
||||
|
||||
/*
|
||||
* Valid machtype for group PMC-MSP
|
||||
*/
|
||||
#define MACH_GROUP_MSP 26 /* PMC-Sierra MSP boards/CPUs */
|
||||
#define MACH_MSP4200_EVAL 0 /* PMC-Sierra MSP4200 Evaluation */
|
||||
#define MACH_MSP4200_GW 1 /* PMC-Sierra MSP4200 Gateway demo */
|
||||
#define MACH_MSP4200_FPGA 2 /* PMC-Sierra MSP4200 Emulation */
|
||||
#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_MSP_OTHER 255 /* PMC-Sierra unknown board type */
|
||||
|
||||
#define CL_SIZE COMMAND_LINE_SIZE
|
||||
|
||||
const char *get_system_type(void);
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
* Definitions for 7:0 on legacy processors
|
||||
*/
|
||||
|
||||
#define PRID_REV_MASK 0x00ff
|
||||
|
||||
#define PRID_REV_TX4927 0x0022
|
||||
#define PRID_REV_TX4937 0x0030
|
||||
@@ -125,6 +126,7 @@
|
||||
#define PRID_REV_VR4122 0x0070
|
||||
#define PRID_REV_VR4181A 0x0070 /* Same as VR4122 */
|
||||
#define PRID_REV_VR4130 0x0080
|
||||
#define PRID_REV_34K_V1_0_2 0x0022
|
||||
|
||||
/*
|
||||
* Older processors used to encode processor version and revision in two
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/hazards.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
/*
|
||||
* The following macros are especially useful for __asm__
|
||||
@@ -537,6 +538,9 @@
|
||||
|
||||
#define MIPS_CONF7_WII (_ULCAST_(1) << 31)
|
||||
|
||||
#define MIPS_CONF7_RPS (_ULCAST_(1) << 2)
|
||||
|
||||
|
||||
/*
|
||||
* Bits in the MIPS32/64 coprocessor 1 (FPU) revision register.
|
||||
*/
|
||||
@@ -1298,10 +1302,39 @@ static inline void tlb_probe(void)
|
||||
|
||||
static inline void tlb_read(void)
|
||||
{
|
||||
#if MIPS34K_MISSED_ITLB_WAR
|
||||
int res = 0;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set noreorder \n"
|
||||
" .set noat \n"
|
||||
" .set mips32r2 \n"
|
||||
" .word 0x41610001 # dvpe $1 \n"
|
||||
" move %0, $1 \n"
|
||||
" ehb \n"
|
||||
" .set pop \n"
|
||||
: "=r" (res));
|
||||
|
||||
instruction_hazard();
|
||||
#endif
|
||||
|
||||
__asm__ __volatile__(
|
||||
".set noreorder\n\t"
|
||||
"tlbr\n\t"
|
||||
".set reorder");
|
||||
|
||||
#if MIPS34K_MISSED_ITLB_WAR
|
||||
if ((res & _ULCAST_(1)))
|
||||
__asm__ __volatile__(
|
||||
" .set push \n"
|
||||
" .set noreorder \n"
|
||||
" .set noat \n"
|
||||
" .set mips32r2 \n"
|
||||
" .word 0x41600021 # evpe \n"
|
||||
" ehb \n"
|
||||
" .set pop \n");
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void tlb_write_indexed(void)
|
||||
|
||||
@@ -197,6 +197,14 @@
|
||||
#define R10000_LLSC_WAR 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 34K core erratum: "Problems Executing the TLBR Instruction"
|
||||
*/
|
||||
#if defined(CONFIG_PMC_MSP7120_EVAL) || defined(CONFIG_PMC_MSP7120_GW) || \
|
||||
defined(CONFIG_PMC_MSP7120_FPGA)
|
||||
#define MIPS34K_MISSED_ITLB_WAR 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Workarounds default to off
|
||||
*/
|
||||
@@ -236,5 +244,8 @@
|
||||
#ifndef R10000_LLSC_WAR
|
||||
#define R10000_LLSC_WAR 0
|
||||
#endif
|
||||
#ifndef MIPS34K_MISSED_ITLB_WAR
|
||||
#define MIPS34K_MISSED_ITLB_WAR 0
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_WAR_H */
|
||||
|
||||
Reference in New Issue
Block a user