diff options
Diffstat (limited to 'sound/soc/codecs/wm8523.c')
-rw-r--r-- | sound/soc/codecs/wm8523.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sound/soc/codecs/wm8523.c b/sound/soc/codecs/wm8523.c index 37242a7d3077..0ad039b4adf5 100644 --- a/sound/soc/codecs/wm8523.c +++ b/sound/soc/codecs/wm8523.c | |||
@@ -482,7 +482,8 @@ static int wm8523_register(struct wm8523_priv *wm8523, | |||
482 | 482 | ||
483 | if (wm8523_codec) { | 483 | if (wm8523_codec) { |
484 | dev_err(codec->dev, "Another WM8523 is registered\n"); | 484 | dev_err(codec->dev, "Another WM8523 is registered\n"); |
485 | return -EINVAL; | 485 | ret = -EINVAL; |
486 | goto err; | ||
486 | } | 487 | } |
487 | 488 | ||
488 | mutex_init(&codec->mutex); | 489 | mutex_init(&codec->mutex); |
@@ -570,18 +571,19 @@ static int wm8523_register(struct wm8523_priv *wm8523, | |||
570 | ret = snd_soc_register_codec(codec); | 571 | ret = snd_soc_register_codec(codec); |
571 | if (ret != 0) { | 572 | if (ret != 0) { |
572 | dev_err(codec->dev, "Failed to register codec: %d\n", ret); | 573 | dev_err(codec->dev, "Failed to register codec: %d\n", ret); |
573 | return ret; | 574 | goto err_enable; |
574 | } | 575 | } |
575 | 576 | ||
576 | ret = snd_soc_register_dai(&wm8523_dai); | 577 | ret = snd_soc_register_dai(&wm8523_dai); |
577 | if (ret != 0) { | 578 | if (ret != 0) { |
578 | dev_err(codec->dev, "Failed to register DAI: %d\n", ret); | 579 | dev_err(codec->dev, "Failed to register DAI: %d\n", ret); |
579 | snd_soc_unregister_codec(codec); | 580 | goto err_codec; |
580 | return ret; | ||
581 | } | 581 | } |
582 | 582 | ||
583 | return 0; | 583 | return 0; |
584 | 584 | ||
585 | err_codec: | ||
586 | snd_soc_unregister_codec(codec); | ||
585 | err_enable: | 587 | err_enable: |
586 | regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies); | 588 | regulator_bulk_disable(ARRAY_SIZE(wm8523->supplies), wm8523->supplies); |
587 | err_get: | 589 | err_get: |