Re: [U-Boot] [PATCH v2 04/12] SPL: Add NOR flash booting support

2012-08-28 Thread Stefan Roese
On 08/27/2012 07:59 PM, Tom Rini wrote:
> On 08/27/2012 10:29 AM, Daniel Schwierzeck wrote:
>> Hi Stefan,
>>
>> 2012/8/27 Stefan Roese :
>>> SPL NOR flash booting support is quite simple. Only copying of the
>>> images is needed.
>>>
>>> On MPC5xxx we need to make sure to only use the standard memcpy()
>>> implementation and not the MPC5xxx specific one. As the MPC5xxx
>>> version has some complexity which is not needed for this SPL
>>> booting.
>>>
>>> Signed-off-by: Stefan Roese 
> [snip]
>>> +/*
>>> + * Don't use the special MPC5xxx memcpy implementation, only use
>>> + * the standard one.
>>> + */
>>> +#if defined(CONFIG_MPC512X) || defined(CONFIG_MPC5200)
>>> +extern void *__memcpy(void *, const void *, size_t);
>>> +#define memcpy __memcpy
>>> +#endif
>>
>> can't we move this to arch-specifc spl code?
>> I think arch/CPU/SoC specific definitions should be avoided in new
>> generic frameworks.
> 
> This is a good point.  And I think we can further tweak this by
> modifying arch/powerpc/lib/Makefile to just not build memcpy_5200.c for
> CONFIG_SPL_BUILD.  So lets go with that, and I'll just fixup my local copy.

Good idea. I'll change the powerpc Makefile accordingly.

Thanks,
Stefan
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 04/12] SPL: Add NOR flash booting support

2012-08-27 Thread Tom Rini
On 08/27/2012 10:29 AM, Daniel Schwierzeck wrote:
> Hi Stefan,
> 
> 2012/8/27 Stefan Roese :
>> SPL NOR flash booting support is quite simple. Only copying of the
>> images is needed.
>>
>> On MPC5xxx we need to make sure to only use the standard memcpy()
>> implementation and not the MPC5xxx specific one. As the MPC5xxx
>> version has some complexity which is not needed for this SPL
>> booting.
>>
>> Signed-off-by: Stefan Roese 
[snip]
>> +/*
>> + * Don't use the special MPC5xxx memcpy implementation, only use
>> + * the standard one.
>> + */
>> +#if defined(CONFIG_MPC512X) || defined(CONFIG_MPC5200)
>> +extern void *__memcpy(void *, const void *, size_t);
>> +#define memcpy __memcpy
>> +#endif
> 
> can't we move this to arch-specifc spl code?
> I think arch/CPU/SoC specific definitions should be avoided in new
> generic frameworks.

This is a good point.  And I think we can further tweak this by
modifying arch/powerpc/lib/Makefile to just not build memcpy_5200.c for
CONFIG_SPL_BUILD.  So lets go with that, and I'll just fixup my local copy.

-- 
Tom
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 04/12] SPL: Add NOR flash booting support

2012-08-27 Thread Daniel Schwierzeck
Hi Stefan,

2012/8/27 Stefan Roese :
> SPL NOR flash booting support is quite simple. Only copying of the
> images is needed.
>
> On MPC5xxx we need to make sure to only use the standard memcpy()
> implementation and not the MPC5xxx specific one. As the MPC5xxx
> version has some complexity which is not needed for this SPL
> booting.
>
> Signed-off-by: Stefan Roese 
> ---
> Changes in v2:
> - Add option to skip copying of the mkimage header
>
>  common/spl/Makefile  |  1 +
>  common/spl/spl.c |  5 
>  common/spl/spl_nor.c | 71 
> 
>  include/spl.h|  3 +++
>  4 files changed, 80 insertions(+)
>  create mode 100644 common/spl/spl_nor.c
>
> diff --git a/common/spl/Makefile b/common/spl/Makefile
> index b61b438..53a82c4 100644
> --- a/common/spl/Makefile
> +++ b/common/spl/Makefile
> @@ -15,6 +15,7 @@ LIB   = $(obj)libspl.o
>
>  ifdef CONFIG_SPL_BUILD
>  COBJS-$(CONFIG_SPL_FRAMEWORK) += spl.o
> +COBJS-$(CONFIG_SPL_NOR_SUPPORT) += spl_nor.o
>  COBJS-$(CONFIG_SPL_YMODEM_SUPPORT) += spl_ymodem.o
>  endif
>
> diff --git a/common/spl/spl.c b/common/spl/spl.c
> index 13bebbc..61936ee 100644
> --- a/common/spl/spl.c
> +++ b/common/spl/spl.c
> @@ -155,6 +155,11 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
> spl_nand_load_image();
> break;
>  #endif
> +#ifdef CONFIG_SPL_NOR_SUPPORT
> +   case BOOT_DEVICE_NOR:
> +   spl_nor_load_image();
> +   break;
> +#endif
>  #ifdef CONFIG_SPL_YMODEM_SUPPORT
> case BOOT_DEVICE_UART:
> spl_ymodem_load_image();
> diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
> new file mode 100644
> index 000..a1c13a4
> --- /dev/null
> +++ b/common/spl/spl_nor.c
> @@ -0,0 +1,71 @@
> +/*
> + * Copyright (C) 2012 Stefan Roese 
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + */
> +
> +#include 
> +#include 
> +
> +/*
> + * Don't use the special MPC5xxx memcpy implementation, only use
> + * the standard one.
> + */
> +#if defined(CONFIG_MPC512X) || defined(CONFIG_MPC5200)
> +extern void *__memcpy(void *, const void *, size_t);
> +#define memcpy __memcpy
> +#endif

can't we move this to arch-specifc spl code?
I think arch/CPU/SoC specific definitions should be avoided in new
generic frameworks.

how about:

__weak void *spl_memcpy(void *dst, const void *src, size_t size)
{
 return memcpy(dst, src, size);
}

and in arch/powerpc/cpu/mpc5xxx/spl_boot.c:

void *spl_memcpy(void *dst, const void *src, size_t size)
{
 return __memcpy(dst, src, size);
}

> +
> +void spl_nor_load_image(void)
> +{
> +   /*
> +* Loading of the payload to SDRAM is done with skipping of
> +* the mkimage header in this SPL NOR driver
> +*/
> +   spl_image.flags |= SPL_COPY_PAYLOAD_ONLY;
> +
> +   if (spl_start_uboot()) {
> +   /*
> +* Load real U-Boot from its location in NOR flash to its
> +* defined location in SDRAM
> +*/
> +   spl_parse_image_header(
> +   (const struct image_header *)CONFIG_SYS_UBOOT_BASE);
> +
> +   memcpy((void *)spl_image.load_addr,
> +  (void *)(CONFIG_SYS_UBOOT_BASE +
> +   sizeof(struct image_header)),
> +  spl_image.size);
> +   } else {
> +   /*
> +* Load Linux from its location in NOR flash to its defined
> +* location in SDRAM
> +*/
> +   spl_parse_image_header(
> +   (const struct image_header *)CONFIG_SYS_OS_BASE);
> +
> +   memcpy((void *)spl_image.load_addr,
> +  (void *)(CONFIG_SYS_OS_BASE +
> +   sizeof(struct image_header)),
> +  spl_image.size);
> +
> +   /*
> +* Copy DT blob (fdt) to SDRAM. Passing pointer to flash
> +* doesn't work (16 KiB should be enough for DT)
> +*/
> +   memcpy((void *)CONFIG_SYS_SPL_ARGS_ADDR,
> +  (void *)(CONFIG_SYS_FDT_BASE),
> +  (16 << 10));
> +   }
> +}
> diff --git a/include/spl.h b/include/spl.h
> index 673c4a4..4a76239 100644
> --- a/include/spl.h
> +++ b/include/spl.h
> @@ -60,6 +60,9 @@ void spl_display_prin

Re: [U-Boot] [PATCH v2 04/12] SPL: Add NOR flash booting support

2012-08-27 Thread Tom Rini
On Mon, Aug 27, 2012 at 12:50:59PM +0200, Stefan Roese wrote:
> SPL NOR flash booting support is quite simple. Only copying of the
> images is needed.
> 
> On MPC5xxx we need to make sure to only use the standard memcpy()
> implementation and not the MPC5xxx specific one. As the MPC5xxx
> version has some complexity which is not needed for this SPL
> booting.
> 
> Signed-off-by: Stefan Roese 

Added to my v5 series, thanks!

-- 
Tom
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot