summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2016-06-17 13:35:56 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-07-27 08:42:22 -0700
commit5dbf9612eeb5bcb863d727439754980847e45d5a (patch)
treec24f4f60bba2ef7e6e4d3de2e5fe7ed78e458141 /sound
parent2addf5091bd36b2bf59ef3b18c6faadbc08a6653 (diff)
downloadlinux-stable-5dbf9612eeb5bcb863d727439754980847e45d5a.tar.gz
linux-stable-5dbf9612eeb5bcb863d727439754980847e45d5a.tar.bz2
linux-stable-5dbf9612eeb5bcb863d727439754980847e45d5a.zip
ALSA: hdac_regmap - fix the register access for runtime PM
commit 8198868f0a283eb23e264951632ce61ec2f82228 upstream. Call path: 1) snd_hdac_power_up_pm() 2) snd_hdac_power_up() 3) pm_runtime_get_sync() 4) __pm_runtime_resume() 5) rpm_resume() The rpm_resume() returns 1 when the device is already active. Because the return value is unmodified, the hdac regmap read/write functions should allow this value for the retry I/O operation, too. Signed-off-by: Jaroslav Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/hda/hdac_regmap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c
index 87041ddd29cb..47a358fab132 100644
--- a/sound/hda/hdac_regmap.c
+++ b/sound/hda/hdac_regmap.c
@@ -444,7 +444,7 @@ int snd_hdac_regmap_write_raw(struct hdac_device *codec, unsigned int reg,
err = reg_raw_write(codec, reg, val);
if (err == -EAGAIN) {
err = snd_hdac_power_up_pm(codec);
- if (!err)
+ if (err >= 0)
err = reg_raw_write(codec, reg, val);
snd_hdac_power_down_pm(codec);
}
@@ -470,7 +470,7 @@ static int __snd_hdac_regmap_read_raw(struct hdac_device *codec,
err = reg_raw_read(codec, reg, val, uncached);
if (err == -EAGAIN) {
err = snd_hdac_power_up_pm(codec);
- if (!err)
+ if (err >= 0)
err = reg_raw_read(codec, reg, val, uncached);
snd_hdac_power_down_pm(codec);
}