From: Grant Likely <grant.likely@secretlab.ca>
To: Alexander Clouter <alex@digriz.org.uk>
Cc: linux-kernel@vger.kernel.org, devicetree-discuss@ozlabs.org,
linux-arm-kernel@lists.arm.linux.org.uk
Subject: Re: [RFC] [PATCH] Device Tree on ARM platform
Date: Wed, 27 May 2009 14:46:37 -0600 [thread overview]
Message-ID: <fa686aa40905271346l737cb0e5x7d62c581b40c2d4c@mail.gmail.com> (raw)
In-Reply-To: <2ve0f6-8fn.ln1@woodchuck.wormnet.eu>
On Wed, May 27, 2009 at 12:56 PM, Alexander Clouter <alex@digriz.org.uk> wrote:
> In gmane.linux.kernel Grant Likely <grant.likely@secretlab.ca> wrote:
>> On Wed, May 27, 2009 at 9:05 AM, Robert Schwebel
>> <r.schwebel@pengutronix.de> wrote:
>>> Seriously: oftree in general is a good idea. Just that it doesn't work
>>> in practise. The concept has some serious flaws:
>>>
>>> - The whole concept is based on the assumption that bindings are defined
>>> *once*, then never to be changed again. As this is not true (check
>>> MPC5200 to find out what I mean), oftree wreckage is *the* main cause
>>> of new kernels not working on old bootloaders any more. Is there a
>>> solution of this problem? I have not seen a good idea how to avoid the
>>> constant change in definitions.
>>
>> This is a MPC5200 is the posterchild for device tree wreckage; mostly
>> because of my own inexperience at the time. A lot of mistakes were
>> made and I freely admit that.
>>
>> However, my counter example is Xilinx Virtex support. The Virtex is
>> an FPGA with all the devices instantiated in the FPGA fabric. It
>> would be a nightmare to try and describe each different FPGA bitstream
>> using hand coded platform devices, and the xparameters.h file exported
>> by the Xilinx toolchain wasn't much better. Encoding the machine
>> layout in a data structure (the device tree) has decoupled FPGA
>> changes from the kernel image. Now FPGA engineers can make major
>> changes to FPGA layouts without having to lockstep with changes in the
>> kernel. I regularly boot a single kernel image on multiple bitstream
>> images.
>>
>> That being said, the problems we have had are the reason why it is
>> *not* recommended to hard link the device tree image into firmware.
>> We do commit to not breaking old trees, but the ability to update is
>> important; particularly for enabling new features/drivers.
>>
> Although I have no input of value here, I'm hoping I do not become the
> next posterchild for "pain++".
>
> I'm working through redo'ing the FPGA support in the TS-7800[1] into a
> new bus rather than just continuing the messy direction I have been
> going to date[2].
>
> My current approach is that the bus handles the 'hotplug'ing of the FPGA
> bitstream by unregistering all the devices and then when it's informed
> the new bitstream is ready it prods all the registered drivers if any
> devices need bringing up (obviously drivers can be modprobe'd as and
> when).
>
> The 'magic' is that the FPGA code has some special value[3] that what it
> is and the drivers (outside the platform code) have a list of FPGA magic
> values (with a mask) that they are willing to service. The *bus*
> (platform code) is what installs the devices effectively and only does
> so if the loaded driver says it can drive a particular loaded bitstream
> (in the bus driver struct is a array of ID's it checks).
>
> Does this sound sane? Is it an approach that could be ACKed one day?
> Currently the bit that might be considered sinful is there is for some
> of the drivers (rtc-m48t86, timeriomem-rng and plat_nand) the FPGA bus
> 'driver' is a light wrapper around the platform device driver. This is
> so that the hooks still exist so the bus know what to load and unload as
> and when.
Personally, I'd not write a separate bus. I'd write a platform driver
which turns around and registers more platform devices with the
original device as the parent in the _probe routine, and unregisters
them in _remove. Should have the same affect with less complex code.
However, someone with more device-model-foo may have better advice.
g.
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
next prev parent reply other threads:[~2009-05-27 20:47 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-27 7:08 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 [this message]
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
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=fa686aa40905271346l737cb0e5x7d62c581b40c2d4c@mail.gmail.com \
--to=grant.likely@secretlab.ca \
--cc=alex@digriz.org.uk \
--cc=devicetree-discuss@ozlabs.org \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
/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
all inboxes | Powered by JetHome®