cfi_cmdset_0001.c: do_write_buffer: wrong length

Shane Nay shane at agendacomputing.com
Mon Dec 18 17:13:46 EST 2000


On Friday 08 December 2000 19:56, D. Vrabel wrote:
> Hi,
>
> Nicolas Pitre wrote:
> > On Fri, 8 Dec 2000, David Vrabel wrote:
> > > In cfi_cmdset_0001.c do_write_buffer writes an incorrect length to the
> > > chip
> > >
> > >     cfi_write(map, CMD((len/(cfi->device_type*CFIDEV_INTERLEAVE))-1),
> > >         cmd_adr);
> > >
> > > Should it it be?
> > >     cfi_write(map, CMD(len/map->buswidth-1), cmd_adr);
> >
> > No.  This will break the case where the interleave isn't 1.
> >
> > Hmmm... Will it?
> >
> > Euh...  Each time I get around this question I get confused...
> >
> > Does someone have the data sheet nearby? (I don't ATM)...  What should
> > the lenght be if a x16 chip is used in x8 mode?  bytes/sizeof(char) or
> > bytes/sizeof(short)?
> >
> > On a 2 x16 arrangement you have buswidth=4, interleave=2, devicetype=2. 
> > In that case it should be len/4 - 1.
> >
> > Maybe you are right after all.
>
> Time to compile a big list of all the arrangements of chips and the
> resultant buffer write length...
>
> So far we have:
>
> device type  interleave  bus width    buf write len
> 2 (x16)      1           1 (x8)       len/1-1
> 2 (x16)      1           2 (x16)      len/2-1
> 2 (x16)      2           4 (x32)      len/4-1
>
> So far it len/buswidth-1...


Yea..., this is what I was _trying_ to say, but communicated very poorly 
about 2 weeks ago.  It's fixed in the patches I posted to the agenda site.

Thanks,
Shane.


To unsubscribe, send "unsubscribe mtd" to majordomo at infradead.org



More information about the linux-mtd mailing list