From 9877d85b7e39a8cfaea245e55b1a7c5e5c18a82d Mon Sep 17 00:00:00 2001 From: Jin Park Date: Fri, 3 Jun 2011 20:25:49 +0900 Subject: 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 Reviewed-on: http://git-master/r/35390 Reviewed-by: Sachin Nikam Reviewed-by: Bharat Nihalani --- drivers/mfd/aat2870-core.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'drivers/mfd/aat2870-core.c') 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 -- cgit v1.2.3