[U-Boot] [PATCH] OMAP3: Beagle: Update revision detection
Dirk Behme
dirk.behme at googlemail.com
Wed Dec 16 17:53:01 CET 2009
New BeagleBoard revision C4 uses a new ID. Update revision detection.
Signed-off-by: Dirk Behme <dirk.behme at googlemail.com>
---
Tested on C1/2 and C4 (prototype).
Patch against v2009.11
Known C4 changes:
- Use OMAP3 720MHz devices.
- Change in the way the USB Host PHY is powered.
(to be added later based on this patch)
board/ti/beagle/beagle.c | 68 ++++++++++++++++++++++++++++++-----------------
board/ti/beagle/beagle.h | 9 ++++--
2 files changed, 51 insertions(+), 26 deletions(-)
Index: u-boot-main/board/ti/beagle/beagle.c
===================================================================
--- u-boot-main.orig/board/ti/beagle/beagle.c
+++ u-boot-main/board/ti/beagle/beagle.c
@@ -38,7 +38,7 @@
#include <asm/mach-types.h>
#include "beagle.h"
-static int beagle_revision_c;
+static int beagle_revision;
/*
* Routine: board_init
@@ -60,41 +60,61 @@ int board_init(void)
/*
* Routine: beagle_get_revision
* Description: Return the revision of the BeagleBoard this code is running on.
- * If it is a revision Ax/Bx board, this function returns 0,
- * on a revision C board you will get a 1.
*/
int beagle_get_revision(void)
{
- return beagle_revision_c;
+ return beagle_revision;
}
/*
* Routine: beagle_identify
- * Description: Detect if we are running on a Beagle revision Ax/Bx or
- * Cx. This can be done by GPIO_171. If this is low, we are
- * running on a revision C board.
+ * Description: Detect if we are running on a Beagle revision Ax/Bx,
+ * C1/2, C3, C4 or D. This can be done by reading
+ * the level of GPIO173, GPIO172 and GPIO171. This should
+ * result in
+ * GPIO173, GPIO172, GPIO171: 1 1 1 => Ax/Bx
+ * GPIO173, GPIO172, GPIO171: 1 1 0 => C1/2
+ * GPIO173, GPIO172, GPIO171: 1 0 0 => C3
+ * GPIO173, GPIO172, GPIO171: 1 0 1 => C4
+ * GPIO173, GPIO172, GPIO171: 0 0 0 => D
*/
void beagle_identify(void)
{
- beagle_revision_c = 0;
- if (!omap_request_gpio(171)) {
- unsigned int val;
-
- omap_set_gpio_direction(171, 1);
- val = omap_get_gpio_datain(171);
- omap_free_gpio(171);
-
- if (val)
- beagle_revision_c = 0;
- else
- beagle_revision_c = 1;
- }
+ omap_request_gpio(171);
+ omap_request_gpio(172);
+ omap_request_gpio(173);
+ omap_set_gpio_direction(171, 1);
+ omap_set_gpio_direction(172, 1);
+ omap_set_gpio_direction(173, 1);
+
+ beagle_revision = omap_get_gpio_datain(173) << 2 |
+ omap_get_gpio_datain(172) << 1 |
+ omap_get_gpio_datain(171);
+ omap_free_gpio(171);
+ omap_free_gpio(172);
+ omap_free_gpio(173);
printf("Board revision ");
- if (beagle_revision_c)
- printf("C\n");
- else
+
+ switch (beagle_revision) {
+ case REVISION_AXBX:
printf("Ax/Bx\n");
+ break;
+ case REVISION_C1:
+ printf("C1/2\n");
+ break;
+ case REVISION_C3:
+ printf("C3\n");
+ break;
+ case REVISION_C4:
+ printf("C4\n");
+ break;
+ case REVISION_D:
+ printf("D\n");
+ break;
+ default:
+ printf("unknown 0x%02x\n", beagle_revision);
+ }
}
/*
@@ -137,7 +157,7 @@ void set_muxconf_regs(void)
{
MUX_BEAGLE();
- if (beagle_revision_c) {
+ if (beagle_revision != REVISION_AXBX) {
MUX_BEAGLE_C();
}
}
Index: u-boot-main/board/ti/beagle/beagle.h
===================================================================
--- u-boot-main.orig/board/ti/beagle/beagle.h
+++ u-boot-main/board/ti/beagle/beagle.h
@@ -33,7 +33,12 @@ const omap3_sysinfo sysinfo = {
#endif
};
-#define BOARD_REVISION_MASK (0x1 << 11)
+/* BeagleBoard revisions */
+#define REVISION_AXBX 0x7
+#define REVISION_C1 0x6
+#define REVISION_C3 0x4
+#define REVISION_C4 0x5
+#define REVISION_D 0x0
/*
* IEN - Input Enable
@@ -264,7 +269,7 @@ const omap3_sysinfo sysinfo = {
MUX_VAL(CP(HDQ_SIO), (IDIS | PTU | EN | M4)) /*GPIO_170*/\
MUX_VAL(CP(MCSPI1_CLK), (IEN | PTU | EN | M4)) /*GPIO_171*/\
MUX_VAL(CP(MCSPI1_SIMO), (IEN | PTU | EN | M4)) /*GPIO_172*/\
- MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTD | DIS | M0)) /*McSPI1_SOMI*/\
+ MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTU | EN | M4)) /*GPIO_173*/\
MUX_VAL(CP(MCSPI1_CS0), (IEN | PTD | EN | M0)) /*McSPI1_CS0*/\
MUX_VAL(CP(MCSPI1_CS1), (IDIS | PTD | EN | M0)) /*McSPI1_CS1*/\
MUX_VAL(CP(MCSPI1_CS2), (IDIS | PTD | DIS | M4)) /*GPIO_176*/\
More information about the U-Boot
mailing list