[alsa-devel] [PATCH 7/8] ASoC: Add SPI support for WM8731

Alan Horstmann gineera at aspect135.co.uk
Mon Sep 8 22:27:13 CEST 2008

On Monday 08 September 2008 14:52, you wrote:
> On Thu, Sep 04, 2008 at 11:48:29AM +0100, Alan Horstmann wrote:
> > I assume that spi_transfer sends bytes in order, from the tx_buf
> > position, and it seems clear that data[0] is the high byte that should go
> > first.  As msg[2] is u16 (why?), I would have thought that the byte at
> > &msg[0] would be the low byte on LE, high byte on BE so it would only be
> > correct on BE.
> Your analysis makes sense to me.
> > Changing the code to use
> ...
> > fixes the problem here.
> Could you supply a patch, please?

Attached and here inline is the small change we applied to ensure the byte 
order is correct in the _spi_write function.  Note we observed the spi bus 
with a fast Digital Oscilloscope, and could readily see the bytes were 
originally reversed in our case (AT91SAM9260).  Our build is set to LE, but I 
have no idea why the write should be fine on Blackfin-LE without this change.

With just this one change we have been successful in running the codec over 
spi.  At present we do have an issue with dapm during capture -nothing is 
being turned on!  Any pointers would be appreciated.



--- wm8731-orig.c	2008-09-08 17:16:52.000000000 +0100
+++ wm8731.c	2008-09-08 21:03:16.000000000 +0100
@@ -688,12 +688,13 @@
 	struct spi_transfer t;
 	struct spi_message m;
-	u16 msg[2];
+	u8 msg[2];

 	if (len <= 0)
 		return 0;

-	msg[0] = (data[0] << 8) + data[1];
+	msg[0] = data[0];
+	msg[1] = data[1];

 	memset(&t, 0, (sizeof t));

-------------- next part --------------
A non-text attachment was scrubbed...
Name: wm8731_spi_write_byte_order.patch
Type: application/octet-stream
Size: 369 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20080908/b0d6f225/attachment.dll 

More information about the Alsa-devel mailing list