[U-Boot] [RFC PATCH 3/8] arm, davinci: Add SPL support for DA850 SoCs

Heiko Schocher hs at denx.de
Wed Nov 16 08:35:25 CET 2011


Hello Christian,

Christian Riesch wrote:
> Hello Heiko,
> thanks for your comments!
> 
> On Wed, Nov 16, 2011 at 7:35 AM, Heiko Schocher <hs at denx.de> wrote:
>> Christian Riesch wrote:
>>> Signed-off-by: Christian Riesch <christian.riesch at omicron.at>
>>> Cc: Heiko Schocher <hs at denx.de>
>>> Cc: Sandeep Paulraj <s-paulraj at ti.com>
>>> ---
>>>  arch/arm/cpu/arm926ejs/davinci/Makefile |    3 ++-
>>>  arch/arm/cpu/arm926ejs/davinci/spl.c    |   11 ++++++++++-
>>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>>
> [...]
>>> diff --git a/arch/arm/cpu/arm926ejs/davinci/spl.c b/arch/arm/cpu/arm926ejs/davinci/spl.c
>>> index d9b9398..bb4ee13 100644
>>> --- a/arch/arm/cpu/arm926ejs/davinci/spl.c
>>> +++ b/arch/arm/cpu/arm926ejs/davinci/spl.c
> [...]
>>>  void board_init_r(gd_t *id, ulong dummy)
>>>  {
>>> -
>>> +#ifdef CONFIG_SOC_DM365
>>>       nand_init();
>>>       puts("Nand boot...\n");
>>>       nand_boot();
>>> +#endif
>>> +#ifdef CONFIG_SOC_DA8XX
>>> +     hang();
>>> +#endif
>> Maybe a comment why you call hang() here (I think because SPL code
>> is not yet tried out on da8xx) would help here.
> 
> The code is tested on da8xx (the AM1808 I tested it on is part of the
> da8xx family) but as I didn't yet look into loading an u-boot image
> from SPI flash (which I should do here for the da850evm) I just call
> hang() here. I commented on this in the cover message:
> 
> ---snip---
> This patchset is not a complete implementation, it is missing the
> code that is actually used to load u-boot from SPI flash to the
> DDR memory. The code just hangs after the initialization is done. But
> I submit it nevertheless as RFC and I am looking forward to your comments.
> ---snip---

Ups .. sorry ... missed it. Hmm... have you no u-boot image on this
board (for example in nand)? Then you could load as an example this
code ...

Hmm.. as it is a RFC ... maybe we should go the following way:
(just a fast idea):

create new file u-boot:spl/boot.c:

/* could be board specific */
static int __weak get_boot_method(void)
{
#if defined SPL_BOOTMETHOD_NAND
	return SPL_BOOTMETHOD_NAND
#endif
#if defined SPL_BOOTMETHOD_SPI
	return SPL_BOOTMETHOD_SPI
#endif
[...]

/*
 * if more options are defined for one board
 * board specific code has to be written, to decide
 * which boot method is used (gpio pin?)
 * So it is possible to boot from different
 * devices...
 */
}

void board_init_r(gd_t *id, ulong dummy)
{
	int boot_method;

	boot_method = get_boot_method();
	switch (boot_ethod) {
#if defined SPL_BOOTMETHOD_NAND
	case SPL_BOOTMETHOD_NAND:
		nand_init();
		puts("Nand boot...\n");
		nand_boot();
		break;
#endif
#if defined SPL_BOOTMETHOD_SPI
	case SPL_BOOTMETHOD_NAND:
		puts("SPI boot...\n");
		break;
#endif
	default:
		/* error */
		puts("no valid boot method\n");
		hang();
		break;
	}
}

That should be usable from other architectures too ...

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list