[alsa-devel] ASoC updates for 2.6.37

Dimitris Papastamos dp at opensource.wolfsonmicro.com
Wed Oct 6 16:13:42 CEST 2010


On Wed, 2010-10-06 at 15:46 +0200, Takashi Iwai wrote:
> At Wed, 06 Oct 2010 14:40:04 +0100,
> Dimitris Papastamos wrote:
> > 
> > On Wed, 2010-10-06 at 15:30 +0200, Takashi Iwai wrote:
> > > At Wed, 06 Oct 2010 10:25:40 +0100,
> > > Dimitris Papastamos wrote:
> > > > 
> > > > On Wed, 2010-10-06 at 08:31 +0100, Mark Brown wrote:
> > > > On Wed, Oct 06, 2010 at 09:10:23AM +0200, Takashi Iwai wrote:
> > > > > 
> > > > > > If the above difference is intentional, it should be commented
> > > > > > somewhere.
> > > > > 
> > > > > Meh, yes.  Dimitris, please fix or add a comment as appropriate.
> > > > > 
> > > > 
> > > > In snd_soc_7_9_spi_write we prepare the tx buffer to be register
> > > > followed by data packed into 16 bits.  In snd_soc_4_12_spi_write the tx
> > > > buffer is swapped.  I'd expect this to be consistent between the two
> > > > transfers.
> > > 
> > > Sorry, I don't understand your statement clearly.
> > > So, the byte-swap behavior in snd_soc_4_12_spi_write() is designed?
> > 
> > I meant to say that snd_soc_4_12_spi_write looks suspicious and that I'd
> > expect it to behave similarly to snd_soc_7_9_spi_write.  I don't see why
> > the byte swapping is needed.
> 
> OK, thanks for clarifying :)
> 
> Looking through git commits, this was introduced by a patch from Barry
> Song.  Barry, could you check whether the current code is correct?
> 
> I guess this is because the original code accessed unsigned short
> while the new code is converted to a byte array.  Maybe due to the
> endianess, but it looks wrong.

Looking at the commit now, I think his changes are consistent.  Consider
an example with reg = 0xf and value = 0xa, then his original unsigned
short buf is equal to 0xf00a.  If you follow the logic in
snd_soc_4_12_write you will find that data[0] and data[1] are 0xf0 and
0x0a respectively.  However on a say LE machine, his original buf is
laid out in mem as 0af0 whereas the data buffer is laid out as f00a so
he has to reverse that by swapping it in snd_soc_4_12_spi_write.

Thanks,
Dimitrios



More information about the Alsa-devel mailing list