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 | u-boot-imx-a30f519bd0cde78ba46b424314de94fdab863726.zip u-boot-imx-a30f519bd0cde78ba46b424314de94fdab863726.tar.gz u-boot-imx-a30f519bd0cde78ba46b424314de94fdab863726.tar.bz2 |
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 e5c248d..08fdafb 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 cae8a7a..a21d1d6 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 |