aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2018-01-15 21:00:59 -0500
committerMark Brown <broonie@kernel.org>2018-01-16 08:26:42 -0500
commitd0ff8ba57d9654e6f7a2e18f192bac3b93268fef (patch)
tree5e9c86ef45eb10245f66f53ca31d67bd097ffaad
parentb9f902b7fd800214b5598a636ceb74bfe2db63be (diff)
ASoC: add Component level .read/.write
In current ALSA SoC, Codec only has .read/.write callback. Codec will be merged into Component in next generation ALSA SoC, thus current Codec specific feature need to be merged into it. This is glue patch for it. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--include/sound/soc.h3
-rw-r--r--sound/soc/soc-io.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 1a7323238c49..6e865c2bcffe 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -802,6 +802,9 @@ struct snd_soc_component_driver {
802 int (*suspend)(struct snd_soc_component *); 802 int (*suspend)(struct snd_soc_component *);
803 int (*resume)(struct snd_soc_component *); 803 int (*resume)(struct snd_soc_component *);
804 804
805 unsigned int (*read)(struct snd_soc_component *, unsigned int);
806 int (*write)(struct snd_soc_component *, unsigned int, unsigned int);
807
805 /* pcm creation and destruction */ 808 /* pcm creation and destruction */
806 int (*pcm_new)(struct snd_soc_pcm_runtime *); 809 int (*pcm_new)(struct snd_soc_pcm_runtime *);
807 void (*pcm_free)(struct snd_pcm *); 810 void (*pcm_free)(struct snd_pcm *);
diff --git a/sound/soc/soc-io.c b/sound/soc/soc-io.c
index 20340ade20a7..2bc1c4c17896 100644
--- a/sound/soc/soc-io.c
+++ b/sound/soc/soc-io.c
@@ -34,6 +34,10 @@ int snd_soc_component_read(struct snd_soc_component *component,
34 ret = regmap_read(component->regmap, reg, val); 34 ret = regmap_read(component->regmap, reg, val);
35 else if (component->read) 35 else if (component->read)
36 ret = component->read(component, reg, val); 36 ret = component->read(component, reg, val);
37 else if (component->driver->read) {
38 *val = component->driver->read(component, reg);
39 ret = 0;
40 }
37 else 41 else
38 ret = -EIO; 42 ret = -EIO;
39 43
@@ -70,6 +74,8 @@ int snd_soc_component_write(struct snd_soc_component *component,
70 return regmap_write(component->regmap, reg, val); 74 return regmap_write(component->regmap, reg, val);
71 else if (component->write) 75 else if (component->write)
72 return component->write(component, reg, val); 76 return component->write(component, reg, val);
77 else if (component->driver->write)
78 return component->driver->write(component, reg, val);
73 else 79 else
74 return -EIO; 80 return -EIO;
75} 81}