Message ID | 20250131-bcm59054-v3-4-bbac52a84787@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mfd: bcm590xx: Add support for BCM59054 | expand |
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@gmail.com> > --- > 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 >
On 7.02.2025 09:48, Lee Jones wrote: > 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@gmail.com> >> --- >> 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? That's not division, it's a line continuation (note the space before "\") - had to insert it for the line to fit in 80 characters. Though admittedly, there's probably a better way to do this than to force it with "\"... I will clean this up in the next version. Best regards Artur
On Fri, 07 Feb 2025, Artur Weber wrote: > On 7.02.2025 09:48, Lee Jones wrote: > > 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@gmail.com> > > > --- > > > 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? > > That's not division, it's a line continuation (note the space before The space is irrelevant in C. > "\") - had to insert it for the line to fit in 80 characters. Though > admittedly, there's probably a better way to do this than to force it > with "\"... You do not need to escape the line break in C-functions. > I will clean this up in the next version. You can use up to 100-chars these days, so you don't need the break at all. However, if you insist on keeping to the old 80-char rule, you can just omit the escape char.
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); + 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;
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@gmail.com> --- 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(-)