diff --git a/drivers/mfd/da9063-core.c b/drivers/mfd/da9063-core.c index 6c2870d4e75449..b9e5342a006cf7 100644 --- a/drivers/mfd/da9063-core.c +++ b/drivers/mfd/da9063-core.c @@ -162,7 +162,7 @@ static int da9063_clear_fault_log(struct da9063 *da9063) int da9063_device_init(struct da9063 *da9063, unsigned int irq) { struct da9063_pdata *pdata = da9063->dev->platform_data; - int model, variant_id, variant_code; + int model, variant_id, variant_code, config_j; int ret; ret = da9063_clear_fault_log(da9063); @@ -232,6 +232,22 @@ int da9063_device_init(struct da9063 *da9063, unsigned int irq) if (ret) dev_err(da9063->dev, "Cannot add MFD cells\n"); + /* Set bit 6 (IF_TO) of register 0x10F (DA9063_REG_CONFIG_J) to 0: + * Disables automatic reset of 2-WIRE-IF + */ + ret = regmap_read(da9063->regmap, DA9063_REG_CONFIG_J, &config_j); + if (ret) { + dev_err(da9063->dev, "Cannot read register DA9063_REG_CONFIG_J.\n"); + return ret; + } + + config_j &= ~0x40; + ret = regmap_write(da9063->regmap, DA9063_REG_CONFIG_J, config_j); + if (ret) { + dev_err(da9063->dev, "Cannot write register DA9063_REG_CONFIG_J.\n"); + return ret; + } + return ret; }