Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

memory: pl172: add ARM PrimeCell PL176 MPMC support

The change adds support of ARM PrimeCell PL176 MPMC.

Static memory configuration of PL175 MPMC is very similar to one found
on PL172 and PL175 controllers, so it is preferred to add its support
into the existing driver. The difference is that PL176 supports up to
10 slave ports (but only 4 of them may be connected to static memory
devices), AHB master bus width cab be 64-bit wide, also NAND devices
can be interfaced.

Similar to PL175 contoller, PL176 has no write buffer enable control
in static memory configuration register, the rest of static memory
configuration bits (with exception of NAND) is the same.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Joachim Eastwood <manabian@gmail.com>

authored by

Vladimir Zapolskiy and committed by
Joachim Eastwood
f6d77bee b794df56

+9
+9
drivers/memory/pl172.c
··· 192 192 193 193 static const char * const pl172_revisions[] = {"r1", "r2", "r2p3", "r2p4"}; 194 194 static const char * const pl175_revisions[] = {"r1"}; 195 + static const char * const pl176_revisions[] = {"r0"}; 195 196 196 197 static int pl172_probe(struct amba_device *adev, const struct amba_id *id) 197 198 { ··· 208 207 } else if (amba_part(adev) == 0x175) { 209 208 if (amba_rev(adev) < ARRAY_SIZE(pl175_revisions)) 210 209 rev = pl175_revisions[amba_rev(adev)]; 210 + } else if (amba_part(adev) == 0x176) { 211 + if (amba_rev(adev) < ARRAY_SIZE(pl176_revisions)) 212 + rev = pl176_revisions[amba_rev(adev)]; 211 213 } 212 214 213 215 dev_info(dev, "ARM PL%x revision %s\n", amba_part(adev), rev); ··· 296 292 { 297 293 .id = 0x07041175, 298 294 .mask = 0x3f0fffff, 295 + }, 296 + /* PrimeCell MPMC PL176 */ 297 + { 298 + .id = 0x89041176, 299 + .mask = 0xff0fffff, 299 300 }, 300 301 { 0, 0 }, 301 302 };