From: Lukas Wunner <lukas@wunner.de>
To: Jim Qu <Jim.Qu@amd.com>
Cc: alsa-devel@alsa-project.org, tiwai@suse.com,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
daniel@ffwll.ch, alexander.deucher@amd.com
Subject: Re: [V2 2/2] vgaswitchreoo: set audio client id in vgaswitchreoo enable function
Date: Mon, 16 Jul 2018 16:43:42 +0200 [thread overview]
Message-ID: <20180716144342.GA23508@wunner.de> (raw)
In-Reply-To: <1531721195-4982-2-git-send-email-Jim.Qu@amd.com>
On Mon, Jul 16, 2018 at 02:06:35PM +0800, Jim Qu wrote:
> +
> + list_for_each_entry(client, &vgasr_priv.clients, list) {
> + if (!client_is_audio(client) || client_id(client) !=
> + VGA_SWITCHEROO_UNKNOWN_ID)
Don't you have to check for
client_id(client) != VGA_SWITCHEROO_UNKNOWN_ID | ID_BIT_AUDIO
here? That's the value you assign when the audio client registers,
yet you're checking for something else, so you're always skipping
over audio clients. Did you actually test this patch?
> 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 control power
>
> In HDA driver side, it is difficult to know which GPU
> the audio has bound to. So set the bound gpu pci dev
> to vgaswitchreoo, the correct audio id will be set in
> vgaswitchreoo enable function.
>
> Signed-off-by: Jim Qu <Jim.Qu@amd.com>
Apart from the issue above and that this approach doesn't work if
hda_intel registers after the two GPUs, some nits:
vgaswitchreoo => vga_switcheroo multiple times above and in the subject.
> --- a/drivers/gpu/vga/vga_switcheroo.c
> +++ b/drivers/gpu/vga/vga_switcheroo.c
> @@ -103,6 +103,7 @@
> * runtime pm. If true, writing ON and OFF to the vga_switcheroo debugfs
> * interface is a no-op so as not to interfere with runtime pm
> * @list: client list
> + * @vga_dev: pci device, indicate which GPU is bound to current audio client
> *
> * Registered client. A client can be either a GPU or an audio device on a GPU.
> * For audio clients, the @fb_info and @active members are bogus.
Please add a note here that vga_dev is bogus for GPU clients.
> @@ -192,14 +193,28 @@ static void vga_switcheroo_enable(void)
> vgasr_priv.handler->init();
>
> list_for_each_entry(client, &vgasr_priv.clients, list) {
> - if (client->id != VGA_SWITCHEROO_UNKNOWN_ID)
> + if (!client_is_vga(client) || client_id(client) !=
> + VGA_SWITCHEROO_UNKNOWN_ID)
Readability might improve if you break the line like this:
if (!client_is_vga(client) ||
client_id(client) != VGA_SWITCHEROO_UNKNOWN_ID)
> @@ -339,9 +357,10 @@ EXPORT_SYMBOL(vga_switcheroo_register_client);
> */
> int vga_switcheroo_register_audio_client(struct pci_dev *pdev,
> const struct vga_switcheroo_client_ops *ops,
> - enum vga_switcheroo_client_id id)
> + struct pci_dev *vga_dev)
> {
> - return register_client(pdev, ops, id | ID_BIT_AUDIO, false, true);
> + return register_client(pdev, ops, VGA_SWITCHEROO_UNKNOWN_ID |
> + ID_BIT_AUDIO, vga_dev, false, true);
Again, I'd break the line such that the two operands to the bitwise or
are on the same line:
return register_client(pdev, ops,
VGA_SWITCHEROO_UNKNOWN_ID | ID_BIT_AUDIO,
vga_dev, false, true);
Lukas
next prev parent reply other threads:[~2018-07-16 14:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-16 6:06 [V2 1/2] ALSA: HDA: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA Jim Qu
[not found] ` <1531721195-4982-1-git-send-email-Jim.Qu-5C7GfCeVMHo@public.gmane.org>
2018-07-16 6:06 ` [V2 2/2] vgaswitchreoo: set audio client id in vgaswitchreoo enable function Jim Qu
2018-07-16 7:52 ` Hui Wang
2018-07-16 14:16 ` [alsa-devel] " Lukas Wunner
2018-07-16 15:09 ` jimqu
2018-07-16 12:53 ` Takashi Iwai
2018-07-16 14:43 ` Lukas Wunner [this message]
2018-07-16 14:47 ` [alsa-devel] " Takashi Iwai
[not found] ` <s5hmuur44r4.wl-tiwai-l3A5Bk7waGM@public.gmane.org>
2018-07-16 14:51 ` Lukas Wunner
2018-07-16 12:52 ` [V2 1/2] ALSA: HDA: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180716144342.GA23508@wunner.de \
--to=lukas@wunner.de \
--cc=Jim.Qu@amd.com \
--cc=alexander.deucher@amd.com \
--cc=alsa-devel@alsa-project.org \
--cc=amd-gfx@lists.freedesktop.org \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).