linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Alistair Francis <alistair23@gmail.com>
Cc: linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Michael Walle <michael@walle.cc>, Mark Brown <broonie@kernel.org>
Subject: Re: [PATCH v2 1/1] mfd: simple-mfd-i2c: Add support for registering devices via MFD cells
Date: Fri, 6 Aug 2021 12:41:38 +0100	[thread overview]
Message-ID: <YQ0f8hJSuLqR3SGQ@google.com> (raw)
In-Reply-To: <CAKmqyKMPg8kikB7Ym6qc+VYAwt0DvyXK+xqu3SwgJwcaCyUrbA@mail.gmail.com>

On Fri, 06 Aug 2021, Alistair Francis wrote:

> On Thu, Aug 5, 2021 at 6:56 PM Lee Jones <lee.jones@linaro.org> wrote:
> >
> > More devices are cropping up requiring only Regmap initialisation and
> > child registration functionality.  We currently only support that if
> > all required devices are represented by their own Device Tree nodes
> > complete with compatible strings.
> >
> > However, not everyone is happy with adding empty nodes that provide no
> > additional device information into the Device Tree.
> >
> > Rather than have a plethora of mostly empty, function-less drivers in
> > MFD, we'll support those simple cases in here instead via MFD cells.
> >
> > Cc: Michael Walle <michael@walle.cc>
> > Cc: Mark Brown <broonie@kernel.org>
> > Cc: Alistair Francis <alistair23@gmail.com>
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>
> > ---
> > v2:
> >  - Check for empty of_device_id .data entry
> >
> >  drivers/mfd/simple-mfd-i2c.c | 41 +++++++++++++++++++++++++++++-------
> >  drivers/mfd/simple-mfd-i2c.h | 32 ++++++++++++++++++++++++++++
> >  2 files changed, 65 insertions(+), 8 deletions(-)
> >  create mode 100644 drivers/mfd/simple-mfd-i2c.h
> >
> > diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c
> > index 87f684cff9a17..583e8c7924af0 100644
> > --- a/drivers/mfd/simple-mfd-i2c.c
> > +++ b/drivers/mfd/simple-mfd-i2c.c
> > @@ -2,39 +2,64 @@
> >  /*
> >   * Simple MFD - I2C
> >   *
> > + * Author(s):
> > + *     Michael Walle <michael@walle.cc>
> > + *     Lee Jones <lee.jones@linaro.org>
> > + *
> >   * This driver creates a single register map with the intention for it to be
> >   * shared by all sub-devices.  Children can use their parent's device structure
> >   * (dev.parent) in order to reference it.
> >   *
> >   * Once the register map has been successfully initialised, any sub-devices
> > - * represented by child nodes in Device Tree will be subsequently registered.
> > + * represented by child nodes in Device Tree or via the MFD cells in this file
> > + * will be subsequently registered.
> >   */
> >
> >  #include <linux/i2c.h>
> >  #include <linux/kernel.h>
> > +#include <linux/mfd/core.h>
> >  #include <linux/module.h>
> >  #include <linux/of_platform.h>
> >  #include <linux/regmap.h>
> >
> > -static const struct regmap_config simple_regmap_config = {
> > +#include "simple-mfd-i2c.h"
> > +
> > +static const struct regmap_config regmap_config_8r_8v = {
> >         .reg_bits = 8,
> >         .val_bits = 8,
> >  };
> >
> >  static int simple_mfd_i2c_probe(struct i2c_client *i2c)
> >  {
> > -       const struct regmap_config *config;
> > +       const struct simple_mfd_data *simple_mfd_data;
> > +       const struct regmap_config *regmap_config;
> >         struct regmap *regmap;
> > +       int ret;
> > +
> > +       simple_mfd_data = device_get_match_data(&i2c->dev);
> >
> > -       config = device_get_match_data(&i2c->dev);
> > -       if (!config)
> > -               config = &simple_regmap_config;
> > +       /* If no regmap_config is specified, use the default 8reg and 8val bits */
> > +       if (!simple_mfd_data || !simple_mfd_data->regmap_config)
> > +               regmap_config = &regmap_config_8r_8v;
> > +       else
> > +               regmap_config = simple_mfd_data->regmap_config;
> >
> > -       regmap = devm_regmap_init_i2c(i2c, config);
> > +       regmap = devm_regmap_init_i2c(i2c, regmap_config);
> >         if (IS_ERR(regmap))
> >                 return PTR_ERR(regmap);
> >
> > -       return devm_of_platform_populate(&i2c->dev);
> > +       /* If no MFD cells are spedified, use register the DT child nodes instead */
> > +       if (!simple_mfd_data || !simple_mfd_data->mfd_cell)
> > +               return devm_of_platform_populate(&i2c->dev);
> > +
> > +       ret = devm_mfd_add_devices(&i2c->dev, PLATFORM_DEVID_AUTO,
> > +                                  simple_mfd_data->mfd_cell,
> > +                                  simple_mfd_data->mfd_cell_size,
> > +                                  NULL, 0, NULL);
> > +       if (!ret)
> 
> Shouldn't this be `if (ret)` instead?
> 
> With that changed this works for me as well:

You're right.  Will fix.

> Reviewed-by: Alistair Francis <alistair@alistair23.me>
> Tested-by: Alistair Francis <alistair@alistair23.me>

Thanks.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

      reply	other threads:[~2021-08-06 11:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-05  8:56 [PATCH v2 1/1] mfd: simple-mfd-i2c: Add support for registering devices via MFD cells Lee Jones
2021-08-05 10:01 ` Michael Walle
2021-08-05 11:03   ` Lee Jones
2021-08-06  8:19 ` Alistair Francis
2021-08-06 11:41   ` Lee Jones [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YQ0f8hJSuLqR3SGQ@google.com \
    --to=lee.jones@linaro.org \
    --cc=alistair23@gmail.com \
    --cc=broonie@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael@walle.cc \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).