Dear Andreas,

On 07/26/2011 08:07 AM, Andreas Bießmann wrote:
> Dear Simon,
>
> Am 25.07.2011 um 20:05 schrieb Simon Schwarz:
>
>> Add NAND support for the new SPL structure.
>>
>> ---
>> This patch didn't exist before V2!
>>
>> V2 changes:
>> ADD Some define-barriers for OMAP3 to only use NAND
>> ADD nand_load_image() - inits the OMAP gpmc, loads the images - parses the
>>      header
>> CHG cosmetic
>> ADD do_reset() implementation for omap-common spl
>> ADD nand_copy_image to nand.h
>> ADD CPP barriers for mmc and nand support. The parts depending on library
>>      support are only compiled if the respective library is included.
>>
>> Transition from V1 to V2 also includes that this patch is now based on
>>      - the new SPL layout by Aneesh V and Daniel Schwierzeck
>>      - the OMAP4 SPL patches by Aneesh V
>>
>> Signed-off-by: Simon Schwarz<simonschwarz...@gmail.com>
>> ---
>> arch/arm/cpu/armv7/omap-common/spl.c |   43 
>> ++++++++++++++++++++++++++++++++++
>> arch/arm/include/asm/omap_common.h   |    2 +
>> include/nand.h                       |    3 ++
>> 3 files changed, 48 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/cpu/armv7/omap-common/spl.c 
>> b/arch/arm/cpu/armv7/omap-common/spl.c
>> index d177652..3a0093d 100644
>> --- a/arch/arm/cpu/armv7/omap-common/spl.c
>> +++ b/arch/arm/cpu/armv7/omap-common/spl.c
>> @@ -26,6 +26,7 @@
>> #include<asm/u-boot.h>
>> #include<asm/utils.h>
>> #include<asm/arch/sys_proto.h>
>> +#include<nand.h>
>> #include<mmc.h>
>> #include<fat.h>
>> #include<timestamp_autogenerated.h>
>> @@ -107,6 +108,7 @@ static void parse_image_header(const struct image_header 
>> *header)
>>      }
>> }
>>
>> +#ifdef CONFIG_SPL_MMC_SUPPORT
>> static void mmc_load_image_raw(struct mmc *mmc)
>> {
>>      u32 image_size_sectors, err;
>> @@ -140,7 +142,9 @@ end:
>>              hang();
>>      }
>> }
>> +#endif /* CONFIG_SPL_MMC_SUPPORT */
>>
>> +#ifdef CONFIG_SPL_MMC_SUPPORT
>> static void mmc_load_image_fat(struct mmc *mmc)
>> {
>>      s32 err;
>> @@ -173,7 +177,9 @@ end:
>>              hang();
>>      }
>> }
>> +#endif /* CONFIG_SPL_MMC_SUPPORT */
>>
>> +#ifdef CONFIG_SPL_MMC_SUPPORT
>> static void mmc_load_image(void)
>> {
>>      struct mmc *mmc;
>> @@ -206,6 +212,26 @@ static void mmc_load_image(void)
>>              hang();
>>      }
>> }
>> +#endif /* CONFIG_SPL_MMC_SUPPORT */
>> +
>> +#ifdef CONFIG_SPL_NAND_SUPPORT
>> +static void nand_load_image(void)
>> +{
>> +    gpmc_init();
>> +    nand_init();
>> +    nand_copy_image(CONFIG_SYS_NAND_U_BOOT_OFFS, 
>> CONFIG_SYS_NAND_U_BOOT_SIZE,
>> +            (uchar *)CONFIG_SYS_NAND_U_BOOT_DST);
>> +#ifdef CONFIG_NAND_ENV_DST
>> +    nand_copy_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
>> +            (uchar *)CONFIG_NAND_ENV_DST);
>> +#ifdef CONFIG_ENV_OFFSET_REDUND
>> +    nand_copy_image(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE,
>> +            (uchar *)CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE);
>> +#endif
>> +#endif
>> +    parse_image_header((struct image_header *)CONFIG_SYS_NAND_U_BOOT_DST);
>> +}
>> +#endif /* CONFIG_SPL_NAND_SUPPORT */
>>
>> void jump_to_image_no_args(void)
>> {
>> @@ -228,10 +254,17 @@ void board_init_r(gd_t *id, ulong dummy)
>>      boot_device = omap_boot_device();
>>      debug("boot device - %d\n", boot_device);
>>      switch (boot_device) {
>> +#ifdef CONFIG_SPL_MMC_SUPPORT
>>      case BOOT_DEVICE_MMC1:
>>      case BOOT_DEVICE_MMC2:
>>              mmc_load_image();
>>              break;
>> +#endif
>> +#ifdef CONFIG_SPL_NAND_SUPPORT
>> +    case BOOT_DEVICE_NAND:
>> +            nand_load_image();
>> +            break;
>> +#endif
>>      default:
>>              printf("SPL: Un-supported Boot Device - %d!!!\n", boot_device);
>>              hang();
>> @@ -259,7 +292,9 @@ void preloader_console_init(void)
>>      gd->flags |= GD_FLG_RELOC;
>>      gd->baudrate = CONFIG_BAUDRATE;
>>
>> +#ifndef CONFIG_OMAP34XX
>
> Well .. that was discussed with Aneesh in another mail. I prefer Aneesh 
> decides how the interface should be:
>   a) OMAP3 provides setup_clocks_for_console() and remove the UART stuff from 
> per_clocks_enable()
>   b) remove setup_clocks_for_console() here and require 
> preloader_console_init() to have the clocks enabled before
>
Totally agree. I just wait for a reply by Aneesh and will change it.

>>      setup_clocks_for_console();
>> +#endif
>>      serial_init();          /* serial communications setup */
>>
>>      /* Avoid a second "U-Boot" coming from this string */
>> @@ -270,3 +305,11 @@ void preloader_console_init(void)
>>      omap_rev_string(rev_string_buffer);
>>      printf("Texas Instruments %s\n", rev_string_buffer);
>> }
>
> Some comment would be useful why this is here ..
will add this

>
>> +
>> +int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>> +{
>> +    debug("resetting cpu...");
>> +    reset_cpu(0);
>> +
>> +    return 0;
>> +}
>> diff --git a/arch/arm/include/asm/omap_common.h 
>> b/arch/arm/include/asm/omap_common.h
>> index d3cb857..ee45a33 100644
>> --- a/arch/arm/include/asm/omap_common.h
>> +++ b/arch/arm/include/asm/omap_common.h
>> @@ -49,6 +49,8 @@ void preloader_console_init(void);
>> #define      MMCSD_MODE_UNDEFINED    0
>> #define MMCSD_MODE_RAW               1
>> #define MMCSD_MODE_FAT               2
>> +#define NAND_MODE_HW                3
>> +#define NAND_MODE_SW                4
>
> Shouldn't that name NAND_ECC_MODE_(HW|SW) or something?
Will change
>
>> u32 omap_boot_device(void);
>> u32 omap_boot_mode(void);
>> diff --git a/include/nand.h b/include/nand.h
>> index 8d94b5c..084c017 100644
>> --- a/include/nand.h
>> +++ b/include/nand.h
>> @@ -132,6 +132,8 @@ int nand_lock( nand_info_t *meminfo, int tight );
>> int nand_unlock( nand_info_t *meminfo, ulong start, ulong length );
>> int nand_get_lock_status(nand_info_t *meminfo, loff_t offset);
>>
>> +void nand_copy_image(unsigned int offs, unsigned int size, uchar *dst);
>> +
>> #ifdef CONFIG_SYS_NAND_SELECT_DEVICE
>> void board_nand_select_device(struct nand_chip *nand, int chip);
>> #endif
>> @@ -148,3 +150,4 @@ __attribute__((noreturn)) void nand_boot(void);
>> #define ENV_OFFSET_SIZE 8
>> int get_nand_env_oob(nand_info_t *nand, unsigned long *result);
>> #endif
>> +
>
> This single line is useless.

Done.

>> --
>> 1.7.4.1
>
> regards
>
> Andreas Bießmann
>

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

Reply via email to