diff options
author | David Anders <x0132446@ti.com> | 2010-08-27 12:22:22 -0500 |
---|---|---|
committer | Sebastien Jan <s-jan@ti.com> | 2010-09-01 18:20:37 +0200 |
commit | 93bbc42de36f8ad0d238a1e8c957137b26887dee (patch) | |
tree | 3bda154e32f42cde987960c5e1ff5b486a5a1c02 /arch | |
parent | e3acc167de4ba3f69b05b9a72cdfed1d3f599b3a (diff) |
OMAP4: PandaBoard: add board revision reporting
Add initial support for determining the board revision of the
PandaBoard and reports the version on boot. This will assist in
determining which board is being used when providing techincal
support. The board revision will also be used to determine which
GPIO and other configuration changes are needed between different
hardware revisions of the PandaBoard.
Signed-off-by: David Anders <x0132446@ti.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/board-omap4panda.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index 692ea25188b1..d7e3f47b7b8f 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -53,6 +53,11 @@ #define HUB_POWER 1 #define HUB_NRESET 39 +#define GPIO_BOARD_ID0 182 +#define GPIO_BOARD_ID1 101 +#define GPIO_BOARD_ID2 171 + +static int board_revision; /* wl127x BT, FM, GPS connectivity chip */ static int gpios[] = {46, -1, -1}; @@ -476,9 +481,54 @@ void wlan_1273_config() } #endif +static void __init panda_boardrev_init(void) +{ + int ret; + + ret = gpio_request(GPIO_BOARD_ID0, "board_id0"); + if (ret) { + pr_err("Cannot request GPIO %d\n", GPIO_BOARD_ID0); + goto error1; + } + + ret = gpio_request(GPIO_BOARD_ID1, "board_id1"); + if (ret) { + pr_err("Cannot request GPIO %d\n", GPIO_BOARD_ID1); + goto error2; + } + + ret = gpio_request(GPIO_BOARD_ID2, "board_id2"); + if (ret) { + pr_err("Cannot request GPIO %d\n", GPIO_BOARD_ID2); + goto error3; + } + gpio_export(GPIO_BOARD_ID0, 0); + gpio_export(GPIO_BOARD_ID1, 0); + gpio_export(GPIO_BOARD_ID2, 0); + + board_revision = gpio_get_value(GPIO_BOARD_ID0); + board_revision |= (gpio_get_value(GPIO_BOARD_ID1)<<1); + board_revision |= (gpio_get_value(GPIO_BOARD_ID2)<<2); + + pr_info("PandaBoard Revision: %03d\n", board_revision); + return; + +error3: + gpio_free(GPIO_BOARD_ID1); +error2: + gpio_free(GPIO_BOARD_ID0); +error1: + board_revision = 0; + pr_err("Unable to detemine PandaBoard Revision\n"); + return; + +} + static void __init omap_panda_init(void) { + panda_boardrev_init(); + omap4_i2c_init(); omap4_display_init(); platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); |