of: overlay: add overlay unittest data for node names and symbols
authorFrank Rowand <frank.rowand@sony.com>
Wed, 19 Jul 2017 16:25:20 +0000 (09:25 -0700)
committerRob Herring <robh@kernel.org>
Thu, 20 Jul 2017 14:36:13 +0000 (09:36 -0500)
Add nodes and properties to overlay_base and overlay dts files to
test for
   - incorrect existing node name detection when overlay node name
     has a unit-address
   - adding overlay __symbols__ properties to live tree when an
     overlay is added to the live tree

The following console messages will appear near the end of unittest
until the code errors are corrected:

   OF: Duplicate name in fairway-1, renamed to "ride@100#1"

   ### dt-test ### FAIL of_unittest_overlay_high_level():2296 Adding overlay 'overlay_bad_symbol' failed

   ### dt-test ### end of unittest - 190 passed, 1 failed

Signed-off-by: Frank Rowand <frank.rowand@sony.com>
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/unittest-data/Makefile
drivers/of/unittest-data/overlay.dts
drivers/of/unittest-data/overlay_bad_symbol.dts [new file with mode: 0644]
drivers/of/unittest-data/overlay_base.dts
drivers/of/unittest.c

index 6e00a9c69e584bf5ee9067b6a662f0ed0b2ca0db..2d135fba94c16191fb70eb8146dc4d188e9a4add 100644 (file)
@@ -1,18 +1,27 @@
 obj-y += testcases.dtb.o
+
+targets += testcases.dtb testcases.dtb.S
+
+ifdef CONFIG_OF_OVERLAY
+
 obj-y += overlay.dtb.o
 obj-y += overlay_bad_phandle.dtb.o
+obj-y += overlay_bad_symbol.dtb.o
 obj-y += overlay_base.dtb.o
 
-targets += testcases.dtb testcases.dtb.S
 targets += overlay.dtb overlay.dtb.S
 targets += overlay_bad_phandle.dtb overlay_bad_phandle.dtb.S
+targets += overlay_bad_symbol.dtb overlay_bad_symbol.dtb.S
 targets += overlay_base.dtb overlay_base.dtb.S
 
-.PRECIOUS: \
-       $(obj)/%.dtb.S \
-       $(obj)/%.dtb
-
 # enable creation of __symbols__ node
 DTC_FLAGS_overlay := -@
 DTC_FLAGS_overlay_bad_phandle := -@
+DTC_FLAGS_overlay_bad_symbol := -@
 DTC_FLAGS_overlay_base := -@
+
+endif
+
+.PRECIOUS: \
+       $(obj)/%.dtb.S \
+       $(obj)/%.dtb
index 6cd7e6a0c13ea2eff0791b8c68bc1476cb529099..60abf5b55cae3c951d5cf6a4f70ec6101419f4f9 100644 (file)
                        #size-cells = <1>;
                        status = "ok";
 
-                       ride@200 {
+                       ride@100 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               track@30 {
+                                       incline-up = < 48 32 16 >;
+                               };
+
+                               track@40 {
+                                       incline-up = < 47 31 15 >;
+                               };
+                       };
+
+                       ride_200: ride@200 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
                                compatible = "ot,ferris-wheel";
                                reg = < 0x00000200 0x100 >;
                                hvac-provider = < &hvac_2 >;
                                spin-rph = < 30 >;
                                gondolas = < 16 >;
                                gondola-capacity = < 6 >;
+
+                               ride_200_left: track@10 {
+                                       reg = < 0x00000010 0x10 >;
+                               };
+
+                               ride_200_right: track@20 {
+                                       reg = < 0x00000020 0x10 >;
+                               };
                        };
                };
        };
diff --git a/drivers/of/unittest-data/overlay_bad_symbol.dts b/drivers/of/unittest-data/overlay_bad_symbol.dts
new file mode 100644 (file)
index 0000000..09261cb
--- /dev/null
@@ -0,0 +1,22 @@
+/dts-v1/;
+/plugin/;
+
+/ {
+
+       fragment@0 {
+               target = <&electric_1>;
+
+               __overlay__ {
+
+                       // This label should cause an error when the overlay
+                       // is applied.  There is already a symbol hvac_1
+                       // in the base tree
+                       hvac_1: hvac-medium-2 {
+                               compatible = "ot,hvac-medium";
+                               heat-range = < 50 75 >;
+                               cool-range = < 60 80 >;
+                       };
+
+               };
+       };
+};
index 5566b27fb61a36c712af96633f716ada76f4cc46..453d0bd83320bc4c6a2fde500273349807b009c8 100644 (file)
@@ -44,6 +44,8 @@
                        orientation = < 127 >;
 
                        ride@100 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
                                compatible = "ot,roller-coaster";
                                reg = < 0x00000100 0x100 >;
                                hvac-provider = < &hvac_1 >;
                                spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >;
                                spin-controller-names = "track_1", "track_2";
                                queues = < 2 >;
+
+                               track@30 {
+                                       reg = < 0x00000030 0x10 >;
+                               };
+
+                               track@40 {
+                                       reg = < 0x00000040 0x10 >;
+                               };
+
                        };
                };
 
index 0959e8cc8814e2214b746c6e0575d3326eb2a546..29a35cb1da64c070ff1b6a96a76ad54d7c4cb636 100644 (file)
@@ -1994,6 +1994,8 @@ out:
 static inline void __init of_unittest_overlay(void) { }
 #endif
 
+#ifdef CONFIG_OF_OVERLAY
+
 /*
  * __dtb_ot_begin[] and __dtb_ot_end[] are created by cmd_dt_S_dtb
  * in scripts/Makefile.lib
@@ -2021,14 +2023,14 @@ struct overlay_info {
 OVERLAY_INFO_EXTERN(overlay_base);
 OVERLAY_INFO_EXTERN(overlay);
 OVERLAY_INFO_EXTERN(overlay_bad_phandle);
-
-#ifdef CONFIG_OF_OVERLAY
+OVERLAY_INFO_EXTERN(overlay_bad_symbol);
 
 /* order of entries is hard-coded into users of overlays[] */
 static struct overlay_info overlays[] = {
        OVERLAY_INFO(overlay_base, -9999),
        OVERLAY_INFO(overlay, 0),
        OVERLAY_INFO(overlay_bad_phandle, -EINVAL),
+       OVERLAY_INFO(overlay_bad_symbol, -EINVAL),
        {}
 };
 
@@ -2300,6 +2302,10 @@ static __init void of_unittest_overlay_high_level(void)
 
        unittest(overlay_data_add(2),
                 "Adding overlay 'overlay_bad_phandle' failed\n");
+
+       unittest(overlay_data_add(3),
+                "Adding overlay 'overlay_bad_symbol' failed\n");
+
        return;
 
 err_unlock: