[alsa-devel] [PATCH 2/2] vgaswitchreoo: set audio client id in vgaswitchreoo enable function
Takashi Iwai
tiwai at suse.de
Fri Jul 13 18:38:06 CEST 2018
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? :)
Takashi
More information about the Alsa-devel
mailing list