[alsa-devel] [PATCH] ALSA: hdac_regmap - fix the register access for runtime PM
Takashi Iwai
tiwai at suse.de
Fri Jun 17 14:14:11 CEST 2016
On Fri, 17 Jun 2016 13:35:56 +0200,
Jaroslav Kysela wrote:
>
> 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 at perex.cz>
Thanks, a good catch. Applied now.
Takashi
> ---
> sound/hda/hdac_regmap.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c
> index 87041dd..47a358f 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);
> }
> --
> 2.5.5
>
More information about the Alsa-devel
mailing list