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. thanks, Takashi