• Lukas Wunner's avatar
    ALSA: hda - Fix runtime PM · 009f8c90
    Lukas Wunner authored
    Before commit 3b5b899c ("ALSA: hda: Make use of core codec functions
    to sync power state"), hda_set_power_state() returned the response to
    the Get Power State verb, a 32-bit unsigned integer whose expected value
    is 0x233 after transitioning a codec to D3, and 0x0 after transitioning
    it to D0.
    
    The response value is significant because hda_codec_runtime_suspend()
    does not clear the codec's bit in the codec_powered bitmask unless the
    AC_PWRST_CLK_STOP_OK bit (0x200) is set in the response value.  That in
    turn prevents the HDA controller from runtime suspending because
    azx_runtime_idle() checks that the codec_powered bitmask is zero.
    
    Since commit 3b5b899c, hda_set_power_state() only returns 0x0 or
    0x1, thereby breaking runtime PM for any HDA controller.  That's because
    an inline function introduced by the commit returns a bool instead of a
    32-bit unsigned int.  The change was likely erroneous and resulted from
    copying and pasting snd_hda_check_power_state(), which is immediately
    preceding the newly introduced inline function.  Fix it.
    
    Link: https://bugs.freedesktop.org/show_bug.cgi?id=106597
    Fixes: 3b5b899c ("ALSA: hda: Make use of core codec functions to sync power state")
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Abhijeet Kumar <abhijeet.kumar@intel.com>
    Reported-and-tested-by: default avatarGunnar Krüger <taijian@posteo.de>
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    009f8c90
Name
Last commit
Last update
..
ac97 Loading commit data...
aoa Loading commit data...
arm Loading commit data...
atmel Loading commit data...
core Loading commit data...
drivers Loading commit data...
firewire Loading commit data...
hda Loading commit data...
i2c Loading commit data...
isa Loading commit data...
mips Loading commit data...
oss Loading commit data...
parisc Loading commit data...
pci Loading commit data...
pcmcia Loading commit data...
ppc Loading commit data...
sh Loading commit data...
soc Loading commit data...
sparc Loading commit data...
spi Loading commit data...
synth Loading commit data...
usb Loading commit data...
x86 Loading commit data...
Kconfig Loading commit data...
Makefile Loading commit data...
ac97_bus.c Loading commit data...
last.c Loading commit data...
sound_core.c Loading commit data...