[alsa-devel] [PATCH][ASoC V2] Update snd_soc_card_get_codec() to take the codec number
Timur Tabi
timur at freescale.com
Fri Jun 6 18:01:45 CEST 2008
Update function snd_soc_card_get_codec() and all the drivers that call it
to take a codec number in addition to a codec name. This is necessary for
codec drivers that register multiple instances of themselves that differ
only by codec number.
Signed-off-by: Timur Tabi <timur at freescale.com>
---
I have only tested this code on the MPC8610, so please test this on other
platforms before committing.
include/sound/soc-card.h | 2 +-
sound/soc/at91/eti_b1_wm8731.c | 2 +-
sound/soc/fsl/mpc8610_hpcd.c | 10 +++++-----
sound/soc/imx/imx32ads-wm8350.c | 2 +-
sound/soc/pxa/amesom_tlv320.c | 2 +-
sound/soc/pxa/corgi.c | 2 +-
sound/soc/pxa/e800_wm9712.c | 2 +-
sound/soc/pxa/h5000.c | 2 +-
sound/soc/pxa/magician.c | 2 +-
sound/soc/pxa/mainstone_wm8753.c | 2 +-
sound/soc/pxa/mainstone_wm9712.c | 2 +-
sound/soc/pxa/mainstone_wm9713.c | 2 +-
sound/soc/pxa/poodle.c | 2 +-
sound/soc/pxa/spitz.c | 2 +-
sound/soc/pxa/tosa.c | 2 +-
sound/soc/pxa/zylonite.c | 2 +-
sound/soc/soc-core.c | 5 +++--
17 files changed, 23 insertions(+), 22 deletions(-)
diff --git a/include/sound/soc-card.h b/include/sound/soc-card.h
index 9b8600d..290f649 100644
--- a/include/sound/soc-card.h
+++ b/include/sound/soc-card.h
@@ -44,7 +44,7 @@ struct snd_ac97_bus_ops *snd_soc_card_get_ac97_ops(
struct snd_soc_card *soc_card, const char *dai_id);
struct snd_soc_codec *snd_soc_card_get_codec(struct snd_soc_card *soc_card,
- const char *codec_id);
+ const char *codec_name, int codec_num);
struct snd_soc_platform * snd_soc_card_get_platform(
struct snd_soc_card *soc_card, const char *platform_id);
diff --git a/sound/soc/at91/eti_b1_wm8731.c b/sound/soc/at91/eti_b1_wm8731.c
index bcee769..a70fffe 100644
--- a/sound/soc/at91/eti_b1_wm8731.c
+++ b/sound/soc/at91/eti_b1_wm8731.c
@@ -242,7 +242,7 @@ static int eti_b1_init(struct snd_soc_card *soc_card)
struct at91_ssc_periph *ssc;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c
index 45c3311..8813291 100644
--- a/sound/soc/fsl/mpc8610_hpcd.c
+++ b/sound/soc/fsl/mpc8610_hpcd.c
@@ -38,7 +38,6 @@
* MPC8610 HPCD. Some of the data is taken from the device tree.
*/
struct mpc8610_hpcd_data {
- char codec_name[32];
struct snd_soc_card soc_card;
struct ccsr_guts __iomem *guts;
unsigned int num_configs;
@@ -47,8 +46,6 @@ struct mpc8610_hpcd_data {
char pcm_name[32];
char ssi_name[32];
char codec_name[32];
- char platform_name[32];
- char cpu_dai_name[32];
} names[MAX_SSI];
};
@@ -99,7 +96,8 @@ static int mpc8610_hpcd_audio_init(struct snd_soc_card *soc_card)
for (i = 0; i < soc_card_data->num_configs; i++) {
codec = snd_soc_card_get_codec(soc_card,
- soc_card_data->names[i].codec_name);
+ soc_card_data->names[i].codec_name,
+ soc_card_data->configs[i].codec_num);
if (!codec) {
dev_err(soc_card->dev, "could not find codec\n");
@@ -111,7 +109,9 @@ static int mpc8610_hpcd_audio_init(struct snd_soc_card *soc_card)
*/
ret = snd_soc_card_init_codec(codec, soc_card);
if (ret < 0) {
- dev_err(soc_card->dev, "could not initialize codec\n");
+ dev_err(soc_card->dev,
+ "could not initialize codec %s-%u\n",
+ codec->name, codec->num);
continue;
}
}
diff --git a/sound/soc/imx/imx32ads-wm8350.c b/sound/soc/imx/imx32ads-wm8350.c
index feb83cc..94de723 100644
--- a/sound/soc/imx/imx32ads-wm8350.c
+++ b/sound/soc/imx/imx32ads-wm8350.c
@@ -407,7 +407,7 @@ int imx32_audio_init(struct snd_soc_card *soc_card)
if (pcm_runtime == NULL)
return -ENODEV;
- codec = snd_soc_card_get_codec(soc_card, wm8350_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8350_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/amesom_tlv320.c b/sound/soc/pxa/amesom_tlv320.c
index 9be4db0..c2ba22a 100644
--- a/sound/soc/pxa/amesom_tlv320.c
+++ b/sound/soc/pxa/amesom_tlv320.c
@@ -134,7 +134,7 @@ static int amesom_tlv320_init(struct snd_soc_card *soc_card)
{
struct snd_soc_codec *codec;
- codec = snd_soc_card_get_codec(soc_card, tlv320_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, tlv320_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
index c24d76b..9f30f12 100644
--- a/sound/soc/pxa/corgi.c
+++ b/sound/soc/pxa/corgi.c
@@ -313,7 +313,7 @@ static int corgi_init(struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/e800_wm9712.c b/sound/soc/pxa/e800_wm9712.c
index 987106a..9159d03 100644
--- a/sound/soc/pxa/e800_wm9712.c
+++ b/sound/soc/pxa/e800_wm9712.c
@@ -50,7 +50,7 @@ static int e800_init(struct snd_soc_card *soc_card)
struct snd_ac97_bus_ops *ac97_ops;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/h5000.c b/sound/soc/pxa/h5000.c
index 54ff23c..fa340f4 100644
--- a/sound/soc/pxa/h5000.c
+++ b/sound/soc/pxa/h5000.c
@@ -272,7 +272,7 @@ static int h5000_ak4535_init (struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, ak4535_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, ak4535_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c
index ad6dea7..0d7b145 100644
--- a/sound/soc/pxa/magician.c
+++ b/sound/soc/pxa/magician.c
@@ -436,7 +436,7 @@ static int magician_uda1380_init(struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, uda1380_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, uda1380_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/mainstone_wm8753.c b/sound/soc/pxa/mainstone_wm8753.c
index f7ab6fb..2bef9e9 100644
--- a/sound/soc/pxa/mainstone_wm8753.c
+++ b/sound/soc/pxa/mainstone_wm8753.c
@@ -328,7 +328,7 @@ static int mainstone_wm8753_init(struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm8753_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8753_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/mainstone_wm9712.c b/sound/soc/pxa/mainstone_wm9712.c
index b87362b..f2ded1d 100644
--- a/sound/soc/pxa/mainstone_wm9712.c
+++ b/sound/soc/pxa/mainstone_wm9712.c
@@ -81,7 +81,7 @@ static int mainstone_wm9712_init(struct snd_soc_card *soc_card)
struct snd_ac97_bus_ops *ac97_ops;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/mainstone_wm9713.c b/sound/soc/pxa/mainstone_wm9713.c
index 9492b3e..f9723e1 100644
--- a/sound/soc/pxa/mainstone_wm9713.c
+++ b/sound/soc/pxa/mainstone_wm9713.c
@@ -163,7 +163,7 @@ static int mainstone_wm9713_init(struct snd_soc_card *soc_card)
struct snd_ac97_bus_ops *ac97_ops;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm9713_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm9713_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c
index 4ce0ce4..126ba5b 100644
--- a/sound/soc/pxa/poodle.c
+++ b/sound/soc/pxa/poodle.c
@@ -264,7 +264,7 @@ static int poodle_init(struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8731_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index 497b3b2..393adda 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -315,7 +315,7 @@ static int spitz_init(struct snd_soc_card *soc_card)
struct snd_soc_codec *codec;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm8750_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm8750_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index 77688e2..18e8e4b 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -211,7 +211,7 @@ static int tosa_init(struct snd_soc_card *soc_card)
struct snd_ac97_bus_ops *ac97_ops;
int ret;
- codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id);
+ codec = snd_soc_card_get_codec(soc_card, wm9712_codec_id, 0);
if (codec == NULL)
return -ENODEV;
diff --git a/sound/soc/pxa/zylonite.c b/sound/soc/pxa/zylonite.c
index a7e8ab7..4209fc2 100644
--- a/sound/soc/pxa/zylonite.c
+++ b/sound/soc/pxa/zylonite.c
@@ -93,7 +93,7 @@ static int zylonite_init(struct snd_soc_card *card)
struct snd_ac97_bus_ops *ac97_ops;
int ret;
- codec = snd_soc_card_get_codec(card, wm9713_codec_id);
+ codec = snd_soc_card_get_codec(card, wm9713_codec_id, 0);
if (codec == NULL) {
printk(KERN_ERR "Unable to obtain WM9713 codec\n");
return -ENODEV;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 520469b..a88e3a0 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2172,12 +2172,13 @@ EXPORT_SYMBOL_GPL(snd_soc_card_free);
* Get a codec from a codec ID.
*/
struct snd_soc_codec *snd_soc_card_get_codec(struct snd_soc_card *soc_card,
- const char *codec_id)
+ const char *codec_name, int codec_num)
{
struct soc_pcm_config *config;
list_for_each_entry(config, &soc_card->config_list, list) {
- if (config->codec && !strcmp(config->codec->name, codec_id))
+ if (config->codec && !strcmp(config->codec->name, codec_name)
+ && config->codec->num == codec_num)
return config->codec;
}
return NULL;
--
1.5.5
More information about the Alsa-devel
mailing list