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