On Fri, 31 Jan 2025, Artur Weber wrote: > The BCM59056 supported by the bcm590xx driver is similar to the > BCM59054 MFD. Add a compatible for it in the driver, in preparation > for extending support of this chip in the bcm590xx regulator driver. > > Signed-off-by: Artur Weber <aweber.kernel@xxxxxxxxx> > --- > Changes in v3: > - Fix compilation warning about device_type pointer cast type > - Name the device types enum and use it as the type in the MFD struct > --- > drivers/mfd/bcm590xx.c | 6 +++++- > include/linux/mfd/bcm590xx.h | 7 +++++++ > 2 files changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/mfd/bcm590xx.c b/drivers/mfd/bcm590xx.c > index 8b56786d85d0182acf91da203b5f943556c08422..23036157480e0116301bfa93932c92f5a80010ea 100644 > --- a/drivers/mfd/bcm590xx.c > +++ b/drivers/mfd/bcm590xx.c > @@ -50,6 +50,9 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri) > bcm590xx->dev = &i2c_pri->dev; > bcm590xx->i2c_pri = i2c_pri; > > + bcm590xx->device_type = \ > + (uintptr_t) of_device_get_match_data(bcm590xx->dev); Why are you dividing pointers with each other? > bcm590xx->regmap_pri = devm_regmap_init_i2c(i2c_pri, > &bcm590xx_regmap_config_pri); > if (IS_ERR(bcm590xx->regmap_pri)) { > @@ -91,7 +94,8 @@ static int bcm590xx_i2c_probe(struct i2c_client *i2c_pri) > } > > static const struct of_device_id bcm590xx_of_match[] = { > - { .compatible = "brcm,bcm59056" }, > + { .compatible = "brcm,bcm59054", .data = (void *)BCM59054_TYPE }, > + { .compatible = "brcm,bcm59056", .data = (void *)BCM59056_TYPE }, > { } > }; > MODULE_DEVICE_TABLE(of, bcm590xx_of_match); > diff --git a/include/linux/mfd/bcm590xx.h b/include/linux/mfd/bcm590xx.h > index 6b8791da6119b22514447bf1572238b71c8b0e97..b76fb57bf0dd17d51580e93db58ece4a4d6dc5e4 100644 > --- a/include/linux/mfd/bcm590xx.h > +++ b/include/linux/mfd/bcm590xx.h > @@ -13,12 +13,19 @@ > #include <linux/i2c.h> > #include <linux/regmap.h> > > +/* device types */ > +enum bcm590xx_device_type { > + BCM59054_TYPE, > + BCM59056_TYPE, > +}; > + > /* max register address */ > #define BCM590XX_MAX_REGISTER_PRI 0xe7 > #define BCM590XX_MAX_REGISTER_SEC 0xf0 > > struct bcm590xx { > struct device *dev; > + enum bcm590xx_device_type device_type; > struct i2c_client *i2c_pri; > struct i2c_client *i2c_sec; > struct regmap *regmap_pri; > > -- > 2.48.1 > -- Lee Jones [李琼斯]