diff options
| author | Tom Rix <Tom.Rix@windriver.com> | 2009-06-02 20:53:56 -0500 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2009-06-12 20:45:47 +0200 | 
| commit | a30f519bd0cde78ba46b424314de94fdab863726 (patch) | |
| tree | 9071cfc29d22d3722acb20c28f4e61f26d54bf90 | |
| parent | 718763c4745fd3d987a5576d2a67325e9444f9d4 (diff) | |
| download | olio-uboot-2014.01-a30f519bd0cde78ba46b424314de94fdab863726.tar.xz olio-uboot-2014.01-a30f519bd0cde78ba46b424314de94fdab863726.zip | |
ZOOM2 detect the version of the zoom2 board at runtime.
There are currently 3 versions of the zoom2 board.
The production board, that is currently being released.
The beta board, similar in form to the production board but not released.
The alpha board, a set of PCBs with a very limited circulation.
GPIO 94 is used to determine the version of the board. If GPIO 94 is clear,
the board is a production board, otherwise it is a beta board.
The alpha board will likely be mistaken for a beta board.  An alpha board
was unavailible for testing.
This has been tested on the beta and production boards.
Signed-off-by: Tom Rix <Tom.Rix@windriver.com>
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
| -rw-r--r-- | board/omap3/zoom2/zoom2.c | 62 | ||||
| -rw-r--r-- | board/omap3/zoom2/zoom2.h | 9 | 
2 files changed, 68 insertions, 3 deletions
| diff --git a/board/omap3/zoom2/zoom2.c b/board/omap3/zoom2/zoom2.c index e5c248de7..08fdafb64 100644 --- a/board/omap3/zoom2/zoom2.c +++ b/board/omap3/zoom2/zoom2.c @@ -33,6 +33,7 @@  #include <status_led.h>  #endif  #include <asm/io.h> +#include <asm/arch/gpio.h>  #include <asm/arch/mem.h>  #include <asm/arch/mux.h>  #include <asm/arch/sys_proto.h> @@ -60,6 +61,60 @@ static u32 gpmc_serial_TL16CP754C[GPMC_MAX_REG] = {  	0x1D0904C4, 0  }; +/* Used to track the revision of the board */ +static zoom2_revision revision = ZOOM2_REVISION_UNKNOWN; + +/* + * Routine: zoom2_get_revision + * Description: Return the revision of the Zoom2 this code is running on. + */ +zoom2_revision zoom2_get_revision(void) +{ +	return revision; +} + +/* + * Routine: zoom2_identify + * Description: Detect which version of Zoom2 we are running on. + */ +void zoom2_identify(void) +{ +	/* +	 * To check for production board vs beta board, +	 * check if gpio 94 is clear. +	 * +	 * No way yet to check for alpha board identity. +	 * Alpha boards were produced in very limited quantities +	 * and they are not commonly used.  They are mentioned here +	 * only for completeness. +	 */ +	if (!omap_request_gpio(94)) { +		unsigned int val; + +		omap_set_gpio_direction(94, 1); +		val = omap_get_gpio_datain(94); +		omap_free_gpio(94); + +		if (val) +			revision = ZOOM2_REVISION_BETA; +		else +			revision = ZOOM2_REVISION_PRODUCTION; +	} + +	printf("Board revision "); +	switch (revision) { +	case ZOOM2_REVISION_PRODUCTION: +		printf("Production\n"); +		break; +	case ZOOM2_REVISION_BETA: +		printf("Beta\n"); +		break; +	default: +		printf("Unknown\n"); +		break; +	} +} +  /*   * Routine: board_init   * Description: Early hardware init. @@ -96,10 +151,11 @@ int board_init (void)   * Routine: misc_init_r   * Description: Configure zoom board specific configurations   */ -int misc_init_r (void) +int misc_init_r(void)  { -	power_init_r (); -	dieid_num_r (); +	zoom2_identify(); +	power_init_r(); +	dieid_num_r();  	return 0;  } diff --git a/board/omap3/zoom2/zoom2.h b/board/omap3/zoom2/zoom2.h index cae8a7a7f..a21d1d689 100644 --- a/board/omap3/zoom2/zoom2.h +++ b/board/omap3/zoom2/zoom2.h @@ -32,6 +32,15 @@ const omap3_sysinfo sysinfo = {  	"NAND",  }; +typedef enum { +	ZOOM2_REVISION_UNKNOWN = 0, +	ZOOM2_REVISION_ALPHA, +	ZOOM2_REVISION_BETA, +	ZOOM2_REVISION_PRODUCTION +} zoom2_revision; + +zoom2_revision zoom2_get_revision(void); +  /*   * IEN	- Input Enable   * IDIS	- Input Disable |