summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/tas2781-comlib.c
diff options
context:
space:
mode:
authorGergo Koteles <soyer@irl.hu>2023-12-22 00:48:56 +0100
committerTakashi Iwai <tiwai@suse.de>2023-12-29 13:41:04 +0100
commit6dad45f4d28977bd1948973107cf325d431e5b7e (patch)
tree15fb3c806889b50e4ae09d50658a8425d3da6758 /sound/soc/codecs/tas2781-comlib.c
parentALSA: hda: cs35l41: Only add SPI CS GPIO if SPI is enabled in kernel (diff)
downloadlinux-6dad45f4d28977bd1948973107cf325d431e5b7e.tar.xz
linux-6dad45f4d28977bd1948973107cf325d431e5b7e.zip
ALSA: hda/tas2781: do not use regcache
There are two problems with using regcache in this module. The amplifier has 3 addressing levels (BOOK, PAGE, REG). The firmware contains blocks that must be written to BOOK 0x8C. The regcache doesn't know anything about BOOK, so regcache_sync writes invalid values to the actual BOOK. The module handles 2 or more separate amplifiers. The amplifiers have different register values, and the module uses only one regmap/regcache for all the amplifiers. The regcache_sync only writes the last amplifier used. The module successfully restores all the written register values (RC profile, program, configuration, calibration) without regcache. Remove regcache functions and set regmap cache_type to REGCACHE_NONE. Link: https://lore.kernel.org/r/21a183b5a08cb23b193af78d4b1114cc59419272.1701906455.git.soyer@irl.hu/ Fixes: 5be27f1e3ec9 ("ALSA: hda/tas2781: Add tas2781 HDA driver") Acked-by: Mark Brown <broonie@kernel.org> CC: stable@vger.kernel.org Signed-off-by: Gergo Koteles <soyer@irl.hu> Link: https://lore.kernel.org/r/491aeed0e2eecc3b704ec856f815db21bad3ba0e.1703202126.git.soyer@irl.hu Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/soc/codecs/tas2781-comlib.c')
-rw-r--r--sound/soc/codecs/tas2781-comlib.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/soc/codecs/tas2781-comlib.c b/sound/soc/codecs/tas2781-comlib.c
index ffb26e4a7e2f..933cd008e9f5 100644
--- a/sound/soc/codecs/tas2781-comlib.c
+++ b/sound/soc/codecs/tas2781-comlib.c
@@ -39,7 +39,7 @@ static const struct regmap_range_cfg tasdevice_ranges[] = {
static const struct regmap_config tasdevice_regmap = {
.reg_bits = 8,
.val_bits = 8,
- .cache_type = REGCACHE_RBTREE,
+ .cache_type = REGCACHE_NONE,
.ranges = tasdevice_ranges,
.num_ranges = ARRAY_SIZE(tasdevice_ranges),
.max_register = 256 * 128,