About libertas_spi: 16 bit data transfer
lijinlei1 at 163.com
Tue Feb 22 04:54:23 EST 2011
I really hope someone can help me clarify this.
Since we specified the bits_per_word field, the i.MX SPI controller will send a u16 (2 bytes) at a time, so I think the "len" should be sizeof(buf) / 2.
But in if_spi.c, all "length" are calculated by bytes.
static inline int spu_write_u16(struct if_spi_card *card, u16 reg, u16 val)
buff = cpu_to_le16(val);
return spu_write(card, reg, (u8 *)&buff, sizeof(u16));
I think this is why the libertas_spi can't work with i.MX31 SPI.
----- Original Message -----
From: "Ivan Li" <lijinlei1 at 163.com>
To: <libertas-dev at lists.infradead.org>
Sent: Wednesday, February 16, 2011 4:12 PM
Subject: About libertas_spi: 16 bit data transfer
> Hi guys,
> I am using SD8686 on i.MX31 with SPI interface, and for now I can't make it work.
> The i.MX31 supports 8, 16, 32bit for data transfer, and as I know the SD8686 transfers data in 16 bits.
> So I made below setup callback:
> static int mxc_libertas_setup(struct spi_device *spi)
> spi->bits_per_word = 16;
> return 0;
> But, in if_spi.c, I still see the "word" data is tranmitting in bytes.
> Can anybody explain a little bit? And is there anybody making sd8686 spi work on i.MX series?
> libertas-dev mailing list
> libertas-dev at lists.infradead.org
More information about the libertas-dev