summaryrefslogtreecommitdiff
path: root/arch/blackfin
diff options
context:
space:
mode:
authorMichael Hennerich <michael.hennerich@analog.com>2010-06-18 12:30:08 +0400
committerMike Frysinger <vapier@gentoo.org>2010-08-06 20:55:51 +0400
commiteb9649095f4e81a6535c10377da3d5f48b9ad822 (patch)
tree9f95ef1ccaa4551d7a3794631562d1a4e6254682 /arch/blackfin
parentd1401e1dc22606a91f577ad3dfd68ae7e60e0357 (diff)
downloadlinux-eb9649095f4e81a6535c10377da3d5f48b9ad822.tar.xz
Blackfin: make sure mmiowb inserts a write barrier with SSYNC
Add SSYNC to our implementation of I/O write barrier to ensure ordering of I/O space writes. This will make sure that writes following the barrier will arrive after all previous writes. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/include/asm/io.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/blackfin/include/asm/io.h b/arch/blackfin/include/asm/io.h
index 29e55b9d88bc..234fbac17ec1 100644
--- a/arch/blackfin/include/asm/io.h
+++ b/arch/blackfin/include/asm/io.h
@@ -124,7 +124,13 @@ static inline unsigned int readl(const volatile void __iomem *addr)
#define iowrite16(val, x) writew(val, x)
#define iowrite32(val, x) writel(val, x)
-#define mmiowb() wmb()
+/**
+ * I/O write barrier
+ *
+ * Ensure ordering of I/O space writes. This will make sure that writes
+ * following the barrier will arrive after all previous writes.
+ */
+#define mmiowb() do { SSYNC(); wmb(); } while (0)
#define IO_SPACE_LIMIT 0xffffffff