Am Freitag, den 18.09.2015, 15:33 -0500 schrieb Rob Herring:
On Fri, Sep 18, 2015 at 11:11 AM, Philipp Zabel p.zabel@pengutronix.de wrote:
From: CK Hu ck.hu@mediatek.com
Add device tree binding documentation for the display subsystem in Mediatek MT8173 SoCs.
Signed-off-by: CK Hu ck.hu@mediatek.com Signed-off-by: Philipp Zabel p.zabel@pengutronix.de
.../bindings/drm/mediatek/mediatek,disp.txt | 131 +++++++++++++++++++++ .../bindings/drm/mediatek/mediatek,dsi.txt | 29 +++++ 2 files changed, 160 insertions(+) create mode 100644 Documentation/devicetree/bindings/drm/mediatek/mediatek,disp.txt create mode 100644 Documentation/devicetree/bindings/drm/mediatek/mediatek,dsi.txt
diff --git a/Documentation/devicetree/bindings/drm/mediatek/mediatek,disp.txt b/Documentation/devicetree/bindings/drm/mediatek/mediatek,disp.txt new file mode 100644 index 0000000..a3811bd --- /dev/null +++ b/Documentation/devicetree/bindings/drm/mediatek/mediatek,disp.txt @@ -0,0 +1,131 @@ +Mediatek display subsystem +==========================
+The Mediatek display subsystem consists of various DISP function blocks in the +MMSYS register space. The connections between them can be configured by output +and input selectors in the MMSYS_CONFIG register space and register updates can +be synchronized to video frame boundaries with help of a DISP_MUTEX function +block.
+The display-subsystem node binds together all individual device nodes that +comprise the DISP subsystem.
+Required properties:
+- compatible: "mediatek,<chip>-disp"
+- components: Should contain a list of phandles pointing to the DISP function
- block device nodes.
+- component-names: Should contain the name of the function block pointed to
- by the components phandle of the same index.
NAK. Group these nodes under a parent node, use of-graph or just don't put this into DT. Don't invent a new way.
If I connect the DISP nodes using of-graph bindings, the full graph will look somewhat like this (including the currently unused function blocks, all properties but ports and endpoints removed for brevity):
ovl0@1400c000 { port { ovl0_to_color0: endpoint@0 { remote-endpoint = <&color0_from_ovl0>; };
ovl0_to_wdma0: endpoint@1 { remote-endpoint = <&wdma0_from_ovl0>; }; }; };
ovl1@1400d000 { port { ovl1_to_color1: endpoint@0 { remote-endpoint = <&color1_from_ovl1>; };
ovl1_to_wdma1: endpoint@1 { remote-endpoint = <&wdma1_from_ovl1>; }; }; };
rdma0@1400e000 { port@0 { rdma0_from_od: endpoint { remote-endpoint = <&od_to_rdma0>; }; };
port@1 { rdma0_to_ufoe: endpoint@0 { remote-endpoint = <&ufoe_from_rdma0>; };
rdma0_to_split0: endpoint@1 { remote-endpoint = <&split0_from_rdma0>; };
rdma0_to_color0: endpoint@2 { remote-endpoint = <&color0_from_rdma0>; }; }; };
rdma1@1400f000 { port@0 { rdma1_from_gamma: endpoint { remote-endpoint = <&gamma_to_rdma1>; }; };
port@1 { rdma1_to_dsi0: endpoint@0 { remote-endpoint = <&dsi0_from_rdma1>; };
rdma1_to_dsi1: endpoint@1 { remote-endpoint = <&dsi1_from_rdma1>; };
rdma1_to_dpi0: endpoint@2 { remote-endpoint = <&dpi0_from_rdma1>; };
rdma1_to_color1: endpoint@3 { remote-endpoint = <&color1_from_rdma1>; }; }; };
rdma2@14010000 { port { rdma2_to_dsi1: endpoint@0 { remote-endpoint = <&dsi1_from_rdma2>; };
rdma2_to_dpi0: endpoint@1 { remote-endpoint = <&dpi0_from_rdma2>; }; }; };
wdma0@14011000 { port { wdma0_from_ovl0: endpoint@0 { remote-endpoint = <&ovl0_to_wdma0>; };
wdma0_from_od: endpoint@1 { remote-endpoint = <&od_to_wdma0>; };
wdma0_from_ufoe: endpoint@2 { remote-endpoint = <&ufoe_to_wdma0>; }; }; };
wdma1@14012000 { port { wdma1_from_ovl1: endpoint@0 { remote-endpoint = <&ovl1_to_wdma1>; };
wdma1_from_gamma: endpoint@1 { remote-endpoint = <&gamma_to_wdma1>; }; }; };
color0@14013000 { port@0 { color0_from_rdma0: endpoint@0 { remote-endpoint = <&rdma0_to_color0>; };
color0_from_ovl0: endpoint@1 { remote-endpoint = <&ovl0_to_color0>; }; };
port@1 { color0_to_aal: endpoint@0 { remote-endpoint = <&aal_from_color0>; };
color0_to_merge: endpoint@1 { remote-endpoint = <&merge_from_color0>; }; }; };
color1@14014000 { port@0 { color1_from_rdma1: endpoint@0 { remote-endpoint = <&rdma1_to_color1>; };
color1_from_ovl1: endpoint@1 { remote-endpoint = <&ovl1_to_color1>; }; };
port@1 { color1_to_gamma: endpoint@0 { remote-endpoint = <&gamma_from_color1>; };
color1_to_merge: endpoint@1 { remote-endpoint = <&merge_from_color1>; }; }; };
aal@14015000 { port@0 { aal_from_color0: endpoint@0 { remote-endpoint = <&color0_to_aal>; };
aal_from_merge: endpoint@1 { remote-endpoint = <&merge_to_aal>; }; };
port@1 { aal_to_od: endpoint { remote-endpoint = <&od_from_aal>; }; }; };
gamma@14016000 { port@0 { gamma_from_color1: endpoint { remote-endpoint = <&color1_to_gamma>; }; };
port@1 { gamma_to_rdma1: endpoint@0 { remote-endpoint = <&rdma1_from_gamma>; };
gamma_to_dsi0: endpoint@1 { remote-endpoint = <&dsi0_from_gamma>; };
gamma_to_dsi1: endpoint@2 { remote-endpoint = <&dsi1_from_gamma>; };
gamma_to_dpi0: endpoint@3 { remote-endpoint = <&dpi0_from_gamma>; };
gamma_to_wdma1: endpoint@4 { remote-endpoint = <&wdma1_from_gamma>; }; }; };
merge@14017000 { port@0 { merge_from_color0: endpoint { remote-endpoint = <&color0_to_merge>; }; };
port@1 { merge_from_color1: endpoint { remote-endpoint = <&color1_to_merge>; }; };
port@2 { merge_to_aal: endpoint { remote-endpoint = <&aal_from_merge>; }; }; };
split0@14018000 { port@0 { split0_from_rdma0: endpoint@0 { remote-endpoint = <&rdma0_to_split0>; };
split0_from_od: endpoint@1 { remote-endpoint = <&od_to_split0>; }; };
port@1 { split0_to_ufoe: endpoint { remote-endpoint = <&ufoe_from_split0>; }; };
port@2 { split0_to_dsi0: endpoint@0 { remote-endpoint = <&dsi0_from_split0>; };
split0_to_dsi1: endpoint@1 { remote-endpoint = <&dsi1_from_split0>; };
split0_to_dpi0: endpoint@2 { remote-endpoint = <&dpi0_from_split0>; }; }; };
split1@14019000 { port@0 { split1_from_ufoe: endpoint { remote-endpoint = <&ufoe_to_split1>; }; };
port@1 { split1_to_dsi0: endpoint { remote-endpoint = <&dsi0_from_split1>; }; };
port@2 { split1_to_dsi1: endpoint { remote-endpoint = <&dsi1_from_split1>; }; }; };
ufoe@1401a000 { port@0 { ufoe_from_rdma0: endpoint@0 { remote-endpoint = <&rdma0_to_ufoe>; };
ufoe_from_od: endpoint@1 { remote-endpoint = <&od_to_ufoe>; };
ufoe_from_split0: endpoint@2 { remote-endpoint = <&split0_to_ufoe>; }; };
port@1 { ufoe_to_dsi0: endpoint@0 { remote-endpoint = <&dsi0_from_ufoe>; };
ufoe_to_split1: endpoint@1 { remote-endpoint = <&split1_from_ufoe>; };
ufoe_to_dpi0: endpoint@2 { remote-endpoint = <&dpi0_from_ufoe>; };
ufoe_to_wdma0: endpoint@3 { remote-endpoint = <&wdma0_from_ufoe>; };
ufoe_to_dsi1: endpoint@4 { remote-endpoint = <&dsi1_from_ufoe>; }; }; };
dsi0: dsi0@1401b000 { port@0 { dsi0_from_ufoe: endpoint@0 { remote-endpoint = <&ufoe_to_dsi0>; };
dsi0_from_split1: endpoint@1 { remote-endpoint = <&split1_to_dsi0>; };
dsi0_from_rdma1: endpoint@2 { remote-endpoint = <&rdma1_to_dsi0>; };
dsi0_from_gamma: endpoint@3 { remote-endpoint = <&gamma_to_dsi0>; };
dsi0_from_split0: endpoint@4 { remote-endpoint = <&split0_to_dsi0>; }; }; };
dsi1: dsi1@1401c000 { port@0 { dsi1_from_split1: endpoint@0 { remote-endpoint = <&split1_to_dsi1>; };
dsi1_from_rdma1: endpoint@1 { remote-endpoint = <&rdma1_to_dsi1>; };
dsi1_from_gamma: endpoint@2 { remote-endpoint = <&gamma_to_dsi1>; };
dsi1_from_split0: endpoint@3 { remote-endpoint = <&split0_to_dsi1>; };
dsi1_from_rdma2: endpoint@4 { remote-endpoint = <&rdma2_to_dsi1>; };
dsi1_from_ufoe: endpoint@5 { remote-endpoint = <&ufoe_to_dsi1>; }; }; };
dpi0: dpi0@1401d000 { port@0 { dpi0_from_ufoe: endpoint@0 { remote-endpoint = <&ufoe_to_dpi0>; };
dpi0_from_rdma1: endpoint@1 { remote-endpoint = <&rdma1_to_dpi0>; };
dpi0_from_gamma: endpoint@2 { remote-endpoint = <&gamma_to_dpi0>; };
dpi0_from_split0: endpoint@3 { remote-endpoint = <&split0_to_dpi0>; };
dpi0_from_rdma2: endpoint@4 { remote-endpoint = <&rdma2_to_dpi0>; }; }; };
od@14023000 { port@0 { od_from_aal: endpoint { remote-endpoint = <&aal_to_od>; }; };
port@1 { od_to_rdma0: endpoint@0 { remote-endpoint = <&rdma0_from_od>; };
od_to_ufoe: endpoint@1 { remote-endpoint = <&ufoe_from_od>; };
od_to_split0: endpoint@2 { remote-endpoint = <&split0_from_od>; };
od_to_wdma0: endpoint@3 { remote-endpoint = <&wdma0_from_od>; }; }; };
Adding the graph to the mediatek oak-rev3 device tree increases the size from currently 33 KiB to 41.5 KiB. As a proponent of the of-graph bindings I certainly like to describe the hardware connections using DT, but I'm not sure if maybe this is a bit verbose.
regards Philipp