[alsa-devel] [PATCH 2/2] vgaswitchreoo: set audio client id in vgaswitchreoo enable function

jimqu jimqu at amd.com
Fri Jul 13 18:51:02 CEST 2018



在 2018/7/14 0:38, Takashi Iwai 写道:
> On Fri, 13 Jul 2018 17:25:39 +0200,
> jimqu wrote:
>>
>>
>> 在 2018/7/13 16:46, Takashi Iwai 写道:
>>> On Fri, 13 Jul 2018 10:06:02 +0200,
>>> Jim Qu wrote:
>>>> On modern laptop, there are more and more platforms
>>>> have two GPUs, and each of them maybe have audio codec
>>>> for HDMP/DP output. For some dGPU which is no output,
>>>> audio codec usually is disabled.
>>>>
>>>> In currect HDA audio driver, it will set all codec as
>>>> VGA_SWITCHEROO_DIS, the audio which is binded to UMA
>>>> will be suspended if user use debugfs to contorl power
>>>>
>>>> In HDA driver side, it is difficult to know which GPU
>>>> the audio has binded to. So set the bound gpu pci dev
>>>> to vgaswitchroo, the correct audio id will be set in
>>>> vgaswitchreoo enable function.
>>>>
>>>> Signed-off-by: Jim Qu <Jim.Qu at amd.com>
>>> The idea looks good to me.  Just a nitpick:
>>>
>>>> @@ -1319,15 +1319,16 @@ static const struct vga_switcheroo_client_ops azx_vs_ops = {
>>>>    static int register_vga_switcheroo(struct azx *chip)
>>>>    {
>>>>    	struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
>>>> +	struct pci_dev * p;
>>>>    	int err;
>>>>      	if (!hda->use_vga_switcheroo)
>>>>    		return 0;
>>>> -	/* FIXME: currently only handling DIS controller
>>>> -	 * is there any machine with two switchable HDMI audio controllers?
>>>> -	 */
>>>> -	err = vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops,
>>>> -						   VGA_SWITCHEROO_DIS);
>>>> +
>>>> +	p  = get_bound_vga(chip->pci);
>>>> +	err = vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops, p);
>>>> +	if (p)
>>>> +		pci_dev_put(p);
>>> Passing a NULL vga_dev won't work, so the NULL check after calling
>>> vga_switcheroo_register_audio_client() is moot.  If any, it should be
>>> checked before that.
>>>
>>   The hda->use_vga_switcheroo is set to 1 in init_vga_switcheroo() if
>> bound vga pci dev is not NULL. Since the hda->use_vga_switcheroo is
>> checked at beginning of the function. so the p which pass into
>> vga_switcheroo_register_audio_client() is constant valid value.
> So the NULL-check in the patch is also useless, no? :)

Ha-ha, indeed, the NULL-check of p is unnecessary. will update in v2.

Thanks
JimQu
> Takashi



More information about the Alsa-devel mailing list