Hi Adam,
> > + if (i2c_check_functionality(i2c->adapter, I2C_FUNC_I2C)) {
> > + dev_info(da9063->dev, "I2C mode");
> > + busmode = 0;
> > + } else {
> > + dev_info(da9063->dev, "SMBus mode");
> > + busmode = 1;
>
> I think this should be 'DA9063_TWOWIRE_TO' rather than '1' otherwise I think
> you'll be setting 0 still here as it doesn't match up with the mask.
You are right. We need to fix this and send a new patch.
> > + }
> > + ret = regmap_update_bits(da9063->regmap,
> DA9063_REG_CONFIG_J,
> > + DA9063_TWOWIRE_TO, busmode);
> > + if (ret < 0) {
> > + dev_err(da9063->dev, "Failed to set 2-wire bus mode.\n");
> > + return -EIO;
> > + }
> > +
> > return da9063_device_init(da9063, i2c->irq); }
> >
> > diff --git a/include/linux/mfd/da9063/registers.h
> > b/include/linux/mfd/da9063/registers.h
> > index 1dbabf1b3cb8..6e0f66a2e727 100644
> > --- a/include/linux/mfd/da9063/registers.h
> > +++ b/include/linux/mfd/da9063/registers.h
> > @@ -1037,6 +1037,9 @@
> > #define DA9063_NONKEY_PIN_AUTODOWN 0x02
> > #define DA9063_NONKEY_PIN_AUTOFLPRT 0x03
> >
> > +/* DA9063_REG_CONFIG_J (addr=0x10F) */
> > +#define DA9063_TWOWIRE_TO 0x40
> > +
> > /* DA9063_REG_MON_REG_5 (addr=0x116) */
> > #define DA9063_MON_A8_IDX_MASK 0x07
> > #define DA9063_MON_A8_IDX_NONE 0x00
> > --
> > 2.25.1
Cheers,
Mark