From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Jean Delvare <khali@linux-fr.org>,
Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
Mark Brown <broonie@opensource.wolfsonmicro.com>,
Bjorn Helgaas <bhelgaas@google.com>,
linux-kernel@vger.kernel.org, lenb@kernel.org,
rafael.j.wysocki@intel.com, grant.likely@secretlab.ca,
ben-linux@fluff.org, w.sang@pengutronix.de,
mathias.nyman@linux.intel.com, linux-acpi@vger.kernel.org
Subject: Re: [PATCH 2/3] spi / ACPI: add ACPI enumeration support
Date: Mon, 05 Nov 2012 15:19:58 +0100 [thread overview]
Message-ID: <1925265.4Cx64DgKbB@vostro.rjw.lan> (raw)
In-Reply-To: <20121105150326.3bbf69df@endymion.delvare>
On Monday, November 05, 2012 03:03:26 PM Jean Delvare wrote:
> Hi Linus,
>
> On Mon, 5 Nov 2012 14:20:52 +0100, Linus Walleij wrote:
> > On Mon, Nov 5, 2012 at 2:15 PM, Mika Westerberg
> > <mika.westerberg@linux.intel.com> wrote:
> > > On Mon, Nov 05, 2012 at 01:59:23PM +0100, Rafael J. Wysocki wrote:
> > >> On Monday, November 05, 2012 01:23:50 PM Jean Delvare wrote:
> > >> > On Mon, 5 Nov 2012 14:02:19 +0200, Mika Westerberg wrote:
> > >> > > On Mon, Nov 05, 2012 at 11:56:39AM +0100, Mark Brown wrote:
> > (...)
> > >> > > Yeah, I just went through DSDT table of one of our machines and found a
> > >> > > device that actually has two I2CSerialBus connectors (and those are to the
> > >> > > same controller). What I'm not sure is that is it used to select between
> > >> > > two different addresses or doest the device really have two physical I2C
> > >> > > connections.
> > >> >
> > >> > Neither would make sense from a hardware perspective.
> > >>
> > >> Well, interesting. :-)
> > >
> > > It looks like some PMICs for example have two I2C control interfaces, like
> > > TI's TWL6030 if I'm not mistaken. If both are put behind the same I2C
> > > controller with different address, you have the situation like above.
>
> Ah, OK, if this is a degenerated case of a more complex initial design
> then yes it makes some sense. I had never met chips like that and did
> not know such chips existed.
>
> That being said, from a software perspective, there is no difference
> between one or two I2C pin pairs being soldered. All we care about is
> which master they are ultimately connected to, and to which slave
> address(es) the chip replies.
>
> > This is quite common. So for example the AB8500 (drivers/mfd/ab8500-core.c)
> > has this. The reason is usually that the device has more than 256 registers
> > to the address space simply is not big enough.
>
> This is completely different from the case being discussed above. Even
> the most complex addressing scheme can be implemented using a single
> hardware I2C interface. You can use 16-bit register addresses (if you
> can live without SMBus compatibility, AT24C32 and larger EEPROMs do
> that), or implement internal banks (using one of the registers as the
> bank selector, hardware monitoring chips do that), or you can use
> multiple slave addresses (AT24C04 to C16 EEPROMs do that.)
>
> > What we do is refer to the subaddresses as "banks" and they happen
> > to always be at the next consecutive address so n+1.
> >
> > So the same device appear behind several addresses just to support
> > a lot of registers.
> >
> > So you're not actually modelling the devices on the other end but the
> > multiple addresses of a single device.
> >
> > If the addresses are consecutive like ours it makes sense
> > to just instantiate one device and have the driver know that it will
> > also be able to access address +1, +2 ... +n. So is it possible
> > to group the consecutive related addresses after each other
> > here at the acpi-spi level and just create a single device?
>
> We were actually discussing I2C here, although I admit not in the right
> thread, and maybe some of this applies to SPI as well.
>
> There are I2C devices replying to multiple non-consecutive slave
> addresses. Most notably Winbond hardware monitoring chips replying to
> one address in 0x2c-0x2f and 2 addresses in 0x48-0x4f. And of course
> there are the DDR3 DIMM SPD chips which have an EEPROM at 0x50-0x57 and
> a thermal sensor at 0x18-0x1f. So if multiple slave addresses must be
> supported, please do not limit this support to consecutive addresses.
> There really is no reason to limit us that way anyway, as i2c-core
> supports attaching any additional slave address to en existing
> i2c_client using i2c_new_dummy().
>
> Note for DDR3 DIMM SPD chips we currently have two different drivers
> handling the two slave addresses (eeprom/at24 and jc42.) I don't know
> if this is something that could be instantiated from ACPI. So it seems
> we really have two different cases when a single chip replies to
> multiple slave addresses: either they refer to the same function and we
> want a single driver for all of them, or they are for unrelated
> functions and we want separate drivers (and thus separate i2c_clients.)
> Not sure how we can always handle that properly on the ACPI side.
>
> > If the addresses are not consecutive I guess you need to have
> > one device driver bind to several devices and return -EPROBE_DEFER
> > until the driver has been probed for all of them or something like
> > that, this is what multi-block GPIO drivers sometimes do.
>
> Consecutive or not makes no difference really, as long as the driver
> can deduce the additional addresses from the main address or register
> contents accessible from the main address. This has always been the
> case so far.
In the ACPI namespace we have device nodes and serial interfaces below them.
In the above case we see that a single device node supports two different
interfaces and in that case we probably should create two different
struct i2c_adapter objects for the same ACPI device node.
Mika, what do you think?
Rafael
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
next prev parent reply other threads:[~2012-11-05 14:15 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-03 7:46 [PATCH 0/3] ACPI 5 support for GPIO, SPI and I2C Mika Westerberg
2012-11-03 7:46 ` [PATCH 1/3] gpio / ACPI: add ACPI support Mika Westerberg
2012-11-05 11:53 ` Linus Walleij
2012-11-05 12:14 ` Mathias Nyman
2012-11-05 12:46 ` Rafael J. Wysocki
2012-11-05 13:11 ` Linus Walleij
2012-11-05 13:19 ` Rafael J. Wysocki
2012-11-05 13:28 ` Linus Walleij
2012-11-05 13:50 ` Rafael J. Wysocki
2012-11-05 14:40 ` Linus Walleij
2012-11-06 9:39 ` Mika Westerberg
2012-11-06 10:15 ` Linus Walleij
2012-11-07 8:54 ` Mika Westerberg
2012-11-08 15:55 ` Grant Likely
2012-11-08 19:38 ` Mika Westerberg
2012-11-09 14:11 ` Mathias Nyman
2012-11-09 14:18 ` Grant Likely
2012-11-09 15:05 ` Mathias Nyman
2012-11-09 15:46 ` Grant Likely
2012-11-11 9:50 ` Mika Westerberg
2012-11-03 7:46 ` [PATCH 2/3] spi / ACPI: add ACPI enumeration support Mika Westerberg
2012-11-03 19:42 ` Bjorn Helgaas
2012-11-03 20:13 ` Mika Westerberg
2012-11-03 20:59 ` Rafael J. Wysocki
2012-11-05 10:31 ` Rafael J. Wysocki
2012-11-05 10:56 ` Mika Westerberg
2012-11-05 10:56 ` Mark Brown
2012-11-05 12:02 ` Mika Westerberg
2012-11-05 12:23 ` Jean Delvare
2012-11-05 12:59 ` Rafael J. Wysocki
2012-11-05 13:15 ` Mika Westerberg
2012-11-05 13:20 ` Linus Walleij
2012-11-05 13:43 ` Mika Westerberg
2012-11-05 14:03 ` Jean Delvare
2012-11-05 14:19 ` Rafael J. Wysocki [this message]
2012-11-05 14:53 ` Mika Westerberg
2012-11-05 15:19 ` Jean Delvare
2012-11-05 17:12 ` Mika Westerberg
2012-11-05 17:43 ` Bjorn Helgaas
2012-11-05 18:08 ` Mika Westerberg
2012-11-05 17:49 ` Jean Delvare
2012-11-05 20:42 ` Linus Walleij
2012-11-06 8:11 ` Mark Brown
2012-11-05 16:54 ` Bjorn Helgaas
2012-11-06 13:43 ` Rafael J. Wysocki
2012-11-06 20:35 ` Bjorn Helgaas
2012-11-06 22:28 ` Rafael J. Wysocki
2012-11-06 22:36 ` Rafael J. Wysocki
2012-11-07 9:58 ` Mika Westerberg
2012-11-07 11:14 ` Rafael J. Wysocki
2012-11-07 13:05 ` Mika Westerberg
2012-11-08 0:46 ` Rafael J. Wysocki
2012-11-08 20:20 ` Mika Westerberg
2012-11-08 20:54 ` Rafael J. Wysocki
2012-11-08 18:05 ` Grant Likely
2012-11-08 21:06 ` Rafael J. Wysocki
2012-11-08 21:34 ` Grant Likely
2012-11-05 10:54 ` Mark Brown
2012-11-03 20:39 ` Rafael J. Wysocki
2012-11-05 16:54 ` Bjorn Helgaas
2012-11-06 13:16 ` Rafael J. Wysocki
2012-11-06 20:53 ` Bjorn Helgaas
2012-11-06 22:18 ` Rafael J. Wysocki
2012-11-07 9:56 ` Mika Westerberg
2012-11-08 19:32 ` Bjorn Helgaas
2012-11-08 20:04 ` Mika Westerberg
2012-11-09 15:11 ` Bjorn Helgaas
2012-11-09 15:45 ` Grant Likely
2012-11-09 16:35 ` Bjorn Helgaas
2012-11-09 16:43 ` Grant Likely
2012-11-09 16:48 ` Mark Brown
2012-11-09 16:53 ` Bjorn Helgaas
2012-11-10 11:10 ` Rafael J. Wysocki
2012-11-10 11:16 ` Grant Likely
2012-11-10 17:14 ` Bjorn Helgaas
2012-11-10 19:40 ` Rafael J. Wysocki
2012-11-05 10:54 ` Mark Brown
2012-11-05 11:03 ` Mika Westerberg
2012-11-05 11:13 ` Mark Brown
2012-11-08 18:48 ` Grant Likely
2012-11-09 3:50 ` Mika Westerberg
2012-11-03 7:46 ` [PATCH 3/3] i2c " Mika Westerberg
2012-11-03 21:52 ` Jean Delvare
2012-11-04 7:23 ` Mika Westerberg
2012-11-04 8:50 ` Jean Delvare
2012-11-04 10:50 ` Mika Westerberg
2012-11-08 18:58 ` Grant Likely
2012-11-09 3:51 ` Mika Westerberg
2012-11-04 18:29 ` [PATCH 0/3] ACPI 5 support for GPIO, SPI and I2C Linus Walleij
2012-11-05 9:23 ` Mika Westerberg
2012-11-12 11:51 ` [PATCH 0/3] Centralized parsing of ACPI device resources (was: Re: [PATCH 0/3] ACPI 5 support for GPIO, SPI and I2C) Rafael J. Wysocki
2012-11-12 12:00 ` [PATCH 1/3] ACPI: Move device resources interpretation code from PNP to ACPI core Rafael J. Wysocki
2012-11-12 13:27 ` Mika Westerberg
2012-11-12 20:25 ` [Update][PATCH " Rafael J. Wysocki
2012-11-12 12:01 ` [PATCH 2/3] ACPI / platform: Use common ACPI device resource parsing routines Rafael J. Wysocki
2012-11-12 12:02 ` [PATCH 3/3] ACPI: Evaluate _CRS while creating device node objects Rafael J. Wysocki
2012-11-12 14:46 ` Mika Westerberg
2012-11-12 21:03 ` Rafael J. Wysocki
2012-11-13 7:12 ` Mika Westerberg
2012-11-13 12:06 ` [Replacement][PATCH 3/3] Rafael J. Wysocki
2012-11-13 14:16 ` Mika Westerberg
2012-11-13 15:15 ` Rafael J. Wysocki
2012-11-13 15:18 ` Mika Westerberg
2012-11-13 15:28 ` Rafael J. Wysocki
2012-11-13 15:37 ` Mika Westerberg
2012-11-13 16:34 ` [PATCH 3/3] ACPI: Evaluate _CRS while creating device node objects Moore, Robert
2012-11-13 20:44 ` Rafael J. Wysocki
2012-11-13 22:06 ` Moore, Robert
2012-11-13 22:56 ` Rafael J. Wysocki
2012-11-14 2:23 ` Moore, Robert
2012-11-14 9:18 ` Rafael J. Wysocki
2012-11-14 9:32 ` Rafael J. Wysocki
2012-11-14 14:20 ` Moore, Robert
2012-11-13 20:51 ` [PATCH 0/3 rev 2] Centralized parsing of ACPI device resources Rafael J. Wysocki
2012-11-13 20:55 ` [PATCH 1/3 rev 2] ACPI: Move device resources interpretation code from PNP to ACPI core Rafael J. Wysocki
2012-11-13 20:55 ` [PATCH 2/3 rev 2] ACPI / platform: Use common ACPI device resource parsing routines Rafael J. Wysocki
2012-11-13 20:56 ` [PATCH 3/3 rev 2] ACPI: Centralized processing of ACPI device resources Rafael J. Wysocki
2012-11-14 9:52 ` [PATCH 0/3 rev 2] Centralized parsing " Mika Westerberg
2012-11-14 10:08 ` Rafael J. Wysocki
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=1925265.4Cx64DgKbB@vostro.rjw.lan \
--to=rjw@sisk.pl \
--cc=ben-linux@fluff.org \
--cc=bhelgaas@google.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=grant.likely@secretlab.ca \
--cc=khali@linux-fr.org \
--cc=lenb@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathias.nyman@linux.intel.com \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=w.sang@pengutronix.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
all inboxes | Powered by JetHome®