[alsa-devel] [PATCH 2/4] ASoC: clean up spi cache read/write functions
Takashi Iwai
tiwai at suse.de
Mon Dec 20 17:01:53 CET 2010
Use a common helper function for spi write
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
sound/soc/soc-cache.c | 106 +++++++++++++------------------------------------
1 files changed, 28 insertions(+), 78 deletions(-)
diff --git a/sound/soc/soc-cache.c b/sound/soc/soc-cache.c
index 374b06a..5faad25 100644
--- a/sound/soc/soc-cache.c
+++ b/sound/soc/soc-cache.c
@@ -64,6 +64,28 @@ static unsigned int do_hw_read(struct snd_soc_codec *codec, unsigned int reg)
return val;
}
+#ifdef CONFIG_SPI_MASTER
+static int do_spi_write(struct spi_device *spi, u8 *msg, int len)
+{
+ struct spi_transfer t;
+ struct spi_message m;
+
+ if (len <= 0)
+ return 0;
+
+ spi_message_init(&m);
+ memset(&t, 0, sizeof t);
+
+ t.tx_buf = &msg[0];
+ t.len = len;
+
+ spi_message_add_tail(&t, &m);
+ spi_sync(spi, &m);
+
+ return len;
+}
+#endif
+
static unsigned int snd_soc_4_12_read(struct snd_soc_codec *codec,
unsigned int reg)
{
@@ -85,9 +107,6 @@ static int snd_soc_4_12_write(struct snd_soc_codec *codec, unsigned int reg,
static int snd_soc_4_12_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[2];
if (len <= 0)
@@ -96,16 +115,7 @@ static int snd_soc_4_12_spi_write(void *control_data, const char *data,
msg[0] = data[1];
msg[1] = data[0];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_4_12_spi_write NULL
@@ -132,9 +142,6 @@ static int snd_soc_7_9_write(struct snd_soc_codec *codec, unsigned int reg,
static int snd_soc_7_9_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[2];
if (len <= 0)
@@ -143,16 +150,7 @@ static int snd_soc_7_9_spi_write(void *control_data, const char *data,
msg[0] = data[0];
msg[1] = data[1];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_7_9_spi_write NULL
@@ -181,9 +179,6 @@ static unsigned int snd_soc_8_8_read(struct snd_soc_codec *codec,
static int snd_soc_8_8_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[2];
if (len <= 0)
@@ -192,16 +187,7 @@ static int snd_soc_8_8_spi_write(void *control_data, const char *data,
msg[0] = data[0];
msg[1] = data[1];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_8_8_spi_write NULL
@@ -229,9 +215,6 @@ static unsigned int snd_soc_8_16_read(struct snd_soc_codec *codec,
static int snd_soc_8_16_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[3];
if (len <= 0)
@@ -241,16 +224,7 @@ static int snd_soc_8_16_spi_write(void *control_data, const char *data,
msg[1] = data[1];
msg[2] = data[2];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_8_16_spi_write NULL
@@ -382,9 +356,6 @@ static int snd_soc_16_8_write(struct snd_soc_codec *codec, unsigned int reg,
static int snd_soc_16_8_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[3];
if (len <= 0)
@@ -394,16 +365,7 @@ static int snd_soc_16_8_spi_write(void *control_data, const char *data,
msg[1] = data[1];
msg[2] = data[2];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_16_8_spi_write NULL
@@ -466,9 +428,6 @@ static int snd_soc_16_16_write(struct snd_soc_codec *codec, unsigned int reg,
static int snd_soc_16_16_spi_write(void *control_data, const char *data,
int len)
{
- struct spi_device *spi = control_data;
- struct spi_transfer t;
- struct spi_message m;
u8 msg[4];
if (len <= 0)
@@ -479,16 +438,7 @@ static int snd_soc_16_16_spi_write(void *control_data, const char *data,
msg[2] = data[2];
msg[3] = data[3];
- spi_message_init(&m);
- memset(&t, 0, sizeof t);
-
- t.tx_buf = &msg[0];
- t.len = len;
-
- spi_message_add_tail(&t, &m);
- spi_sync(spi, &m);
-
- return len;
+ return do_spi_write(control_data, msg, len);
}
#else
#define snd_soc_16_16_spi_write NULL
--
1.7.3.4
More information about the Alsa-devel
mailing list