summaryrefslogtreecommitdiff
path: root/drivers/mfd/da9052-core.c
diff options
context:
space:
mode:
authorWayne Zou <b36644@freescale.com>2011-08-08 10:12:32 +0800
committerWayne Zou <b36644@freescale.com>2011-08-08 13:02:34 +0800
commit75530c5d1befb9e6a3406704f8eb6146e4b6b149 (patch)
treed4ba8ce415f47ba434004bb46158de37f0e2f8ee /drivers/mfd/da9052-core.c
parentc87039fda69de9bc8d5db128a57e72cd861d9bc5 (diff)
ENGR00154432 PMIC DA9053: fix I2C NAK for first access and shutdown issue
During the platform boot up, during the platform does DA9053 Read/Write operation, it writes slave address and wait for ACK . Instead of ACK PMIC sends NAK. A workaround fix is provided as a part of retries fix I2C NAK for very first access. Also fix a bug when the system fails to start after software shutdown. Signed-off-by: Wayne Zou <b36644@freescale.com>
Diffstat (limited to 'drivers/mfd/da9052-core.c')
-rw-r--r--drivers/mfd/da9052-core.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/mfd/da9052-core.c b/drivers/mfd/da9052-core.c
index 571006baf796..8783b76a0b6a 100644
--- a/drivers/mfd/da9052-core.c
+++ b/drivers/mfd/da9052-core.c
@@ -536,17 +536,17 @@ void da9052_ssc_exit(struct da9052 *da9052)
void da9053_power_off(void)
{
struct da9052_ssc_msg ssc_msg;
+ struct da9052_ssc_msg ssc_msg_dummy[2];
if (!da9052_data)
return;
ssc_msg.addr = DA9052_CONTROLB_REG;
da9052_data->read(da9052_data, &ssc_msg);
- ssc_msg.data |= DA9052_CONTROLB_SHUTDOWN;
- pr_info("da9052 shutdown: DA9052_CONTROLB_REG=%x\n", ssc_msg.data);
- da9052_data->write(da9052_data, &ssc_msg);
- ssc_msg.addr = DA9052_GPID9_REG;
- ssc_msg.data = 0;
- da9052_data->read(da9052_data, &ssc_msg);
+ ssc_msg_dummy[0].addr = DA9052_CONTROLB_REG;
+ ssc_msg_dummy[0].data = ssc_msg.data | DA9052_CONTROLB_SHUTDOWN;
+ ssc_msg_dummy[1].addr = DA9052_GPID9_REG;
+ ssc_msg_dummy[1].data = 0;
+ da9052_data->write_many(da9052_data, &ssc_msg_dummy[0], 2);
}
int da9053_get_chip_version(void)