From 945ab9c33ffbffa35461c07ece997bfb544ea1dd Mon Sep 17 00:00:00 2001 From: Alex Gonzalez Date: Thu, 12 Jan 2012 18:42:43 +0100 Subject: da9053: Finish shoutdown with an I2C read. A reported Dialog bug that will make the PMIC not power up again on some cases is worked around in this way. Signed-off-by: Alex Gonzalez --- drivers/mfd/da9052-core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'drivers') diff --git a/drivers/mfd/da9052-core.c b/drivers/mfd/da9052-core.c index 6ef039ea6aa2..4babd287e9c5 100644 --- a/drivers/mfd/da9052-core.c +++ b/drivers/mfd/da9052-core.c @@ -559,6 +559,7 @@ void da9053_power_off(void) { #if defined(CONFIG_MODULE_CCXMX53) struct da9052_ssc_msg msgs[5]; + struct da9052_ssc_msg msg_test; int ret; if (!da9052_data) @@ -587,6 +588,17 @@ void da9053_power_off(void) if (ret != 0) printk(KERN_WARNING "DA9052: %s failure\n", __func__); + // Dummy read + msg_test.addr = DA9052_GPIO0809_REG; + msg_test.data = 0; + da9052_data->read(da9052_data, &msg_test); + + // Do not unlock to disallow any other I2C access. + + // A Dialog reported PMIC I2C bug needs to finish with an I2C read + // or the PMIC won't power up again in some cases. + while(1); + da9052_unlock(da9052_data); #else struct da9052_ssc_msg ssc_msg; -- cgit v1.2.3