Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9069bf9b authored by Adam Thomson's avatar Adam Thomson Committed by Mark Brown
Browse files

ASoC: da7219: Disable regulators on probe() failure



If codec probe() function fails after supplies have been enabled
it should really tidy up and disable them again. This patch updates
the probe function to do just that.

Signed-off-by: default avatarAdam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fdd50a80
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -1663,11 +1663,13 @@ static int da7219_probe(struct snd_soc_codec *codec)
	/* Check if MCLK provided */
	da7219->mclk = devm_clk_get(codec->dev, "mclk");
	if (IS_ERR(da7219->mclk)) {
		if (PTR_ERR(da7219->mclk) != -ENOENT)
			return PTR_ERR(da7219->mclk);
		else
		if (PTR_ERR(da7219->mclk) != -ENOENT) {
			ret = PTR_ERR(da7219->mclk);
			goto err_disable_reg;
		} else {
			da7219->mclk = NULL;
		}
	}

	/* Default PC counter to free-running */
	snd_soc_update_bits(codec, DA7219_PC_COUNT, DA7219_PC_FREERUN_MASK,
@@ -1694,7 +1696,16 @@ static int da7219_probe(struct snd_soc_codec *codec)
	snd_soc_write(codec, DA7219_TONE_GEN_CYCLES, DA7219_BEEP_CYCLES_MASK);

	/* Initialise AAD block */
	return da7219_aad_init(codec);
	ret = da7219_aad_init(codec);
	if (ret)
		goto err_disable_reg;

	return 0;

err_disable_reg:
	regulator_bulk_disable(DA7219_NUM_SUPPLIES, da7219->supplies);

	return ret;
}

static int da7219_remove(struct snd_soc_codec *codec)