summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mfd/da9052-core.c12
-rw-r--r--drivers/mfd/da9052-i2c.c30
2 files changed, 20 insertions, 22 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)
diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c
index 4f050896d962..6209e977f10c 100644
--- a/drivers/mfd/da9052-i2c.c
+++ b/drivers/mfd/da9052-i2c.c
@@ -21,23 +21,21 @@ static struct da9052 *da9052_i2c;
static int da9052_i2c_is_connected(void)
{
+ struct da9052_ssc_msg msg;
+ int retries = 10, ret = -1;
+
+ msg.addr = DA9052_INTERFACE_REG;
+ do {
+ /* Test i2c connectivity by reading the GPIO_0-1 register */
+ if (0 != da9052_i2c_read(da9052_i2c, &msg)) {
+ printk(KERN_INFO"da9052_i2c_is_connected - i2c read failed.....\n");
+ } else {
+ printk(KERN_INFO"da9052_i2c_is_connected - i2c read success....\n");
+ ret = 0;
+ }
+ } while (ret != 0 && retries--);
- struct da9052_ssc_msg msg;
-
- //printk("Entered da9052_i2c_is_connected.............\n");
-
- msg.addr = DA9052_INTERFACE_REG;
-
- /* Test spi connectivity by performing read of the GPIO_0-1 register */
- if ( 0 != da9052_i2c_read(da9052_i2c, &msg)) {
- printk("da9052_i2c_is_connected - i2c read failed.............\n");
- return -1;
- }
- else {
- printk("da9052_i2c_is_connected - i2c read success..............\n");
- return 0;
- }
-
+ return ret;
}
static int __devinit da9052_i2c_probe(struct i2c_client *client,