Am Mittwoch, den 30.09.2015, 11:57 -0500 schrieb Rob Herring: > On Wed, Sep 30, 2015 at 10:30 AM, Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> wrote: > > 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@xxxxxxxxxxxxxx> wrote: > >> > From: CK Hu <ck.hu@xxxxxxxxxxxx> > >> > > >> > Add device tree binding documentation for the display subsystem in > >> > Mediatek MT8173 SoCs. > >> > > >> > Signed-off-by: CK Hu <ck.hu@xxxxxxxxxxxx> > >> > Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > >> > --- > >> > .../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. > > We need a graph visualizer... Yes :) > I think there has to be a balance with how much is put into the DT. If > the relationship between blocks is pretty fixed then it doesn't really > help much to put all this into DT. If every SOC or board can have > differing combinations of blocks or connections between blocks then > the graph makes sense. I expect the graph to be constant for a given SoC like MT8173. regards Philipp -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html