vga_switcheroo: set audio client id according to bound GPU id
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 vga_switcheroo. if the audio client is not the third registration, audio id will set in vga_switcheroo enable function. if the audio client is the last registration when vga_switcheroo _ready() get true, we should get audio client id from bound GPU directly. Signed-off-by: Jim Qu <Jim.Qu@amd.com> Reviewed-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:

gecommit door
Takashi Iwai

bovenliggende
9d3cce1e8b
commit
4aaf448fa9
@@ -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);
|
||||
pci_dev_put(p);
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
hda->vga_switcheroo_registered = 1;
|
||||
|
Verwijs in nieuw issue
Block a user