Skip to content

Commit

Permalink
of/overlay: Add overlay unittests
Browse files Browse the repository at this point in the history
Add unittests for OF overlays.

It tests overlay device addition/removal and whether
the apply revert sequence is correct.

Changes since V1:
* Added local fixups entries.

Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Signed-off-by: Grant Likely <grant.likely@linaro.org>
  • Loading branch information
Pantelis Antoniou authored and Grant Likely committed Nov 24, 2014
1 parent 7518b58 commit 177d271
Show file tree
Hide file tree
Showing 4 changed files with 691 additions and 0 deletions.
14 changes: 14 additions & 0 deletions Documentation/devicetree/bindings/unittest.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
* OF selftest platform device

** selftest

Required properties:
- compatible: must be "selftest"

All other properties are optional.

Example:
selftest {
compatible = "selftest";
status = "okay";
};
16 changes: 16 additions & 0 deletions drivers/of/unittest-data/testcases.dts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "tests-interrupts.dtsi"
#include "tests-match.dtsi"
#include "tests-platform.dtsi"
#include "tests-overlay.dtsi"

/*
* phandle fixup data - generated by dtc patches that aren't upstream.
Expand Down Expand Up @@ -59,5 +60,20 @@
testcase-device2 {
interrupt-parent = <0x00000000>;
};
overlay2 {
fragment@0 {
target = <0x00000000>;
};
};
overlay3 {
fragment@0 {
target = <0x00000000>;
};
};
overlay4 {
fragment@0 {
target = <0x00000000>;
};
};
};
}; };
180 changes: 180 additions & 0 deletions drivers/of/unittest-data/tests-overlay.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@

/ {
testcase-data {
overlay-node {

/* test bus */
selftestbus: test-bus {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;

selftest100: test-selftest100 {
compatible = "selftest";
status = "okay";
reg = <100>;
};

selftest101: test-selftest101 {
compatible = "selftest";
status = "disabled";
reg = <101>;
};

selftest0: test-selftest0 {
compatible = "selftest";
status = "disabled";
reg = <0>;
};

selftest1: test-selftest1 {
compatible = "selftest";
status = "okay";
reg = <1>;
};

selftest2: test-selftest2 {
compatible = "selftest";
status = "disabled";
reg = <2>;
};

selftest3: test-selftest3 {
compatible = "selftest";
status = "okay";
reg = <3>;
};

selftest5: test-selftest5 {
compatible = "selftest";
status = "disabled";
reg = <5>;
};

selftest6: test-selftest6 {
compatible = "selftest";
status = "disabled";
reg = <6>;
};

selftest7: test-selftest7 {
compatible = "selftest";
status = "disabled";
reg = <7>;
};

selftest8: test-selftest8 {
compatible = "selftest";
status = "disabled";
reg = <8>;
};
};
};

/* test enable using absolute target path */
overlay0 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest0";
__overlay__ {
status = "okay";
};
};
};

/* test disable using absolute target path */
overlay1 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest1";
__overlay__ {
status = "disabled";
};
};
};

/* test enable using label */
overlay2 {
fragment@0 {
target = <&selftest2>;
__overlay__ {
status = "okay";
};
};
};

/* test disable using label */
overlay3 {
fragment@0 {
target = <&selftest3>;
__overlay__ {
status = "disabled";
};
};
};

/* test insertion of a full node */
overlay4 {
fragment@0 {
target = <&selftestbus>;
__overlay__ {

/* suppress DTC warning */
#address-cells = <1>;
#size-cells = <0>;

test-selftest4 {
compatible = "selftest";
status = "okay";
reg = <4>;
};
};
};
};

/* test overlay apply revert */
overlay5 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest5";
__overlay__ {
status = "okay";
};
};
};

/* test overlays application and removal in sequence */
overlay6 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest6";
__overlay__ {
status = "okay";
};
};
};
overlay7 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest7";
__overlay__ {
status = "okay";
};
};
};

/* test overlays application and removal in bad sequence */
overlay8 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest8";
__overlay__ {
status = "okay";
};
};
};
overlay9 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus/test-selftest8";
__overlay__ {
property-foo = "bar";
};
};
};

};
};
Loading

0 comments on commit 177d271

Please sign in to comment.