[PATCH] [MTD] [NAND] GPIO NAND flash driver

David Woodhouse dwmw2 at infradead.org
Wed Oct 8 04:30:20 EDT 2008


On Wed, 2008-10-08 at 08:28 +0100, Russell King - ARM Linux wrote:
> On Wed, Oct 08, 2008 at 02:20:13AM -0400, Mike Frysinger wrote:
> > On Wed, Oct 8, 2008 at 02:01, Mike Rapoport wrote:
> > > +/* gpio_nand_dosync()
> > > + *
> > > + * needed due to bus-reordering within the PXA itself (see section on
> > > + * I/O ordering in PXA manual (section 2.3, p35)
> > > + */
> > > +static void gpio_nand_dosync(struct gpiomtd *gpiomtd)
> > > +{
> > > +       unsigned long tmp;
> > > +
> > > +       if (gpiomtd->io_sync) {
> > > +               /*
> > > +                * this should generate the read, followed by
> > > +                * something that depends on the read
> > > +                */
> > > +               tmp = readl(gpiomtd->io_sync);
> > > +               asm volatile("mov %1, %0\n" : "=r" (tmp) : "r" (tmp));
> > > +       }
> > > +}
> > 
> > there isnt much point in attempting to write a generic solution if
> > you're just going to turn around and stick straight assembly in the
> > middle of it.  why not use a real arch-generic method like a memory
> > barrier.
> 
> Linux memory barriers don't cater for what's required here.  What's
> required is what's there - a read from a separate region with a
> dependency on that read.  Linux has no such barrier.

Perhaps it should have? It can do nothing on other architectures...

-- 
David Woodhouse                            Open Source Technology Centre
David.Woodhouse at intel.com                              Intel Corporation




More information about the linux-mtd mailing list