[PATCH 3/5] ARM: vexpress: Add DT support in v2m

Pawel Moll pawel.moll at arm.com
Wed Nov 16 11:37:38 EST 2011


On Wed, 2011-11-16 at 16:26 +0000, Rob Herring wrote:
> On 11/16/2011 09:44 AM, Dave Martin wrote:
> > On Fri, Nov 11, 2011 at 06:27:04PM +0000, Pawel Moll wrote:
> >> This patch provides hooks for DT-based tile machine implementations
> >> and adds Device Tree description for the motherboard.
> >>
> >> Signed-off-by: Pawel Moll <pawel.moll at arm.com>
> >> ---
> >>  Documentation/devicetree/bindings/arm/vexpress    |   92 ++++++++++
> >>  arch/arm/boot/dts/vexpress-v2m-legacy.dtsi        |  190 +++++++++++++++++++++
> >>  arch/arm/mach-vexpress/Kconfig                    |    4 +
> >>  arch/arm/mach-vexpress/core.h                     |    9 +
> >>  arch/arm/mach-vexpress/include/mach/motherboard.h |    8 +
> >>  arch/arm/mach-vexpress/v2m.c                      |  140 +++++++++++++++-
> >>  6 files changed, 442 insertions(+), 1 deletions(-)
> >>  create mode 100644 Documentation/devicetree/bindings/arm/vexpress
> >>  create mode 100644 arch/arm/boot/dts/vexpress-v2m-legacy.dtsi
> >>
> >> diff --git a/Documentation/devicetree/bindings/arm/vexpress b/Documentation/devicetree/bindings/arm/vexpress
> > 
> > [...]
> > 
> >> +Required properties in the root node:
> >> +- compatible value:
> >> +  - for motherboard in "legacy" mode:
> >> +	compatible = "arm,vexpress-<model>", "arm,vexpress-legacy", "arm-vexpress";
> >> +  - for motherboard in "RS1" mode:
> >> +	compatible = "arm,vexpress-<model>", "arm-vexpress";
> > 
> > So, we have:
> > 
> > arm,vexpress-* implies arm,vexpress
> > arm,vexpress-* may imply arm,vexpress-legacy
> > arm,vexpress-legacy implies arm,vexpress
> > 
> > This means we have no bounded test for RS1-only features:
> > the needed test is
> > "compatible(node, "arm,vexpress") && !compatible(node, "arm,vexpress-legacy")
> > 
> > Unfortunately, if there is someday an "rs2" memory map, that will also match
> > the above.  Using "inverse compatibility" in this way feels dangerous,
> > because the condition will pass for an arbitrary set of future conditions
> > that we haven't imagined yet.
> > 
> > This means it's, impossible even in principle to panic the kernel cleanly if
> > presented with a device tree for a platform variant which is too new for the
> > kernel to support.
> > 
> > 
> > Can we instead have a specific "arm,vexpress-rs1"?
> > 
> > 	compatible = "arm,vexpress-<model>", "arm-vexpress-rs1", "arm-vexpress";
> > 
> > Then, we can be exact about compatibility: universal features are compatible
> > with "arm,vexpress"; memory-map-specific features are compatible with either
> > "arm,vexpress-legacy" or "arm,vexpress-rs1".
>
> Really, legacy is a bad name. 

http://en.wikipedia.org/wiki/De_gustibus_non_est_disputandum ;-)

This is de-facto name we use in ARM. See:
http://infocenter.arm.com/help/topic/com.arm.doc.dui0447e/ch04s02s01.html

> If you defined the property when the
> original vexpress was designed, it never would have had legacy in the
> name. Generally speaking you never change bindings on old platforms.
> 
> So I would have "arm,vexpress" mean legacy and "arm,vexpress-rs1" be the
> new memory map.

I'd rather second Dave's idea of having

> > 	compatible = "arm,vexpress-<model>", "arm-vexpress-rs1", "arm-vexpress";

and

>> +	compatible = "arm,vexpress-<model>", "arm,vexpress-legacy", "arm-vexpress";

Cheers!

Paweł





More information about the linux-arm-kernel mailing list