Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f8c48d9 authored by Enric Balletbo i Serra's avatar Enric Balletbo i Serra Committed by Tony Lindgren
Browse files

omap3: Introduce function to detect the IGEP v2 hardwarerevision



There are currently two versions of IGEP v2 board, this patch introduces a
function to detect the hardware revision of IGEP board.

  --------------------------
 | Id. | Hw Rev. | GPIO 28  |
  --------------------------
 |  0  |   B/C   |   high   |
 |  1  |   C     |   low    |
  --------------------------

Signed-off-by: default avatarEnric Balletbo i Serra <eballetbo@gmail.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent bee15390
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
@@ -46,6 +46,49 @@
#define IGEP2_GPIO_WIFI_NPD 	94
#define IGEP2_GPIO_WIFI_NRESET 	95

/*
 * IGEP2 Hardware Revision Table
 *
 *  --------------------------
 * | Id. | Hw Rev. | HW0 (28) |
 *  --------------------------
 * |  0  |   B/C   |   high   |
 * |  1  |   C     |   low    |
 *  --------------------------
 */

#define IGEP2_BOARD_HWREV_B	0
#define IGEP2_BOARD_HWREV_C	1

static u8 hwrev;

static void __init igep2_get_revision(void)
{
	u8 ret;

	omap_mux_init_gpio(IGEP2_GPIO_LED1_RED, OMAP_PIN_INPUT);

	if ((gpio_request(IGEP2_GPIO_LED1_RED, "GPIO_HW0_REV") == 0) &&
	    (gpio_direction_input(IGEP2_GPIO_LED1_RED) == 0)) {
		ret = gpio_get_value(IGEP2_GPIO_LED1_RED);
		if (ret == 0) {
			pr_info("IGEP2: Hardware Revision C (B-NON compatible)\n");
			hwrev = IGEP2_BOARD_HWREV_C;
		} else if (ret ==  1) {
			pr_info("IGEP2: Hardware Revision B/C (B compatible)\n");
			hwrev = IGEP2_BOARD_HWREV_B;
		} else {
			pr_err("IGEP2: Unknown Hardware Revision\n");
			hwrev = -1;
		}
	} else {
		pr_warning("IGEP2: Could not obtain gpio GPIO_HW0_REV\n");
		pr_err("IGEP2: Unknown Hardware Revision\n");
	}

	gpio_free(IGEP2_GPIO_LED1_RED);
}

#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
	defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)

@@ -538,6 +581,10 @@ static struct omap_board_mux board_mux[] __initdata = {
static void __init igep2_init(void)
{
	omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);

	/* Get IGEP2 hardware revision */
	igep2_get_revision();

	igep2_i2c_init();
	platform_add_devices(igep2_devices, ARRAY_SIZE(igep2_devices));
	omap_serial_init();