Thread (51 messages) flat view 51 messages, 11 authors, 2011-09-05

Re: [PATCH 14/14] arm/include/asm/io.h : added macros to read/write big/little endian register

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2011-08-31 07:35:07

* Pratyush Anand | 2011-08-30 17:28:01 [+0530]:
quoted hunk ↗ jump to hunk
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 815efa2..32282b4 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -297,6 +297,14 @@ extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size);
extern int devmem_is_allowed(unsigned long pfn);
#endif

+/* Big Endian */
+#define out_be32(a, v) writel(__cpu_to_be32(v), a)
+#define in_be32(a) __be32_to_cpu(readl(a))
+
+/* Little endian */
+#define out_le32(a, v) writel(__cpu_to_le32(v), a)
+#define in_le32(a) __le32_to_cpu(readl(a))
In LE-mode __le32_to_cpu() is NOP and you get a LE value.
In BE-mode readl() will swap a and le32_to_cpu will swap a again. So you
get a BE value. Is this what you want?
+
Please split this patch out and get it accepterd by ARM community. USB
people won't merge this.

Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help