From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: "Jean Delvare (PC drivers,
core)" <khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org>,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
"Ben Dooks (embedded platforms)"
<ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Dirk Brandewie
<dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Sebastian Andrzej Siewior
<bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>,
John Bonesio <bones-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>,
Stephen Warren <SWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH] i2c: Allow i2c_add_numbered_adapter() to assign a bus id.
Date: Mon, 27 Jun 2011 13:02:45 -0600 [thread overview]
Message-ID: <BANLkTi=6zxPUwGZ5JHhRGRHHaEgvNgiaHQ@mail.gmail.com> (raw)
In-Reply-To: <20110627185505.19423.64214.stgit@ponder>
On Mon, Jun 27, 2011 at 12:55 PM, Grant Likely
<grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org> wrote:
> Currently, if an i2c bus driver supports both static and dynamic bus
> ids, it needs to choose between calling i2c_add_numbered_adapter() and
> i2c_add_adapter(). This patch makes i2c_add_numbered_adapter()
> redirect to i2c_add_adapter() if the requested bus id is -1.
>
> Signed-off-by: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
Oops, forgot to edit the email before sending the patch.
This patch is as-yet untested other than build testing, but I want to
get feedback. With the move to DT on ARM, there are going to be a lot
more i2c bus drivers that need to support both static and dynamically
allocated busses, and it is very likely that it will be needed in the
v3.1 merge window.
Ben/Jean, *IF* this patch tests out okay, and *IF* I get an ack from
you, it will probably need to have this commit in my devicetree/next
branch. If so, then I'll either need to commit it myself, or have it
put into a separate topic branch that both of us can merge into our
trees. What is your preference.
John: this is the patch that I asked you to write earlier today, but I
think one of the TI folks will run into the same issue, so I wanted to
get it drafted and onto the list ASAP.
g.
> ---
> drivers/i2c/busses/i2c-cpm.c | 7 ++-----
> drivers/i2c/busses/i2c-pxa.c | 7 ++-----
> drivers/i2c/busses/i2c-s6000.c | 5 +----
> drivers/i2c/i2c-core.c | 5 +++++
> 4 files changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-cpm.c b/drivers/i2c/busses/i2c-cpm.c
> index 3a20961..b1d9cd2 100644
> --- a/drivers/i2c/busses/i2c-cpm.c
> +++ b/drivers/i2c/busses/i2c-cpm.c
> @@ -662,11 +662,8 @@ static int __devinit cpm_i2c_probe(struct platform_device *ofdev)
> /* register new adapter to i2c module... */
>
> data = of_get_property(ofdev->dev.of_node, "linux,i2c-index", &len);
> - if (data && len == 4) {
> - cpm->adap.nr = *data;
> - result = i2c_add_numbered_adapter(&cpm->adap);
> - } else
> - result = i2c_add_adapter(&cpm->adap);
> + cpm->adap.nr = (data && len == 4) ? be32_to_cpup(data) : -1;
> + result = i2c_add_numbered_adapter(&cpm->adap);
>
> if (result < 0) {
> dev_err(&ofdev->dev, "Unable to register with I2C\n");
> diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
> index f59224a..d603646 100644
> --- a/drivers/i2c/busses/i2c-pxa.c
> +++ b/drivers/i2c/busses/i2c-pxa.c
> @@ -1079,7 +1079,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
> * The reason to do so is to avoid sysfs names that only make
> * sense when there are multiple adapters.
> */
> - i2c->adap.nr = dev->id != -1 ? dev->id : 0;
> + i2c->adap.nr = dev->id;
> snprintf(i2c->adap.name, sizeof(i2c->adap.name), "pxa_i2c-i2c.%u",
> i2c->adap.nr);
>
> @@ -1142,10 +1142,7 @@ static int i2c_pxa_probe(struct platform_device *dev)
> i2c->adap.dev.of_node = dev->dev.of_node;
> #endif
>
> - if (i2c_type == REGS_CE4100)
> - ret = i2c_add_adapter(&i2c->adap);
> - else
> - ret = i2c_add_numbered_adapter(&i2c->adap);
> + ret = i2c_add_numbered_adapter(&i2c->adap);
> if (ret < 0) {
> printk(KERN_INFO "I2C: Failed to add bus\n");
> goto eadapt;
> diff --git a/drivers/i2c/busses/i2c-s6000.c b/drivers/i2c/busses/i2c-s6000.c
> index cb5d01e..c64ba73 100644
> --- a/drivers/i2c/busses/i2c-s6000.c
> +++ b/drivers/i2c/busses/i2c-s6000.c
> @@ -341,10 +341,7 @@ static int __devinit s6i2c_probe(struct platform_device *dev)
> i2c_wr16(iface, S6_I2C_TXTL, 0);
>
> platform_set_drvdata(dev, iface);
> - if (bus_num < 0)
> - rc = i2c_add_adapter(p_adap);
> - else
> - rc = i2c_add_numbered_adapter(p_adap);
> + rc = i2c_add_numbered_adapter(p_adap);
> if (rc)
> goto err_irq_free;
> return 0;
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 9a58994..131079a 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -925,6 +925,9 @@ EXPORT_SYMBOL(i2c_add_adapter);
> * or otherwise built in to the system's mainboard, and where i2c_board_info
> * is used to properly configure I2C devices.
> *
> + * If the requested bus number is set to -1, then this function will behave
> + * identically to i2c_add_adapter, and will dynamically assign a bus number.
> + *
> * If no devices have pre-been declared for this bus, then be sure to
> * register the adapter before any dynamically allocated ones. Otherwise
> * the required bus ID may not be available.
> @@ -940,6 +943,8 @@ int i2c_add_numbered_adapter(struct i2c_adapter *adap)
> int id;
> int status;
>
> + if (adap->nr == -1) /* -1 means dynamically assign bus id */
> + return i2c_add_adapter(adap);
> if (adap->nr & ~MAX_ID_MASK)
> return -EINVAL;
>
>
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
next prev parent reply other threads:[~2011-06-27 19:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-27 18:55 [PATCH] i2c: Allow i2c_add_numbered_adapter() to assign a bus id Grant Likely
2011-06-27 19:02 ` Grant Likely [this message]
[not found] ` <BANLkTi=6zxPUwGZ5JHhRGRHHaEgvNgiaHQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-07-05 8:53 ` Jean Delvare
[not found] ` <20110705105330.63c113c8-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2011-07-05 13:31 ` Grant Likely
2011-07-06 6:37 ` Grant Likely
[not found] ` <20110706063746.GA26611-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2011-07-06 7:51 ` Jean Delvare
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='BANLkTi=6zxPUwGZ5JHhRGRHHaEgvNgiaHQ@mail.gmail.com' \
--to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
--cc=SWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
--cc=bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=bones-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org \
--cc=dirk.brandewie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=khali-PUYAD+kWke1g9hUCZPvPmw@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@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 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).