Commit 063b7cc4 authored by Mark Brown's avatar Mark Brown

ASoC: Remove byte swap in 4x12 SPI write

snd_soc_4_12_spi_write() contains a byte swap. Since this code was written
for an Analog CODEC on a Blackfin reference board it appears that this is
done because while Blackfin is little endian the CODEC is big endian (as
are most CODECs).

Push this up into the generic 4x12 write function and use cpu_to_be16() to
do the byte swap so things are more regular and things work on both CPU
endiannesses.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
parent 051e994e
...@@ -101,12 +101,11 @@ static unsigned int snd_soc_4_12_read(struct snd_soc_codec *codec, ...@@ -101,12 +101,11 @@ static unsigned int snd_soc_4_12_read(struct snd_soc_codec *codec,
static int snd_soc_4_12_write(struct snd_soc_codec *codec, unsigned int reg, static int snd_soc_4_12_write(struct snd_soc_codec *codec, unsigned int reg,
unsigned int value) unsigned int value)
{ {
u8 data[2]; u16 data;
data[0] = (reg << 4) | ((value >> 8) & 0x000f); data = cpu_to_be16((reg << 12) | (value & 0xffffff));
data[1] = value & 0x00ff;
return do_hw_write(codec, reg, value, data, 2); return do_hw_write(codec, reg, value, &data, 2);
} }
#if defined(CONFIG_SPI_MASTER) #if defined(CONFIG_SPI_MASTER)
...@@ -115,8 +114,8 @@ static int snd_soc_4_12_spi_write(void *control_data, const char *data, ...@@ -115,8 +114,8 @@ static int snd_soc_4_12_spi_write(void *control_data, const char *data,
{ {
u8 msg[2]; u8 msg[2];
msg[0] = data[1]; msg[0] = data[0];
msg[1] = data[0]; msg[1] = data[1];
return do_spi_write(control_data, msg, len); return do_spi_write(control_data, msg, len);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment