• Kevin Cernekee's avatar
    regmap: Use regcache_mark_dirty() to indicate power loss or reset · 1c79771a
    Kevin Cernekee authored
    Existing regmap users call regcache_mark_dirty() as part of the
    suspend/resume sequence, to tell regcache that non-default values need to
    be resynced post-resume.  Add an internal "no_sync_defaults" regmap flag
    to remember this state, so that regcache_sync() can differentiate between
    these two cases:
    
    1) HW was reset, so any cache values that match map->reg_defaults can be
    safely skipped.  On some chips there are a lot of registers in the
    reg_defaults list, so this optimization speeds things up quite a bit.
    
    2) HW was not reset (maybe it was just clock-gated), so if we cached
    any writes, they should be sent to the hardware regardless of whether
    they match the HW default.  Currently this will write out all values in
    the regcache, since we don't maintain per-register dirty bits.
    Suggested-by: default avatarMark Brown <broonie@kernel.org>
    Signed-off-by: default avatarKevin Cernekee <cernekee@chromium.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    1c79771a
regcache.c 16.6 KB