Re: [PATCH] ASoC: rt5682: Use a maple tree based register cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 4/25/23 12:22, Mark Brown wrote:
> 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.

Wondering if this is the root cause of the regression we're seeing in
[1] on a Chromebook with rt5682 in SoundWire mode?

I don't see any other changes to this codec driver and the first problem
detected seemed to happen when we did an upstream merge last week.
Unfortunately the last merge was on April 24 (sof-dev-rebase-20230424)
which is just the day before this commit was added...

[1] https://github.com/thesofproject/linux/issues/4371

> 
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> ---
>  sound/soc/codecs/rt5682-sdw.c | 2 +-
>  sound/soc/codecs/rt5682s.c    | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c
> index 5f80a5d59b65..fb7951f11c92 100644
> --- a/sound/soc/codecs/rt5682-sdw.c
> +++ b/sound/soc/codecs/rt5682-sdw.c
> @@ -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,
> diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c
> index 9c34dca58f54..36102fa2b806 100644
> --- a/sound/soc/codecs/rt5682s.c
> +++ b/sound/soc/codecs/rt5682s.c
> @@ -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,
> 
> ---
> base-commit: 4a670ac3e75e517c96cbd01ef870dbd598c3ce71
> change-id: 20230419-asoc-rt5682-maple-7da060991ca4
> 
> Best regards,



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux