summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.m@jp.panasonic.com>2014-11-07 21:08:52 +0900
committerMasahiro Yamada <yamada.m@jp.panasonic.com>2014-11-12 00:22:23 +0900
commit2d5d1c9e293ac1e29f1e0f067aa381be44e8e844 (patch)
tree3f0f116d910d7c5640cd6f8ce1e9247bd6615503
parent495deb44f203705dd631196db7c4f1768750ae95 (diff)
downloadu-boot-imx-2d5d1c9e293ac1e29f1e0f067aa381be44e8e844.zip
u-boot-imx-2d5d1c9e293ac1e29f1e0f067aa381be44e8e844.tar.gz
u-boot-imx-2d5d1c9e293ac1e29f1e0f067aa381be44e8e844.tar.bz2
ARM: UniPhier: add set_pinsel macro for use in assembly code
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>
-rw-r--r--arch/arm/include/asm/arch-uniphier/sg-regs.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/arch/arm/include/asm/arch-uniphier/sg-regs.h b/arch/arm/include/asm/arch-uniphier/sg-regs.h
index 79d7ec7..fa5e6ae 100644
--- a/arch/arm/include/asm/arch-uniphier/sg-regs.h
+++ b/arch/arm/include/asm/arch-uniphier/sg-regs.h
@@ -88,7 +88,18 @@
#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>