Messages in this thread | | | Subject | Re: [RFC] regmap: allow volatile register writes with cached only read maps | From | Jorge Ramirez-Ortiz <> | Date | Fri, 11 May 2018 12:29:42 +0200 |
| |
On 05/11/2018 04:00 AM, Mark Brown wrote: > On Wed, May 09, 2018 at 01:49:21PM +0200, Jorge Ramirez-Ortiz wrote: >> On 05/09/2018 10:39 AM, Mark Brown wrote: >>> I don't understand what voltile access means for write only devices. >>> Volatile means that we don't read the cache but go direct to the >>> hardware so if we can't read the hardware that's pretty redundant, a >>> volatile read that goes to the cache is just a default read. >> 1. only cached reads: (as a consequence every regmap write must succeed). >> 2. cached writes: do not access the hardware unless the value differs from >> what is in the cache already or (3) applies. >> 3. support for selectable volatile writes: those that will always access the >> device no matter what the cache holds. > We don't currently suppress writes except when regmap_update_bits() > notices that the modification was a noop. You probably want to be using > regmap_write_bits() here instead of regmap_update_bits(), that will > always do the write.
but isnt that interface at a different level? I am not sure if you are asking me to review my patch or just discarding the RFC and highlighting that I have a configuration problem.
In my use case and what triggered this RFC (config below), an 'amixer set' might never reach the driver's .reg_write interface even though the register is configured as volatile (to me this is not consistent since volatile_reg is being silently ignored).
So I dont see where/how your recommendation fits; maybe you could clarify a bit more please?
static const struct regmap_config foo_regmap = { .reg_write = foo_write_reg,
.reg_bits = 32, .val_bits = 32, .reg_stride = 1,
.volatile_reg = foo_volatile_reg,
.max_register = CODEC_ENABLE_DEBUG_CTRL_REG, .reg_defaults = foo_reg_defaults, .num_reg_defaults = ARRAY_SIZE(foo_reg_defaults), .cache_type = REGCACHE_RBTREE, };
| |