From a39f75f7907fa3a708751dc283e3ab3e7da526b8 Mon Sep 17 00:00:00 2001
From: Xiubo Li
Date: Wed, 26 Mar 2014 13:40:23 +0800
Subject: ASoC: core: Move the default regmap I/O setting to
snd_soc_register_codec()
Add the default regmap I/O setting to snd_soc_register_codec() while
the CODEC is initialising, which will be called by CODEC driver device
probe(), and then we can make XXX_set_cache_io() go away entirely from each
CODEC ASoC probe.
Signed-off-by: Xiubo Li
Signed-off-by: Mark Brown
---
sound/soc/soc-io.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
(limited to 'sound/soc/soc-io.c')
diff --git a/sound/soc/soc-io.c b/sound/soc/soc-io.c
index 260efc8466fc..6480e8f29310 100644
--- a/sound/soc/soc-io.c
+++ b/sound/soc/soc-io.c
@@ -60,14 +60,11 @@ int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
{
int ret;
- /* Device has made its own regmap arrangements */
if (!regmap)
- codec->control_data = dev_get_regmap(codec->dev, NULL);
- else
- codec->control_data = regmap;
+ return -EINVAL;
- if (IS_ERR(codec->control_data))
- return PTR_ERR(codec->control_data);
+ /* Device has made its own regmap arrangements */
+ codec->control_data = regmap;
codec->write = hw_write;
codec->read = hw_read;
--
cgit v1.2.3
From ab2874a8faac9db00eb03ec831b9a983627fb2d1 Mon Sep 17 00:00:00 2001
From: Lars-Peter Clausen
Date: Sat, 19 Apr 2014 10:43:57 +0200
Subject: ASoC: Change return type of snd_soc_write() to int
The CODEC's write callback can return a negative error code, make sure to pass
that on correctly.
Signed-off-by: Lars-Peter Clausen
Signed-off-by: Mark Brown
---
include/sound/soc.h | 4 ++--
sound/soc/soc-io.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
(limited to 'sound/soc/soc-io.c')
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 81bc331c520f..192ddc40ae0a 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1125,8 +1125,8 @@ static inline struct snd_soc_platform *snd_soc_component_to_platform(
/* codec IO */
unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg);
-unsigned int snd_soc_write(struct snd_soc_codec *codec,
- unsigned int reg, unsigned int val);
+int snd_soc_write(struct snd_soc_codec *codec, unsigned int reg,
+ unsigned int val);
/* device driver data */
diff --git a/sound/soc/soc-io.c b/sound/soc/soc-io.c
index 31ddd52c72fc..5fb85783b044 100644
--- a/sound/soc/soc-io.c
+++ b/sound/soc/soc-io.c
@@ -31,8 +31,8 @@ unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg)
}
EXPORT_SYMBOL_GPL(snd_soc_read);
-unsigned int snd_soc_write(struct snd_soc_codec *codec,
- unsigned int reg, unsigned int val)
+int snd_soc_write(struct snd_soc_codec *codec, unsigned int reg,
+ unsigned int val)
{
dev_dbg(codec->dev, "write %x = %x\n", reg, val);
trace_snd_soc_reg_write(codec, reg, val);
--
cgit v1.2.3