Commit 95a5b240 authored by Sachin Kamat's avatar Sachin Kamat Committed by Mark Brown
Browse files

ASoC: wm8400: Use devm_regulator_bulk_get



devm_regulator_bulk_get() is device managed and makes error
handling and code cleanup simpler.

Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 9489e9dc
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -1373,7 +1373,7 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
	codec->control_data = priv->wm8400 = wm8400;
	priv->codec = codec;

	ret = regulator_bulk_get(wm8400->dev,
	ret = devm_regulator_bulk_get(wm8400->dev,
				 ARRAY_SIZE(power), &power[0]);
	if (ret != 0) {
		dev_err(codec->dev, "Failed to get regulators: %d\n", ret);
@@ -1398,15 +1398,9 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
	snd_soc_write(codec, WM8400_LEFT_OUTPUT_VOLUME, 0x50 | (1<<8));
	snd_soc_write(codec, WM8400_RIGHT_OUTPUT_VOLUME, 0x50 | (1<<8));

	if (!schedule_work(&priv->work)) {
		ret = -EINVAL;
		goto err_regulator;
	}
	if (!schedule_work(&priv->work))
		return -EINVAL;
	return 0;

err_regulator:
	regulator_bulk_free(ARRAY_SIZE(power), power);
	return ret;
}

static int  wm8400_codec_remove(struct snd_soc_codec *codec)
@@ -1417,8 +1411,6 @@ static int wm8400_codec_remove(struct snd_soc_codec *codec)
	snd_soc_write(codec, WM8400_POWER_MANAGEMENT_1,
		     reg & (~WM8400_CODEC_ENA));

	regulator_bulk_free(ARRAY_SIZE(power), power);

	return 0;
}