All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Cc: Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	STEricsson_nomadik_linux-nkJGhpqTU55BDgjK7y7TUQ@public.gmane.org,
	linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org,
	arnd-r2nGTMty4D4@public.gmane.org,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 3/3] i2c: nomadik: Add Device Tree support to the Nomadik I2C driver
Date: Mon, 3 Sep 2012 10:50:08 +0100	[thread overview]
Message-ID: <20120903095001.GB5782@gmail.com> (raw)
In-Reply-To: <20120903094448.GB11780-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

On Mon, Sep 03, 2012 at 11:44:48AM +0200, Wolfram Sang wrote:
> On Mon, Sep 03, 2012 at 11:22:28AM +0200, Linus Walleij wrote:
> > On Fri, Aug 31, 2012 at 2:23 PM, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> > 
> > (...)
> > >  static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id)
> > >  {
> > >         int ret = 0;
> > >         struct nmk_i2c_controller *pdata = adev->dev.platform_data;
> > > +       struct device_node *np = adev->dev.of_node;
> > >         struct nmk_i2c_dev      *dev;
> > >         struct i2c_adapter *adap;
> > >
> > > +       if (np) {
> > > +               if (!pdata) {
> > 
> > So, if no pdata is provided, we go on to allocate some ...
> > 
> > > +                       pdata = devm_kzalloc(&adev->dev, sizeof(*pdata), GFP_KERNEL);
> > > +                       if (!pdata) {
> > > +                               ret = -ENOMEM;
> > > +                               goto err_no_mem;
> > > +                       }
> > > +               }
> > > +               /* Provide the default configuration as a base. */
> > > +               pdata = &u8500_i2c;
> > 
> > Then you just override that pointer with a pointer to the local config.
> > 
> > > +               nmk_i2c_of_probe(np, pdata);
> > > +       }
> > > +
> > >         if (!pdata)
> > >                 /* No i2c configuration found, using the default. */
> > >                 pdata = &u8500_i2c;
> > 
> > This in it's entirety does not look sound. I *think* this is what you
> > want to do,
> > replace all of the above codde (including the last if (!pdata) clause) with:
> > 
> > if (!pdata) {
> >     /* If no platform data passed in, use the default configuration as
> > a base. */
> >     pdata = &u8500_i2c;
> >     if (np)
> >         /* Further, if we have a DT node, override the default with this */
> >         nmk_i2c_of_probe(np, pdata);
> > }
> > 
> > This makes any passed pdata take precedence, else default pdata
> > complemented with DT info. Which is what we want.
> 
> No. of_probe modifies pdata which in this case the default config which
> might already be in use. So, you will get problems if you have two
> instances with different configuration. So, we need to allocate memory
> but copy the content of the default data. The patch above just copies
> the pointer which is bogus.

Agreed. I'll fixup.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] i2c: nomadik: Add Device Tree support to the Nomadik I2C driver
Date: Mon, 3 Sep 2012 10:50:08 +0100	[thread overview]
Message-ID: <20120903095001.GB5782@gmail.com> (raw)
In-Reply-To: <20120903094448.GB11780@pengutronix.de>

On Mon, Sep 03, 2012 at 11:44:48AM +0200, Wolfram Sang wrote:
> On Mon, Sep 03, 2012 at 11:22:28AM +0200, Linus Walleij wrote:
> > On Fri, Aug 31, 2012 at 2:23 PM, Lee Jones <lee.jones@linaro.org> wrote:
> > 
> > (...)
> > >  static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id)
> > >  {
> > >         int ret = 0;
> > >         struct nmk_i2c_controller *pdata = adev->dev.platform_data;
> > > +       struct device_node *np = adev->dev.of_node;
> > >         struct nmk_i2c_dev      *dev;
> > >         struct i2c_adapter *adap;
> > >
> > > +       if (np) {
> > > +               if (!pdata) {
> > 
> > So, if no pdata is provided, we go on to allocate some ...
> > 
> > > +                       pdata = devm_kzalloc(&adev->dev, sizeof(*pdata), GFP_KERNEL);
> > > +                       if (!pdata) {
> > > +                               ret = -ENOMEM;
> > > +                               goto err_no_mem;
> > > +                       }
> > > +               }
> > > +               /* Provide the default configuration as a base. */
> > > +               pdata = &u8500_i2c;
> > 
> > Then you just override that pointer with a pointer to the local config.
> > 
> > > +               nmk_i2c_of_probe(np, pdata);
> > > +       }
> > > +
> > >         if (!pdata)
> > >                 /* No i2c configuration found, using the default. */
> > >                 pdata = &u8500_i2c;
> > 
> > This in it's entirety does not look sound. I *think* this is what you
> > want to do,
> > replace all of the above codde (including the last if (!pdata) clause) with:
> > 
> > if (!pdata) {
> >     /* If no platform data passed in, use the default configuration as
> > a base. */
> >     pdata = &u8500_i2c;
> >     if (np)
> >         /* Further, if we have a DT node, override the default with this */
> >         nmk_i2c_of_probe(np, pdata);
> > }
> > 
> > This makes any passed pdata take precedence, else default pdata
> > complemented with DT info. Which is what we want.
> 
> No. of_probe modifies pdata which in this case the default config which
> might already be in use. So, you will get problems if you have two
> instances with different configuration. So, we need to allocate memory
> but copy the content of the default data. The patch above just copies
> the pointer which is bogus.

Agreed. I'll fixup.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Wolfram Sang <w.sang@pengutronix.de>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	STEricsson_nomadik_linux@list.st.com,
	linus.walleij@stericsson.com, arnd@arndb.de,
	linux-i2c@vger.kernel.org
Subject: Re: [PATCH 3/3] i2c: nomadik: Add Device Tree support to the Nomadik I2C driver
Date: Mon, 3 Sep 2012 10:50:08 +0100	[thread overview]
Message-ID: <20120903095001.GB5782@gmail.com> (raw)
In-Reply-To: <20120903094448.GB11780@pengutronix.de>

On Mon, Sep 03, 2012 at 11:44:48AM +0200, Wolfram Sang wrote:
> On Mon, Sep 03, 2012 at 11:22:28AM +0200, Linus Walleij wrote:
> > On Fri, Aug 31, 2012 at 2:23 PM, Lee Jones <lee.jones@linaro.org> wrote:
> > 
> > (...)
> > >  static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id)
> > >  {
> > >         int ret = 0;
> > >         struct nmk_i2c_controller *pdata = adev->dev.platform_data;
> > > +       struct device_node *np = adev->dev.of_node;
> > >         struct nmk_i2c_dev      *dev;
> > >         struct i2c_adapter *adap;
> > >
> > > +       if (np) {
> > > +               if (!pdata) {
> > 
> > So, if no pdata is provided, we go on to allocate some ...
> > 
> > > +                       pdata = devm_kzalloc(&adev->dev, sizeof(*pdata), GFP_KERNEL);
> > > +                       if (!pdata) {
> > > +                               ret = -ENOMEM;
> > > +                               goto err_no_mem;
> > > +                       }
> > > +               }
> > > +               /* Provide the default configuration as a base. */
> > > +               pdata = &u8500_i2c;
> > 
> > Then you just override that pointer with a pointer to the local config.
> > 
> > > +               nmk_i2c_of_probe(np, pdata);
> > > +       }
> > > +
> > >         if (!pdata)
> > >                 /* No i2c configuration found, using the default. */
> > >                 pdata = &u8500_i2c;
> > 
> > This in it's entirety does not look sound. I *think* this is what you
> > want to do,
> > replace all of the above codde (including the last if (!pdata) clause) with:
> > 
> > if (!pdata) {
> >     /* If no platform data passed in, use the default configuration as
> > a base. */
> >     pdata = &u8500_i2c;
> >     if (np)
> >         /* Further, if we have a DT node, override the default with this */
> >         nmk_i2c_of_probe(np, pdata);
> > }
> > 
> > This makes any passed pdata take precedence, else default pdata
> > complemented with DT info. Which is what we want.
> 
> No. of_probe modifies pdata which in this case the default config which
> might already be in use. So, you will get problems if you have two
> instances with different configuration. So, we need to allocate memory
> but copy the content of the default data. The patch above just copies
> the pointer which is bogus.

Agreed. I'll fixup.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  parent reply	other threads:[~2012-09-03  9:50 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-23 15:01 [PATCH 1/3] ARM: ux500: Add i2c configurations to the Device Tree for DB8500 based devices Lee Jones
2012-08-23 15:01 ` Lee Jones
2012-08-23 15:01 ` [PATCH 2/3] Documentation: Device Tree binding information for i2c-nomadik driver Lee Jones
2012-08-23 15:01   ` Lee Jones
2012-08-23 15:01 ` [PATCH 3/3] i2c: nomadik: Add Device Tree support to the Nomadik I2C driver Lee Jones
2012-08-23 15:01   ` Lee Jones
     [not found]   ` <1345734087-21803-3-git-send-email-lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-08-27 23:42     ` Linus Walleij
2012-08-27 23:42       ` Linus Walleij
2012-08-27 23:42       ` Linus Walleij
     [not found]       ` <CACRpkdapY3JvZmLxK7dX917O-E+aDgVE9ELnysjqAyETXMZHNw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-31 10:36         ` Lee Jones
2012-08-31 10:36           ` Lee Jones
2012-08-31 10:36           ` Lee Jones
2012-08-31 11:22   ` Wolfram Sang
2012-08-31 11:22     ` Wolfram Sang
2012-08-31 11:22     ` Wolfram Sang
     [not found]     ` <20120831112258.GA2624-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-08-31 12:04       ` Lee Jones
2012-08-31 12:04         ` Lee Jones
2012-08-31 12:04         ` Lee Jones
2012-08-31 12:23       ` Lee Jones
2012-08-31 12:23         ` Lee Jones
2012-08-31 12:23         ` Lee Jones
     [not found]         ` <20120831122323.GC5962-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-09-03  9:22           ` Linus Walleij
2012-09-03  9:22             ` Linus Walleij
2012-09-03  9:22             ` Linus Walleij
     [not found]             ` <CACRpkdZ=C1EV4WO2b=1YLHPNhsDsQdq7Kfnpzm8i7uGRtVjJuQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-03  9:44               ` Wolfram Sang
2012-09-03  9:44                 ` Wolfram Sang
2012-09-03  9:44                 ` Wolfram Sang
     [not found]                 ` <20120903094448.GB11780-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-09-03  9:50                   ` Lee Jones [this message]
2012-09-03  9:50                     ` Lee Jones
2012-09-03  9:50                     ` Lee Jones
2012-09-03 10:07                 ` Lee Jones
2012-09-03 10:07                   ` Lee Jones
2012-09-03 10:07                   ` Lee Jones
     [not found]                   ` <20120903100656.GC5782-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-09-03 11:07                     ` Linus Walleij
2012-09-03 11:07                       ` Linus Walleij
2012-09-03 11:07                       ` Linus Walleij
2012-09-03 11:11                       ` Lee Jones
2012-09-03 11:11                         ` Lee Jones
2012-09-03 11:32                       ` Lee Jones
2012-09-03 11:32                         ` Lee Jones
     [not found]                         ` <CAF2Aj3j25w1Nn9O6hV+=i-j1ts_p_Ucswk_M7r04S7i5BzPkHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-03 11:58                           ` Linus Walleij
2012-09-03 11:58                             ` Linus Walleij
2012-09-03 11:58                             ` Linus Walleij
     [not found]                             ` <CACRpkdZ5VFhrbONy=0K5MFh4e6BDFckq0yqzjQ2QkW9MgwKqBg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-03 12:34                               ` Lee Jones
2012-09-03 12:34                                 ` Lee Jones
2012-09-03 12:34                                 ` Lee Jones
     [not found]                                 ` <20120903123424.GA31163-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-09-03 13:19                                   ` Linus Walleij
2012-09-03 13:19                                     ` Linus Walleij
2012-09-03 13:19                                     ` Linus Walleij
     [not found]                                     ` <CACRpkdZvWkH2gQQuNvCkNuB-faT8qHAjyiULSqPKrn+FCktvLg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-03 13:28                                       ` Lee Jones
2012-09-03 13:28                                         ` Lee Jones
2012-09-03 13:28                                         ` Lee Jones
2012-09-03 14:33                             ` Stephen Warren
2012-09-03 14:33                               ` Stephen Warren
     [not found]                               ` <5044BFD1.10708-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-09-03 14:35                                 ` Linus Walleij
2012-09-03 14:35                                   ` Linus Walleij
2012-09-03 14:35                                   ` Linus Walleij
     [not found]                                   ` <CACRpkda0akcLRe3J=fVcyYpxHmkJmVe+c1doXQ4=vOA6iNxe2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-03 15:09                                     ` Rob Herring
2012-09-03 15:09                                       ` Rob Herring
2012-09-03 15:09                                       ` Rob Herring
2012-09-03 15:20                                       ` Lee Jones
2012-09-03 15:20                                         ` Lee Jones
     [not found]                                         ` <20120903152012.GH31163-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-09-04 14:28                                           ` Arnd Bergmann
2012-09-04 14:28                                             ` Arnd Bergmann
2012-09-04 14:28                                             ` Arnd Bergmann
     [not found]                                             ` <201209041428.21409.arnd-r2nGTMty4D4@public.gmane.org>
2012-09-04 17:27                                               ` Linus Walleij
2012-09-04 17:27                                                 ` Linus Walleij
2012-09-04 17:27                                                 ` Linus Walleij
2012-09-04 17:35                                                 ` Alessandro Rubini
2012-09-04 17:35                                                   ` Alessandro Rubini
2012-09-04 17:35                                                   ` Alessandro Rubini
     [not found]                                                 ` <CACRpkdZESujO=2BU3jeKiX3Cm+JY2UPEXwGkro75FWa5Gio5YQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-09-05  6:41                                                   ` Lee Jones
2012-09-05  6:41                                                     ` Lee Jones
2012-09-05  6:41                                                     ` Lee Jones
     [not found]                                                     ` <20120905064106.GA4233-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-09-05  6:53                                                       ` Linus Walleij
2012-09-05  6:53                                                         ` Linus Walleij
2012-09-05  6:53                                                         ` Linus Walleij
2012-09-05  7:33       ` Lee Jones
2012-09-05  7:33         ` Lee Jones
2012-09-05  7:33         ` Lee Jones
2012-09-05  8:22         ` Linus Walleij
2012-09-05  8:22           ` Linus Walleij

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=20120903095001.GB5782@gmail.com \
    --to=lee.jones-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=STEricsson_nomadik_linux-nkJGhpqTU55BDgjK7y7TUQ@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=linus.walleij-0IS4wlFg1OjSUeElwK9/Pw@public.gmane.org \
    --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.