summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/rt711-sdca.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2021-06-25 15:08:01 +0200
committerMark Brown <broonie@kernel.org>2021-06-25 15:08:01 +0200
commitc073a58a7ec59145f8a0b87403d559645bfd9edb (patch)
tree769095ab7e460656d6d9169c113893efb7e557b6 /sound/soc/codecs/rt711-sdca.c
parentLinux 5.13-rc7 (diff)
parentASoC: fsl_spdif: Fix unexpected interrupt after suspend (diff)
downloadlinux-c073a58a7ec59145f8a0b87403d559645bfd9edb.tar.xz
linux-c073a58a7ec59145f8a0b87403d559645bfd9edb.zip
Merge remote-tracking branch 'asoc/for-5.13' into asoc-linus
Diffstat (limited to 'sound/soc/codecs/rt711-sdca.c')
-rw-r--r--sound/soc/codecs/rt711-sdca.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt711-sdca.c b/sound/soc/codecs/rt711-sdca.c
index 24a084e0b48a..2e992589f1e4 100644
--- a/sound/soc/codecs/rt711-sdca.c
+++ b/sound/soc/codecs/rt711-sdca.c
@@ -1411,6 +1411,8 @@ int rt711_sdca_init(struct device *dev, struct regmap *regmap,
rt711->regmap = regmap;
rt711->mbq_regmap = mbq_regmap;
+ mutex_init(&rt711->disable_irq_lock);
+
/*
* Mark hw_init to false
* HW init will be performed when device reports present
@@ -1494,12 +1496,16 @@ int rt711_sdca_io_init(struct device *dev, struct sdw_slave *slave)
int ret = 0;
unsigned int val;
+ rt711->disable_irq = false;
+
if (rt711->hw_init)
return 0;
if (rt711->first_hw_init) {
regcache_cache_only(rt711->regmap, false);
regcache_cache_bypass(rt711->regmap, true);
+ regcache_cache_only(rt711->mbq_regmap, false);
+ regcache_cache_bypass(rt711->mbq_regmap, true);
} else {
/*
* PM runtime is only enabled when a Slave reports as Attached
@@ -1565,6 +1571,8 @@ int rt711_sdca_io_init(struct device *dev, struct sdw_slave *slave)
if (rt711->first_hw_init) {
regcache_cache_bypass(rt711->regmap, false);
regcache_mark_dirty(rt711->regmap);
+ regcache_cache_bypass(rt711->mbq_regmap, false);
+ regcache_mark_dirty(rt711->mbq_regmap);
} else
rt711->first_hw_init = true;