ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "dvhart@dvhart.com" <dvhart@dvhart.com>,
	"ksummit-discuss@lists.linuxfoundation.org"
	<ksummit-discuss@lists.linuxfoundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Mark Brown <broonie@sirena.org.uk>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Driver model/resources, ACPI, DT, etc (sigh)
Date: Mon, 26 May 2014 23:55:12 +0200	[thread overview]
Message-ID: <2124384.HfxQDmGqGO@vostro.rjw.lan> (raw)
In-Reply-To: <CACRpkdaBxnSpXqntLSeBK1Zo+iUxLV2K0h=3vr-HCQJtgxvq0g@mail.gmail.com>

On Monday, May 26, 2014 11:19:26 PM Linus Walleij wrote:
> On Mon, May 19, 2014 at 1:56 AM, Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
> > On Saturday, May 17, 2014 02:24:23 PM Mark Brown wrote:
> 
> >> That's much less invasive than making new APIs.
> >
> > But for drivers that call of_get_something() directly I don't see any other
> > sensible way forward.  Otherwise each of them will need to do something like
> >
> > if (dev->of_node)
> >         use of_get_X()
> > else if (ACPI_COMPANION(dev))
> >         use acpi_get_X()
> > else
> >         use black magic
> 
> So there is currently net/rfkill/rfkill-gpio.c,
> and there is a patch to add device tree support out there:
> http://marc.info/?l=devicetree&m=139754665715639&w=2
> 
> And after that it looks like that:
> 
> static int rfkill_gpio_acpi_probe(struct device *dev,
>                                   struct rfkill_gpio_data *rfkill)
> {
>         const struct acpi_device_id *id;
> 
>         id = acpi_match_device(dev->driver->acpi_match_table, dev);
>         if (!id)
>                 return -ENODEV;
> 
>         rfkill->name = dev_name(dev);
>         rfkill->type = (unsigned)id->driver_data;
> 
>         return 0;
> }
> 
> static int rfkill_gpio_dt_probe(struct device *dev, struct
> rfkill_gpio_data *rfkill)
> {
>         struct device_node * np = dev->of_node;
> 
>         rfkill->name = np->name;
>         of_property_read_string(np, "rfkill-name", &rfkill->name);
>         of_property_read_u32(np, "rfkill-type", &rfkill->type);
> 
>         return 0;
> }
> 
> static int rfkill_gpio_probe(struct platform_device *pdev)
> {
> (...)
>         if (ACPI_HANDLE(&pdev->dev)) {
>                 ret = rfkill_gpio_acpi_probe(&pdev->dev, rfkill);
>                 if (ret)
>                         return ret;
>         } else if (&pdev->dev.of_node) {
>                ret = rfkill_gpio_dt_probe(&pdev->dev, rfkill);
>                if (ret)
>                        return ret;
>         } else if (pdata) {
>                 rfkill->name = pdata->name;
>                 rfkill->type = pdata->type;
>         } else {
>                 return -ENODEV;
>         }
> }
> 
> Whopee-do. The semantic differences are not so subtle. In
> one case the type is defined in the driver itself by ACPI's match
> data, in the DT case it is explicitly provided in a node in the DT
> itself. DT can also explicitly name the rfkill, whereas ACPI will
> just use the device name.
> 
> What should we do? How will the interface look? I mean for real.

This is talking about *current* ACPI, which may be different from future
ACPI (where I mean 5.1).  And future ACPI may be able to do the same thing
as DT does.  So why don't we get back to that when ACPI 5.1 is out
(which should be some time in the summer)?

> This is the discussion we need to have. Admittedly I do not see anything
> clean enough :-(
> 
> And this is a DEAD SIMPLE example.
> 
> And even if there can be something clean and nice in the probe path,
> we still have this:
> 
> #ifdef CONFIG_ACPI
> static const struct acpi_device_id rfkill_acpi_match[] = {
>         { "BCM2E1A", RFKILL_TYPE_BLUETOOTH },
>         { "BCM2E39", RFKILL_TYPE_BLUETOOTH },
>         { "BCM2E3D", RFKILL_TYPE_BLUETOOTH },
>         { "BCM4752", RFKILL_TYPE_GPS },
>         { "LNV4752", RFKILL_TYPE_GPS },
>         { },
> };
> #endif
> #ifdef CONFIG_OF
> static const struct of_device_id rfkill_of_match[] = {
>        { .compatible = "rfkill-gpio", },
>        {},
> };
> #endif
> (...)
>                 .acpi_match_table = ACPI_PTR(rfkill_acpi_match),
>                 .of_match_table = of_match_ptr(rfkill_of_match),
> (...)
> 
> This stuff we don't even talk about unifiing right?

We haven't been talking about that so far.

Rafael

  reply	other threads:[~2014-05-26 21:38 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-02 21:42 Olof Johansson
2014-05-03  0:05 ` Rafael J. Wysocki
2014-05-03  2:02   ` Mark Brown
2014-05-04 12:28     ` Rafael J. Wysocki
2014-05-05  8:45       ` Benjamin Herrenschmidt
2014-05-05 19:06         ` Mark Brown
2014-05-06 12:22         ` Rafael J. Wysocki
2014-05-12 21:59           ` Mark Brown
2014-05-12 22:03             ` Rafael J. Wysocki
2014-05-13  7:34               ` Arnd Bergmann
2014-05-13 10:47                 ` Rafael J. Wysocki
2014-05-13 12:11                 ` Mark Brown
2014-05-13 13:08                   ` Arnd Bergmann
2014-05-13 19:31                     ` Mark Brown
2014-05-13 19:53                       ` Arnd Bergmann
2014-05-13 21:19                       ` Rafael J. Wysocki
2014-05-14 13:04                         ` Mark Brown
2014-05-15 12:05                           ` Rafael J. Wysocki
2014-05-17  1:11                             ` Darren Vincent Hart
2014-05-19  0:02                               ` Rafael J. Wysocki
2014-05-17 13:24                             ` Mark Brown
2014-05-18 23:56                               ` Rafael J. Wysocki
2014-05-23 17:33                                 ` Mark Brown
2014-05-26 21:19                                 ` Linus Walleij
2014-05-26 21:55                                   ` Rafael J. Wysocki [this message]
2014-05-13 20:02                     ` Olof Johansson
2014-05-17  3:57                   ` Darren Vincent Hart
2014-05-17 13:09                     ` Mark Brown
2014-05-17  6:52                       ` Darren Vincent Hart
2014-05-23 17:21                         ` Mark Brown
2014-05-03 15:14   ` Arnd Bergmann
2014-05-04 11:14     ` Catalin Marinas
2014-05-04 17:18       ` Olof Johansson
2014-05-04 17:27         ` Guenter Roeck
2014-05-04 22:02           ` Rafael J. Wysocki
2014-05-05  2:44             ` Pantelis Antoniou
2014-05-05 11:22               ` Rafael J. Wysocki
2014-05-05  2:52           ` Pantelis Antoniou
2014-05-05  4:21             ` Guenter Roeck
2014-05-05 23:05               ` Pantelis Antoniou
2014-05-04 21:33         ` Rafael J. Wysocki
2014-05-05  8:43           ` Benjamin Herrenschmidt
2014-05-05 11:32             ` Rafael J. Wysocki
2014-05-05 11:31               ` Benjamin Herrenschmidt
2014-05-06 12:18                 ` Rafael J. Wysocki
2014-05-06 13:35                   ` Arnd Bergmann
2014-05-08  0:16                     ` Rafael J. Wysocki
2014-05-12  6:21                     ` Benjamin Herrenschmidt
2014-05-13 21:14                     ` Olof Johansson
2014-05-13 21:40                       ` Rafael J. Wysocki
2014-05-13 21:28                         ` Olof Johansson
2014-05-13 21:51                           ` Rafael J. Wysocki
2014-05-17  3:22                             ` Darren Vincent Hart
2014-05-14 12:06                       ` Arnd Bergmann
2014-05-14 12:25                         ` Mark Brown
2014-05-18 16:34                           ` Linus Walleij
2014-05-14 12:31                         ` Rafael J. Wysocki
2014-05-17  3:02                         ` Darren Vincent Hart
2014-05-17  2:57                       ` Darren Vincent Hart
2014-05-18 16:31                       ` Linus Walleij
2014-05-05 15:09             ` Rob Herring
2014-05-05 16:02               ` Jason Cooper
2014-05-05 16:41                 ` Thomas Petazzoni
2014-05-05 22:55               ` Benjamin Herrenschmidt
2014-05-17  2:32             ` Darren Vincent Hart
2014-05-05  8:39         ` Benjamin Herrenschmidt
2014-05-05 11:37           ` Rafael J. Wysocki
2014-05-07 11:05           ` David Woodhouse
2014-05-07 13:06             ` Rafael J. Wysocki
2014-05-08  3:27             ` Benjamin Herrenschmidt
2014-05-17  2:05               ` Darren Vincent Hart
2014-05-17  1:54         ` Darren Vincent Hart
2014-05-17 23:03           ` Benjamin Herrenschmidt
2014-05-18 20:28             ` Linus Walleij
2014-05-18 16:12               ` Darren Vincent Hart
2014-05-19 20:53                 ` Rafael J. Wysocki
2014-05-04 10:56   ` Catalin Marinas
2014-05-04 12:19     ` Rafael J. Wysocki
2014-05-04 17:23       ` Olof Johansson
2014-05-04 21:58         ` Rafael J. Wysocki
2014-05-06  2:41           ` Linus Walleij
2014-05-06 11:41             ` Rafael J. Wysocki
2014-05-08 11:36               ` Linus Walleij
2014-05-08 12:08                 ` Rafael J. Wysocki
2014-05-17  4:39             ` Darren Vincent Hart
2014-05-17  4:33           ` Darren Vincent Hart
2014-05-03  0:23 ` Darren Hart
2014-05-05 16:58 ` Linus Walleij
2014-05-06  5:02   ` Darren Hart
2014-05-17  0:32 ` Darren Vincent Hart

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=2124384.HfxQDmGqGO@vostro.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=broonie@sirena.org.uk \
    --cc=dvhart@dvhart.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    --cc=linus.walleij@linaro.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rafael.j.wysocki@intel.com \
    /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