ASoC: rt5682: Use a maple tree based register cache
authorMark Brown <broonie@kernel.org>
Tue, 25 Apr 2023 17:22:46 +0000 (18:22 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 7 May 2023 23:48:46 +0000 (08:48 +0900)
regmap has introduced a maple tree based register cache which makes use of
this more advanced data structure which has been added to the kernel
recently. Maple trees are much flatter than rbtrees, meaning that they do
not grow to such depths when the register map is sparse which makes access
a bit more efficient. The maple tree cache type is still a bit of a work
in progress but should be effective for some devices already.

RT5682 seems like a good candidate for maple tree. It only supports single
register read/write operations so will gain minimal benefit from storing
the register data in device native format like rbtree does (none for
SoundWire) and has some sparsity in the register map which is a good fit
for maple tree.

Convert to use maple tree. There should be little if any visible difference
at runtime.

Signed-off-by: Mark Brown <broonie@kernel.org
Link: https://lore.kernel.org/r/20230419-asoc-rt5682-maple-v1-1-ed40369c9099@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org
sound/soc/codecs/rt5682-sdw.c
sound/soc/codecs/rt5682s.c

index 23f17f70d7e9bb0ddd9f5c4471472682c4c861b3..6e3b5c5eced1d90694154c2024408f47c421c1c2 100644 (file)
@@ -79,7 +79,7 @@ static const struct regmap_config rt5682_sdw_indirect_regmap = {
        .max_register = RT5682_I2C_MODE,
        .volatile_reg = rt5682_volatile_register,
        .readable_reg = rt5682_readable_register,
-       .cache_type = REGCACHE_RBTREE,
+       .cache_type = REGCACHE_MAPLE,
        .reg_defaults = rt5682_reg,
        .num_reg_defaults = RT5682_REG_NUM,
        .use_single_read = true,
index 9c34dca58f54da38ceaa6f0ce1f22f2eb6569ffc..36102fa2b80621339f9f918305b986e41da4bbfa 100644 (file)
@@ -3046,7 +3046,7 @@ static const struct regmap_config rt5682s_regmap = {
        .max_register = RT5682S_MAX_REG,
        .volatile_reg = rt5682s_volatile_register,
        .readable_reg = rt5682s_readable_register,
-       .cache_type = REGCACHE_RBTREE,
+       .cache_type = REGCACHE_MAPLE,
        .reg_defaults = rt5682s_reg,
        .num_reg_defaults = ARRAY_SIZE(rt5682s_reg),
        .use_single_read = true,