[U-Boot] [PATCH 1/3] igep00x0: disable CONFIG_DISPLAY_BOARDINFO

As a single U-Boot binary can now run on various board modifications, drop CONFIG_DISPLAY_BOARDINFO as there's no known way to distinguish between them. Also saves few bytes as a bonus.
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- board/isee/igep00x0/igep00x0.c | 18 ------------------ include/configs/omap3_igep00x0.h | 5 +---- 2 files changed, 1 insertion(+), 22 deletions(-)
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 808955e..71688cc 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -27,24 +27,6 @@
DECLARE_GLOBAL_DATA_PTR;
-const omap3_sysinfo sysinfo = { - DDR_STACKED, -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) - "IGEPv2", -#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030) - "IGEP COM MODULE/ELECTRON", -#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0032) - "IGEP COM PROTON", -#endif -#if defined(CONFIG_ENV_IS_IN_ONENAND) - "ONENAND", -#else - "NAND", -#endif -}; - static const struct ns16550_platdata igep_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, diff --git a/include/configs/omap3_igep00x0.h b/include/configs/omap3_igep00x0.h index 1f30710..2ae9737 100644 --- a/include/configs/omap3_igep00x0.h +++ b/include/configs/omap3_igep00x0.h @@ -23,11 +23,8 @@ #undef CONFIG_SPL_TEXT_BASE #define CONFIG_SPL_TEXT_BASE 0x40200000
-/* - * Display CPU and Board information - */ +/* Display CPU information */ #define CONFIG_DISPLAY_CPUINFO 1 -#define CONFIG_DISPLAY_BOARDINFO 1
#define CONFIG_MISC_INIT_R

Update defconfigs and drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- configs/igep0030_defconfig | 5 ++++- configs/igep0030_nand_defconfig | 30 ------------------------------ configs/igep0032_defconfig | 4 +++- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 configs/igep0030_nand_defconfig
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 66371d6..eb7a28f 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020" +CONFIG_BOOTDELAY=3 CONFIG_VERSION_VARIABLE=y CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y @@ -26,5 +28,6 @@ CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_SYS_NS16550=y CONFIG_OF_LIBFDT=y diff --git a/configs/igep0030_nand_defconfig b/configs/igep0030_nand_defconfig deleted file mode 100644 index f63bcac..0000000 --- a/configs/igep0030_nand_defconfig +++ /dev/null @@ -1,30 +0,0 @@ -CONFIG_ARM=y -CONFIG_OMAP34XX=y -# CONFIG_SPL_EXT_SUPPORT is not set -CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND" -CONFIG_VERSION_VARIABLE=y -CONFIG_SPL=y -CONFIG_SPL_MTD_SUPPORT=y -CONFIG_SPL_ONENAND_SUPPORT=y -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y -# CONFIG_CMD_IMLS is not set -CONFIG_CMD_ASKENV=y -# CONFIG_CMD_FLASH is not set -CONFIG_CMD_MMC=y -CONFIG_CMD_SPI=y -CONFIG_CMD_I2C=y -CONFIG_CMD_GPIO=y -# CONFIG_CMD_SETEXPR is not set -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y -CONFIG_SYS_NS16550=y -CONFIG_OF_LIBFDT=y diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig index 991d9d7..eb7a28f 100644 --- a/configs/igep0032_defconfig +++ b/configs/igep0032_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020" +CONFIG_BOOTDELAY=3 CONFIG_VERSION_VARIABLE=y CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y

On Tue, Sep 20, 2016 at 11:07:57AM +0200, Ladislav Michl wrote:
Update defconfigs and drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
configs/igep0030_defconfig | 5 ++++- configs/igep0030_nand_defconfig | 30 ------------------------------ configs/igep0032_defconfig | 4 +++- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 configs/igep0030_nand_defconfig
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 66371d6..eb7a28f 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020"
Since you're even changing MACH_TYPE here, do we really need to be setting this? For both defconfigs, even. Thanks!

On Tue, Sep 20, 2016 at 08:52:21AM -0400, Tom Rini wrote:
On Tue, Sep 20, 2016 at 11:07:57AM +0200, Ladislav Michl wrote:
Update defconfigs and drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
configs/igep0030_defconfig | 5 ++++- configs/igep0030_nand_defconfig | 30 ------------------------------ configs/igep0032_defconfig | 4 +++- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 configs/igep0030_nand_defconfig
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 66371d6..eb7a28f 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020"
Since you're even changing MACH_TYPE here, do we really need to be setting this? For both defconfigs, even. Thanks!
Gah... I have to screw it up while resolving conflicts with upstream changes. Obviously MACH_TYPE has to remain the same. Will do v2. I'm sorry for that.
ladis

On Wed, Sep 21, 2016 at 12:44:17AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 08:52:21AM -0400, Tom Rini wrote:
On Tue, Sep 20, 2016 at 11:07:57AM +0200, Ladislav Michl wrote:
Update defconfigs and drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
configs/igep0030_defconfig | 5 ++++- configs/igep0030_nand_defconfig | 30 ------------------------------ configs/igep0032_defconfig | 4 +++- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 configs/igep0030_nand_defconfig
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 66371d6..eb7a28f 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020"
Since you're even changing MACH_TYPE here, do we really need to be setting this? For both defconfigs, even. Thanks!
Gah... I have to screw it up while resolving conflicts with upstream changes. Obviously MACH_TYPE has to remain the same. Will do v2. I'm sorry for that.
But why do we even need to set MACH_TYPE these days?

On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 12:44:17AM +0200, Ladislav Michl wrote:
[snip]
Gah... I have to screw it up while resolving conflicts with upstream changes. Obviously MACH_TYPE has to remain the same. Will do v2. I'm sorry for that.
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
ladis

On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 12:44:17AM +0200, Ladislav Michl wrote:
[snip]
Gah... I have to screw it up while resolving conflicts with upstream changes. Obviously MACH_TYPE has to remain the same. Will do v2. I'm sorry for that.
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?

On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
ladis

Hi,
2016-09-21 11:39 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
There is no way to differentiate those boards at runtime, those boards are completely different platforms that share same processor, like BeagleBoard or OMAP3 Overos . For me what you're trying to do is join different platforms with the same processor, so why not join BeagleBone, Overos, and IGEPs and all other OMAP3 based platforms?
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
That is what I would like to see someday ;) All OMAP3 based boards sharing the same binary and configure U-Boot using FDT.
ladis

On Wed, Sep 21, 2016 at 01:46:51PM +0200, Enric Balletbo Serra wrote:
Hi,
2016-09-21 11:39 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
There is no way to differentiate those boards at runtime, those boards are completely different platforms that share same processor, like BeagleBoard or OMAP3 Overos . For me what you're trying to do is join different platforms with the same processor, so why not join BeagleBone, Overos, and IGEPs and all other OMAP3 based platforms?
Note that the different beagleboard used GPIOs to tell which platform is which :)
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
That is what I would like to see someday ;) All OMAP3 based boards sharing the same binary and configure U-Boot using FDT.
The probably trickiest part here is DDR config, which still punts things down to a board specific MLO. But within an SoC this is probably a lot closer than people might think.

2016-09-21 14:51 GMT+02:00 Tom Rini trini@konsulko.com:
On Wed, Sep 21, 2016 at 01:46:51PM +0200, Enric Balletbo Serra wrote:
Hi,
2016-09-21 11:39 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
There is no way to differentiate those boards at runtime, those boards are completely different platforms that share same processor, like BeagleBoard or OMAP3 Overos . For me what you're trying to do is join different platforms with the same processor, so why not join BeagleBone, Overos, and IGEPs and all other OMAP3 based platforms?
Note that the different beagleboard used GPIOs to tell which platform is which :)
Yes, but if I'm not mistaken you have different GPIOs for different hardware revisions of Beagleboard. For IGEPv2 this is also true, you have different GPIOs for different hardware revisions of IGEPv2. But we're talking about join two completely different boards, i.e join IGEPv2 (IGEP0020) with IGEP COM PROTON (IGEP0032) would be similar to join Beagleboard with OMAP3 OVERO COM.
OTOH I think the Ladis work trying to join the IGEP boards is really interesting, just want to look deeper :)
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
That is what I would like to see someday ;) All OMAP3 based boards sharing the same binary and configure U-Boot using FDT.
The probably trickiest part here is DDR config, which still punts things down to a board specific MLO. But within an SoC this is probably a lot closer than people might think.
-- Tom

On Wed, Sep 21, 2016 at 03:46:08PM +0200, Enric Balletbo Serra wrote:
2016-09-21 14:51 GMT+02:00 Tom Rini trini@konsulko.com:
On Wed, Sep 21, 2016 at 01:46:51PM +0200, Enric Balletbo Serra wrote:
Hi,
2016-09-21 11:39 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote:
On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
> But why do we even need to set MACH_TYPE these days?
That's only needed for non-device tree kernel boot. These boards run mostly vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with daughter boards specific patches on top of it. Enric is concerned not to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
There is no way to differentiate those boards at runtime, those boards are completely different platforms that share same processor, like BeagleBoard or OMAP3 Overos . For me what you're trying to do is join different platforms with the same processor, so why not join BeagleBone, Overos, and IGEPs and all other OMAP3 based platforms?
Note that the different beagleboard used GPIOs to tell which platform is which :)
Yes, but if I'm not mistaken you have different GPIOs for different hardware revisions of Beagleboard. For IGEPv2 this is also true, you have different GPIOs for different hardware revisions of IGEPv2. But we're talking about join two completely different boards, i.e join IGEPv2 (IGEP0020) with IGEP COM PROTON (IGEP0032) would be similar to join Beagleboard with OMAP3 OVERO COM.
OTOH I think the Ladis work trying to join the IGEP boards is really interesting, just want to look deeper :)
Right. To play the thought exercise out a bit farther, if all of the detection methods for Beagleboard would _not_ cause an OVERO COM to be identified as a Beagle, we could move on to trying to see what rev overo we're on, or just assume it's that if all else fails. Is anything like that possible with these IGEP boards?
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
And to be clear over on this part, if we can tell at run time (or normal build time even, without directly passing MACH_TYPE=..) we should set that then instead of SYS_EXTRA_OPTIONS.

On Wed, Sep 21, 2016 at 10:02:47AM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 03:46:08PM +0200, Enric Balletbo Serra wrote:
2016-09-21 14:51 GMT+02:00 Tom Rini trini@konsulko.com:
On Wed, Sep 21, 2016 at 01:46:51PM +0200, Enric Balletbo Serra wrote:
Hi,
2016-09-21 11:39 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
On Tue, Sep 20, 2016 at 08:26:36PM -0400, Tom Rini wrote:
On Wed, Sep 21, 2016 at 01:52:21AM +0200, Ladislav Michl wrote: > On Tue, Sep 20, 2016 at 07:45:14PM -0400, Tom Rini wrote:
[snip]
> > But why do we even need to set MACH_TYPE these days? > > That's only needed for non-device tree kernel boot. These boards run mostly > vendor provided kernels based on TI 2.6.32 or 2.6.37 kernel tree with > daughter boards specific patches on top of it. Enric is concerned not > to break that support, so I'm trying to keep it.
OK, if you're still supporting stuff that old then yes, it makes sense. And we can't get this right at run time?
I asked several times, if there's a way to differentiate those boards (0020, 0030 and 0032) at runtime, but never get an answer. Of course I'd like to see one U-Boot binary to rule them all, but I'm out of clue there. Few people added to Cc...
There is no way to differentiate those boards at runtime, those boards are completely different platforms that share same processor, like BeagleBoard or OMAP3 Overos . For me what you're trying to do is join different platforms with the same processor, so why not join BeagleBone, Overos, and IGEPs and all other OMAP3 based platforms?
Note that the different beagleboard used GPIOs to tell which platform is which :)
Yes, but if I'm not mistaken you have different GPIOs for different hardware revisions of Beagleboard. For IGEPv2 this is also true, you have different GPIOs for different hardware revisions of IGEPv2. But we're talking about join two completely different boards, i.e join IGEPv2 (IGEP0020) with IGEP COM PROTON (IGEP0032) would be similar to join Beagleboard with OMAP3 OVERO COM.
Well, on igep platform MACH_TYPE is currently used for: - mux configuration (with IGEP COM PROTON strangely left out) - status LED configuration I wouldn't say these are completely different boards, at lest from software perspective.
OTOH I think the Ladis work trying to join the IGEP boards is really interesting, just want to look deeper :)
Right. To play the thought exercise out a bit farther, if all of the detection methods for Beagleboard would _not_ cause an OVERO COM to be identified as a Beagle, we could move on to trying to see what rev overo we're on, or just assume it's that if all else fails. Is anything like that possible with these IGEP boards?
I certainly didn't mean any board detection method hardware designer had in mind while drawing schemantics, but more likely something like this: IGEPv2 is using GPIO_94 to drive WIFI_PD_n and there's 100K pullup, so setting this pin as input and reading its value could give some clue. Now question is if there's such a combination of gpios used over this board family, which provides reliable detection method. Unfortunately, I have only IGEPv2 and public schemantics is available only for this board.
Another approach might be to configure U-Boot using FDT and translate that information into MACH_TYPE and kernel command line to support non-device tree enabled kernels.
And to be clear over on this part, if we can tell at run time (or normal build time even, without directly passing MACH_TYPE=..) we should set that then instead of SYS_EXTRA_OPTIONS.
ladis

Tested on IGEPv2 with Micron MT29F4G16ABBDA3W and Hynix H27S4G6F2DKA-BM
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- board/isee/igep00x0/igep00x0.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 71688cc..669f3dd 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -84,10 +84,22 @@ void get_board_mem_timings(struct board_sdrc_timings *timings) int mfr, id, err = identify_nand_chip(&mfr, &id);
timings->mr = MICRON_V_MR_165; - if (!err && mfr == NAND_MFR_MICRON) { - timings->mcfg = MICRON_V_MCFG_200(256 << 20); - timings->ctrla = MICRON_V_ACTIMA_200; - timings->ctrlb = MICRON_V_ACTIMB_200; + if (!err) { + switch (mfr) { + case NAND_MFR_HYNIX: + timings->mcfg = HYNIX_V_MCFG_200(256 << 20); + timings->ctrla = HYNIX_V_ACTIMA_200; + timings->ctrlb = HYNIX_V_ACTIMB_200; + break; + case NAND_MFR_MICRON: + timings->mcfg = MICRON_V_MCFG_200(256 << 20); + timings->ctrla = MICRON_V_ACTIMA_200; + timings->ctrlb = MICRON_V_ACTIMB_200; + break; + default: + /* Should not happen... */ + break; + } timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_200MHz; gpmc_cs0_flash = MTD_DEV_TYPE_NAND; } else {

Hi Ladis,
2016-09-20 11:04 GMT+02:00 Ladislav Michl ladis@linux-mips.org:
As a single U-Boot binary can now run on various board modifications, drop CONFIG_DISPLAY_BOARDINFO as there's no known way to distinguish between them. Also saves few bytes as a bonus.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
board/isee/igep00x0/igep00x0.c | 18 ------------------ include/configs/omap3_igep00x0.h | 5 +---- 2 files changed, 1 insertion(+), 22 deletions(-)
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 808955e..71688cc 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -27,24 +27,6 @@
DECLARE_GLOBAL_DATA_PTR;
-const omap3_sysinfo sysinfo = {
DDR_STACKED,
-#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020)
"IGEPv2",
-#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030)
"IGEP COM MODULE/ELECTRON",
-#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0032)
"IGEP COM PROTON",
-#endif -#if defined(CONFIG_ENV_IS_IN_ONENAND)
"ONENAND",
-#else
"NAND",
-#endif -};
static const struct ns16550_platdata igep_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, diff --git a/include/configs/omap3_igep00x0.h b/include/configs/omap3_igep00x0.h index 1f30710..2ae9737 100644 --- a/include/configs/omap3_igep00x0.h +++ b/include/configs/omap3_igep00x0.h @@ -23,11 +23,8 @@ #undef CONFIG_SPL_TEXT_BASE #define CONFIG_SPL_TEXT_BASE 0x40200000
-/*
- Display CPU and Board information
- */
+/* Display CPU information */ #define CONFIG_DISPLAY_CPUINFO 1 -#define CONFIG_DISPLAY_BOARDINFO 1
#define CONFIG_MISC_INIT_R
-- 2.1.4
I must NACK for now these series, meanwhile I don't find time to look at this deeply. I think this will break lots of things. For example, will this u-boot boot a non-device tree based kernel without breaking things? I don't think so, It's right that non-device tree kernels are old but these are still used in lots of IGEP boards and I don't want to break this, for now.
Please give me some time to look at this and think in all the use cases.
Thanks, Enric.

Hi Enric,
On Tue, Sep 20, 2016 at 05:41:02PM +0200, Enric Balletbo Serra wrote:
Hi Ladis,
I must NACK for now these series, meanwhile I don't find time to look at this deeply. I think this will break lots of things. For example, will this u-boot boot a non-device tree based kernel without breaking things? I don't think so, It's right that non-device tree kernels are old but these are still used in lots of IGEP boards and I don't want to break this, for now.
Please give me some time to look at this and think in all the use cases.
I'm sorry for screwing up MACH_TYPE, here's an updated version. I haven't tested with non-device tree kernels, but I can't see how these patches could break it. Please let me know, if you find any other objections.
Best regards, ladis
8< -----------------------
From 2f7c58982e7e58dae092e2db60385cb2448b9d31 Mon Sep 17 00:00:00 2001
From: Ladislav Michl ladis@linux-mips.org Date: Tue, 9 Aug 2016 12:46:07 +0200 Subject: [PATCH v2] igep00x0: consolidate defconfigs
Update defconfigs and drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- Changelog: v2: Restore patch to its original state before merge conflict screwup
configs/igep0030_defconfig | 5 ++++- configs/igep0030_nand_defconfig | 30 ------------------------------ configs/igep0032_defconfig | 4 +++- 3 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 configs/igep0030_nand_defconfig
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 66371d6..66a45cb 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030" +CONFIG_BOOTDELAY=3 CONFIG_VERSION_VARIABLE=y CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y @@ -26,5 +28,6 @@ CONFIG_CMD_EXT4=y CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_SYS_NS16550=y CONFIG_OF_LIBFDT=y diff --git a/configs/igep0030_nand_defconfig b/configs/igep0030_nand_defconfig deleted file mode 100644 index f63bcac..0000000 --- a/configs/igep0030_nand_defconfig +++ /dev/null @@ -1,30 +0,0 @@ -CONFIG_ARM=y -CONFIG_OMAP34XX=y -# CONFIG_SPL_EXT_SUPPORT is not set -CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND" -CONFIG_VERSION_VARIABLE=y -CONFIG_SPL=y -CONFIG_SPL_MTD_SUPPORT=y -CONFIG_SPL_ONENAND_SUPPORT=y -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y -# CONFIG_CMD_IMLS is not set -CONFIG_CMD_ASKENV=y -# CONFIG_CMD_FLASH is not set -CONFIG_CMD_MMC=y -CONFIG_CMD_SPI=y -CONFIG_CMD_I2C=y -CONFIG_CMD_GPIO=y -# CONFIG_CMD_SETEXPR is not set -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y -CONFIG_SYS_NS16550=y -CONFIG_OF_LIBFDT=y diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig index 991d9d7..9e397bb 100644 --- a/configs/igep0032_defconfig +++ b/configs/igep0032_defconfig @@ -2,7 +2,9 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND" +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032" +CONFIG_BOOTDELAY=3 CONFIG_VERSION_VARIABLE=y CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y

Hi Enric,
On Tue, Sep 20, 2016 at 05:41:02PM +0200, Enric Balletbo Serra wrote: [snip]
I must NACK for now these series, meanwhile I don't find time to look at this deeply. I think this will break lots of things. For example, will this u-boot boot a non-device tree based kernel without breaking things? I don't think so, It's right that non-device tree kernels are old but these are still used in lots of IGEP boards and I don't want to break this, for now.
Please give me some time to look at this and think in all the use cases.
Any chance you'll find time to look at this? I'm sending updated patch serie as a reply to this email. I do not think it breaks anything and I'll provide fix if you prove me wrong. Please note, that without "igep00x0: add Hynix timings" patch some boards are unable to boot. My bad, of course, as I hadn't all board variants on my table at the time writing runtime flash detection support.
Thank you, ladis

As a single U-Boot binary can now run on various board modifications, drop CONFIG_DISPLAY_BOARDINFO as it prints flash memory information too early to give us chance to easily detect it. Also saves few bytes as a bonus.
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- Changes in v2: - update to current git (uses Kconfig)
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 808955e..71688cc 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -27,24 +27,6 @@
DECLARE_GLOBAL_DATA_PTR;
-const omap3_sysinfo sysinfo = { - DDR_STACKED, -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) - "IGEPv2", -#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030) - "IGEP COM MODULE/ELECTRON", -#endif -#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0032) - "IGEP COM PROTON", -#endif -#if defined(CONFIG_ENV_IS_IN_ONENAND) - "ONENAND", -#else - "NAND", -#endif -}; - static const struct ns16550_platdata igep_serial = { .base = OMAP34XX_UART3, .reg_shift = 2, diff --git a/configs/igep0020_defconfig b/configs/igep0020_defconfig index 9c247d7..c25b6b8 100644 --- a/configs/igep0020_defconfig +++ b/configs/igep0020_defconfig @@ -7,6 +7,7 @@ CONFIG_BOOTDELAY=3 CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y +# CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_ONENAND_SUPPORT=y diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 1312ddb..75f731d 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y +# CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_ONENAND_SUPPORT=y diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig index 37e46b0..1819995 100644 --- a/configs/igep0032_defconfig +++ b/configs/igep0032_defconfig @@ -6,6 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND" CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y +# CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y CONFIG_SPL_MTD_SUPPORT=y CONFIG_SPL_ONENAND_SUPPORT=y

Hello Ladis,
On Fri, Nov 4, 2016 at 8:55 AM, Ladislav Michl ladis@linux-mips.org wrote:
As a single U-Boot binary can now run on various board modifications, drop CONFIG_DISPLAY_BOARDINFO as it prints flash memory information too early to give us chance to easily detect it. Also saves few bytes as a bonus.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
Patch looks good to me.
Reviewed-by: Javier Martinez Canillas javier@samsung.com
I've also tested on an IGEPv2 board:
Tested-by: Javier Martinez Canillas javier@samsung.com
Best regards, Javier

On Fri, Nov 04, 2016 at 12:55:21PM +0100, Ladislav Michl wrote:
As a single U-Boot binary can now run on various board modifications, drop CONFIG_DISPLAY_BOARDINFO as it prints flash memory information too early to give us chance to easily detect it. Also saves few bytes as a bonus.
Signed-off-by: Ladislav Michl ladis@linux-mips.org Reviewed-by: Javier Martinez Canillas javier@samsung.com Tested-by: Javier Martinez Canillas javier@samsung.com
Applied to u-boot/master, thanks!

Defconfigs should remain the same except CONFIG_SYS_EXTRA_OPTIONS. Drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- Changes in v2: - fix screwup caused by mismerge - update to current git
diff --git a/configs/igep0030_defconfig b/configs/igep0030_defconfig index 75f731d..edc7520 100644 --- a/configs/igep0030_defconfig +++ b/configs/igep0030_defconfig @@ -2,7 +2,8 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_ONENAND" +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030" +CONFIG_BOOTDELAY=3 CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y @@ -31,5 +32,6 @@ CONFIG_CMD_EXT4_WRITE=y CONFIG_CMD_FAT=y CONFIG_CMD_FS_GENERIC=y CONFIG_CMD_UBI=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_SYS_NS16550=y CONFIG_OF_LIBFDT=y diff --git a/configs/igep0030_nand_defconfig b/configs/igep0030_nand_defconfig deleted file mode 100644 index dda1a7b..0000000 --- a/configs/igep0030_nand_defconfig +++ /dev/null @@ -1,34 +0,0 @@ -CONFIG_ARM=y -CONFIG_OMAP34XX=y -# CONFIG_SPL_EXT_SUPPORT is not set -CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030,BOOT_NAND" -CONFIG_SYS_CONSOLE_IS_IN_ENV=y -CONFIG_SYS_CONSOLE_INFO_QUIET=y -CONFIG_VERSION_VARIABLE=y -CONFIG_SPL=y -CONFIG_SPL_MTD_SUPPORT=y -CONFIG_SPL_ONENAND_SUPPORT=y -CONFIG_SPL_OS_BOOT=y -CONFIG_HUSH_PARSER=y -CONFIG_CMD_BOOTZ=y -# CONFIG_CMD_IMLS is not set -CONFIG_CMD_ASKENV=y -# CONFIG_CMD_FLASH is not set -CONFIG_CMD_MMC=y -CONFIG_CMD_SPI=y -CONFIG_CMD_I2C=y -CONFIG_CMD_GPIO=y -# CONFIG_CMD_SETEXPR is not set -CONFIG_CMD_DHCP=y -CONFIG_CMD_MII=y -CONFIG_CMD_PING=y -CONFIG_CMD_CACHE=y -CONFIG_CMD_EXT2=y -CONFIG_CMD_EXT4=y -CONFIG_CMD_EXT4_WRITE=y -CONFIG_CMD_FAT=y -CONFIG_CMD_FS_GENERIC=y -CONFIG_CMD_UBI=y -CONFIG_SYS_NS16550=y -CONFIG_OF_LIBFDT=y diff --git a/configs/igep0032_defconfig b/configs/igep0032_defconfig index 1819995..81d05d4 100644 --- a/configs/igep0032_defconfig +++ b/configs/igep0032_defconfig @@ -2,7 +2,8 @@ CONFIG_ARM=y CONFIG_OMAP34XX=y # CONFIG_SPL_EXT_SUPPORT is not set CONFIG_TARGET_OMAP3_IGEP00X0=y -CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032,BOOT_ONENAND" +CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0032" +CONFIG_BOOTDELAY=3 CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_INFO_QUIET=y CONFIG_VERSION_VARIABLE=y

Hello Ladis,
On Fri, Nov 4, 2016 at 8:57 AM, Ladislav Michl ladis@linux-mips.org wrote:
Defconfigs should remain the same except CONFIG_SYS_EXTRA_OPTIONS. Drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org
Reviewed-by: Javier Martinez Canillas javier@samsung.com
I don't have an IGEP COM Module to test but the patch looks good to me.
Best regards, Javier

On Fri, Nov 04, 2016 at 12:57:27PM +0100, Ladislav Michl wrote:
Defconfigs should remain the same except CONFIG_SYS_EXTRA_OPTIONS. Drop NAND specific defconfig as flash type is runtime detected.
Signed-off-by: Ladislav Michl ladis@linux-mips.org Reviewed-by: Javier Martinez Canillas javier@samsung.com
Applied to u-boot/master, thanks!

Tested on IGEPv2 with Micron MT29F4G16ABBDA3W and Hynix H27S4G6F2DKA-BM
Signed-off-by: Ladislav Michl ladis@linux-mips.org --- Changes in v2: - None
diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 71688cc..669f3dd 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -84,10 +84,22 @@ void get_board_mem_timings(struct board_sdrc_timings *timings) int mfr, id, err = identify_nand_chip(&mfr, &id);
timings->mr = MICRON_V_MR_165; - if (!err && mfr == NAND_MFR_MICRON) { - timings->mcfg = MICRON_V_MCFG_200(256 << 20); - timings->ctrla = MICRON_V_ACTIMA_200; - timings->ctrlb = MICRON_V_ACTIMB_200; + if (!err) { + switch (mfr) { + case NAND_MFR_HYNIX: + timings->mcfg = HYNIX_V_MCFG_200(256 << 20); + timings->ctrla = HYNIX_V_ACTIMA_200; + timings->ctrlb = HYNIX_V_ACTIMB_200; + break; + case NAND_MFR_MICRON: + timings->mcfg = MICRON_V_MCFG_200(256 << 20); + timings->ctrla = MICRON_V_ACTIMA_200; + timings->ctrlb = MICRON_V_ACTIMB_200; + break; + default: + /* Should not happen... */ + break; + } timings->rfr_ctrl = SDP_3430_SDRC_RFR_CTRL_200MHz; gpmc_cs0_flash = MTD_DEV_TYPE_NAND; } else {

Hello Ladis,
On Fri, Nov 4, 2016 at 8:59 AM, Ladislav Michl ladis@linux-mips.org wrote:
Tested on IGEPv2 with Micron MT29F4G16ABBDA3W and Hynix H27S4G6F2DKA-BM
Signed-off-by: Ladislav Michl ladis@linux-mips.org
Reviewed-by: Javier Martinez Canillas javier@samsung.com
I don't have an IGEPv2 with Hynix to test, but everything is working correctly on my IGEPv2 board with a Micron NAND.
Tested-by: Javier Martinez Canillas javier@samsung.com
Best regards, Javier

On Fri, Nov 04, 2016 at 12:59:46PM +0100, Ladislav Michl wrote:
Tested on IGEPv2 with Micron MT29F4G16ABBDA3W and Hynix H27S4G6F2DKA-BM
Signed-off-by: Ladislav Michl ladis@linux-mips.org Reviewed-by: Javier Martinez Canillas javier@samsung.com Tested-by: Javier Martinez Canillas javier@samsung.com
Applied to u-boot/master, thanks!
participants (4)
-
Enric Balletbo Serra
-
Javier Martinez Canillas
-
Ladislav Michl
-
Tom Rini