]> git.sur5r.net Git - u-boot/commitdiff
ARM: UniPhier: add set_pinsel macro for use in assembly code
authorMasahiro Yamada <yamada.m@jp.panasonic.com>
Fri, 7 Nov 2014 12:08:52 +0000 (21:08 +0900)
committerMasahiro Yamada <yamada.m@jp.panasonic.com>
Tue, 11 Nov 2014 15:22:23 +0000 (00:22 +0900)
The function sg_set_pinsel is useful for switching I/O pins
but it can be only used in C code.  This commit adds a simple
macro that is available in asm code.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
arch/arm/include/asm/arch-uniphier/sg-regs.h

index 79d7ec71489f30402df21f7ebe51af71b52b81d3..fa5e6ae0f2d822f3f559dcba42c53ad3282c4ff2 100644 (file)
 #define SG_PINMON0_CLK_MODE_AXOSEL_20480KHZ    (0x2 << 16)
 #define SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A  (0x3 << 16)
 
-#ifndef __ASSEMBLY__
+#ifdef __ASSEMBLY__
+
+       .macro  set_pinsel, n, value, ra, rd
+       ldr     \ra, =SG_PINSEL_ADDR(\n)
+       ldr     \rd, [\ra]
+       and     \rd, \rd, #SG_PINSEL_MASK(\n)
+       orr     \rd, \rd, #SG_PINSEL_MODE(\n, \value)
+       str     \rd, [\ra]
+       .endm
+
+#else
+
 #include <linux/types.h>
 #include <asm/io.h>