[alsa-devel] [PATCH v5 2/9] ASoC: hdac_hda: add support for HDMI/DP as a HDA codec

Kai Vehmanen kai.vehmanen at linux.intel.com
Wed Sep 25 13:38:50 CEST 2019


Hello,

Takashi, please check whether this is ok. I'll highlight the changed 
section below:

On Wed, 25 Sep 2019, Kai Vehmanen wrote:

>  static int hdac_hda_codec_probe(struct snd_soc_component *component)
>  {
>  	struct hdac_hda_priv *hda_pvt =
> @@ -322,6 +392,15 @@ static int hdac_hda_codec_probe(struct snd_soc_component *component)
>  
>  	snd_hdac_ext_bus_link_get(hdev->bus, hlink);
>  
> +	/*
> +	 * Ensure any HDA display is powered at codec probe.
> +	 * After snd_hda_codec_device_new(), display power is
> +	 * managed by runtime PM.
> +	 */
> +	if (hda_pvt->need_display_power)
> +		snd_hdac_display_power(hdev->bus, HDA_CODEC_IDX_CONTROLLER,
> +				       true);
> +

This is the new bit (and matching logic in patch 5).The bug required a 
very specific timing sequence to trigger, but a clear bug nevertheless. I 
tried to fix it in spirit of your refactoring patch of to this area 
029d92c289bd, "ALSA: hda: Refactor display power management". I.e. just 
like snd_hda_intel's controller code, display power is enabled before 
probe and later managed by codec using common code.

Additional SOF specific twist is that I need to pass the 
"need_display_power" info from SOF code (where the initial codec probe is 
done and we detect a HDMI HDA codec)), to soc/codecs/hdac_hda.c where the 
actual driver probe is run for the codec. In snd_hda_intel this is all in 
one place, so somewhat more straighforward, but logic is the same.

Br, Kai


More information about the Alsa-devel mailing list