ksummit.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Darren Vincent Hart <darren@dvhart.com>
To: Olof Johansson <olof@lixom.net>
Cc: "dvhart@dvhart.com" <dvhart@dvhart.com>,
	"ksummit-discuss@lists.linuxfoundation.org"
	<ksummit-discuss@lists.linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Driver model/resources, ACPI, DT, etc (sigh)
Date: Fri, 16 May 2014 18:54:54 -0700	[thread overview]
Message-ID: <1400291694.9575.63.camel@wasp-deb.dvhart.com> (raw)
In-Reply-To: <20140504171807.GA4418@quad.lixom.net>

On Sun, 2014-05-04 at 10:18 -0700, Olof Johansson wrote:

...


> Intel, on the other hand, are already shipping this hardware, and have
> a platforms to do the work on (Minnowboard and Galieo, for example).
> 
> So, to address Arnd's original question: 
> 
> Yes, it could make more sense to translate the data to a common
> format and use the existing accessors for that data format, instead
> of reinventing the accessors and still needing to represent the data

In my opinion, the common dev_get_property() interface which calls the
appropriate firmware accessor function makes the most sense. Creating
another intermediate format which we then have to make into something
useful (like pdata) strikes me as unnecessary and likely limiting. 

> some way. I think it depends on how some of the other things develop --
> I don't know enough about what Darren's current approach is, for example,
> to tell if it would be easier to do it that way.

Right, so let me give a trivial example indicating what this looks like.

In ASL (DSDT that ships with the board, or an SSDT that we add after the
fact - another discussion on how to integrate that at boot time, table
that for now), under the Device objection, you have a named object (not
a method) that provides a Package in a known format, something like:

Package () {
  Package (2) { "label", "foo" },
  Package (2) { "value", 1}
  Package (2) { "devs_indices", Package { _SB.DEV1, 1, _SB.DEV2, 0 }
}

NOTE: I've pared off some implementation detail above just to focus on
what's relevant to this discussion. We're in a mad rush right now
between working group meetings, writing documentation to explain all
this, and discussing things here while we have people's attention. All
important, all time sensitive. I apologize for not just having a
complete wiki page to point everyone to - but we'll have something a lot
more concrete *very* shortly.

When the platform driver discovers pdata is NULL and that there is
firmware to be probed (dev exists), it starts populating a pdata
structure with calls like:

pdata.label = dev_get_property_string("label");

This would go through ACPICA to get the property on this device, but
could also go through OF on a different system, without any change to
the driver.


> 
> Also, even if we do a common API with different backends, there will
> need to be some knowledge somewhere about custom bindings and what they mean,
> how to translate them and how the different descriptions correlate.


Of course there will be exceptions in the way certain things are
represented in each firmware type, but we already have accessors per
firmware type, so we have the groundwork to deal with those via
specific-property-type accessors.

> I personally think we're best off putting that in the drivers, instead of
> making some part of the driver core aware of a bunch of quirks/hooks for
> various devices.

Hrm, I was hoping to see it in the properties core (driver core I guess)
so we didn't have to see every driver. I suppose  we could approach this
like we do subsystems in general. If we see something repeated enough,
we abstract it and move it down a level :-)

For example, DT and ACPI handle device references differently - but that
isn't a quirky device-specific kind of thing, it's a firmware
representation thing, and that should be abstracted away from the driver
IMO.

GPIO is another example (which is actually dependent on the phandle/ACPI
namespace difference).

Thanks,

-- 
Darren

  parent reply	other threads:[~2014-05-17  2:13 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
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 [this message]
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=1400291694.9575.63.camel@wasp-deb.dvhart.com \
    --to=darren@dvhart.com \
    --cc=dvhart@dvhart.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ksummit-discuss@lists.linuxfoundation.org \
    --cc=olof@lixom.net \
    --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