On Tue, 2010-04-27 at 21:59 +0100, Mark Brown wrote:
It's entirely possible that if the board designer intended the verious SSIs to be used in concert they've done something like cross wire the clocks which creates a board-specific interrelationship that needs to be dealt with.
In which case, have that in some board specific code :-) Really, as I said earlier, I think there's no point to aim toward a uber-representation that can describe everything along with code that can cope with anything the tree can describe :-) That's just insane.
I'd stay stick to the basics and move incrementally up until it stops making sense:
- First, the basics: nodes for actual physical devices. i2c codecs on their i2c busses, DMA controllers, etc...
- From there, see what simple properties are better off being put in those respective nodes because they represent common enough variants of functionality or simply because they are specific attributes of a given device that aren't too concerned by the way things are interconnected.
- Provide at least one identifier (either in a "sound" virtual device, or just use the board's own "compatible" property) to have a .c file to put everything together.
From there, you may decide that 90% of the simple cases can be very
easily represented by a couple of properties in the said "sound" node, and henceforth, create a simple.c "board" file that matches against a list of boards known to fit within that simple model, and that pretty much exclusively use the device-tree to put things together.
But you don't have to.
The whole thing is a matter of common sense and a bit of taste :-)
Cheers, Ben.