[RFC] arm64: dts: renesas: r8a779g0: Fix graph_child_address warnings from capture pipeline

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The bindings for the R-Car video capture pipeline uses ports and
endpoints to describe which IP is wired up and present on the different
SoCs. It is needed to describe both which instance of an IP is
connected, and to which port. The bindings try to be as reusable as
possible across the different R-Car generations.

For example R-Car VIN IP bindings have three ports, where two of them
can have multiple endpoints. Not all ports or endpoints are physically
present on each generation and/or model of R-Car SoCs.

The users of the VIN bindings needs to know not only that a port have
one, or more, endpoints but also which particular hardware instance it
is. The bindings defines endpoint indexes to correspond to particular
hardware instances that can be routed to a port to describe this.

This design leads to warnings when compiling the DTB if a port that can
describe more then one endpoint only describes a single endpoint. And
that endpoint corresponds to be the hardware the bindings defined to
index 0. For example compiling R-Car V4H which includes r8a779g0.dtsi,

   ../r8a779g0.dtsi:1200.12-1210.7: Warning (graph_child_address): /soc/video@e6ef0000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1228.12-1238.7: Warning (graph_child_address): /soc/video@e6ef1000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1256.12-1266.7: Warning (graph_child_address): /soc/video@e6ef2000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1284.12-1294.7: Warning (graph_child_address): /soc/video@e6ef3000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1312.12-1322.7: Warning (graph_child_address): /soc/video@e6ef4000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1340.12-1350.7: Warning (graph_child_address): /soc/video@e6ef5000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1368.12-1378.7: Warning (graph_child_address): /soc/video@e6ef6000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:1396.12-1406.7: Warning (graph_child_address): /soc/video@e6ef7000/ports/port@2: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
   ../r8a779g0.dtsi:2076.12-2086.7: Warning (graph_child_address): /soc/isp@fed00000/ports/port@0: graph node has single child node 'endpoint@0', #address-cells/#size-cells are

To avoid these warnings define all possible endpoints for each port in
the video capture pipeline, but only set the remote-endpoint property if
there is hardware present. This takes care of the warnings, but it also
adds empty endpoints that are not connected to anything on that
particular SoC.

Suggested-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>
---
Hi Geert,

This only addresses the warnings on V4H. More boards do trigger these
warnings but before I address them I thought it was a good idea we
agreed if this is a good way forward.

In this design I have defined every possible endpoint for the ports
involved. This might be a bit excessive as we define endpoints that are
not physically possible for V4H. For example V4H only have 2 CSISP
instances, while the bindings allow for up-to 4 CSISP as that is
possible on V3U which the CSISP bindings are shared with.

I'm not sure where to best draw the line. Only adding empty endpoints if
they are possible on the SoC sounds good, but what if we get a board
with only a single CSISP for example? That would be a single endpoint
with an index of 0, this triggering the warning.

Maybe do the minimum and only define an extra endpoint for ports that
trigger the warning? And if it nots pysically possible for that SoC add
a comment? This feels wrong however.

Let me know what you think. But it would be nice to get rid of these
warnings one way or another.

Kind Regards,
Niklas
---
 arch/arm64/boot/dts/renesas/r8a779g0.dtsi | 200 ++++++++++++++++++++++
 1 file changed, 200 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r8a779g0.dtsi b/arch/arm64/boot/dts/renesas/r8a779g0.dtsi
index 2ee306305d83..84fcd7c50f65 100644
--- a/arch/arm64/boot/dts/renesas/r8a779g0.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a779g0.dtsi
@@ -1207,6 +1207,18 @@ vin00isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin00>;
 					};
+
+					vin00isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin00isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin00isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1235,6 +1247,18 @@ vin01isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin01>;
 					};
+
+					vin01isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin01isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin01isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1263,6 +1287,18 @@ vin02isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin02>;
 					};
+
+					vin02isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin02isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin02isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1291,6 +1327,18 @@ vin03isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin03>;
 					};
+
+					vin03isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin03isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin03isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1319,6 +1367,18 @@ vin04isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin04>;
 					};
+
+					vin04isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin04isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin04isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1347,6 +1407,18 @@ vin05isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin05>;
 					};
+
+					vin05isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin05isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin05isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1375,6 +1447,18 @@ vin06isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin06>;
 					};
+
+					vin06isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin06isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin06isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1403,6 +1487,18 @@ vin07isp0: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&isp0vin07>;
 					};
+
+					vin07isp1: endpoint@1 {
+						reg = <1>;
+					};
+
+					vin07isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin07isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1427,10 +1523,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin08isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin08isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin08>;
 					};
+
+					vin08isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin08isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1455,10 +1563,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin09isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin09isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin09>;
 					};
+
+					vin09isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin09isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1483,10 +1603,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin10isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin10isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin10>;
 					};
+
+					vin10isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin10isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1511,10 +1643,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin11isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin11isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin11>;
 					};
+
+					vin11isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin11isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1539,10 +1683,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin12isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin12isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin12>;
 					};
+
+					vin12isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin12isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1567,10 +1723,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin13isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin13isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin13>;
 					};
+
+					vin13isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin13isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1595,10 +1763,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin14isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin14isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin14>;
 					};
+
+					vin14isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin14isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -1623,10 +1803,22 @@ port@2 {
 
 					reg = <2>;
 
+					vin15isp0: endpoint@0 {
+						reg = <0>;
+					};
+
 					vin15isp1: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&isp1vin15>;
 					};
+
+					vin15isp2: endpoint@2 {
+						reg = <2>;
+					};
+
+					vin15isp3: endpoint@3 {
+						reg = <3>;
+					};
 				};
 			};
 		};
@@ -2083,6 +2275,10 @@ isp0csi40: endpoint@0 {
 						reg = <0>;
 						remote-endpoint = <&csi40isp0>;
 					};
+
+					isp0csi41: endpoint@1 {
+						reg = <1>;
+					};
 				};
 
 				port@1 {
@@ -2162,6 +2358,10 @@ port@0 {
 
 					reg = <0>;
 
+					isp1csi40: endpoint@0 {
+						reg = <0>;
+					};
+
 					isp1csi41: endpoint@1 {
 						reg = <1>;
 						remote-endpoint = <&csi41isp1>;
-- 
2.45.2





[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux