On Mon, 20 Jun 2022, Satya Priya Kakitapalli (Temp) wrote: > > On 6/17/2022 2:27 AM, Lee Jones wrote: > > On Tue, 14 Jun 2022, Satya Priya wrote: > > > > > Use i2c_new_dummy_device() to register pm8008-regulator > > > client present at a different address space, instead of > > > defining a separate DT node. This avoids calling the probe > > > twice for the same chip, once for each client pm8008-infra > > > and pm8008-regulator. > > > > > > As a part of this define pm8008_regmap_init() to do regmap > > > init for both the clients and define pm8008_get_regmap() to > > > pass the regmap to the regulator driver. > > > > > > Signed-off-by: Satya Priya <quic_c_skakit@xxxxxxxxxxx> > > > Reviewed-by: Stephen Boyd <swboyd@xxxxxxxxxxxx> > > > --- > > > Changes in V15: > > > - None. > > > > > > Changes in V14: > > > - None. > > > > > > Changes in V13: > > > - None. > > > > > > drivers/mfd/qcom-pm8008.c | 34 ++++++++++++++++++++++++++++++++-- > > > include/linux/mfd/qcom_pm8008.h | 9 +++++++++ > > > 2 files changed, 41 insertions(+), 2 deletions(-) > > > create mode 100644 include/linux/mfd/qcom_pm8008.h > > > > > > diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c > > > index 569ffd50..55e2a8e 100644 > > > --- a/drivers/mfd/qcom-pm8008.c > > > +++ b/drivers/mfd/qcom-pm8008.c > > > @@ -9,6 +9,7 @@ > > > #include <linux/interrupt.h> > > > #include <linux/irq.h> > > > #include <linux/irqdomain.h> > > > +#include <linux/mfd/qcom_pm8008.h> > > > #include <linux/module.h> > > > #include <linux/of_device.h> > > > #include <linux/of_platform.h> > > > @@ -57,6 +58,7 @@ enum { > > > struct pm8008_data { > > > struct device *dev; > > > + struct regmap *regulators_regmap; > > > int irq; > > > struct regmap_irq_chip_data *irq_data; > > > }; > > > @@ -150,6 +152,12 @@ static struct regmap_config qcom_mfd_regmap_cfg = { > > > .max_register = 0xFFFF, > > > }; > > > +struct regmap *pm8008_get_regmap(const struct pm8008_data *chip) > > > +{ > > > + return chip->regulators_regmap; > > > +} > > > +EXPORT_SYMBOL_GPL(pm8008_get_regmap); > > Seems like abstraction for the sake of abstraction. > > > > Why not do the dereference inside the regulator driver? > > To derefer this in the regulator driver, we need to have the pm8008_data > struct definition in the qcom_pm8008 header file. > > I think it doesn't look great to have only that structure in header and all > other structs and enum in the mfd driver. Then why pass 'pm8008_data' at all? What's preventing you from passing 'regmap'? -- Lee Jones [李琼斯] Principal Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog