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

Commit 2bdc1bb2 authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: sgtl5000: Make device cache only when powered off



When the regulators have been disabled mark the device as cache only so
that we don't try to interact with the hardware.

Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent dd4d2d6d
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -907,10 +907,25 @@ static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
			if (ret)
				return ret;
			udelay(10);

			regcache_cache_only(sgtl5000->regmap, false);

			ret = regcache_sync(sgtl5000->regmap);
			if (ret != 0) {
				dev_err(codec->dev,
					"Failed to restore cache: %d\n", ret);

				regcache_cache_only(sgtl5000->regmap, true);
				regulator_bulk_disable(ARRAY_SIZE(sgtl5000->supplies),
						       sgtl5000->supplies);

				return ret;
			}
		}

		break;
	case SND_SOC_BIAS_OFF:
		regcache_cache_only(sgtl5000->regmap, true);
		regulator_bulk_disable(ARRAY_SIZE(sgtl5000->supplies),
					sgtl5000->supplies);
		break;