]> asedeno.scripts.mit.edu Git - linux.git/commit
regmap: Use regcache_mark_dirty() to indicate power loss or reset
authorKevin Cernekee <cernekee@chromium.org>
Tue, 5 May 2015 22:14:14 +0000 (15:14 -0700)
committerMark Brown <broonie@kernel.org>
Wed, 6 May 2015 12:01:25 +0000 (13:01 +0100)
commit1c79771a7270278e6ff486edf4dfeb8c4fc01ee0
tree7abac0b5aa1dc6601f3b8f541f393643b86207df
parent3969fa080661dcdf20d04392b900189086e04c2c
regmap: Use regcache_mark_dirty() to indicate power loss or reset

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: Mark Brown <broonie@kernel.org>
Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/internal.h
drivers/base/regmap/regcache.c