ASoC: SOF: Intel: move codec state change to hda-codec.c
The codec_mask and codec-related handling should depend on SOF_HDA_AUDIO_CODEC, not SOF_HDA. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Link: https://lore.kernel.org/r/20221027193540.259520-5-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
dc1d964a44
commit
580803a703
@ -222,6 +222,19 @@ void hda_codec_probe_bus(struct snd_sof_dev *sdev)
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_codec_probe_bus, SND_SOC_SOF_HDA_AUDIO_CODEC);
|
||||
|
||||
void hda_codec_check_for_state_change(struct snd_sof_dev *sdev)
|
||||
{
|
||||
struct hdac_bus *bus = sof_to_bus(sdev);
|
||||
unsigned int codec_mask;
|
||||
|
||||
codec_mask = snd_hdac_chip_readw(bus, STATESTS);
|
||||
if (codec_mask) {
|
||||
hda_codec_jack_check(sdev);
|
||||
snd_hdac_chip_writew(bus, STATESTS, codec_mask);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_NS(hda_codec_check_for_state_change, SND_SOC_SOF_HDA_AUDIO_CODEC);
|
||||
|
||||
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC) && IS_ENABLED(CONFIG_SND_HDA_CODEC_HDMI)
|
||||
|
@ -937,20 +937,6 @@ skip_soundwire:
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void hda_check_for_state_change(struct snd_sof_dev *sdev)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
|
||||
struct hdac_bus *bus = sof_to_bus(sdev);
|
||||
unsigned int codec_mask;
|
||||
|
||||
codec_mask = snd_hdac_chip_readw(bus, STATESTS);
|
||||
if (codec_mask) {
|
||||
hda_codec_jack_check(sdev);
|
||||
snd_hdac_chip_writew(bus, STATESTS, codec_mask);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static irqreturn_t hda_dsp_interrupt_handler(int irq, void *context)
|
||||
{
|
||||
struct snd_sof_dev *sdev = context;
|
||||
@ -1000,7 +986,7 @@ static irqreturn_t hda_dsp_interrupt_thread(int irq, void *context)
|
||||
hda_sdw_process_wakeen(sdev);
|
||||
}
|
||||
|
||||
hda_check_for_state_change(sdev);
|
||||
hda_codec_check_for_state_change(sdev);
|
||||
|
||||
/* enable GIE interrupt */
|
||||
snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
|
||||
|
@ -717,12 +717,14 @@ void sof_hda_bus_init(struct hdac_bus *bus, struct device *dev);
|
||||
void hda_codec_probe_bus(struct snd_sof_dev *sdev);
|
||||
void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable);
|
||||
void hda_codec_jack_check(struct snd_sof_dev *sdev);
|
||||
void hda_codec_check_for_state_change(struct snd_sof_dev *sdev);
|
||||
|
||||
#else
|
||||
|
||||
static inline void hda_codec_probe_bus(struct snd_sof_dev *sdev) { }
|
||||
static inline void hda_codec_jack_wake_enable(struct snd_sof_dev *sdev, bool enable) { }
|
||||
static inline void hda_codec_jack_check(struct snd_sof_dev *sdev) { }
|
||||
static inline void hda_codec_check_for_state_change(struct snd_sof_dev *sdev) { }
|
||||
|
||||
#endif /* CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user