[alsa-devel] HDMI Repoll after pm?

David Henningsson david.henningsson at canonical.com
Thu Dec 10 14:28:16 CET 2015



On 2015-12-10 14:18, Takashi Iwai wrote:
> On Thu, 10 Dec 2015 13:59:59 +0100,
> David Henningsson wrote:
>>
>>
>>
>> On 2015-12-10 10:53, Takashi Iwai wrote:
>>> On Thu, 10 Dec 2015 10:47:59 +0100,
>>> David Henningsson wrote:
>>>>
>>>> Hi Takashi,
>>>>
>>>> A recent change in sound.git seems to have introduced some repoll after
>>>> pm. Is this an intentional change? I don't think it's wrong per se (it
>>>> stops after 6 repolls), but it breaks my hda-emu tester when "list" does
>>>> not return the expected input.
>>>
>>> Hm, there is no such an intended change.
>>
>> After testing some more, I've found that reverting e90247f9 (Split ELD
>> update code from hdmi_present_sense) fixes the issue, so it seems like
>> this commit indeed contains a functional change...
>
> Thanks for chasing it.

It's almost unreal...my tester framework finally caught a bug (that you 
didn't catch before I saw it!). I cannot believe it, it only took, like, 
three years or so :-)

> Does the following patch work better?

It certainly does. Thanks!

Tested-by: David Henningsson <david.henningsson at canonical.com>

>
>
> Takashi
>
> ---
> diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
> index 35a78a6f87a6..2a7d29a07f31 100644
> --- a/sound/pci/hda/patch_hdmi.c
> +++ b/sound/pci/hda/patch_hdmi.c
> @@ -1605,6 +1605,7 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
>   	 */
>   	int present;
>   	bool ret;
> +	bool do_repoll = false;
>
>   	snd_hda_power_up_pm(codec);
>   	present = snd_hda_pin_sense(codec, pin_nid);
> @@ -1629,9 +1630,11 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
>   						    eld->eld_size) < 0)
>   				eld->eld_valid = false;
>   		}
> +		if (!eld->eld_valid && repoll)
> +			do_repoll = true;
>   	}
>
> -	if (!eld->eld_valid && repoll)
> +	if (do_repoll)
>   		schedule_delayed_work(&per_pin->work, msecs_to_jiffies(300));
>   	else
>   		update_eld(codec, per_pin, eld);
>

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the Alsa-devel mailing list