diff mbox

[U-Boot,v3] omap3: overo: Select fdtfile for expansion board

Message ID 1402426956-21108-1-git-send-email-ashcharles@gmail.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Ash Charles June 10, 2014, 7:02 p.m. UTC
The u-boot Overo board actually supports both Overo (OMAP35xx)
and Overo Storm (AM/DM37xx) COMs with a range of different expansion
boards.  This provides a mechanism to select the an appropriate device
tree file based on the processor version and, if available, the
expansion board ID written on the expansion board EEPROM. To match the
3.15+ kernels, fdtfile names have this format:
 "omap3-overo[-storm]-<expansion board name>.dtb"

By default, we use "omap3-overo-storm-tobi.dtb".

Signed-off-by: Ash Charles <ashcharles@gmail.com>

Conflicts:
	include/configs/omap3_overo.h
---
 board/overo/overo.c           | 14 ++++++++++++++
 include/configs/omap3_overo.h | 10 +++++-----
 2 files changed, 19 insertions(+), 5 deletions(-)

Comments

Stefan Herbrechtsmeier June 10, 2014, 7:29 p.m. UTC | #1
Am 10.06.2014 21:02, schrieb Ash Charles:
> The u-boot Overo board actually supports both Overo (OMAP35xx)
> and Overo Storm (AM/DM37xx) COMs with a range of different expansion
> boards.  This provides a mechanism to select the an appropriate device
> tree file based on the processor version and, if available, the
> expansion board ID written on the expansion board EEPROM. To match the
> 3.15+ kernels, fdtfile names have this format:
>   "omap3-overo[-storm]-<expansion board name>.dtb"
>
> By default, we use "omap3-overo-storm-tobi.dtb".
>
> Signed-off-by: Ash Charles <ashcharles@gmail.com>
>
> Conflicts:
> 	include/configs/omap3_overo.h
> ---
>   board/overo/overo.c           | 14 ++++++++++++++
>   include/configs/omap3_overo.h | 10 +++++-----
>   2 files changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/board/overo/overo.c b/board/overo/overo.c
> index 62b50a8..13220c5 100644
> --- a/board/overo/overo.c
> +++ b/board/overo/overo.c
> @@ -267,12 +267,14 @@ int misc_init_r(void)
>   			expansion_config.revision,
>   			expansion_config.fab_revision);
>   		setenv("defaultdisplay", "dvi");
> +		setenv("expansionname", "summit");
>   		break;
>   	case GUMSTIX_TOBI:
>   		printf("Recognized Tobi expansion board (rev %d %s)\n",
>   			expansion_config.revision,
>   			expansion_config.fab_revision);
>   		setenv("defaultdisplay", "dvi");
> +		setenv("expansionname", "tobi");
>   		break;
>   	case GUMSTIX_TOBI_DUO:
>   		printf("Recognized Tobi Duo expansion board (rev %d %s)\n",
> @@ -293,12 +295,14 @@ int misc_init_r(void)
>   			expansion_config.revision,
>   			expansion_config.fab_revision);
>   		setenv("defaultdisplay", "lcd43");
> +		setenv("expansionname", "palo43");
>   		break;
>   	case GUMSTIX_CHESTNUT43:
>   		printf("Recognized Chestnut43 expansion board (rev %d %s)\n",
>   			expansion_config.revision,
>   			expansion_config.fab_revision);
>   		setenv("defaultdisplay", "lcd43");
> +		setenv("expansionname", "chestnut43");
>   		break;
>   	case GUMSTIX_PINTO:
>   		printf("Recognized Pinto expansion board (rev %d %s)\n",
> @@ -310,6 +314,7 @@ int misc_init_r(void)
>   			expansion_config.revision,
>   			expansion_config.fab_revision);
>   		setenv("defaultdisplay", "lcd43");
> +		setenv("expansionname", "gallop43");
>   		break;
>   	case GUMSTIX_ALTO35:
>   		printf("Recognized Alto35 expansion board (rev %d %s)\n",
> @@ -317,6 +322,7 @@ int misc_init_r(void)
>   			expansion_config.fab_revision);
>   		MUX_ALTO35();
>   		setenv("defaultdisplay", "lcd35");
> +		setenv("expansionname", "alto35");
>   		break;
>   	case GUMSTIX_STAGECOACH:
>   		printf("Recognized Stagecoach expansion board (rev %d %s)\n",
> @@ -349,8 +355,11 @@ int misc_init_r(void)
>   		break;
>   	case GUMSTIX_NO_EEPROM:
>   		puts("No EEPROM on expansion board\n");
> +		setenv("expansionname", "tobi");
>   		break;
>   	default:
> +		if (expansion_id == 0x0)
> +			setenv("expansionname", "tobi");
You should add an additional case (0x0) above GUMSTIX_NO_EEPROM but an 
un-programmed eeprom returns GUMSTIX_NO_EEPROM (0xffffffff).

>   		printf("Unrecognized expansion board 0x%08x\n", expansion_id);
>   		break;
>   	}
> @@ -360,6 +369,11 @@ int misc_init_r(void)
>   
>   	dieid_num_r();
>   
> +	if (get_cpu_family() == CPU_OMAP34XX)
> +		setenv("boardname", "overo");
> +	else
> +		setenv("boardname", "overo-storm");
> +
>   	return 0;
>   }
>   
> diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h
> index 1a13633..f7483a0 100644
> --- a/include/configs/omap3_overo.h
> +++ b/include/configs/omap3_overo.h
> @@ -83,7 +83,6 @@
>   /* Environment information */
>   #define CONFIG_EXTRA_ENV_SETTINGS \
>   	DEFAULT_LINUX_BOOT_ENV \
> -	"fdtfile=overo.dtb\0" \
>   	"bootdir=/boot\0" \
>   	"bootfile=zImage\0" \
>   	"usbtty=cdc_acm\0" \
> @@ -152,10 +151,11 @@
>   			"run mmcboot;" \
>   		"fi;" \
>   		"if run loadzimage; then " \
> -			"if test -n $fdtfile; then " \
> -				"if run loadfdt; then " \
> -					"run mmcbootfdt;" \
> -				"fi;" \
> +			"if test $fdtfile; then " \
> +				"setenv fdtfile omap3-${boardname}-${expansionname}.dtb;" \
> +			"fi;" \
> +			"if run loadfdt; then " \
> +				"run mmcbootfdt;" \
>   			"fi;" \
>   		"fi;" \
>   	"fi;" \
Ash Charles June 10, 2014, 8:28 p.m. UTC | #2
On Tue, Jun 10, 2014 at 12:29 PM, Stefan Herbrechtsmeier
<stefan@herbrechtsmeier.net> wrote:
> You should add an additional case (0x0) above GUMSTIX_NO_EEPROM but an
> un-programmed eeprom returns GUMSTIX_NO_EEPROM (0xffffffff).
Forgive my stupidity---I don't follow.
Either,
1. No eeprom is probed or expansion_id is 0xFFFFFFFF (blank)--->this
gets caught by the GUMSTIX_NO_EEPROM case, or
2. An eeprom written with all zeros is read--->this gets caught by the
if statement nested in the default case.

Thanks for your patience in trying to find a change that works generally.

--Ash
Tom Rini June 19, 2014, 10:02 p.m. UTC | #3
On Tue, Jun 10, 2014 at 12:02:36PM -0700, Ash Charles wrote:

> The u-boot Overo board actually supports both Overo (OMAP35xx)
> and Overo Storm (AM/DM37xx) COMs with a range of different expansion
> boards.  This provides a mechanism to select the an appropriate device
> tree file based on the processor version and, if available, the
> expansion board ID written on the expansion board EEPROM. To match the
> 3.15+ kernels, fdtfile names have this format:
>  "omap3-overo[-storm]-<expansion board name>.dtb"
> 
> By default, we use "omap3-overo-storm-tobi.dtb".
> 
> Signed-off-by: Ash Charles <ashcharles@gmail.com>

Applied to u-boot-ti/master, thanks!
diff mbox

Patch

diff --git a/board/overo/overo.c b/board/overo/overo.c
index 62b50a8..13220c5 100644
--- a/board/overo/overo.c
+++ b/board/overo/overo.c
@@ -267,12 +267,14 @@  int misc_init_r(void)
 			expansion_config.revision,
 			expansion_config.fab_revision);
 		setenv("defaultdisplay", "dvi");
+		setenv("expansionname", "summit");
 		break;
 	case GUMSTIX_TOBI:
 		printf("Recognized Tobi expansion board (rev %d %s)\n",
 			expansion_config.revision,
 			expansion_config.fab_revision);
 		setenv("defaultdisplay", "dvi");
+		setenv("expansionname", "tobi");
 		break;
 	case GUMSTIX_TOBI_DUO:
 		printf("Recognized Tobi Duo expansion board (rev %d %s)\n",
@@ -293,12 +295,14 @@  int misc_init_r(void)
 			expansion_config.revision,
 			expansion_config.fab_revision);
 		setenv("defaultdisplay", "lcd43");
+		setenv("expansionname", "palo43");
 		break;
 	case GUMSTIX_CHESTNUT43:
 		printf("Recognized Chestnut43 expansion board (rev %d %s)\n",
 			expansion_config.revision,
 			expansion_config.fab_revision);
 		setenv("defaultdisplay", "lcd43");
+		setenv("expansionname", "chestnut43");
 		break;
 	case GUMSTIX_PINTO:
 		printf("Recognized Pinto expansion board (rev %d %s)\n",
@@ -310,6 +314,7 @@  int misc_init_r(void)
 			expansion_config.revision,
 			expansion_config.fab_revision);
 		setenv("defaultdisplay", "lcd43");
+		setenv("expansionname", "gallop43");
 		break;
 	case GUMSTIX_ALTO35:
 		printf("Recognized Alto35 expansion board (rev %d %s)\n",
@@ -317,6 +322,7 @@  int misc_init_r(void)
 			expansion_config.fab_revision);
 		MUX_ALTO35();
 		setenv("defaultdisplay", "lcd35");
+		setenv("expansionname", "alto35");
 		break;
 	case GUMSTIX_STAGECOACH:
 		printf("Recognized Stagecoach expansion board (rev %d %s)\n",
@@ -349,8 +355,11 @@  int misc_init_r(void)
 		break;
 	case GUMSTIX_NO_EEPROM:
 		puts("No EEPROM on expansion board\n");
+		setenv("expansionname", "tobi");
 		break;
 	default:
+		if (expansion_id == 0x0)
+			setenv("expansionname", "tobi");
 		printf("Unrecognized expansion board 0x%08x\n", expansion_id);
 		break;
 	}
@@ -360,6 +369,11 @@  int misc_init_r(void)
 
 	dieid_num_r();
 
+	if (get_cpu_family() == CPU_OMAP34XX)
+		setenv("boardname", "overo");
+	else
+		setenv("boardname", "overo-storm");
+
 	return 0;
 }
 
diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h
index 1a13633..f7483a0 100644
--- a/include/configs/omap3_overo.h
+++ b/include/configs/omap3_overo.h
@@ -83,7 +83,6 @@ 
 /* Environment information */
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	DEFAULT_LINUX_BOOT_ENV \
-	"fdtfile=overo.dtb\0" \
 	"bootdir=/boot\0" \
 	"bootfile=zImage\0" \
 	"usbtty=cdc_acm\0" \
@@ -152,10 +151,11 @@ 
 			"run mmcboot;" \
 		"fi;" \
 		"if run loadzimage; then " \
-			"if test -n $fdtfile; then " \
-				"if run loadfdt; then " \
-					"run mmcbootfdt;" \
-				"fi;" \
+			"if test $fdtfile; then " \
+				"setenv fdtfile omap3-${boardname}-${expansionname}.dtb;" \
+			"fi;" \
+			"if run loadfdt; then " \
+				"run mmcbootfdt;" \
 			"fi;" \
 		"fi;" \
 	"fi;" \