lkml.org 
[lkml]   [2018]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC] regmap: allow volatile register writes with cached only read maps
From
Date
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,
};


\
 
 \ /
  Last update: 2018-05-11 12:30    [W:0.096 / U:8.584 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site