summaryrefslogtreecommitdiff
path: root/chip
diff options
context:
space:
mode:
authorAnton Staaf <robotboy@chromium.org>2016-02-22 10:57:32 -0800
committerchrome-bot <chrome-bot@chromium.org>2016-02-22 23:50:53 -0800
commit8ae8dca6d4dd709c5c4909902c650f9780d113fb (patch)
tree4d5b59940e3db79c45c5cac1c51e50a8bb14b479 /chip
parent0a644a91250671bb20a7815105ec532b42da19c1 (diff)
downloadchrome-ec-8ae8dca6d4dd709c5c4909902c650f9780d113fb.tar.gz
cr50: Switch from ALTERNATE to PINMUX macros
Previously the g chip and cr50 board abused the ALTERNATE macro to encode the pinmux configuration. This switches them over to using a PINMUX macro that is designed for this purpose. Signed-off-by: Anton Staaf <robotboy@chromium.org> BRANCH=None BUG=None TEST=make buildall -j Change-Id: I5c1f70b7aa92d87cc105e672aa66aee7f267c9a2 Reviewed-on: https://chromium-review.googlesource.com/328823 Commit-Ready: Anton Staaf <robotboy@chromium.org> Tested-by: Anton Staaf <robotboy@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Diffstat (limited to 'chip')
-rw-r--r--chip/g/gpio.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/chip/g/gpio.c b/chip/g/gpio.c
index 7695e859db..ad5f199215 100644
--- a/chip/g/gpio.c
+++ b/chip/g/gpio.c
@@ -84,9 +84,25 @@ void gpio_set_alternate_function(uint32_t port, uint32_t mask, int func)
/* This HW feature is not present in the Cr50 ARM core */
}
+struct pinmux {
+ uint32_t signal;
+ uint32_t dio;
+ uint16_t flags;
+};
-static void connect_pinmux(uint32_t signal, uint32_t dio, uint16_t flags)
+#define GPIO_GPIO(name) GPIO_##name
+#define PINMUX(signal, dio, flags) {GPIO_##signal, DIO(dio), flags},
+
+static const struct pinmux pinmux_list[] = {
+ #include "gpio.wrap"
+};
+
+static void connect_pinmux(struct pinmux const *p)
{
+ uint32_t signal = p->signal;
+ uint32_t dio = p->dio;
+ uint16_t flags = p->flags;
+
if (flags & DIO_ENABLE_DIRECT_INPUT) {
/* enable digital input for direct wired peripheral */
REG_WRITE_MLV(DIO_CTL_REG(dio), DIO_CTL_IE_MASK,
@@ -142,7 +158,6 @@ int gpio_disable_interrupt(enum gpio_signal signal)
void gpio_pre_init(void)
{
const struct gpio_info *g = gpio_list;
- const struct gpio_alt_func *af = gpio_alt_funcs;
int i;
@@ -155,8 +170,8 @@ void gpio_pre_init(void)
GC_PMU_PERICLKSET0_DGPIO1_CLK_LSB, 1);
/* Set up the pinmux */
- for (i = 0; i < gpio_alt_funcs_count; i++, af++)
- connect_pinmux(af->port, af->mask, af->flags);
+ for (i = 0; i < ARRAY_SIZE(pinmux_list); i++)
+ connect_pinmux(pinmux_list + i);
/* Set up ARM core GPIOs */
for (i = 0; i < GPIO_COUNT; i++, g++)