Skip to content
Snippets Groups Projects
Commit a30f519b authored by Tom Rix's avatar Tom Rix Committed by Wolfgang Denk
Browse files

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: default avatarTom Rix <Tom.Rix@windriver.com>
Signed-off-by: default avatarJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
parent 718763c4
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment