public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Jon Smirl <jonsmirl@gmail.com>,
	Scott Wood <scottwood@freescale.com>,
	Peter Korsgaard <jacmet@sunsite.dk>,
	Robert Schwebel <r.schwebel@pengutronix.de>,
	devicetree-discuss <devicetree-discuss@ozlabs.org>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.arm.linux.org.uk,
	Janboe Ye <yuan-bo.ye@motorola.com>,
	Timur Tabi <timur@freescale.com>
Subject: Re: [RFC] [PATCH] Device Tree on ARM platform
Date: Thu, 28 May 2009 17:47:27 +1000	[thread overview]
Message-ID: <1243496847.3171.150.camel@pasglop> (raw)
In-Reply-To: <20090527192116.GA31110@n2100.arm.linux.org.uk>


> That's a damned good question - platform devices have been around since
> the dawn of the device model, so the real question which needs to be
> asked is: what was the reason that of_platform_device created rather
> than unifying it with the already provided platform_device ?
> 
> BTW, I can find no such struct "of_platform_device" in include/linux.
> Is it specific to each and every OF implementation?

It's just of_device... of_platform_driver and of_device.

The reason it's there is historical in fact (I created it :-) Mostly
because it predates having the archdata field in struct device which
allows to convey the pointer to the OF tree node to the driver.

Nowadays, I wouldn't necessarily need it.

An interesting example that I may have to implement for powerpc here
is amba as it looks like there may be some folks bridging AXI to
some ppc stuff.

Here, what I would do is define a simple binding that describes how to
represent amba based devices in the tree (mostly having a description
of the bridge itself) and then a file in drivers/amba that contains
code that will instanciate the -existing- amba_device objects as they
are found in the tree.

I can provide the addresses and IRQ routing straight off the tree.

>From there, I have two options to get the ID off them. I can leave the
code as-is in drivers/amba/bus.c to do MMIOs to read it... 

Or I can decide to be fancy and define a property in the DT to carry
that ID and add the ability to the amba core to, when the amba device
has a DT node and that property is present, to avoid that MMIO operation
and create the right ID directly (which can be faster though that
doesn't necessary represent much, it's just an example).

Among other things, we have the ability on ppc64 and sparc64 (and this
code will soon be moved to some generic place for the benefit of others)
to create the entire PCI tree from the DT, by creating the pci_dev's and
populating them from the info in the DT rather than probing config
space. We keep a hook to allow the platform to indicate on a per-bus
basis whether to use the DT or do a hard probe.

This has been very useful in a few circumstances. It was initially done
to avoid doing config space accesses to some weirdo bridges when running
under a hypervisor on IBM machines or other strange things that
hypervisor can invent such as PCI devices with no function 0 :-)

It also proved that it speeds up the PCI discovery significantly.

But it also helps a lot with one important thing: It avoids BAR sizing
on all the devices that are fully described in the tree. That means that
the devices (or entire busses) are no longer taken offline for a little
while during boot... which happens with IRQs enabled, and can be a
killer if your PIC itself is behind one of these devices and you get the
interrupt at the wrong time.

That's just examples of what you -can- do with the DT. We made its usage
mandatory for all platforms on powerpc but you obviously wouldn't want
to do that on ARM. However, it's probably worth providing the optional
infrastructure to use it, and see how it goes with people doing so, it
might end up being a really good thing.

To finish, it's like any tool... its benefits (or lack of) all depends
how it's used.

Cheers,
Ben.


  parent reply	other threads:[~2009-05-28  7:51 UTC|newest]

Thread overview: 151+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-27  7:08 [RFC] [PATCH] Device Tree on ARM platform Janboe Ye
2009-05-27 14:27 ` Grant Likely
2009-05-27 14:39   ` Timur Tabi
2009-05-27 15:05     ` Robert Schwebel
2009-05-27 15:39       ` Grant Likely
2009-05-27 16:20         ` Robert Schwebel
2009-05-27 20:35           ` Grant Likely
2009-05-27 23:48             ` Robert Schwebel
2009-05-27 23:52               ` David Miller
2009-05-27 23:58               ` Scott Wood
2009-05-28  0:02                 ` David Miller
2009-05-28  0:07                 ` Robert Schwebel
2009-05-28  0:15                   ` David Miller
2009-05-28 10:37                     ` Mark Brown
2009-05-28 22:32                       ` Grant Likely
2009-05-29 12:34                         ` Mark Brown
2009-05-30  9:52                           ` Benjamin Herrenschmidt
2009-05-30 10:21                             ` Russell King - ARM Linux
2009-05-30 17:56                               ` Mark Brown
2009-06-02  7:57                               ` Holger Schurig
2009-06-02  9:48                                 ` Mark Brown
2009-05-28  2:57                   ` David Gibson
2009-05-28  3:36                     ` Grant Likely
2009-05-28  3:29                   ` Grant Likely
2009-05-28  9:51                     ` Wolfgang Denk
2009-05-28  9:59                       ` David Miller
2009-05-28 10:13                       ` Robert Schwebel
2009-05-28 13:33                         ` Jon Smirl
2009-05-28 13:42                           ` Robert Schwebel
2009-05-28  9:38                   ` Wolfgang Denk
2009-05-28  3:21                 ` Grant Likely
2009-05-28  3:16               ` Grant Likely
2009-05-28  0:55           ` Stephen Neuendorffer
2009-05-27 18:56         ` Alexander Clouter
2009-05-27 20:46           ` Grant Likely
2009-05-27 21:32             ` Alexander Clouter
2009-05-27 15:41       ` Peter Korsgaard
2009-05-27 16:23         ` Scott Wood
2009-05-27 17:56           ` Russell King
2009-05-27 19:08             ` Scott Wood
2009-05-27 19:13               ` Jon Smirl
2009-05-27 19:21                 ` Russell King - ARM Linux
2009-05-27 19:39                   ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:22                     ` Grant Likely
2009-05-27 20:19                       ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:54                         ` Grant Likely
2009-05-28  3:04                           ` David Gibson
2009-05-28  7:58                           ` Benjamin Herrenschmidt
2009-05-27 23:57                       ` Robert Schwebel
2009-05-28  0:00                         ` David Miller
2009-05-28  3:21                         ` Grant Likely
2009-05-28  6:34                           ` Wolfram Sang
2009-05-28  7:55                             ` Benjamin Herrenschmidt
2009-05-28 13:34                             ` Grant Likely
2009-05-28  7:48                         ` Benjamin Herrenschmidt
2009-05-28 14:22                       ` Ben Dooks
2009-05-27 20:28                     ` David Miller
2009-05-27 20:31                       ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-28  2:52                   ` David Gibson
2009-05-28  4:27                     ` David Miller
2009-05-28  4:47                       ` David Gibson
2009-05-28  5:31                         ` David Miller
2009-05-28  5:47                           ` David Gibson
2009-05-28  7:47                   ` Benjamin Herrenschmidt [this message]
2009-05-28 14:17                 ` Ben Dooks
2009-05-28 14:24                   ` Robert Schwebel
2009-05-28 14:47                   ` Grant Likely
2009-05-27 19:29               ` Russell King
2009-05-27 19:47                 ` Sergei Shtylyov
2009-05-27 19:53                 ` Scott Wood
2009-05-27 19:54                   ` Timur Tabi
2009-05-27 20:25                     ` David Miller
2009-05-27 20:27                       ` Timur Tabi
2009-05-27 20:55                         ` David Miller
2009-05-27 23:26                           ` Robert Schwebel
2009-05-27 20:35                       ` M. Warner Losh
2009-05-27 20:14                   ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:23                 ` David Miller
2009-05-27 20:27                   ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-27 20:48                     ` Josh Boyer
2009-05-27 20:56                     ` David Miller
2009-05-27 20:52                 ` Mark Brown
2009-05-27 21:05                   ` Grant Likely
2009-05-28  0:11                     ` Jon Smirl
2009-05-28 12:43                     ` Sascha Hauer
2009-05-28 13:18                       ` Thomas Gleixner
2009-05-28 15:04                         ` Sascha Hauer
2009-05-28 15:27                           ` Thomas Gleixner
2009-05-29  0:51                           ` Benjamin Herrenschmidt
2009-05-29  7:52                             ` Sascha Hauer
2009-05-29  9:08                               ` Benjamin Herrenschmidt
2009-05-31 10:52                             ` Russell King - ARM Linux
2009-05-28 14:31                       ` Grant Likely
2009-05-28  3:25                   ` David Gibson
2009-05-28  8:10                 ` Benjamin Herrenschmidt
2009-05-28  7:38               ` Benjamin Herrenschmidt
2009-05-27 20:43             ` Grant Likely
2009-05-28  7:37             ` Benjamin Herrenschmidt
2009-05-28  9:15               ` Russell King - ARM Linux
2009-05-28  9:57                 ` David Miller
2009-05-28 10:11                   ` Benjamin Herrenschmidt
2009-05-28 10:33                     ` Robert Schwebel
2009-05-28 10:34                     ` Russell King - ARM Linux
2009-05-28 22:33                       ` Benjamin Herrenschmidt
2009-05-28 10:14                   ` Russell King - ARM Linux
2009-05-28 21:30                     ` David Miller
2009-05-28 12:17                   ` Dmitry Eremin-Solenikov
2009-05-28 12:48                     ` David Gibson
2009-05-28 12:55                       ` David Gibson
2009-05-28 14:13                     ` Grant Likely
2009-05-28 16:53                       ` Russell King - ARM Linux
2009-05-28 17:05                         ` Grant Likely
2009-05-28 18:46                         ` Alexander Clouter
2009-05-28 22:21                       ` Benjamin Herrenschmidt
2009-05-29  1:39                         ` David Gibson
2009-05-29  1:59                           ` Mitch Bradley
2009-05-29  3:52                             ` Benjamin Herrenschmidt
2009-05-29  4:11                               ` David Miller
2009-05-29  4:11                             ` David Miller
2009-05-29  4:56                               ` Benjamin Herrenschmidt
2009-05-29  5:11                                 ` David Miller
2009-05-28 10:00                 ` Benjamin Herrenschmidt
2009-05-28 11:44                 ` Jean-Christophe PLAGNIOL-VILLARD
2009-05-28 12:47                 ` Jon Smirl
2009-05-28 14:39                   ` Grant Likely
2009-05-28 14:54                 ` Grant Likely
2009-05-27 18:26           ` Peter Korsgaard
2009-05-27 16:32       ` Mark Brown
2009-05-27 18:50         ` Jon Smirl
2009-05-27 22:24           ` Mark Brown
2009-05-28  0:04             ` Jon Smirl
2009-05-28 13:07               ` Mark Brown
2009-05-27 20:42         ` Grant Likely
2009-05-27 21:38           ` Mark Brown
2009-05-28  3:02       ` David Gibson
2009-05-28  7:32       ` Benjamin Herrenschmidt
2009-05-28 13:38         ` Grant Likely
2009-05-27 22:01     ` Mitch Bradley
2009-05-28  8:17       ` Benjamin Herrenschmidt
2009-05-28 12:43     ` Holger Schurig
2009-05-28 13:12       ` Mark Brown
2009-05-27 17:44   ` Russell King
2009-05-27 17:52     ` Grant Likely
2009-05-28  3:44       ` David Gibson
2009-05-30 11:22 ` Pavel Machek
2009-05-31  1:29   ` Kyle Moffett
2009-05-31  5:56     ` David Miller
2009-06-01  8:37     ` Dmitry Eremin-Solenikov
2009-05-31 10:08 ` Russell King - ARM Linux
2009-06-01  9:24   ` Stephen Rothwell
2009-06-01 10:36   ` Janboe Ye

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=1243496847.3171.150.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=devicetree-discuss@ozlabs.org \
    --cc=jacmet@sunsite.dk \
    --cc=jonsmirl@gmail.com \
    --cc=linux-arm-kernel@lists.arm.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=r.schwebel@pengutronix.de \
    --cc=scottwood@freescale.com \
    --cc=timur@freescale.com \
    --cc=yuan-bo.ye@motorola.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