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

Commit bd491781 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt
Browse files

powerpc: Add TLB size detection for TYPE_3E MMUs

parent 76b4eda8
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -137,6 +137,21 @@
#define MMUCSR0_TLB2PS	0x00078000	/* TLB2 Page Size */
#define MMUCSR0_TLB3PS	0x00780000	/* TLB3 Page Size */

/* MMUCFG bits */
#define MMUCFG_MAVN_NASK	0x00000003
#define MMUCFG_MAVN_V1_0	0x00000000
#define MMUCFG_MAVN_V2_0	0x00000001
#define MMUCFG_NTLB_MASK	0x0000000c
#define MMUCFG_NTLB_SHIFT	2
#define MMUCFG_PIDSIZE_MASK	0x000007c0
#define MMUCFG_PIDSIZE_SHIFT	6
#define MMUCFG_TWC		0x00008000
#define MMUCFG_LRAT		0x00010000
#define MMUCFG_RASIZE_MASK	0x00fe0000
#define MMUCFG_RASIZE_SHIFT	17
#define MMUCFG_LPIDSIZE_MASK	0x0f000000
#define MMUCFG_LPIDSIZE_SHIFT	24

/* TLBnCFG encoding */
#define TLBnCFG_N_ENTRY		0x00000fff	/* number of entries */
#define TLBnCFG_HES		0x00002000	/* HW select supported */
+11 −1
Original line number Diff line number Diff line
@@ -409,7 +409,17 @@ void __init mmu_context_init(void)
	} else if (mmu_has_feature(MMU_FTR_TYPE_47x)) {
		first_context = 1;
		last_context = 65535;
	} else {
	} else
#ifdef CONFIG_PPC_BOOK3E_MMU
	if (mmu_has_feature(MMU_FTR_TYPE_3E)) {
		u32 mmucfg = mfspr(SPRN_MMUCFG);
		u32 pid_bits = (mmucfg & MMUCFG_PIDSIZE_MASK)
				>> MMUCFG_PIDSIZE_SHIFT;
		first_context = 1;
		last_context = (1UL << (pid_bits + 1)) - 1;
	} else
#endif
	{
		first_context = 1;
		last_context = 255;
	}