[PATCH v5] mfd: da9063: Support SMBus and I2C mode

From: Jonas Mark (BT-FIR/ENG1-Grb)
Date: Tue Mar 16 2021 - 04:24:14 EST


Hi Lee,

> Code looks good to me now, thanks.
>
> However, this doesn't look like it would pass checkpatch.
>
> Have you tried to build with W=1 and checkpatch?

Yes, we used checkpatch.pl.

$ ./scripts/checkpatch.pl 0001-mfd-da9063-Support-SMBus-and-I2C-mode.v5
total: 0 errors, 0 warnings, 25 lines checked

0001-mfd-da9063-Support-SMBus-and-I2C-mode.v5 has no obvious style problems and is ready for submission.

Using the option --strict we get a check hint that the broken line of the regmap_clear_bits() is not aligned. We tried but were not able to make the tool happy. This matches our experience with this check hint and previous patches.

Also compiling Linux 5.10.14 with our patch and W=1 does not yield a warning.

$ make W=1
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
CHK include/generated/compile.h
CC [M] drivers/mfd/da9063-i2c.o
LD [M] drivers/mfd/da9063.o
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
MODPOST Module.symvers
LD [M] drivers/mfd/da9063.ko

> > diff --git a/drivers/mfd/da9063-i2c.c b/drivers/mfd/da9063-i2c.c index
> > 3781d0bb7786..e8a022e697c5 100644
> > --- a/drivers/mfd/da9063-i2c.c
> > +++ b/drivers/mfd/da9063-i2c.c
> > @@ -442,6 +442,16 @@ static int da9063_i2c_probe(struct i2c_client *i2c,
> > return ret;
> > }
> >
> > + /* If SMBus is not available and only I2C is possible, enter I2C mode */
> > + if (i2c_check_functionality(i2c->adapter, I2C_FUNC_I2C)) {
> > + ret = regmap_clear_bits(da9063->regmap,
> DA9063_REG_CONFIG_J,
> > + DA9063_TWOWIRE_TO);
> > + if (ret < 0) {
> > + dev_err(da9063->dev, "Failed to set Two-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

Cheers,
Mark