static void l2x0_flush_all(void) { void __iomem *base = l2x0_base; unsigned char way; unsigned long flags, value; if (omap_rev() == OMAP4430_REV_ES1_0) { l2x0_lock(&l2x0_lock, flags); debug_writel(0x03); /* Clean all the ways */ for (way = 0; way <= 0xf; way++, value = 0) { value = 1 << way; writel(value, base + L2X0_CLEAN_WAY); cache_wait_always(base + L2X0_CLEAN_WAY, value); cache_sync(); } /* Invalidate all the ways */ for (way = 0; way <= 0xf; way++, value = 0) { value = 1 << way; writel(value, base + L2X0_INV_WAY); cache_wait_always(base + L2X0_INV_WAY, value); cache_sync(); } debug_writel(0x00); l2x0_unlock(&l2x0_lock, flags); } else { /* invalidate all ways */ spin_lock_irqsave(&l2x0_lock, flags); writel(0xff, l2x0_base + L2X0_CLEAN_INV_WAY); cache_wait(l2x0_base + L2X0_CLEAN_INV_WAY, 0xff); cache_sync(); spin_unlock_irqrestore(&l2x0_lock, flags); } }
static void l2x0_flush_all(void) { unsigned long flags; #ifdef CONFIG_PL310_ERRATA_727915 __u32 debug_ctrl; #endif /* invalidate all ways */ _l2x0_lock(&l2x0_lock, flags); #ifndef CONFIG_EMXX_L310_NORAM #ifdef CONFIG_PL310_ERRATA_727915 debug_ctrl = readl(l2x0_base + L2X0_DEBUG_CTRL); writel(debug_ctrl | 0x3, l2x0_base + L2X0_DEBUG_CTRL); #endif #ifdef CONFIG_EMXX_L310_16WAY writel(0xffff, l2x0_base + L2X0_CLEAN_INV_WAY); cache_wait_always(l2x0_base + L2X0_CLEAN_INV_WAY, 0xffff); #else writel(0xff, l2x0_base + L2X0_CLEAN_INV_WAY); cache_wait_always(l2x0_base + L2X0_CLEAN_INV_WAY, 0xff); #endif #ifdef CONFIG_PL310_ERRATA_727915 writel(debug_ctrl, l2x0_base + L2X0_DEBUG_CTRL); #endif #endif cache_sync(); _l2x0_unlock(&l2x0_lock, flags); }
static inline void l2x0_clean_all(void) { /* invalidate all ways */ #ifdef CONFIG_EMXX_L310_16WAY writel(0xffff, l2x0_base + L2X0_CLEAN_WAY); cache_wait_always(l2x0_base + L2X0_CLEAN_WAY, 0xffff); #else writel(0xff, l2x0_base + L2X0_CLEAN_WAY); cache_wait_always(l2x0_base + L2X0_CLEAN_WAY, 0xff); #endif cache_sync(); }
static inline void l2x0_inv_all(void) { unsigned long flags; /* invalidate all ways */ _l2x0_lock(&l2x0_lock, flags); #ifndef CONFIG_EMXX_L310_NORAM #ifdef CONFIG_EMXX_L310_16WAY writel(0xffff, l2x0_base + L2X0_INV_WAY); cache_wait_always(l2x0_base + L2X0_INV_WAY, 0xffff); #else writel(0xff, l2x0_base + L2X0_INV_WAY); cache_wait_always(l2x0_base + L2X0_INV_WAY, 0xff); #endif #endif cache_sync(); _l2x0_unlock(&l2x0_lock, flags); }
static inline void l2x0_inv_all(void) { unsigned long flags; /* invalidate all ways */ l2x0_lock(&l2x0_lock, flags); writel(0xff, l2x0_base + L2X0_INV_WAY); cache_wait_always(l2x0_base + L2X0_INV_WAY, 0xff); cache_sync(); l2x0_unlock(&l2x0_lock, flags); }
static inline void l2x0_flush_all(void) { unsigned long flags; /* flush all ways */ l2x0_lock(&l2x0_lock, flags); writel(0xff, l2x0_base + L2X0_CLEAN_INV_WAY); cache_wait_always(l2x0_base + L2X0_CLEAN_INV_WAY, 0xff); cache_sync(); l2x0_unlock(&l2x0_lock, flags); }