Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -579,6 +579,8 @@

#define MIPS_CONF7_IAR		(_ULCAST_(1) << 10)
#define MIPS_CONF7_AR		(_ULCAST_(1) << 16)
/* FTLB probability bits for R6 */
#define MIPS_CONF7_FTLBP_SHIFT	(18)

/* MAAR bit definitions */
#define MIPS_MAAR_ADDR		((BIT_ULL(BITS_PER_LONG - 12) - 1) << 12)
+13 −5
Original line number Diff line number Diff line
@@ -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)
{
	unsigned int config6;
	unsigned int config;

	/* It's implementation dependent how the FTLB can be enabled */
	switch (c->cputype) {
	case CPU_PROAPTIV:
	case CPU_P5600:
		/* proAptiv & related cores use Config6 to enable the FTLB */
		config6 = read_c0_config6();
		config = read_c0_config6();
		/* Clear the old probability value */
		config6 &= ~(3 << MIPS_CONF6_FTLBP_SHIFT);
		config &= ~(3 << MIPS_CONF6_FTLBP_SHIFT);
		if (enable)
			/* Enable FTLB */
			write_c0_config6(config6 |
			write_c0_config6(config |
					 (calculate_ftlb_probability(c)
					  << MIPS_CONF6_FTLBP_SHIFT)
					 | MIPS_CONF6_FTLBEN);
		else
			/* 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;
	default:
		return 1;