[U-Boot] [PATCH] SPI: Fix 32 bit transfers in mxc_spi.c

Magnus Lilja lilja.magnus at gmail.com
Thu Dec 3 08:13:10 CET 2009


2009/12/3 Guennadi Liakhovetski <lg at denx.de>:
> On Wed, 2 Dec 2009, Wolfgang Denk wrote:
>
>> Dear Guennadi,
>>
>> In message <1257965907-5622-1-git-send-email-lilja.magnus at gmail.com> Magnus Lilja wrote:
>> > 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?

No, I don't have anything suitable on the SPI bus that would allow me
to test > 32-bit transfer.


Regards, Magnus


More information about the U-Boot mailing list