summaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/ad1980.c2
-rw-r--r--sound/soc/codecs/stac9766.c2
-rw-r--r--sound/soc/codecs/wm9705.c2
-rw-r--r--sound/soc/codecs/wm9712.c2
-rw-r--r--sound/soc/codecs/wm9713.c2
-rw-r--r--sound/soc/soc-ac97.c22
6 files changed, 13 insertions, 19 deletions
diff --git a/sound/soc/codecs/ad1980.c b/sound/soc/codecs/ad1980.c
index 9ed4e12..f71cc21 100644
--- a/sound/soc/codecs/ad1980.c
+++ b/sound/soc/codecs/ad1980.c
@@ -220,7 +220,7 @@ static int ad1980_soc_probe(struct snd_soc_codec *codec)
u16 vendor_id2;
u16 ext_status;
- ret = snd_soc_new_ac97_codec(codec, soc_ac97_ops, 0);
+ ret = snd_soc_new_ac97_codec(codec);
if (ret < 0) {
dev_err(codec->dev, "Failed to register AC97 codec\n");
return ret;
diff --git a/sound/soc/codecs/stac9766.c b/sound/soc/codecs/stac9766.c
index 53b810d..45ac4a7 100644
--- a/sound/soc/codecs/stac9766.c
+++ b/sound/soc/codecs/stac9766.c
@@ -336,7 +336,7 @@ static int stac9766_codec_probe(struct snd_soc_codec *codec)
{
int ret = 0;
- ret = snd_soc_new_ac97_codec(codec, soc_ac97_ops, 0);
+ ret = snd_soc_new_ac97_codec(codec);
if (ret < 0)
goto codec_err;
diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c
index 1650195..2cb8a31 100644
--- a/sound/soc/codecs/wm9705.c
+++ b/sound/soc/codecs/wm9705.c
@@ -337,7 +337,7 @@ static int wm9705_soc_probe(struct snd_soc_codec *codec)
{
int ret = 0;
- ret = snd_soc_new_ac97_codec(codec, soc_ac97_ops, 0);
+ ret = snd_soc_new_ac97_codec(codec);
if (ret < 0) {
dev_err(codec->dev, "Failed to register AC97 codec\n");
return ret;
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
index 3fad37e..6b36223 100644
--- a/sound/soc/codecs/wm9712.c
+++ b/sound/soc/codecs/wm9712.c
@@ -666,7 +666,7 @@ static int wm9712_soc_probe(struct snd_soc_codec *codec)
{
int ret = 0;
- ret = snd_soc_new_ac97_codec(codec, soc_ac97_ops, 0);
+ ret = snd_soc_new_ac97_codec(codec);
if (ret < 0) {
dev_err(codec->dev, "Failed to register AC97 codec\n");
return ret;
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
index 998e4c7..2071df7 100644
--- a/sound/soc/codecs/wm9713.c
+++ b/sound/soc/codecs/wm9713.c
@@ -1219,7 +1219,7 @@ static int wm9713_soc_probe(struct snd_soc_codec *codec)
{
int ret = 0, reg;
- ret = snd_soc_new_ac97_codec(codec, soc_ac97_ops, 0);
+ ret = snd_soc_new_ac97_codec(codec);
if (ret < 0)
return ret;
diff --git a/sound/soc/soc-ac97.c b/sound/soc/soc-ac97.c
index da7b031..dbfca7e 100644
--- a/sound/soc/soc-ac97.c
+++ b/sound/soc/soc-ac97.c
@@ -38,6 +38,10 @@ struct snd_ac97_reset_cfg {
int gpio_reset;
};
+static struct snd_ac97_bus soc_ac97_bus = {
+ .ops = NULL, /* Gets initialized in snd_soc_set_ac97_ops() */
+};
+
/* unregister ac97 codec */
static int soc_ac97_dev_unregister(struct snd_soc_codec *codec)
{
@@ -140,27 +144,17 @@ static void soc_ac97_device_release(struct device *dev)
/**
* snd_soc_new_ac97_codec - initailise AC97 device
* @codec: audio codec
- * @ops: AC97 bus operations
- * @num: AC97 codec number
*
* Initialises AC97 codec resources for use by ad-hoc devices only.
*/
-int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
- struct snd_ac97_bus_ops *ops, int num)
+int snd_soc_new_ac97_codec(struct snd_soc_codec *codec)
{
codec->ac97 = kzalloc(sizeof(struct snd_ac97), GFP_KERNEL);
if (codec->ac97 == NULL)
return -ENOMEM;
- codec->ac97->bus = kzalloc(sizeof(struct snd_ac97_bus), GFP_KERNEL);
- if (codec->ac97->bus == NULL) {
- kfree(codec->ac97);
- codec->ac97 = NULL;
- return -ENOMEM;
- }
-
- codec->ac97->bus->ops = ops;
- codec->ac97->num = num;
+ codec->ac97->bus = &soc_ac97_bus;
+ codec->ac97->num = 0;
codec->ac97->dev.release = soc_ac97_device_release;
/*
@@ -183,7 +177,6 @@ EXPORT_SYMBOL_GPL(snd_soc_new_ac97_codec);
void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
{
soc_unregister_ac97_codec(codec);
- kfree(codec->ac97->bus);
codec->ac97->bus = NULL;
put_device(&codec->ac97->dev);
codec->ac97 = NULL;
@@ -314,6 +307,7 @@ int snd_soc_set_ac97_ops(struct snd_ac97_bus_ops *ops)
return -EBUSY;
soc_ac97_ops = ops;
+ soc_ac97_bus.ops = ops;
return 0;
}
OpenPOWER on IntegriCloud