• Takashi Iwai's avatar
    ALSA: hda - Enable runtime PM only for discrete GPU · 37a3a98e
    Takashi Iwai authored
    The recent change of vga_switcheroo allowed the runtime PM for
    HD-audio on AMD GPUs, but this also resulted in a regression.  When
    the HD-audio controller driver gets runtime-suspended, HD-audio link
    is turned off, and the hotplug notification is ignored.  This leads to
    the inconsistent audio state (the connection isn't notified and ELD is
    ignored).
    
    The best fix would be to implement the proper ELD notification via the
    audio component, but it's still not ready.  As a quick workaround,
    this patch adds the check of runtime_idle and allows the runtime
    suspend only when the vga_switcheroo is bound with discrete GPU.
    That is, a system with a single GPU and APU would be again without
    runtime PM to keep the HD-audio link for the hotplug notification and
    ELD read out.
    
    Also, the codec->auto_runtime_pm flag is set only for the discrete GPU
    at the time GPU gets bound via vga_switcheroo (i.e. only dGPU is
    forcibly runtime-PM enabled), so that APU can still get the ELD
    notification.
    
    For identifying which GPU is bound, a new vga_switcheroo client
    callback, gpu_bound, is implemented.  The vga_switcheroo simply calls
    this when GPU is bound, and tells whether it's dGPU or APU.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=200945
    Fixes: 07f4f97d ("vga_switcheroo: Use device link for HDA controller")
    Reported-by: default avatarJian-Hong Pan <jian-hong@endlessm.com>
    Tested-by: default avatarJian-Hong Pan <jian-hong@endlessm.com>
    Acked-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    37a3a98e
vga_switcheroo.c 33.5 KB