On Tue, May 14, 2024 at 11:55 AM Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > On Tue, May 14, 2024 at 11:51 AM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > On Tue, May 14, 2024 at 10:39 AM Patrick Rudolph > > <patrick.rudolph@xxxxxxxxxxxxx> wrote: > > > > > Do you have an example where muxed registers are used in a regmap? > > > Is there some documentation available explaining the existing > > > mechanism? I'm not aware of anything. > > > > The regmap is sadly undocumented I have had it on my list for a long > > time to document this gem, but I never find the time. > > > > You have to mark registers that cannot be cached as volatile, then > > enable caching in the regmap with e.g. .cache_type = REGCACHE_FLAT > > in the regmap config, then it pretty much caches itself. > > <linux/regmap.h> has some cache maintenance functions if you > > run into corner cases. > > > > (Mark will correct me if I say something wrong...) > > It's about introducing pages of virtual registers (from regmap p.o.v.) > to access the banks of selectable registers. The cache most likely > will be the same, i.e. MAPPLE_TREE. More specifically I'm talking about this data structure, and we have several drivers in kernel that may be used as an example. https://elixir.bootlin.com/linux/latest/source/include/linux/regmap.h#L485 -- With Best Regards, Andy Shevchenko