[U-Boot-Users] [DNX#2007022342000022] [PATCH v3] Add sync to ensure flash [...]

DENX Support System support at denx.de
Fri Feb 23 06:30:04 CET 2007


Hello list,

inside the automatic U-Boot patch tracking system a new ticket
[DNX#2007022342000022] was created:

<snip>
> Acked-by: Tolunay Orkun <listmember at orkun.us>
> 
> Haiying Wang wrote:
> > Some CPUs like PPC, BLACKFIN need sync() to ensure cfi flash write command is fully finished. The sync() is defined in each CPU's io.h file. For those CPUs which do not need sync for now, a dummy sync() is defined in their io.h as well.
> > 
> > Signed-off-by: Haiying Wang <Haiying.Wang at freescale.com>
> > ---
> >  drivers/cfi_flash.c         |   16 ++++------------
> >  include/asm-arm/io.h        |    4 ++++
> >  include/asm-avr32/io.h      |    4 ++++
> >  include/asm-blackfin/io.h   |    5 +++++
> >  include/asm-i386/io.h       |    4 ++++
> >  include/asm-m68k/io.h       |    9 ++++++++-
> >  include/asm-microblaze/io.h |    4 ++++
> >  include/asm-mips/io.h       |    4 ++++
> >  include/asm-nios/io.h       |    4 ++++
> >  include/asm-nios2/io.h      |    5 ++++-
> >  include/asm-ppc/io.h        |   11 +++++++++--
> >  11 files changed, 54 insertions(+), 16 deletions(-)
> > 
> > diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c
> > index 696f9a4..5579a1e 100644
> > --- a/drivers/cfi_flash.c
> > +++ b/drivers/cfi_flash.c
> > @@ -36,6 +36,7 @@
> >  
> >  #include <common.h>
> >  #include <asm/processor.h>
> > +#include <asm/io.h>
> >  #include <asm/byteorder.h>
> >  #include <environment.h>
> >  #ifdef	CFG_FLASH_CFI_DRIVER
> > @@ -931,27 +932,18 @@ static void flash_write_cmd (flash_info_t * info, flash_sect_t sect, uint offset
> >  		debug ("fwc addr %p cmd %x %x 8bit x %d bit\n", addr.cp, cmd,
> >  		       cword.c, info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
> >  		*addr.cp = cword.c;
> > -#ifdef CONFIG_BLACKFIN
> > -		asm("ssync;");
> > -#endif
> >  		break;
> >  	case FLASH_CFI_16BIT:
> >  		debug ("fwc addr %p cmd %x %4.4x 16bit x %d bit\n", addr.wp,
> >  		       cmd, cword.w,
> >  		       info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
> >  		*addr.wp = cword.w;
> > -#ifdef CONFIG_BLACKFIN
> > -		asm("ssync;");
> > -#endif
> >  		break;
> >  	case FLASH_CFI_32BIT:
> >  		debug ("fwc addr %p cmd %x %8.8lx 32bit x %d bit\n", addr.lp,
> >  		       cmd, cword.l,
> >  		       info->chipwidth << CFI_FLASH_SHIFT_WIDTH);
> >  		*addr.lp = cword.l;
> > -#ifdef CONFIG_BLACKFIN
> > -		asm("ssync;");
> > -#endif
> >  		break;
> >  	case FLASH_CFI_64BIT:
> >  #ifdef DEBUG
> > @@ -966,11 +958,11 @@ static void flash_write_cmd (flash_info_t * info, flash_sect_t sect, uint offset
> >  		}
> >  #endif
> >  		*addr.llp = cword.ll;
> > -#ifdef CONFIG_BLACKFIN
> > -		asm("ssync;");
> > -#endif
> >  		break;
> >  	}
> > +
> > +	/* Ensure all the instructions are fully finished */
> > +	sync();
> >  }
> >  
> >  static void flash_unlock_seq (flash_info_t * info, flash_sect_t sect)
> > diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h
> > index 648a10d..47c18e7 100644
> > --- a/include/asm-arm/io.h
> > +++ b/include/asm-arm/io.h
> > @@ -29,6 +29,10 @@
> >  #include <asm/arch/hardware.h>
> >  #endif	/* XXX###XXX */
> >  
> > +static inline void sync(void)
> > +{
> > +}
> > +
> >  /*
> >   * Generic virtual read/write.  Note that we don't support half-word
> >   * read/writes.  We define __arch_*[bl] here, and leave __arch_*w
> > diff --git a/include/asm-avr32/io.h b/include/asm-avr32/io.h
> > index e86c456..3c0d569 100644
> > --- a/include/asm-avr32/io.h
> > +++ b/include/asm-avr32/io.h
> > @@ -89,4 +89,8 @@ static __inline__ void * phys_to_virt(unsigned long address)
> >  
> >  #endif /* __KERNEL__ */
> >  
> > +static inline void sync(void)
> > +{
</snip>

Your U-Boot support team



More information about the U-Boot mailing list