On Wed, Dec 10, 2008 at 11:41:11AM +0100, Stefan Roese wrote:
> +void *board_flash_read_memcpy(void *__to, __const__ void *__from, int n);
> +
> +#if defined(CONFIG_FLASH_NOT_MEM_MAPPED)
> +static inline int flash_read(void *__to, __const__ void *__from, int n)

__const__?  The other underscores seem gratuitous as well.

> +{
> +#if defined(CONFIG_HAS_DATAFLASH)
> +     return read_dataflash(__from, n, __to);
> +#elif defined(CONFIG_FLASH_NOT_MEM_MAPPED)
> +     if ((addr2info((u32)__from) != NULL))
> +             board_flash_read_memcpy(__to, __from, n);
> +     else
> +             memcpy(__to, __from, n);
> +     return OK;
> +#endif
> +}

What if a board has dataflash *and* NOR flash?

> diff --git a/common/env_flash.c b/common/env_flash.c
> index 75ee8dd..ee7c4d7 100644
> --- a/common/env_flash.c
> +++ b/common/env_flash.c
> @@ -85,9 +85,50 @@ static ulong end_addr_new = CONFIG_ENV_ADDR_REDUND + 
> CONFIG_ENV_SECT_SIZE - 1;
>  extern uchar default_environment[];
>  extern int default_environment_size;
>  
> +void *board_flash_read_memcpy(void *__to, __const__ void *__from, int n);
> +u8 flash_read8(void *addr);
> +u32 flash_read32(void *addr);

Should go in a header file.

> +#if defined(CONFIG_FLASH_NOT_MEM_MAPPED)
> +#define FLASH_READ_MEMCPY(d, s, n)   board_flash_read_memcpy(d, s, n)
> +#else
> +#define FLASH_READ_MEMCPY(d, s, n)   memcpy(d, s, n);
> +#endif /* CONFIG_FLASH_NOT_MEM_MAPPED */

No semicolon after memcpy, or FLASH_READ_MEMCPY won't behave like a
function call in certain contexts (if/else, for loops, etc).

> +#define DO1(buf)                                                     \
> +     do {                                                            \
> +             if (((u32)buf >= CONFIG_FLASH_BASE) &&                  \
> +                 ((u32)buf < CONFIG_FLASH_END)) {                    \
> +                     crc = crc_table[ ((int)crc ^                    \
> +                                      (flash_read8((void *)buf++))) & 0xff] 
> ^ \
> +                             (crc >> 8);                             \
> +             } else {                                                \
> +                     crc = crc_table[((int)crc ^                     \
> +                                      (*buf++)) & 0xff] ^ (crc >> 8); \
> +             }                                                       \
> +     } while (0)

Maybe make this an inline function?

-Scott
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to