MIPS: Netlogic: Add support for XLP5XX
Add support for the XLP5XX processor which is an 8 core variant of the XLP9XX. Add XLP5XX cases to code which earlier handled XLP9XX. Signed-off-by: Yonghong Song <ysong@broadcom.com> Signed-off-by: Jayachandran C <jchandra@broadcom.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/6871/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
edf3ed5e69
Коммит
1c98398662
|
@ -201,6 +201,7 @@
|
|||
#define PRID_IMP_NETLOGIC_XLP3XX 0x1100
|
||||
#define PRID_IMP_NETLOGIC_XLP2XX 0x1200
|
||||
#define PRID_IMP_NETLOGIC_XLP9XX 0x1500
|
||||
#define PRID_IMP_NETLOGIC_XLP5XX 0x1300
|
||||
|
||||
/*
|
||||
* Particular Revision values for bits 7:0 of the PRId register.
|
||||
|
|
|
@ -148,7 +148,8 @@ static inline int nlm_nodeid(void)
|
|||
{
|
||||
uint32_t prid = read_c0_prid() & PRID_IMP_MASK;
|
||||
|
||||
if (prid == PRID_IMP_NETLOGIC_XLP9XX)
|
||||
if ((prid == PRID_IMP_NETLOGIC_XLP9XX) ||
|
||||
(prid == PRID_IMP_NETLOGIC_XLP5XX))
|
||||
return (__read_32bit_c0_register($15, 1) >> 7) & 0x7;
|
||||
else
|
||||
return (__read_32bit_c0_register($15, 1) >> 5) & 0x3;
|
||||
|
|
|
@ -102,14 +102,16 @@ static inline int cpu_is_xlpii(void)
|
|||
int chip = read_c0_prid() & PRID_IMP_MASK;
|
||||
|
||||
return chip == PRID_IMP_NETLOGIC_XLP2XX ||
|
||||
chip == PRID_IMP_NETLOGIC_XLP9XX;
|
||||
chip == PRID_IMP_NETLOGIC_XLP9XX ||
|
||||
chip == PRID_IMP_NETLOGIC_XLP5XX;
|
||||
}
|
||||
|
||||
static inline int cpu_is_xlp9xx(void)
|
||||
{
|
||||
int chip = read_c0_prid() & PRID_IMP_MASK;
|
||||
|
||||
return chip == PRID_IMP_NETLOGIC_XLP9XX;
|
||||
return chip == PRID_IMP_NETLOGIC_XLP9XX ||
|
||||
chip == PRID_IMP_NETLOGIC_XLP5XX;
|
||||
}
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
#endif /* _ASM_NLM_XLP_H */
|
||||
|
|
|
@ -1059,6 +1059,7 @@ static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu)
|
|||
switch (c->processor_id & PRID_IMP_MASK) {
|
||||
case PRID_IMP_NETLOGIC_XLP2XX:
|
||||
case PRID_IMP_NETLOGIC_XLP9XX:
|
||||
case PRID_IMP_NETLOGIC_XLP5XX:
|
||||
c->cputype = CPU_XLP;
|
||||
__cpu_name[cpu] = "Broadcom XLPII";
|
||||
break;
|
||||
|
|
|
@ -177,6 +177,10 @@ FEXPORT(nlm_reset_entry)
|
|||
beq t0, t1, 2f /* does not need to set coherent */
|
||||
nop
|
||||
|
||||
li t1, 0x1300 /* XLP 5xx */
|
||||
beq t0, t1, 2f /* does not need to set coherent */
|
||||
nop
|
||||
|
||||
/* set bit in SYS coherent register for the core */
|
||||
mfc0 t0, CP0_EBASE, 1
|
||||
mfc0 t1, CP0_EBASE, 1
|
||||
|
|
|
@ -51,6 +51,7 @@ void __init *xlp_dt_init(void *fdtp)
|
|||
switch (current_cpu_data.processor_id & PRID_IMP_MASK) {
|
||||
#ifdef CONFIG_DT_XLP_GVP
|
||||
case PRID_IMP_NETLOGIC_XLP9XX:
|
||||
case PRID_IMP_NETLOGIC_XLP5XX:
|
||||
fdtp = __dtb_xlp_gvp_begin;
|
||||
break;
|
||||
#endif
|
||||
|
|
|
@ -123,6 +123,7 @@ const char *get_system_type(void)
|
|||
{
|
||||
switch (read_c0_prid() & PRID_IMP_MASK) {
|
||||
case PRID_IMP_NETLOGIC_XLP9XX:
|
||||
case PRID_IMP_NETLOGIC_XLP5XX:
|
||||
case PRID_IMP_NETLOGIC_XLP2XX:
|
||||
return "Broadcom XLPII Series";
|
||||
default:
|
||||
|
|
|
@ -135,7 +135,15 @@ static void xlp_enable_secondary_cores(const cpumask_t *wakeup_mask)
|
|||
if (cpu_is_xlp9xx()) {
|
||||
fusebase = nlm_get_fuse_regbase(n);
|
||||
fusemask = nlm_read_reg(fusebase, FUSE_9XX_DEVCFG6);
|
||||
mask = 0xfffff;
|
||||
switch (read_c0_prid() & PRID_IMP_MASK) {
|
||||
case PRID_IMP_NETLOGIC_XLP5XX:
|
||||
mask = 0xff;
|
||||
break;
|
||||
case PRID_IMP_NETLOGIC_XLP9XX:
|
||||
default:
|
||||
mask = 0xfffff;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
fusemask = nlm_read_sys_reg(nodep->sysbase,
|
||||
SYS_EFUSE_DEVICE_CFG_STATUS0);
|
||||
|
|
Загрузка…
Ссылка в новой задаче