Hi Rob, On Wednesday 28 Jun 2017 18:18:07 Rob Herring wrote: > On Mon, Jun 26, 2017 at 07:29:29PM +0300, Laurent Pinchart wrote: > > On some R-Car SoCs a single VSP can serve multiple DU channels through > > multiple LIF instances in the VSP. The current DT bindings don't support > > specifying that kind of SoC integration scheme. Extend them with a VSP > > channel index. > > "dt-bindings: display: ..." for the subject. Sorry, I'll fix that. > > Backward compatibility can be ensured in drivers by checking the length > > of the vsps property and setting the channel to 0 when the property > > doesn't contain channel indices. > > > > Signed-off-by: Laurent Pinchart > > <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > > --- > > > > .../devicetree/bindings/display/renesas,du.txt | 51 +++++++++------- > > 1 file changed, 30 insertions(+), 21 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/display/renesas,du.txt > > b/Documentation/devicetree/bindings/display/renesas,du.txt index > > c6cb96a4fa93..89bbc7950654 100644 > > --- a/Documentation/devicetree/bindings/display/renesas,du.txt > > +++ b/Documentation/devicetree/bindings/display/renesas,du.txt > > > > @@ -36,8 +36,10 @@ Required Properties: > > When supplied they must be named "dclkin.x" with "x" being the > > input > > clock numerical index. > > > > - - vsps: A list of phandles to the VSP nodes that handle the memory > > - interfaces for the DU channels. > > + - vsps: A list of phandle and channel index tuples to the VSPs that > > handle > > + the memory interfaces for the DU channels. The phandle identifies the > > VSP > > + instance that serves the DU channel, and the channel index identifies > > the > > + LIF instances in that VSP. > > > > Required nodes: > > @@ -59,24 +61,24 @@ corresponding to each DU output. > > > > R8A7796 (M3-W) DPAD HDMI LVDS - > > > > -Example: R8A7790 (R-Car H2) DU > > +Example: R8A7795 (R-Car H3) ES2.0 DU > > > > - du: du@feb00000 { > > - compatible = "renesas,du-r8a7790"; > > - reg = <0 0xfeb00000 0 0x70000>, > > - <0 0xfeb90000 0 0x1c>, > > - <0 0xfeb94000 0 0x1c>; > > - reg-names = "du", "lvds.0", "lvds.1"; > > - interrupt-parent = <&gic>; > > - interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>, > > - <0 268 IRQ_TYPE_LEVEL_HIGH>, > > - <0 269 IRQ_TYPE_LEVEL_HIGH>; > > - clocks = <&mstp7_clks R8A7790_CLK_DU0>, > > - <&mstp7_clks R8A7790_CLK_DU1>, > > - <&mstp7_clks R8A7790_CLK_DU2>, > > - <&mstp7_clks R8A7790_CLK_LVDS0>, > > - <&mstp7_clks R8A7790_CLK_LVDS1>; > > - clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1"; > > + du: display@feb00000 { > > + compatible = "renesas,du-r8a7795"; > > + reg = <0 0xfeb00000 0 0x80000>, > > + <0 0xfeb90000 0 0x14>; > > + reg-names = "du", "lvds.0"; > > + interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>, > > + <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>, > > + <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>, > > + <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>; > > + clocks = <&cpg CPG_MOD 724>, > > + <&cpg CPG_MOD 723>, > > + <&cpg CPG_MOD 722>, > > + <&cpg CPG_MOD 721>, > > + <&cpg CPG_MOD 727>; > > + clock-names = "du.0", "du.1", "du.2", "du.3", "lvds.0"; > > + vsps = <&vspd0 0 &vspd1 0 &vspd2 0 &vspd0 1>; > > > > ports { > > #address-cells = <1>; > > @@ -89,12 +91,19 @@ Example: R8A7790 (R-Car H2) DU > > }; > > port@1 { > > reg = <1>; > > - du_out_lvds0: endpoint { > > + du_out_hdmi0: endpoint { > > + remote-endpoint = <&dw_hdmi0_in>; > > }; > > }; > > port@2 { > > reg = <2>; > > - du_out_lvds1: endpoint { > > + du_out_hdmi1: endpoint { > > + remote-endpoint = <&dw_hdmi1_in>; > > + }; > > + }; > > + port@3 { > > Shouldn't a new port be documented somewhere? I've replaced the R8A7790-based example with one based on the R8A7795, as it gives a better idea of how to use the vsps property. Port 3 is already defined for the R8A7795 earlier in this file. Port 0 Port1 Port2 Port3 ----------------------------------------------------------------------------- ... R8A7790 (H2) DPAD LVDS 0 LVDS 1 - ... R8A7795 (H3) DPAD HDMI 0 HDMI 1 LVDS > > + reg = <3>; > > + du_out_lvds0: endpoint { > > > > }; > > > > }; > > > > }; -- Regards, Laurent Pinchart