OSDN Git Service

regmap: regcache: Don't sync read-only registers
authorTakashi Iwai <tiwai@suse.de>
Tue, 13 Jun 2023 11:22:40 +0000 (13:22 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 13 Jun 2023 12:15:00 +0000 (13:15 +0100)
commit44e46572f0bae431a6092e3cfd2f47bff8b8d18c
tree99f9198bd3d7c96e2291fd68d62e7f9fb45d72e1
parent0cc6578048e0980d254aee345130cced4912f723
regmap: regcache: Don't sync read-only registers

regcache_maple_sync() tries to sync all cached values no matter
whether it's writable or not.  OTOH, regache_sync_val() does care the
wrtability and returns -EIO for a read-only register.  This results in
an error message like:
  snd_hda_codec_realtek hdaudioC0D0: Unable to sync register 0x2f0009. -5
and the sync loop is aborted incompletely.

This patch adds the writable register check to regcache_sync_val() for
addressing the bug above.

Note that, although we may add the check in the caller side
(regcache_maple_sync()), here we put in regcache_sync_val(), so that a
similar case like this can be avoided in future.

Fixes: f033c26de5a5 ("regmap: Add maple tree based register cache")
Link: https://lore.kernel.org/r/877cs7g6f1.wl-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20230613112240.3361-1-tiwai@suse.de
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regcache.c