ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: ksummit-discuss@lists.linuxfoundation.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"dvhart@dvhart.com" <dvhart@dvhart.com>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Driver model/resources, ACPI, DT, etc (sigh)
Date: Wed, 14 May 2014 14:31:18 +0200	[thread overview]
Message-ID: <11210229.hr5qRv76HM@vostro.rjw.lan> (raw)
In-Reply-To: <4779952.HbUGmSHJeO@wuerfel>

On Wednesday, May 14, 2014 02:06:10 PM Arnd Bergmann wrote:
> On Tuesday 13 May 2014 14:14:42 Olof Johansson wrote:
> > On Tue, May 06, 2014 at 03:35:41PM +0200, Arnd Bergmann wrote:
> > > On Tuesday 06 May 2014 14:18:56 Rafael J. Wysocki wrote:
> > > 
> > > We should definitely be able to have an interface like this for
> > > ACPI, but you don't have a 'struct device_node' pointer then.
> > > We can add a new
> > > 
> > > bool dev_property_read_bool(const struct device *dev,
> > >                             const char *propname);
> > 
> > > 
> > > that handles both, but then you have to change every driver
> > > that is already using of_property_read_bool() and that can
> > > get used with ACPI.
> > 
> > It's actually not that easy in practice. There's not a one-to-one
> > correspondence between device tree nodes and struct devices in the
> > kernel. There are many bindings that use subnodes for sections of their
> > information, and so on.
> 
> I also don't think we can have a grand unified solution to the general
> problem, but doing the above would solve a lot of individual problems
> for all the simple drivers that don't use sub-nodes in DT.
> 
> I really don't see any downsides to using a common named property
> API for simple values in drivers that can.

I agree.

> Devices with sub-nodes are by definition complex to handle, and
> I think we will always have cases that are too complex to use
> a common interface. At the moment, we can share drivers that
> have only memory and irq resources, which is a significant share
> already. We can over time extend this to drivers that use strings,
> booleans, integers, or arrays of those. We can also extend it
> for things like gpios and dma-channels (both of which partly work
> already but are limited when it comes to naming) and a few other
> things.

Yes.

> > > An advantage of the dev_property_read_bool()
> > > interface however is that it would also work for platform
> > > devices that are created in platform code using
> > > platform_device_register_full() or similar if we add a way
> > > to define simple properties in C code. That would also simplify
> > > a lot of drivers that use both (simple) platform_data and DT
> > > today.
> > 
> > I'm not a fan of this "grand unified abstraction layer". Driver writes are
> > already complaining that things are too complicated with the move to device
> > tree, and we're making things even more abstracted and complicated here. People
> > will need to peel back even more layers to figure out what's actually going on.
> > 
> > 
> > For the truly trivial stuff, there are some quite simple ways to handle this:
> > 
> > 1. Make sure that anything that can be a named IORESOURCE_* is so. Which could
> >    mean moving over GPIO and possibly clocks to that, and use those for lookup.
> 
> We are actually moving away from IORESOURCE_* for things that are not
> originally handled as resources. I don't think we should reverse that
> course.
> 
> For both the examples I mentioned above (GPIO and DMA), people have in the
> past put them into resource structures with a platform specific
> interpretation. With the move to DT, we have actually broken this
> because there is no longer a global number space for them in general.
> 
> Instead, you have a device pointer and a local name that you can use
> to resolve a pointer to a structure (gpio descriptor or dma channel).
> For GPIOs, we keep the integer based API for compatibility, but it would
> be nice to move to the descriptor interface over time.
> 
> If it were not so much work, we'd probably also move away from IRQ numbers
> towards passing IRQ descriptor pointers.
> 
> The way I see things moving forward for ACPI is to add a standard way to
> name things (GPIOs, IRQs, DMAs, ...) so we can have a generic 'give me
> a pointer to the X object for this device' for each subsystem we want to
> have it for. Note that this would probably not be a combined interface
> across subsystems though.

That's my idea too.

Rafael

  parent reply	other threads:[~2014-05-14 12:14 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
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 [this message]
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=11210229.hr5qRv76HM@vostro.rjw.lan \
    --to=rjw@rjwysocki.net \
    --cc=dvhart@dvhart.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    --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