|
@@ -33,6 +33,7 @@
|
|
|
#include <asm/io.h>
|
|
|
#include <asm/arch/mux.h>
|
|
|
#include <asm/arch/sys_proto.h>
|
|
|
+#include <asm/arch/gpio.h>
|
|
|
#include <asm/mach-types.h>
|
|
|
#include "beagle.h"
|
|
|
|
|
@@ -57,7 +58,7 @@ int board_init(void)
|
|
|
|
|
|
/*
|
|
|
* Routine: beagle_get_revision
|
|
|
- * Description: Return revision of the BeagleBoard this code is running on.
|
|
|
+ * 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.
|
|
|
*/
|
|
@@ -74,22 +75,25 @@ int beagle_get_revision(void)
|
|
|
*/
|
|
|
void beagle_identify(void)
|
|
|
{
|
|
|
- gpio_t *gpio6_base = (gpio_t *)OMAP34XX_GPIO6_BASE;
|
|
|
-
|
|
|
- /* Configure GPIO 171 as input */
|
|
|
- writel(readl(&gpio6_base->oe) | GPIO11, &gpio6_base->oe);
|
|
|
-
|
|
|
- /* Get value of GPIO 171 */
|
|
|
- beagle_revision_c = readl(&gpio6_base->datain) & BOARD_REVISION_MASK;
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
printf("Board revision ");
|
|
|
- if (beagle_revision_c) {
|
|
|
- printf("Ax/Bx\n");
|
|
|
- beagle_revision_c = 0;
|
|
|
- } else {
|
|
|
+ if (beagle_revision_c)
|
|
|
printf("C\n");
|
|
|
- beagle_revision_c = 1;
|
|
|
- }
|
|
|
+ else
|
|
|
+ printf("Ax/Bx\n");
|
|
|
}
|
|
|
|
|
|
/*
|