diff options
| -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: |
