Commit 20a7f7e5 authored by Markos Chandras's avatar Markos Chandras Committed by Ralf Baechle

MIPS: Set up FTLB probability for I6400

Set up the I6400 FTLB probability similar to P5600 and proAptiv.
Signed-off-by: default avatarMarkos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10652/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent e87569cd
...@@ -579,6 +579,8 @@ ...@@ -579,6 +579,8 @@
#define MIPS_CONF7_IAR (_ULCAST_(1) << 10) #define MIPS_CONF7_IAR (_ULCAST_(1) << 10)
#define MIPS_CONF7_AR (_ULCAST_(1) << 16) #define MIPS_CONF7_AR (_ULCAST_(1) << 16)
/* FTLB probability bits for R6 */
#define MIPS_CONF7_FTLBP_SHIFT (18)
/* MAAR bit definitions */ /* MAAR bit definitions */
#define MIPS_MAAR_ADDR ((BIT_ULL(BITS_PER_LONG - 12) - 1) << 12) #define MIPS_MAAR_ADDR ((BIT_ULL(BITS_PER_LONG - 12) - 1) << 12)
......
...@@ -369,25 +369,33 @@ static unsigned int calculate_ftlb_probability(struct cpuinfo_mips *c) ...@@ -369,25 +369,33 @@ static unsigned int calculate_ftlb_probability(struct cpuinfo_mips *c)
static int set_ftlb_enable(struct cpuinfo_mips *c, int enable) static int set_ftlb_enable(struct cpuinfo_mips *c, int enable)
{ {
unsigned int config6; unsigned int config;
/* It's implementation dependent how the FTLB can be enabled */ /* It's implementation dependent how the FTLB can be enabled */
switch (c->cputype) { switch (c->cputype) {
case CPU_PROAPTIV: case CPU_PROAPTIV:
case CPU_P5600: case CPU_P5600:
/* proAptiv & related cores use Config6 to enable the FTLB */ /* proAptiv & related cores use Config6 to enable the FTLB */
config6 = read_c0_config6(); config = read_c0_config6();
/* Clear the old probability value */ /* Clear the old probability value */
config6 &= ~(3 << MIPS_CONF6_FTLBP_SHIFT); config &= ~(3 << MIPS_CONF6_FTLBP_SHIFT);
if (enable) if (enable)
/* Enable FTLB */ /* Enable FTLB */
write_c0_config6(config6 | write_c0_config6(config |
(calculate_ftlb_probability(c) (calculate_ftlb_probability(c)
<< MIPS_CONF6_FTLBP_SHIFT) << MIPS_CONF6_FTLBP_SHIFT)
| MIPS_CONF6_FTLBEN); | MIPS_CONF6_FTLBEN);
else else
/* Disable FTLB */ /* Disable FTLB */
write_c0_config6(config6 & ~MIPS_CONF6_FTLBEN); write_c0_config6(config & ~MIPS_CONF6_FTLBEN);
break;
case CPU_I6400:
/* I6400 & related cores use Config7 to configure FTLB */
config = read_c0_config7();
/* Clear the old probability value */
config &= ~(3 << MIPS_CONF7_FTLBP_SHIFT);
write_c0_config7(config | (calculate_ftlb_probability(c)
<< MIPS_CONF7_FTLBP_SHIFT));
break; break;
default: default:
return 1; return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment