1
0
Fork 0

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>
utp
Tom Rix 2009-06-02 20:53:56 -05:00 committed by Wolfgang Denk
parent 718763c474
commit a30f519bd0
2 changed files with 68 additions and 3 deletions

View File

@ -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;
}

View File

@ -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