diff options
| -rw-r--r-- | sound/soc/codecs/wm9705.c | 16 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9712.c | 12 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9713.c | 12 |
3 files changed, 26 insertions, 14 deletions
diff --git a/sound/soc/codecs/wm9705.c b/sound/soc/codecs/wm9705.c index 3eddb18fefd1..5cc457ef8894 100644 --- a/sound/soc/codecs/wm9705.c +++ b/sound/soc/codecs/wm9705.c | |||
| @@ -344,23 +344,27 @@ static int wm9705_soc_probe(struct snd_soc_codec *codec) | |||
| 344 | struct snd_ac97 *ac97; | 344 | struct snd_ac97 *ac97; |
| 345 | int ret = 0; | 345 | int ret = 0; |
| 346 | 346 | ||
| 347 | ac97 = snd_soc_new_ac97_codec(codec); | 347 | ac97 = snd_soc_alloc_ac97_codec(codec); |
| 348 | if (IS_ERR(ac97)) { | 348 | if (IS_ERR(ac97)) { |
| 349 | ret = PTR_ERR(ac97); | 349 | ret = PTR_ERR(ac97); |
| 350 | dev_err(codec->dev, "Failed to register AC97 codec\n"); | 350 | dev_err(codec->dev, "Failed to register AC97 codec\n"); |
| 351 | return ret; | 351 | return ret; |
| 352 | } | 352 | } |
| 353 | 353 | ||
| 354 | snd_soc_codec_set_drvdata(codec, ac97); | ||
| 355 | |||
| 356 | ret = wm9705_reset(codec); | 354 | ret = wm9705_reset(codec); |
| 357 | if (ret) | 355 | if (ret) |
| 358 | goto reset_err; | 356 | goto err_put_device; |
| 357 | |||
| 358 | ret = device_add(&ac97->dev); | ||
| 359 | if (ret) | ||
| 360 | goto err_put_device; | ||
| 361 | |||
| 362 | snd_soc_codec_set_drvdata(codec, ac97); | ||
| 359 | 363 | ||
| 360 | return 0; | 364 | return 0; |
| 361 | 365 | ||
| 362 | reset_err: | 366 | err_put_device: |
| 363 | snd_soc_free_ac97_codec(ac97); | 367 | put_device(&ac97->dev); |
| 364 | return ret; | 368 | return ret; |
| 365 | } | 369 | } |
| 366 | 370 | ||
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c index e04643d2bb24..9517571e820d 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) | |||
| 666 | struct wm9712_priv *wm9712 = snd_soc_codec_get_drvdata(codec); | 666 | struct wm9712_priv *wm9712 = snd_soc_codec_get_drvdata(codec); |
| 667 | int ret = 0; | 667 | int ret = 0; |
| 668 | 668 | ||
| 669 | wm9712->ac97 = snd_soc_new_ac97_codec(codec); | 669 | wm9712->ac97 = snd_soc_alloc_ac97_codec(codec); |
| 670 | if (IS_ERR(wm9712->ac97)) { | 670 | if (IS_ERR(wm9712->ac97)) { |
| 671 | ret = PTR_ERR(wm9712->ac97); | 671 | ret = PTR_ERR(wm9712->ac97); |
| 672 | dev_err(codec->dev, "Failed to register AC97 codec: %d\n", ret); | 672 | dev_err(codec->dev, "Failed to register AC97 codec: %d\n", ret); |
| @@ -675,15 +675,19 @@ static int wm9712_soc_probe(struct snd_soc_codec *codec) | |||
| 675 | 675 | ||
| 676 | ret = wm9712_reset(codec, 0); | 676 | ret = wm9712_reset(codec, 0); |
| 677 | if (ret < 0) | 677 | if (ret < 0) |
| 678 | goto reset_err; | 678 | goto err_put_device; |
| 679 | |||
| 680 | ret = device_add(&wm9712->ac97->dev); | ||
| 681 | if (ret) | ||
| 682 | goto err_put_device; | ||
| 679 | 683 | ||
| 680 | /* set alc mux to none */ | 684 | /* set alc mux to none */ |
| 681 | ac97_write(codec, AC97_VIDEO, ac97_read(codec, AC97_VIDEO) | 0x3000); | 685 | ac97_write(codec, AC97_VIDEO, ac97_read(codec, AC97_VIDEO) | 0x3000); |
| 682 | 686 | ||
| 683 | return 0; | 687 | return 0; |
| 684 | 688 | ||
| 685 | reset_err: | 689 | err_put_device: |
| 686 | snd_soc_free_ac97_codec(wm9712->ac97); | 690 | put_device(&wm9712->ac97->dev); |
| 687 | return ret; | 691 | return ret; |
| 688 | } | 692 | } |
| 689 | 693 | ||
diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c index 71b9d5b0734d..6ab1122a3872 100644 --- a/sound/soc/codecs/wm9713.c +++ b/sound/soc/codecs/wm9713.c | |||
| @@ -1225,7 +1225,7 @@ static int wm9713_soc_probe(struct snd_soc_codec *codec) | |||
| 1225 | struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec); | 1225 | struct wm9713_priv *wm9713 = snd_soc_codec_get_drvdata(codec); |
| 1226 | int ret = 0, reg; | 1226 | int ret = 0, reg; |
| 1227 | 1227 | ||
| 1228 | wm9713->ac97 = snd_soc_new_ac97_codec(codec); | 1228 | wm9713->ac97 = snd_soc_alloc_ac97_codec(codec); |
| 1229 | if (IS_ERR(wm9713->ac97)) | 1229 | if (IS_ERR(wm9713->ac97)) |
| 1230 | return PTR_ERR(wm9713->ac97); | 1230 | return PTR_ERR(wm9713->ac97); |
| 1231 | 1231 | ||
| @@ -1234,7 +1234,11 @@ static int wm9713_soc_probe(struct snd_soc_codec *codec) | |||
| 1234 | wm9713_reset(codec, 0); | 1234 | wm9713_reset(codec, 0); |
| 1235 | ret = wm9713_reset(codec, 1); | 1235 | ret = wm9713_reset(codec, 1); |
| 1236 | if (ret < 0) | 1236 | if (ret < 0) |
| 1237 | goto reset_err; | 1237 | goto err_put_device; |
| 1238 | |||
| 1239 | ret = device_add(&wm9713->ac97->dev); | ||
| 1240 | if (ret) | ||
| 1241 | goto err_put_device; | ||
| 1238 | 1242 | ||
| 1239 | /* unmute the adc - move to kcontrol */ | 1243 | /* unmute the adc - move to kcontrol */ |
| 1240 | reg = ac97_read(codec, AC97_CD) & 0x7fff; | 1244 | reg = ac97_read(codec, AC97_CD) & 0x7fff; |
| @@ -1242,8 +1246,8 @@ static int wm9713_soc_probe(struct snd_soc_codec *codec) | |||
| 1242 | 1246 | ||
| 1243 | return 0; | 1247 | return 0; |
| 1244 | 1248 | ||
| 1245 | reset_err: | 1249 | err_put_device: |
| 1246 | snd_soc_free_ac97_codec(wm9713->ac97); | 1250 | put_device(&wm9713->ac97->dev); |
| 1247 | return ret; | 1251 | return ret; |
| 1248 | } | 1252 | } |
| 1249 | 1253 | ||
