On Thu, 2014-02-06 at 17:01 +0100, Andrew Lunn wrote:
Synology seem to build there devices like lego. They have two
different RTC blocks. They have three different fan alarm blocks, four
different led blocks, etc. And to build a product, the just select a
group of blocks and put them together.
The board setup code which Ben Peddell wrote has a somewhat similar
structure:
http://klightspeed.killerwolves.net/synology/linux-3.4-synology-0.1.patch
It has a set of functions which add platform devices. And a table
driven piece of code which based on the product name calls these
functions to add the needed platform devices. Take a look at the table
to get a better idea of the re-use factor of the blocks.
In this DT version, i have a dtsi file for each function, and a dti
file for each table entry.
At least some other platforms deal with this by having a baseline dtsi
where most things have status="disabled" and then a per-board .dts file
which contains status="okay" and perhaps any specific pin bindings etc.
See arch/arm/boot/dts/sun?i* for an example of this approach.
Ian.