Skip to content

Commit 957f10c

Browse files
avolkov-1221kartben
authored andcommitted
edtlib: add new tests for 'interrupt-map'
Add tests to check the correctness of '#address-cells' usage. The missing tests have allowed bug #77890 to persist for years. Signed-off-by: Andrey VOLKOV <[email protected]>
1 parent 871afee commit 957f10c

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

scripts/dts/python-devicetree/tests/test.dts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,22 @@
8080
0 1 0 1 &{/interrupt-map-test/controller-1} 0 0 0 4
8181
0 1 0 2 &{/interrupt-map-test/controller-2} 0 0 0 0 0 5>;
8282
};
83+
nexus-0 {
84+
#address-cells = <0>;
85+
#interrupt-cells = <2>;
86+
interrupt-map = <
87+
0 0 &{/interrupt-map-test/controller-0} 0 0
88+
0 1 &{/interrupt-map-test/controller-1} 0 0 0 1
89+
1 2 &{/interrupt-map-test/controller-2} 0 0 0 0 0 2>;
90+
};
91+
nexus-1 {
92+
#address-cells = <1>;
93+
#interrupt-cells = <1>;
94+
interrupt-map = <
95+
4 0 &{/interrupt-map-test/controller-0} 0 3
96+
4 1 &{/interrupt-map-test/controller-1} 0 0 0 4
97+
4 2 &{/interrupt-map-test/controller-2} 0 0 0 0 0 5>;
98+
};
8399
node@0 {
84100
reg = <0 0>;
85101
interrupts = <0 0 0 1 0 2>;
@@ -92,6 +108,30 @@
92108
&{/interrupt-map-test/nexus} 0 1
93109
&{/interrupt-map-test/nexus} 0 2>;
94110
};
111+
node@2 {
112+
reg = <0 2>;
113+
interrupts = <0 0 0 1 1 2>;
114+
interrupt-parent = <&{/interrupt-map-test/nexus-0}>;
115+
};
116+
node@3 { /* Test the precedence of interrupts/interrupts-extended too */
117+
reg = <0 3>;
118+
interrupts = <1 2 0 0 0 1>;
119+
interrupt-parent = <&{/interrupt-map-test/nexus-0}>;
120+
interrupts-extended = <
121+
&{/interrupt-map-test/nexus-0} 0 0
122+
&{/interrupt-map-test/nexus-0} 0 1
123+
&{/interrupt-map-test/nexus-0} 1 2>;
124+
};
125+
node@4 {
126+
reg = <0 4>;
127+
interrupts = <0 1 2>;
128+
interrupt-parent = <&{/interrupt-map-test/nexus-1}>;
129+
};
130+
node@100000004 {
131+
reg = <1 4>;
132+
interrupts = <0 1 2>;
133+
interrupt-parent = <&{/interrupt-map-test/nexus-1}>;
134+
};
95135
};
96136
interrupt-map-bitops-test {
97137
#address-cells = <2>;

scripts/dts/python-devicetree/tests/test_edtlib.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,34 @@ def test_interrupts():
9797
edtlib.ControllerAndData(node=node, controller=controller_2, data={'one': 0, 'two': 0, 'three': 5}, name=None, basename=None)
9898
]
9999

100+
node = edt.get_node("/interrupt-map-test/node@2")
101+
assert node.interrupts == [
102+
edtlib.ControllerAndData(node=node, controller=controller_0, data={'one': 0}, name=None, basename=None),
103+
edtlib.ControllerAndData(node=node, controller=controller_1, data={'one': 0, 'two': 1}, name=None, basename=None),
104+
edtlib.ControllerAndData(node=node, controller=controller_2, data={'one': 0, 'two': 0, 'three': 2}, name=None, basename=None)
105+
]
106+
107+
node = edt.get_node("/interrupt-map-test/node@3")
108+
assert node.interrupts == [
109+
edtlib.ControllerAndData(node=node, controller=controller_0, data={'one': 0}, name=None, basename=None),
110+
edtlib.ControllerAndData(node=node, controller=controller_1, data={'one': 0, 'two': 1}, name=None, basename=None),
111+
edtlib.ControllerAndData(node=node, controller=controller_2, data={'one': 0, 'two': 0, 'three': 2}, name=None, basename=None)
112+
]
113+
114+
node = edt.get_node("/interrupt-map-test/node@4")
115+
assert node.interrupts == [
116+
edtlib.ControllerAndData(node=node, controller=controller_0, data={'one': 3}, name=None, basename=None),
117+
edtlib.ControllerAndData(node=node, controller=controller_1, data={'one': 0, 'two': 4}, name=None, basename=None),
118+
edtlib.ControllerAndData(node=node, controller=controller_2, data={'one': 0, 'two': 0, 'three': 5}, name=None, basename=None)
119+
]
120+
121+
node = edt.get_node("/interrupt-map-test/node@100000004")
122+
assert node.interrupts == [
123+
edtlib.ControllerAndData(node=node, controller=controller_0, data={'one': 3}, name=None, basename=None),
124+
edtlib.ControllerAndData(node=node, controller=controller_1, data={'one': 0, 'two': 4}, name=None, basename=None),
125+
edtlib.ControllerAndData(node=node, controller=controller_2, data={'one': 0, 'two': 0, 'three': 5}, name=None, basename=None)
126+
]
127+
100128
node = edt.get_node("/interrupt-map-bitops-test/node@70000000E")
101129
assert node.interrupts == [
102130
edtlib.ControllerAndData(node=node, controller=edt.get_node('/interrupt-map-bitops-test/controller'), data={'one': 3, 'two': 2}, name=None, basename=None)

0 commit comments

Comments
 (0)