From 9ccfd4553e708a5df4be3aa18b97c75da3f6c1b9 Mon Sep 17 00:00:00 2001 From: Anton Staaf Date: Tue, 24 Jun 2014 07:52:49 -0700 Subject: gpio: Replace duplication in gpio declarations with X-macro file Previously each board.h and board.c contained an enum and an array for gpio definitons that had to be manually kept in sync, with no compiler assistance other than that their lengths matched. This change adds a single gpio.inc file that declares all gpio's that a board uses and is used as an X-macro include file to generate both the gpio_signal enum and the gpio_list array. Signed-off-by: Anton Staaf BRANCH=none TEST=make buildall -j Change-Id: If9c9feca968619a59ff9f20701359bcb9374e4da Reviewed-on: https://chromium-review.googlesource.com/205354 Tested-by: Anton Staaf Reviewed-by: Vincent Palatin Commit-Queue: Anton Staaf --- board/it8380dev/board.c | 29 +---------------------------- board/it8380dev/board.h | 30 +----------------------------- board/it8380dev/gpio.inc | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 57 deletions(-) create mode 100644 board/it8380dev/gpio.inc (limited to 'board/it8380dev') diff --git a/board/it8380dev/board.c b/board/it8380dev/board.c index adad1d73a8..51799ba46a 100644 --- a/board/it8380dev/board.c +++ b/board/it8380dev/board.c @@ -22,34 +22,7 @@ void test_interrupt(enum gpio_signal signal) gpio_set_level(GPIO_BUSY_LED, busy_state); } -/* GPIO signal list. Must match order from enum gpio_signal. */ -const struct gpio_info gpio_list[] = { - {"H_LED0", GPIO_A, (1<<0), GPIO_ODR_HIGH}, - {"H_LED1", GPIO_A, (1<<1), GPIO_ODR_HIGH}, - {"H_LED2", GPIO_A, (1<<2), GPIO_ODR_HIGH}, - {"H_LED3", GPIO_A, (1<<3), GPIO_ODR_HIGH}, - {"H_LED4", GPIO_A, (1<<4), GPIO_ODR_HIGH}, - {"H_LED5", GPIO_A, (1<<5), GPIO_ODR_HIGH}, - {"H_LED6", GPIO_A, (1<<6), GPIO_ODR_HIGH}, - {"L_LED0", GPIO_I, (1<<0), GPIO_ODR_HIGH}, - {"L_LED1", GPIO_I, (1<<1), GPIO_ODR_HIGH}, - {"L_LED2", GPIO_I, (1<<2), GPIO_ODR_HIGH}, - {"L_LED3", GPIO_I, (1<<3), GPIO_ODR_HIGH}, - {"L_LED4", GPIO_I, (1<<4), GPIO_ODR_HIGH}, - {"L_LED5", GPIO_I, (1<<5), GPIO_ODR_HIGH}, - {"L_LED6", GPIO_I, (1<<6), GPIO_ODR_HIGH}, - {"BUSY_LED", GPIO_J, (1<<0), GPIO_OUT_LOW}, - {"GOOD_LED", GPIO_J, (1<<1), GPIO_OUT_HIGH}, - {"FAIL_LED", GPIO_J, (1<<2), GPIO_OUT_LOW}, - {"SW0", GPIO_E, (1<<0), GPIO_INPUT}, - {"SW1", GPIO_E, (1<<1), GPIO_INPUT | GPIO_PULL_DOWN}, - {"SW2", GPIO_E, (1<<2), GPIO_INPUT | GPIO_PULL_DOWN}, - {"SW3", GPIO_E, (1<<3), GPIO_INPUT | GPIO_PULL_DOWN}, - {"START_SW", GPIO_E, (1<<4), GPIO_INT_FALLING, test_interrupt}, - /* Unimplemented signals which we need to emulate for now */ - GPIO_SIGNAL_NOT_IMPLEMENTED("ENTERING_RW"), -}; -BUILD_ASSERT(ARRAY_SIZE(gpio_list) == GPIO_COUNT); +#include "gpio_list.h" /* Pins with alternate functions */ const struct gpio_alt_func gpio_alt_funcs[] = { diff --git a/board/it8380dev/board.h b/board/it8380dev/board.h index dc1fe01187..04d3f1b4c0 100644 --- a/board/it8380dev/board.h +++ b/board/it8380dev/board.h @@ -13,35 +13,7 @@ /* stubbed features */ #undef CONFIG_LID_SWITCH -enum gpio_signal { - GPIO_H_LED0, - GPIO_H_LED1, - GPIO_H_LED2, - GPIO_H_LED3, - GPIO_H_LED4, - GPIO_H_LED5, - GPIO_H_LED6, - GPIO_L_LED0, - GPIO_L_LED1, - GPIO_L_LED2, - GPIO_L_LED3, - GPIO_L_LED4, - GPIO_L_LED5, - GPIO_L_LED6, - GPIO_BUSY_LED, - GPIO_GOOD_LED, - GPIO_FAIL_LED, - GPIO_SW1, - GPIO_SW2, - GPIO_SW3, - GPIO_SW4, - GPIO_START_SW, - /* Unimplemented GPIOs */ - GPIO_ENTERING_RW, - - /* Number of GPIOs; not an actual GPIO */ - GPIO_COUNT -}; +#include "gpio_signal.h" #endif /* !__ASSEMBLER__ */ #endif /* __BOARD_H */ diff --git a/board/it8380dev/gpio.inc b/board/it8380dev/gpio.inc new file mode 100644 index 0000000000..dd8ffebde2 --- /dev/null +++ b/board/it8380dev/gpio.inc @@ -0,0 +1,32 @@ +/* -*- mode:c -*- + * + * Copyright (c) 2014 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +GPIO(H_LED0, A, 0, GPIO_ODR_HIGH) +GPIO(H_LED1, A, 1, GPIO_ODR_HIGH) +GPIO(H_LED2, A, 2, GPIO_ODR_HIGH) +GPIO(H_LED3, A, 3, GPIO_ODR_HIGH) +GPIO(H_LED4, A, 4, GPIO_ODR_HIGH) +GPIO(H_LED5, A, 5, GPIO_ODR_HIGH) +GPIO(H_LED6, A, 6, GPIO_ODR_HIGH) +GPIO(L_LED0, I, 0, GPIO_ODR_HIGH) +GPIO(L_LED1, I, 1, GPIO_ODR_HIGH) +GPIO(L_LED2, I, 2, GPIO_ODR_HIGH) +GPIO(L_LED3, I, 3, GPIO_ODR_HIGH) +GPIO(L_LED4, I, 4, GPIO_ODR_HIGH) +GPIO(L_LED5, I, 5, GPIO_ODR_HIGH) +GPIO(L_LED6, I, 6, GPIO_ODR_HIGH) +GPIO(BUSY_LED, J, 0, GPIO_OUT_LOW) +GPIO(GOOD_LED, J, 1, GPIO_OUT_HIGH) +GPIO(FAIL_LED, J, 2, GPIO_OUT_LOW) +GPIO(SW1, E, 0, GPIO_INPUT) +GPIO(SW2, E, 1, GPIO_INPUT | GPIO_PULL_DOWN) +GPIO(SW3, E, 2, GPIO_INPUT | GPIO_PULL_DOWN) +GPIO(SW4, E, 3, GPIO_INPUT | GPIO_PULL_DOWN) +GPIO(START_SW, E, 4, GPIO_INT_FALLING, test_interrupt) + +/* Unimplemented signals which we need to emulate for now */ +UNIMPLEMENTED(ENTERING_RW) -- cgit v1.2.1