
-----Original Message----- From: Lei Wen [mailto:leiwen@marvell.com] Sent: Tuesday, March 29, 2011 8:24 AM To: Scott Wood; Heiko Schocher; Prafulla Wadaskar; Wolfgang Denk; u- boot@lists.denx.de; Marek Vasut; Ashish Karkare; Prabhanjan Sarnaik; Yu Tang; adrian.wenl@gmail.com Subject: [PATCH V5.1 1/6] io: add and* and or* operation api to set and clear bit
Those api take use of read*/write* to align the current dmb usage. Also this could short the code length in one line.
Signed-off-by: Lei Wen leiwen@marvell.com
Changelog: V2: V3: V4: Move original driver specific bit set to the general place
V5: fix code style issue
V5.1: Add parentheses for the around incoming parameters to prevent parsing the complex expression wrong.
arch/arm/include/asm/io.h | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 1fbc531..71e85e8 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h @@ -141,6 +141,14 @@ extern inline void __raw_readsl(unsigned int addr, void *data, int longlen) #define readw(c) ({ u16 __v = __arch_getw(c); __iormb(); __v; }) #define readl(c) ({ u32 __v = __arch_getl(c); __iormb(); __v; })
+#define orb(v, c) writeb(readb(c) | (v), c)
If I am not wrong, this should be like #define orb(v, c) writeb((readb(c) | v), c)
Regards.. Prafulla . .