diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-20 23:58:50 +0200 |
---|---|---|
committer | Samuel Ortiz <samuel@sortiz.org> | 2008-10-22 01:19:40 +0200 |
commit | e76f7558d89868bc295fe1220c2e5a0a82f698f6 (patch) | |
tree | d53c1c06e9c40dcf6b380d3fb182a224f425ba0c /drivers/mfd | |
parent | 799f9e3267b0938c8059ed78d7e39e00b6aa6bd2 (diff) | |
download | talos-op-linux-e76f7558d89868bc295fe1220c2e5a0a82f698f6.tar.gz talos-op-linux-e76f7558d89868bc295fe1220c2e5a0a82f698f6.zip |
mfd: Don't store volatile bits in WM8350 register cache
This makes the contents of the cache clearer and fixes incorrect
initialisation of the cache for partially volatile registers.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@openedhand.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/wm8350-core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mfd/wm8350-core.c b/drivers/mfd/wm8350-core.c index fbe22fb7847b..0d47fb9e4b3b 100644 --- a/drivers/mfd/wm8350-core.c +++ b/drivers/mfd/wm8350-core.c @@ -183,6 +183,9 @@ static int wm8350_write(struct wm8350 *wm8350, u8 reg, int num_regs, u16 *src) (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) | src[i - reg]; + /* Don't store volatile bits */ + wm8350->reg_cache[i] &= ~wm8350_reg_io_map[i].vol; + src[i - reg] = cpu_to_be16(src[i - reg]); } @@ -1120,6 +1123,7 @@ static int wm8350_create_cache(struct wm8350 *wm8350, int mode) } value = be16_to_cpu(value); value &= wm8350_reg_io_map[i].readable; + value &= ~wm8350_reg_io_map[i].vol; wm8350->reg_cache[i] = value; } else wm8350->reg_cache[i] = reg_map[i]; |