linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: linux-kernel@vger.kernel.org, lenb@kernel.org,
	rafael.j.wysocki@intel.com, broonie@opensource.wolfsonmicro.com,
	linus.walleij@linaro.org, khali@linux-fr.org,
	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: Fri, 9 Nov 2012 05:50:42 +0200	[thread overview]
Message-ID: <20121109035042.GF16012@intel.com> (raw)
In-Reply-To: <CACxGe6urWvrLUy_fkC6hA6go7p2GdoxSOO13c0aYe+0rNWwJ9Q@mail.gmail.com>

On Thu, Nov 08, 2012 at 06:48:05PM +0000, Grant Likely wrote:
> On Sat, Nov 3, 2012 at 7:46 AM, Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> > ACPI 5 introduced SPISerialBus resource that allows us to enumerate and
> > configure the SPI slave devices behind the SPI controller. This patch adds
> > support for this to the SPI core.
> >
> > In addition we bind ACPI nodes to SPI devices. This makes it possible for
> > the slave drivers to get the ACPI handle for further configuration.
> >
> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > ---
> >  drivers/spi/spi.c |  231 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 230 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
> > index 84c2861..de22a6e 100644
> > --- a/drivers/spi/spi.c
> > +++ b/drivers/spi/spi.c
> > @@ -35,6 +35,7 @@
> >  #include <linux/sched.h>
> >  #include <linux/delay.h>
> >  #include <linux/kthread.h>
> > +#include <linux/acpi.h>
> >
> >  static void spidev_release(struct device *dev)
> >  {
> > @@ -93,6 +94,10 @@ static int spi_match_device(struct device *dev, struct device_driver *drv)
> >         if (of_driver_match_device(dev, drv))
> >                 return 1;
> >
> > +       /* Then try ACPI */
> > +       if (acpi_driver_match_device(dev, drv))
> > +               return 1;
> > +
> >         if (sdrv->id_table)
> >                 return !!spi_match_id(sdrv->id_table, spi);
> >
> > @@ -888,6 +893,227 @@ static void of_register_spi_devices(struct spi_master *master)
> >  static void of_register_spi_devices(struct spi_master *master) { }
> >  #endif
> >
> > +#ifdef CONFIG_ACPI
> > +struct acpi_spi {
> > +       acpi_status (*callback)(struct acpi_device *, void *);
> > +       void *data;
> > +};
> > +
> > +static acpi_status acpi_spi_enumerate_device(acpi_handle handle, u32 level,
> > +                                            void *data, void **return_value)
> > +{
> > +       struct acpi_spi *acpi_spi = data;
> > +       struct acpi_device *adev;
> > +
> > +       if (acpi_bus_get_device(handle, &adev))
> > +               return AE_OK;
> > +       if (acpi_bus_get_status(adev) || !adev->status.present)
> > +               return AE_OK;
> > +
> > +       return acpi_spi->callback(adev, acpi_spi->data);
> > +}
> > +
> > +static acpi_status acpi_spi_enumerate(acpi_handle handle,
> > +       acpi_status (*callback)(struct acpi_device *, void *), void *data)
> > +{
> > +       struct acpi_spi acpi_spi;
> > +
> > +       acpi_spi.callback = callback;
> > +       acpi_spi.data = data;
> > +
> > +       return acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
> > +                                  acpi_spi_enumerate_device, NULL,
> > +                                  &acpi_spi, NULL);
> > +}
> 
> >From my reading of this, the block causes 2 levels of callback
> indirection. First to either acpi_spi_find_child or
> acpi_spi_add_device and second to acpi_spi_enumerate_device. All to
> share about 4 lines of code in acpi_spi_enumerate_device. It took me a
> while to unravel it. I think acpi_spi_find_child and
> acpi_spi_add_device should be passed directly to acpi_walk_namespace.
> Is there anything that prevents that?

No, I'll fix that up in the next version of the series.

> I also agree with the discussion that the actual parsing code for the
> resources should be common,. Retrieving things like IRQs and address
> resources should be function calls into ACPI helpers instead of open
> coding it in the spi core code.

We are working on that and I'm hoping the second version will use the
resources as provided by the ACPI core instead of calling _CRS directly
here.

> Otherwise the patch looks sane to me.

Thanks.

  reply	other threads:[~2012-11-09  3:47 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
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 [this message]
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=20121109035042.GF16012@intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=ben-linux@fluff.org \
    --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=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;
as well as URLs for NNTP newsgroup(s).