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

Commit eadefeff authored by Sascha Hauer's avatar Sascha Hauer
Browse files

[ARM] MX3: Use ioremap wrapper to map SoC devices nonshared



The internal devices of the MX3 Processor have to be mapped
MT_DEVICE_NONSHARED devices, otherwise cache corruptions occur.

Signed-off-by: default avatarGuennadi Liakhovetski <lg@denx.de>
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 6c1249e5
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,26 @@
/* Allow IO space to be anywhere in the memory */
/* Allow IO space to be anywhere in the memory */
#define IO_SPACE_LIMIT 0xffffffff
#define IO_SPACE_LIMIT 0xffffffff


#ifdef CONFIG_ARCH_MX3
#define __arch_ioremap __mx3_ioremap
#define __arch_iounmap __iounmap

static inline void __iomem *
__mx3_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)
{
	if (mtype == MT_DEVICE) {
		/* Access all peripherals below 0x80000000 as nonshared device
		 * but leave l2cc alone.
		 */
		if ((phys_addr < 0x80000000) && ((phys_addr < L2CC_BASE_ADDR) ||
			(phys_addr >= L2CC_BASE_ADDR + L2CC_SIZE)))
			mtype = MT_DEVICE_NONSHARED;
	}

	return __arm_ioremap(phys_addr, size, mtype);
}
#endif

/* io address mapping macro */
/* io address mapping macro */
#define __io(a)			((void __iomem *)(a))
#define __io(a)			((void __iomem *)(a))