gpio: cosmetic changes to tristate_gpios.c
This patch makes a few cosmetic changes: - Rename tristate_gpios.c to gpio.c since it will soon be used for binary GPIOs as well. - Rename gpio_get_tristates() to gpio_base3_value() - The binary version will be called gpio_base2_value(). - Updates call sites. - Change the variable name "id" to something more generic. BUG=none BRANCH=none TEST=compiled for veyron_pinky and storm Change-Id: Iab7e32f4e9d70853f782695cfe6842accff1df64 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: c47d0f33ea1a6e9515211b834009cf47a171953f Original-Change-Id: I36d88c67cb118efd1730278691dc3e4ecb6055ee Original-Signed-off-by: David Hendricks <dhendrix@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/228324 Reviewed-on: http://review.coreboot.org/9411 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
7a89d8550d
commit
3fc6368e1c
|
@ -37,12 +37,12 @@ void gpio_output(gpio_t gpio, int value);
|
||||||
/*
|
/*
|
||||||
* Read the value presented by the set of GPIOs, when each pin is interpreted
|
* Read the value presented by the set of GPIOs, when each pin is interpreted
|
||||||
* as a base-3 digit (LOW = 0, HIGH = 1, Z/floating = 2).
|
* as a base-3 digit (LOW = 0, HIGH = 1, Z/floating = 2).
|
||||||
* Example: X1 = Z, X2 = 1 -> gpio_get_tristates({GPIO(X1), GPIO(X2)}) = 5
|
* Example: X1 = Z, X2 = 1 -> gpio_base3_value({GPIO(X1), GPIO(X2)}) = 5
|
||||||
* BASE3() from <base3.h> can generate numbers to compare the result to.
|
* BASE3() from <base3.h> can generate numbers to compare the result to.
|
||||||
*
|
*
|
||||||
* gpio[]: pin positions to read. gpio[0] is less significant than gpio[1].
|
* gpio[]: pin positions to read. gpio[0] is less significant than gpio[1].
|
||||||
* num_gpio: number of pins to read.
|
* num_gpio: number of pins to read.
|
||||||
*/
|
*/
|
||||||
int gpio_get_tristates(gpio_t gpio[], int num_gpio);
|
int gpio_base3_value(gpio_t gpio[], int num_gpio);
|
||||||
|
|
||||||
#endif /* __SRC_INCLUDE_GPIO_H__ */
|
#endif /* __SRC_INCLUDE_GPIO_H__ */
|
||||||
|
|
|
@ -92,7 +92,7 @@ ramstage-$(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) += edid.c
|
||||||
ramstage-y += memrange.c
|
ramstage-y += memrange.c
|
||||||
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
|
ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c
|
||||||
ramstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
ramstage-$(CONFIG_TIMER_QUEUE) += timer_queue.c
|
||||||
ramstage-$(CONFIG_TERTIARY_BOARD_ID) += tristate_gpios.c
|
ramstage-$(CONFIG_TERTIARY_BOARD_ID) += gpio.c
|
||||||
ramstage-$(CONFIG_GENERIC_UDELAY) += timer.c
|
ramstage-$(CONFIG_GENERIC_UDELAY) += timer.c
|
||||||
|
|
||||||
romstage-y += cbmem_common.c dynamic_cbmem.c
|
romstage-y += cbmem_common.c dynamic_cbmem.c
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include <delay.h>
|
#include <delay.h>
|
||||||
#include <gpio.h>
|
#include <gpio.h>
|
||||||
|
|
||||||
int gpio_get_tristates(gpio_t gpio[], int num_gpio)
|
int gpio_base3_value(gpio_t gpio[], int num_gpio)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* GPIOs which are tied to stronger external pull up or pull down
|
* GPIOs which are tied to stronger external pull up or pull down
|
||||||
|
@ -36,7 +36,7 @@ int gpio_get_tristates(gpio_t gpio[], int num_gpio)
|
||||||
static const char tristate_char[] = {[0] = '0', [1] = '1', [Z] = 'Z'};
|
static const char tristate_char[] = {[0] = '0', [1] = '1', [Z] = 'Z'};
|
||||||
int temp;
|
int temp;
|
||||||
int index;
|
int index;
|
||||||
int id = 0;
|
int result = 0;
|
||||||
char value[num_gpio];
|
char value[num_gpio];
|
||||||
|
|
||||||
/* Enable internal pull up */
|
/* Enable internal pull up */
|
||||||
|
@ -70,13 +70,13 @@ int gpio_get_tristates(gpio_t gpio[], int num_gpio)
|
||||||
temp = gpio_get(gpio[index]);
|
temp = gpio_get(gpio[index]);
|
||||||
temp |= ((value[index] ^ temp) << 1);
|
temp |= ((value[index] ^ temp) << 1);
|
||||||
printk(BIOS_DEBUG, "%c ", tristate_char[temp]);
|
printk(BIOS_DEBUG, "%c ", tristate_char[temp]);
|
||||||
id = (id * 3) + temp;
|
result = (result * 3) + temp;
|
||||||
}
|
}
|
||||||
printk(BIOS_DEBUG, "= %d\n", id);
|
printk(BIOS_DEBUG, "= %d\n", result);
|
||||||
|
|
||||||
/* Disable pull up / pull down to conserve power */
|
/* Disable pull up / pull down to conserve power */
|
||||||
for (index = 0; index < num_gpio; ++index)
|
for (index = 0; index < num_gpio; ++index)
|
||||||
gpio_input(gpio[index]);
|
gpio_input(gpio[index]);
|
||||||
|
|
||||||
return id;
|
return result;
|
||||||
}
|
}
|
|
@ -29,7 +29,7 @@ uint8_t board_id(void)
|
||||||
[1] = GPIO(T1), [0] = GPIO(Q3),}; /* Q3 is LSB */
|
[1] = GPIO(T1), [0] = GPIO(Q3),}; /* Q3 is LSB */
|
||||||
|
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio));
|
id = gpio_base3_value(gpio, ARRAY_SIZE(gpio));
|
||||||
|
|
||||||
printk(BIOS_SPEW, "Board TRISTATE ID: %d.\n", id);
|
printk(BIOS_SPEW, "Board TRISTATE ID: %d.\n", id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ uint8_t board_id(void)
|
||||||
[1] = GPIO(T1), [0] = GPIO(Q3),}; /* Q3 is LSB */
|
[1] = GPIO(T1), [0] = GPIO(Q3),}; /* Q3 is LSB */
|
||||||
|
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio));
|
id = gpio_base3_value(gpio, ARRAY_SIZE(gpio));
|
||||||
|
|
||||||
printk(BIOS_SPEW, "Board TRISTATE ID: %d.\n", id);
|
printk(BIOS_SPEW, "Board TRISTATE ID: %d.\n", id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ uint8_t board_id(void)
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
gpio_t gpio[] = {[1] = BD_ID1, [0] = BD_ID0}; /* ID0 is LSB */
|
gpio_t gpio[] = {[1] = BD_ID1, [0] = BD_ID0}; /* ID0 is LSB */
|
||||||
|
|
||||||
id = gpio_get_tristates(gpio, ARRAY_SIZE(gpio));
|
id = gpio_base3_value(gpio, ARRAY_SIZE(gpio));
|
||||||
}
|
}
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
|
|
|
@ -25,8 +25,8 @@
|
||||||
/*
|
/*
|
||||||
* Storm boards dedicate to the board ID three GPIOs in tertiary mode: 29, 30
|
* Storm boards dedicate to the board ID three GPIOs in tertiary mode: 29, 30
|
||||||
* and 68. On proto0 GPIO68 is used and tied low, so it reads as 'zero' by
|
* and 68. On proto0 GPIO68 is used and tied low, so it reads as 'zero' by
|
||||||
* gpio_get_tristates(), whereas the other two pins are not connected
|
* gpio_base3_value(), whereas the other two pins are not connected
|
||||||
* and read as 'two'. This results in gpio_get_tristates() returning
|
* and read as 'two'. This results in gpio_base3_value() returning
|
||||||
* 8 on proto0.
|
* 8 on proto0.
|
||||||
*
|
*
|
||||||
* Three tertitiary signals could represent 27 different values. To make
|
* Three tertitiary signals could represent 27 different values. To make
|
||||||
|
@ -45,7 +45,7 @@ static uint8_t get_board_id(void)
|
||||||
gpio_t hw_rev_gpios[] = {[2] = 68, [1] = 30, [0] = 29}; /* 29 is LSB */
|
gpio_t hw_rev_gpios[] = {[2] = 68, [1] = 30, [0] = 29}; /* 29 is LSB */
|
||||||
int offset = 19;
|
int offset = 19;
|
||||||
|
|
||||||
bid = gpio_get_tristates(hw_rev_gpios, ARRAY_SIZE(hw_rev_gpios));
|
bid = gpio_base3_value(hw_rev_gpios, ARRAY_SIZE(hw_rev_gpios));
|
||||||
bid = (bid + offset) % 27;
|
bid = (bid + offset) % 27;
|
||||||
printk(BIOS_INFO, "Board ID %d\n", bid);
|
printk(BIOS_INFO, "Board ID %d\n", bid);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue