summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorDavid Anders <x0132446@ti.com>2010-08-27 12:22:22 -0500
committerSebastien Jan <s-jan@ti.com>2010-09-01 18:20:37 +0200
commit93bbc42de36f8ad0d238a1e8c957137b26887dee (patch)
tree3bda154e32f42cde987960c5e1ff5b486a5a1c02 /arch
parente3acc167de4ba3f69b05b9a72cdfed1d3f599b3a (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.c50
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));