linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Lars-Peter Clausen <lars@metafoo.de>
Cc: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>,
	wsa@the-dreams.de, linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org, mark.rutland@arm.com,
	srinivas.pandruvada@linux.intel.com
Subject: Re: [PATCH] i2c: Add generic support passing secondary devices addresses
Date: Mon, 22 Sep 2014 16:45:35 +0300	[thread overview]
Message-ID: <20140922134535.GZ1786@lahna.fi.intel.com> (raw)
In-Reply-To: <542023C8.8080802@metafoo.de>

On Mon, Sep 22, 2014 at 03:27:36PM +0200, Lars-Peter Clausen wrote:
> On 09/22/2014 12:45 PM, Mika Westerberg wrote:
> >On Fri, Sep 05, 2014 at 04:02:19PM +0200, Jean-Michel Hautbois wrote:
> >>Some I2C devices have multiple addresses assigned, for example each address
> >>corresponding to a different internal register map page of the device.
> >>So far drivers which need support for this have handled this with a driver
> >>specific and non-generic implementation, e.g. passing the additional address
> >>via platform data.
> >>
> >>This patch provides a new helper function called i2c_new_secondary_device()
> >>which is intended to provide a generic way to get the secondary address
> >>as well as instantiate a struct i2c_client for the secondary address.
> >>
> >>The function expects a pointer to the primary i2c_client, a name
> >>for the secondary address and an optional default address. The name is used
> >>as a handle to specify which secondary address to get.
> >>
> >>The default address is used as a fallback in case no secondary address
> >>was explicitly specified. In case no secondary address and no default
> >>address were specified the function returns NULL.
> >>
> >>For now the function only supports look-up of the secondary address
> >>from devicetree, but it can be extended in the future
> >>to for example support board files and/or ACPI.
> >>
> >>Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
> >
> >Sorry, just noticed this one.
> >
> >Srinivas (CC'd) and I did similar patch series here:
> >
> >http://patchwork.ozlabs.org/patch/338342/

Sorry I gave wrong link. That one is older version.

Here is the current:

http://patchwork.ozlabs.org/patch/386409/
http://patchwork.ozlabs.org/patch/386410/

> >
> >We should probably collaborate on this one to get both DT and ACPI
> >supported.
> 
> Yes. The idea was to keep the interface of the API generic so it can be used
> by ACPI or other device topology description mechanisms as well.
> 
> But it looks as if the ACPI case is a bit more complex and we may need a
> revision of the API. How for example in the ACPI case do you know which
> address is which, when different parts of a chip are addressed using
> different addresses?

Unfortunately there is no way in ACPI 5.0 to find out which is which. So
we trust the ordering of I2cSerialBus() resources. Even that has been
problematic because some vendors then list things like SMBus ARA
addresses there in random order :-(

Our API has following signature:

int i2c_address_by_index(struct i2c_client *client, int index,
			 struct i2c_board_info *info,
			 struct i2c_adapter **adapter)

and we use index to find out which address to use.

Note also that in ACPI it is possible that the I2cSerialBus() resource
points to another I2C host controller, so we need to have 'adapter'
parameter as well.

  reply	other threads:[~2014-09-22 13:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05 14:02 [PATCH] i2c: Add generic support passing secondary devices addresses Jean-Michel Hautbois
2014-09-20 16:49 ` Wolfram Sang
2014-09-20 19:50   ` Lars-Peter Clausen
2014-09-21 17:49     ` Wolfram Sang
2014-09-21 19:23       ` Lars-Peter Clausen
2014-09-22 10:45 ` Mika Westerberg
2014-09-22 13:27   ` Lars-Peter Clausen
2014-09-22 13:45     ` Mika Westerberg [this message]
2014-09-22 14:11       ` Lars-Peter Clausen
2014-09-22 14:41         ` Mika Westerberg
2014-10-03 10:46           ` Wolfram Sang
2014-10-15 18:54             ` Srinivas Pandruvada

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=20140922134535.GZ1786@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=jean-michel.hautbois@vodalys.com \
    --cc=lars@metafoo.de \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=wsa@the-dreams.de \
    /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).