linux/drivers/base/regmap
Takashi Iwai 44e46572f0
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: f033c26de5 ("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>
2023-06-13 13:15:00 +01:00
..
internal.h regmap: allow upshifting register addresses before performing operations 2023-04-07 17:28:19 +01:00
Kconfig regmap: REGMAP_KUNIT should not select REGMAP 2023-05-08 09:07:51 +09:00
Makefile regmap: Add maple tree based register cache 2023-04-03 12:53:44 +01:00
regcache-flat.c regmap: add proper SPDX identifiers on files that did not have them. 2019-04-25 20:22:15 +01:00
regcache-maple.c regmap: maple: Drop the RCU read lock while syncing registers 2023-05-24 11:21:52 +01:00
regcache-rbtree.c regmap: Fix possible double-free in regcache_rbtree_exit() 2021-10-12 11:48:43 +01:00
regcache.c regmap: regcache: Don't sync read-only registers 2023-06-13 13:15:00 +01:00
regmap-ac97.c regmap: add proper SPDX identifiers on files that did not have them. 2019-04-25 20:22:15 +01:00
regmap-debugfs.c mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
regmap-fsi.c regmap: Add FSI bus support 2022-11-25 19:17:02 +00:00
regmap-i2c.c regmap-i2c: Set regmap max raw r/w from quirks 2021-05-14 13:25:03 +01:00
regmap-i3c.c regmap: Constify static regmap_bus structs 2022-04-04 08:41:50 +01:00
regmap-irq.c Migrate the PCIe-IDIO-24 and WS16C48 GPIO drivers 2023-04-05 21:56:44 +01:00
regmap-kunit.c regmap: Add maple tree based register cache 2023-04-03 12:53:44 +01:00
regmap-mdio.c regmap: Rework regmap_mdio_c45_{read|write} for new C45 API. 2023-01-16 13:16:09 +00:00
regmap-mmio.c regmap: mmio: replace return 0 with break in switch statement 2022-09-22 12:33:18 +01:00
regmap-ram.c regmap: Add RAM backed register map 2023-03-30 12:25:42 +01:00
regmap-sccb.c regmap: Constify static regmap_bus structs 2022-04-04 08:41:50 +01:00
regmap-sdw-mbq.c regmap: Constify static regmap_bus structs 2022-04-04 08:41:50 +01:00
regmap-sdw.c regmap: sdw: check for invalid multi-register writes config 2023-05-24 11:21:51 +01:00
regmap-slimbus.c regmap: Constify static regmap_bus structs 2022-04-04 08:41:50 +01:00
regmap-spi-avmm.c regmap: spi-avmm: Use swabXX_array() helpers 2022-09-07 12:42:27 +01:00
regmap-spi.c regmap: spi: Reserve space for register address/padding 2022-08-18 15:02:05 +01:00
regmap-spmi.c regmap: add proper SPDX identifiers on files that did not have them. 2019-04-25 20:22:15 +01:00
regmap-w1.c regmap: Constify static regmap_bus structs 2022-04-04 08:41:50 +01:00
regmap.c regmap: Account for register length when chunking 2023-05-18 10:53:42 +09:00
trace.h regmap: trace: Remove unneeded blank lines 2022-09-05 13:09:45 +01:00