summaryrefslogtreecommitdiff
path: root/src/cpu/allwinner/a10/pinmux.c
diff options
context:
space:
mode:
authorAlexandru Gagniuc <mr.nuke.me@gmail.com>2013-12-13 20:44:48 -0600
committerAlexandru Gagniuc <mr.nuke.me@gmail.com>2014-01-08 22:54:08 +0100
commitf64111b4865d611821950b25dc1ea235d8d9ca79 (patch)
treed61eef4c9476ada907f0d91e93c2707aed44df96 /src/cpu/allwinner/a10/pinmux.c
parent34286b861a9427520f3f3afb8bf64bfa7de37c24 (diff)
cpu: Add initial support for Allwinner A10 SoC
Add minimal support needed to get a bootblock capable of initialising a serial console. Change-Id: I50dd85544549baf9c5ea0aa3b4296972136c02a4 Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> Reviewed-on: http://review.coreboot.org/4549 Tested-by: build bot (Jenkins) Reviewed-by: David Hendricks <dhendrix@chromium.org> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'src/cpu/allwinner/a10/pinmux.c')
-rw-r--r--src/cpu/allwinner/a10/pinmux.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/cpu/allwinner/a10/pinmux.c b/src/cpu/allwinner/a10/pinmux.c
new file mode 100644
index 0000000000..2525de58af
--- /dev/null
+++ b/src/cpu/allwinner/a10/pinmux.c
@@ -0,0 +1,30 @@
+/*
+ * Helpers to multiplex and configure pins on Allwinner SoCs
+ *
+ * Copyright (C) 2013 Alexandru Gagniuc <mr.nuke.me@gmail.com>
+ * Subject to the GNU GPL v2, or (at your option) any later version.
+ */
+
+#include "gpio.h"
+
+#include <arch/io.h>
+
+static struct a10_gpio *const gpio = (void *)GPIO_BASE;
+
+void gpio_set_func(u8 port, u8 pin, u8 pad_func)
+{
+ u8 reg, bit;
+ u32 reg32;
+
+ if ((port > GPS))
+ return;
+
+ pin &= 0x1f;
+ reg = pin / 8;
+ bit = (pin % 8) * 4;
+
+ reg32 = read32(&gpio->port[port].cfg[reg]);
+ reg32 &= ~(0xf << bit);
+ reg32 |= (pad_func & 0xf) << bit;
+ write32(reg32, &gpio->port[port].cfg[reg]);
+}