On Wed, 2 Dec 2009, Wolfgang Denk wrote: > Dear Guennadi, > > In message <1257965907-5622-1-git-send-email-lilja.mag...@gmail.com> Magnus > Lilja wrote: > > Commit f9b6a1575d9f1ca192e4cb60e547aa66f08baa3f, "i.MX31: fix SPI > > driver for shorter than 32 bit" broke 32 bit transfers. This patch > > makes single 32 bit transfer work again. > > > > Tested on i.MX31 Litekit and i.MX31 PDK using 32 bit transfers to > > the MC13783/ATLAS chip (using the 'date' command). > > > > Signed-off-by: Magnus Lilja <lilja.mag...@gmail.com> > > Cc: Guennadi Liakhovetski <l...@denx.de> > > > > --- > > > > I don't think transfers larger than 32 bits will work. It seems > > like they worked in the original driver, but the above commit broke that. > > This patch does not try to fix that problem. > > > > drivers/spi/mxc_spi.c | 2 ++ > > 1 files changed, 2 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c > > index fad9840..8b5d4be 100644 > > --- a/drivers/spi/mxc_spi.c > > +++ b/drivers/spi/mxc_spi.c > > @@ -142,6 +142,8 @@ int spi_xfer(struct spi_slave *slave, unsigned int > > bitlen, const void *dout, > > *(u8 *)din = data; > > else if (bitlen < 17) > > *(u16 *)din = data; > > + else > > + *in_l = data; > > } > > } > > Could you please comment ?
Hm, I'm afraid, I broke more than just that. Now that I look at this loop, looks like I broke not only 32-bit transfers, but also all transfers with bitlen > 16, and this fix is then incomplete - it doesn't fix cases with bitlen > 32. Magnus, looks like you also only use single-block (bitlen=32) transfers? Do you have a chance to test > 32-bit transfers too? Thanks Guennadi --- Guennadi Liakhovetski, Ph.D. DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: off...@denx.de _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot