• Lars-Peter Clausen's avatar
    regmap: Fix cache defaults initialization from raw cache defaults · 61cddc57
    Lars-Peter Clausen authored
    Currently registers with a value of 0 are ignored when initializing the register
    defaults from raw defaults. This worked in the past, because registers without a
    explicit default were assumed to have a default value of 0. This was changed in
    commit b03622a8 ("regmap: Ensure rbtree syncs registers set to zero properly").
    As a result registers, which have a raw default value of 0 are now assumed to
    have no default. This again can result in unnecessary writes when syncing the
    cache. It will also result in unnecessary reads for e.g. the first update
    operation. In the case where readback is not possible this will even let the
    update operation fail, if the register has not been written to before.
    
    So this patch removes the check. Instead it adds a check to ignore raw defaults
    for registers which are volatile, since those registers are not cached.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
    Cc: stable@vger.kernel.org
    61cddc57
regcache.c 9.61 KB