diff options
author | Misael Lopez Cruz <misael.lopez@ti.com> | 2011-12-22 01:00:38 -0600 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:58:09 +0200 |
commit | e3980f0cab7fbc0f153d31c3bb4b88d11a4e891a (patch) | |
tree | 9b97069d27df7d9921e88e41e24044d612ab47bd /drivers/mfd | |
parent | 0d71015befd1f4eab792b39dae0a8eba19b7d965 (diff) | |
download | kernel_samsung_tuna-e3980f0cab7fbc0f153d31c3bb4b88d11a4e891a.tar.gz kernel_samsung_tuna-e3980f0cab7fbc0f153d31c3bb4b88d11a4e891a.tar.bz2 kernel_samsung_tuna-e3980f0cab7fbc0f153d31c3bb4b88d11a4e891a.zip |
MFD: twl6040-codec: Add register context restore
Add register context restore per supply.
Change-Id: I4918efee4fcc83f4998f59f3d376b798822ca3ce
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
Signed-off-by: Chris Kelly <c-kelly@ti.com>
Signed-off-by: Gabriel M. Beddingfield <gabrbedd@ti.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/twl6040-codec.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/mfd/twl6040-codec.c b/drivers/mfd/twl6040-codec.c index 31c484b4684..5f0da1ca58a 100644 --- a/drivers/mfd/twl6040-codec.c +++ b/drivers/mfd/twl6040-codec.c @@ -217,6 +217,37 @@ int twl6040_clear_bits(struct twl6040 *twl6040, unsigned int reg, u8 mask) } EXPORT_SYMBOL(twl6040_clear_bits); +/* Restore context of VDD/VSS or VIO/GND registers */ +static int twl6040_restore_ctx(struct twl6040 *twl6040, int supply) +{ + int reg, ret = 0; + + for (reg = 1; reg < TWL6040_CACHEREGNUM; reg++) { + /* skip read-only registers */ + switch (reg) { + case TWL6040_REG_ASICID: + case TWL6040_REG_ASICREV: + case TWL6040_REG_UPCRES: + case TWL6040_REG_DNCRES: + continue; + default: + break; + } + + if (twl6040_get_reg_supply(reg) == supply) { + ret = twl6040_reg_write(twl6040, reg, + twl6040_cache_read(twl6040, reg)); + if (ret) { + dev_err(twl6040->dev, + "failed to restore context %d\n", ret); + break; + } + } + } + + return ret; +} + /* twl6040 codec manual power-up sequence */ static int twl6040_power_up(struct twl6040 *twl6040) { |