mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
ASoC: SOF: Intel: hda-codec: preserve WAKEEN values
Since LunarLake, we use the HDadio WAKEEN/WAKESTS to detect wakes for SoundWire codecs. Unfortunately, the existing code in hda_codec_jack_wake_enable() unconditionally resets the WAKEEN bits. This patch changes the initialization to preserve SoundWire WAKEEN bits. For HDAudio codecs the same strategy is used, WAKEEN is only set when the jacktbl.used property is set. Closes: https://github.com/thesofproject/linux/issues/4687 Co-developed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Keqiao Zhang <keqiao.zhang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Link: https://msgid.link/r/20240404190357.138073-4-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
ab9182441e
commit
b69480edf4
|
|
@ -79,18 +79,27 @@ void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable)
|
|||
struct hdac_bus *bus = sof_to_bus(sdev);
|
||||
struct hda_codec *codec;
|
||||
unsigned int mask = 0;
|
||||
unsigned int val = 0;
|
||||
|
||||
if (IS_ENABLED(CONFIG_SND_SOC_SOF_NOCODEC_DEBUG_SUPPORT) &&
|
||||
sof_debug_check_flag(SOF_DBG_FORCE_NOCODEC))
|
||||
return;
|
||||
|
||||
if (enable) {
|
||||
list_for_each_codec(codec, hbus)
|
||||
list_for_each_codec(codec, hbus) {
|
||||
/* only set WAKEEN when needed for HDaudio codecs */
|
||||
mask |= BIT(codec->core.addr);
|
||||
if (codec->jacktbl.used)
|
||||
mask |= BIT(codec->core.addr);
|
||||
val |= BIT(codec->core.addr);
|
||||
}
|
||||
} else {
|
||||
list_for_each_codec(codec, hbus) {
|
||||
/* reset WAKEEN only HDaudio codecs */
|
||||
mask |= BIT(codec->core.addr);
|
||||
}
|
||||
}
|
||||
|
||||
snd_hdac_chip_updatew(bus, WAKEEN, STATESTS_INT_MASK, mask);
|
||||
snd_hdac_chip_updatew(bus, WAKEEN, mask & STATESTS_INT_MASK, val);
|
||||
}
|
||||
EXPORT_SYMBOL_NS_GPL(hda_codec_jack_wake_enable, SND_SOC_SOF_HDA_AUDIO_CODEC);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user