diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2008-10-20 17:58:50 -0400 |
---|---|---|
committer | Samuel Ortiz <samuel@sortiz.org> | 2008-10-21 19:19:40 -0400 |
commit | e76f7558d89868bc295fe1220c2e5a0a82f698f6 (patch) | |
tree | d53c1c06e9c40dcf6b380d3fb182a224f425ba0c /drivers/mfd/wm8350-core.c | |
parent | 799f9e3267b0938c8059ed78d7e39e00b6aa6bd2 (diff) |
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/wm8350-core.c')
-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) | |||
183 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) | 183 | (wm8350->reg_cache[i] & ~wm8350_reg_io_map[i].writable) |
184 | | src[i - reg]; | 184 | | src[i - reg]; |
185 | 185 | ||
186 | /* Don't store volatile bits */ | ||
187 | wm8350->reg_cache[i] &= ~wm8350_reg_io_map[i].vol; | ||
188 | |||
186 | src[i - reg] = cpu_to_be16(src[i - reg]); | 189 | src[i - reg] = cpu_to_be16(src[i - reg]); |
187 | } | 190 | } |
188 | 191 | ||
@@ -1120,6 +1123,7 @@ static int wm8350_create_cache(struct wm8350 *wm8350, int mode) | |||
1120 | } | 1123 | } |
1121 | value = be16_to_cpu(value); | 1124 | value = be16_to_cpu(value); |
1122 | value &= wm8350_reg_io_map[i].readable; | 1125 | value &= wm8350_reg_io_map[i].readable; |
1126 | value &= ~wm8350_reg_io_map[i].vol; | ||
1123 | wm8350->reg_cache[i] = value; | 1127 | wm8350->reg_cache[i] = value; |
1124 | } else | 1128 | } else |
1125 | wm8350->reg_cache[i] = reg_map[i]; | 1129 | wm8350->reg_cache[i] = reg_map[i]; |