summaryrefslogtreecommitdiff
path: root/drivers/mfd/aat2870-core.c
diff options
context:
space:
mode:
authorJin Park <jinyoungp@nvidia.com>2011-06-03 20:25:49 +0900
committerNiket Sirsi <nsirsi@nvidia.com>2011-06-20 19:54:57 -0700
commit9877d85b7e39a8cfaea245e55b1a7c5e5c18a82d (patch)
tree660b95dde058c6030517e204853d2bc8488354b5 /drivers/mfd/aat2870-core.c
parent886517603c1576796e3a1ca349ba69efeed5ecae (diff)
aat2870: Change suspend and resume event source
Change aat2870_bl suspend and resume event source to backlight driver from platform driver. Clean-up codes. Bug 813111 Change-Id: If04b77bf0c3c3118f05107db6ffeaea7a21cdfac Signed-off-by: Jin Park <jinyoungp@nvidia.com> Reviewed-on: http://git-master/r/35390 Reviewed-by: Sachin Nikam <snikam@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/mfd/aat2870-core.c')
-rw-r--r--drivers/mfd/aat2870-core.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/mfd/aat2870-core.c b/drivers/mfd/aat2870-core.c
index 2f9a651e5c43..6d7e868b8b23 100644
--- a/drivers/mfd/aat2870-core.c
+++ b/drivers/mfd/aat2870-core.c
@@ -195,7 +195,7 @@ static int aat2870_update_bits(struct aat2870_data *aat2870, u8 addr,
if (ret)
return ret;
- new_val = (old_val & ~mask) | val;
+ new_val = (old_val & ~mask) | (val & mask);
change = old_val != new_val;
if (change)
ret = aat2870->write(aat2870, addr, new_val);
@@ -471,14 +471,25 @@ static int aat2870_i2c_suspend(struct i2c_client *client, pm_message_t state)
struct aat2870_data *aat2870 = i2c_get_clientdata(client);
aat2870_disable(aat2870);
+
return 0;
}
static int aat2870_i2c_resume(struct i2c_client *client)
{
struct aat2870_data *aat2870 = i2c_get_clientdata(client);
+ struct aat2870_register *reg = NULL;
+ int i;
aat2870_enable(aat2870);
+
+ /* restore registers */
+ for (i = 0; i < AAT2870_REG_NUM; i++) {
+ reg = &aat2870->reg_cache[i];
+ if (reg->writeable)
+ aat2870->write(aat2870, i, reg->value);
+ }
+
return 0;
}
#else