[oe] [PATCH v3] u-boot_overo: current version does not boot / read expansion board ID.

Andreas Mueller schnitzeltony at gmx.de
Mon Apr 18 23:36:31 UTC 2011


Patches & settings were taken from [1] / branch overo.
For more informations see [2].

Tests performed:
* boot kernel 2.6.37 from SDCard
* boot kernel 2.6.30 from NAND
* variable manipulations setenv printenv savenv
* NAND erase

[1] git://gitorious.org/gumstix-oe/mainline.git
[2] http://gitorious.org/gumstix-oe/mainline/blobs/overo/recipes/u-boot/u-boot-omap3_git.bb

Signed-off-by: Andreas Mueller <schnitzeltony at gmx.de>
---
 conf/machine/overo.conf                            |    3 +-
 recipes/u-boot/u-boot-git/overo/expansion.patch    |  148 ++++++++++++++++++++
 recipes/u-boot/u-boot-git/overo/overo-gpio10.patch |   13 ++
 recipes/u-boot/u-boot_git.bb                       |   10 +-
 4 files changed, 169 insertions(+), 5 deletions(-)
 create mode 100644 recipes/u-boot/u-boot-git/overo/expansion.patch
 create mode 100644 recipes/u-boot/u-boot-git/overo/overo-gpio10.patch

diff --git a/conf/machine/overo.conf b/conf/machine/overo.conf
index e22cd6e..ba6aebe 100644
--- a/conf/machine/overo.conf
+++ b/conf/machine/overo.conf
@@ -8,7 +8,8 @@ PREFERRED_PROVIDER_virtual/kernel = "linux-omap-psp"
 TARGET_ARCH = "arm"
 MACHINE_FEATURES = "kernel26 screen apm usbgadget usbhost vfat alsa touchscreen"
 
-UBOOT_MACHINE_overo = "omap3_overo_config"
+PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
+UBOOT_MACHINE = "omap3_overo_config"
 
 SERIAL_CONSOLE = "115200 ttyS2"
 
diff --git a/recipes/u-boot/u-boot-git/overo/expansion.patch b/recipes/u-boot/u-boot-git/overo/expansion.patch
new file mode 100644
index 0000000..3320a55
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/overo/expansion.patch
@@ -0,0 +1,148 @@
+From: Steve Sakoman <steve at sakoman.com>
+Date: Mon, 20 Sep 2010 15:05:14 +0000 (-0700)
+Subject: ARMV7: OMAP3: Add expansion board detection for Overo
+X-Git-Url: http://www.sakoman.com/cgi-bin/gitweb.cgi?p=u-boot.git;a=commitdiff_plain;h=01ed2c6d5dea9f0a771f37b4c23c31f4566a13b7
+
+ARMV7: OMAP3: Add expansion board detection for Overo
+
+Overo expansion boards contain an i2c eeprom to identify themselves.
+This patch adds code to read and parse the eeprom contents.  It prints
+the expansion board name and revision and modifies environment variables
+as appropriate.
+
+Signed-off-by: Steve Sakoman <steve at sakoman.com>
+---
+
+diff --git a/board/overo/overo.c b/board/overo/overo.c
+index 9c92693..293c4e0 100644
+--- a/board/overo/overo.c
++++ b/board/overo/overo.c
+@@ -40,6 +40,30 @@
+ #include <asm/mach-types.h>
+ #include "overo.h"
+ 
++#define TWL4030_I2C_BUS			0
++#define EXPANSION_EEPROM_I2C_BUS	2
++#define EXPANSION_EEPROM_I2C_ADDRESS	0x51
++
++#define GUMSTIX_SUMMIT			0x01000200
++#define GUMSTIX_TOBI			0x02000200
++#define GUMSTIX_TOBI_DUO		0x03000200
++#define GUMSTIX_PALO35			0x04000200
++#define GUMSTIX_PALO43			0x05000200
++#define GUMSTIX_CHESTNUT43		0x06000200
++#define GUMSTIX_PINTO			0x07000200
++#define GUMSTIX_GALLOP43		0x08000200
++
++#define GUMSTIX_NO_EEPROM		0xffffffff
++
++static struct {
++	unsigned int device_vendor;
++	unsigned char revision;
++	unsigned char content;
++	char fab_revision[8];
++	char env_var[16];
++	char env_setting[64];
++} expansion_config;
++
+ #if defined(CONFIG_CMD_NET)
+ static void setup_net_chip(void);
+ #endif
+@@ -137,6 +161,29 @@ int get_sdio2_config(void)
+ }
+ 
+ /*
++ * Routine: get_expansion_id
++ * Description: This function checks for expansion board by checking I2C
++ *		bus 2 for the availability of an AT24C01B serial EEPROM.
++ *		returns the device_vendor field from the EEPROM
++ */
++unsigned int get_expansion_id(void)
++{
++	i2c_set_bus_num(EXPANSION_EEPROM_I2C_BUS);
++
++	/* return GUMSTIX_NO_EEPROM if eeprom doesn't respond */
++	if (i2c_probe(EXPANSION_EEPROM_I2C_ADDRESS) == 1)
++		return GUMSTIX_NO_EEPROM;
++
++	/* read configuration data */
++	i2c_read(EXPANSION_EEPROM_I2C_ADDRESS, 0, 1, (u8 *)&expansion_config,
++		 sizeof(expansion_config));
++
++	i2c_set_bus_num(TWL4030_I2C_BUS);
++
++	return expansion_config.device_vendor;
++}
++
++/*
+  * Routine: misc_init_r
+  * Description: Configure board specific parts
+  */
+@@ -164,6 +211,55 @@ int misc_init_r(void)
+ 		printf("Unable to detect mmc2 connection type\n");
+ 	}
+ 
++	switch (get_expansion_id()) {
++	case GUMSTIX_SUMMIT:
++		printf("Recognized Summit expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "dvi");
++		break;
++	case GUMSTIX_TOBI:
++		printf("Recognized Tobi expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "dvi");
++		break;
++	case GUMSTIX_TOBI_DUO:
++		printf("Recognized Tobi Duo expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		break;
++	case GUMSTIX_PALO35:
++		printf("Recognized Palo35 expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "lcd35");
++		break;
++	case GUMSTIX_PALO43:
++		printf("Recognized Palo43 expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "lcd43");
++		break;
++	case GUMSTIX_CHESTNUT43:
++		printf("Recognized Chestnut43 expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "lcd43");
++		break;
++	case GUMSTIX_PINTO:
++		printf("Recognized Pinto expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		break;
++	case GUMSTIX_GALLOP43:
++		printf("Recognized Gallop43 expansion board (rev %d %s)\n",
++			expansion_config.revision, expansion_config.fab_revision);
++		setenv("defaultdisplay", "lcd43");
++		break;
++	case GUMSTIX_NO_EEPROM:
++		printf("No EEPROM on expansion board\n");
++		break;
++	default:
++		printf("Unrecognized expansion board\n");
++	}
++
++	if (expansion_config.content == 1)
++		setenv(expansion_config.env_var, expansion_config.env_setting);
++
+ 	dieid_num_r();
+ 
+ 	return 0;
+diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h
+index 69f9126..29f0aa8 100644
+--- a/include/configs/omap3_overo.h
++++ b/include/configs/omap3_overo.h
+@@ -120,6 +120,7 @@
+ #define CONFIG_SYS_I2C_SLAVE		1
+ #define CONFIG_SYS_I2C_BUS		0
+ #define CONFIG_SYS_I2C_BUS_SELECT	1
++#define CONFIG_I2C_MULTI_BUS		1
+ #define CONFIG_DRIVER_OMAP34XX_I2C	1
+ 
+ /*
diff --git a/recipes/u-boot/u-boot-git/overo/overo-gpio10.patch b/recipes/u-boot/u-boot-git/overo/overo-gpio10.patch
new file mode 100644
index 0000000..202471f
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/overo/overo-gpio10.patch
@@ -0,0 +1,13 @@
+diff --git a/board/overo/overo.h b/board/overo/overo.h
+index 68e1243..9fb7a63 100644
+--- a/board/overo/overo.h
++++ b/board/overo/overo.h
+@@ -299,7 +299,7 @@ const omap3_sysinfo sysinfo = {
+ 	MUX_VAL(CP(SYS_BOOT5),		(IEN  | PTD | DIS | M4)) /*GPIO_7*/\
+ 	MUX_VAL(CP(SYS_BOOT6),		(IDIS | PTD | DIS | M4)) /*GPIO_8*/\
+ 	MUX_VAL(CP(SYS_OFF_MODE),	(IEN  | PTD | DIS | M0)) /*SYS_OFF_MODE*/\
+-	MUX_VAL(CP(SYS_CLKOUT1),	(IEN  | PTD | DIS | M0)) /*SYS_CLKOUT1*/\
++	MUX_VAL(CP(SYS_CLKOUT1),	(IEN  | PTU | EN  | M4)) /*GPIO_10*/\
+ 	MUX_VAL(CP(SYS_CLKOUT2),	(IEN  | PTU | EN  | M4)) /*GPIO_186*/\
+ 	MUX_VAL(CP(ETK_CLK_ES2),	(IEN  | PTU | EN  | M2)) /*MMC3_CLK*/\
+ 	MUX_VAL(CP(ETK_CTL_ES2),	(IEN  | PTU | EN  | M2)) /*MMC3_CMD*/\
diff --git a/recipes/u-boot/u-boot_git.bb b/recipes/u-boot/u-boot_git.bb
index 2cf5b12..6e04b26 100644
--- a/recipes/u-boot/u-boot_git.bb
+++ b/recipes/u-boot/u-boot_git.bb
@@ -197,10 +197,12 @@ do_compile_omapzoom36x () {
         oe_runmake tools
 }
 
-SRC_URI_overo = "git://www.sakoman.com/git/u-boot.git;branch=omap4-exp;protocol=git \
-"
-SRCREV_overo = "261733408a27d14590cf3ec6b596461808050e32"
-PV_overo = "2010.12+${PR}+gitr${SRCREV}"
+SRC_URI_overo = "git://git.denx.de/u-boot.git;branch=master;protocol=git \
+                 file://expansion.patch \
+                 file://overo-gpio10.patch \
+                "
+SRCREV_overo = "1e4e5ef0469050f014aee1204dae8a9ab6053e49"
+PV_overo = "2010.9+${PR}+git${SRCREV}"
 
 SRC_URI_omap4430-panda = "git://www.sakoman.com/git/u-boot.git;branch=omap4-exp;protocol=git \
                           file://fix-break-caused-by-new-binutils.patch \
-- 
1.7.2.3





More information about the Openembedded-devel mailing list