diff options
Diffstat (limited to 'sound/soc/codecs/wm8904.c')
-rw-r--r-- | sound/soc/codecs/wm8904.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c index 87f14f8675fa..f7dcabf6283c 100644 --- a/sound/soc/codecs/wm8904.c +++ b/sound/soc/codecs/wm8904.c | |||
@@ -2433,7 +2433,8 @@ static int wm8904_register(struct wm8904_priv *wm8904, | |||
2433 | 2433 | ||
2434 | if (wm8904_codec) { | 2434 | if (wm8904_codec) { |
2435 | dev_err(codec->dev, "Another WM8904 is registered\n"); | 2435 | dev_err(codec->dev, "Another WM8904 is registered\n"); |
2436 | return -EINVAL; | 2436 | ret = -EINVAL; |
2437 | goto err; | ||
2437 | } | 2438 | } |
2438 | 2439 | ||
2439 | mutex_init(&codec->mutex); | 2440 | mutex_init(&codec->mutex); |
@@ -2462,7 +2463,8 @@ static int wm8904_register(struct wm8904_priv *wm8904, | |||
2462 | default: | 2463 | default: |
2463 | dev_err(codec->dev, "Unknown device type %d\n", | 2464 | dev_err(codec->dev, "Unknown device type %d\n", |
2464 | wm8904->devtype); | 2465 | wm8904->devtype); |
2465 | return -EINVAL; | 2466 | ret = -EINVAL; |
2467 | goto err; | ||
2466 | } | 2468 | } |
2467 | 2469 | ||
2468 | memcpy(codec->reg_cache, wm8904_reg, sizeof(wm8904_reg)); | 2470 | memcpy(codec->reg_cache, wm8904_reg, sizeof(wm8904_reg)); |
@@ -2566,18 +2568,19 @@ static int wm8904_register(struct wm8904_priv *wm8904, | |||
2566 | ret = snd_soc_register_codec(codec); | 2568 | ret = snd_soc_register_codec(codec); |
2567 | if (ret != 0) { | 2569 | if (ret != 0) { |
2568 | dev_err(codec->dev, "Failed to register codec: %d\n", ret); | 2570 | dev_err(codec->dev, "Failed to register codec: %d\n", ret); |
2569 | return ret; | 2571 | goto err_enable; |
2570 | } | 2572 | } |
2571 | 2573 | ||
2572 | ret = snd_soc_register_dai(&wm8904_dai); | 2574 | ret = snd_soc_register_dai(&wm8904_dai); |
2573 | if (ret != 0) { | 2575 | if (ret != 0) { |
2574 | dev_err(codec->dev, "Failed to register DAI: %d\n", ret); | 2576 | dev_err(codec->dev, "Failed to register DAI: %d\n", ret); |
2575 | snd_soc_unregister_codec(codec); | 2577 | goto err_codec; |
2576 | return ret; | ||
2577 | } | 2578 | } |
2578 | 2579 | ||
2579 | return 0; | 2580 | return 0; |
2580 | 2581 | ||
2582 | err_codec: | ||
2583 | snd_soc_unregister_codec(codec); | ||
2581 | err_enable: | 2584 | err_enable: |
2582 | regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies); | 2585 | regulator_bulk_disable(ARRAY_SIZE(wm8904->supplies), wm8904->supplies); |
2583 | err_get: | 2586 | err_get: |