diff mbox

[v3,1/8] dt-bindings: display: xlnx: Add bindings for Xilinx display pipeline

Message ID 1516067831-11382-1-git-send-email-hyun.kwon@xilinx.com (mailing list archive)
State New, archived
Headers show

Commit Message

Hyun Kwon Jan. 16, 2018, 1:57 a.m. UTC
The dt binding for Xilinx display pipeline. The pipeline can be
composed with multiple and different types of sub-devices. This node
is to represent the entire pipeline as a single entity.

Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
---
v2
- Remove linux specific terms
- Elaborate details, ex regarding port binding
- Rename xlnx,kms to xlnx,display
- Rename the file name to xlnx,display.txt
- Add examples of hardware blocks
---
---
 .../bindings/display/xlnx/xlnx,display.txt         | 68 ++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt

--
2.7.4

This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.

Comments

Rob Herring Jan. 19, 2018, 11:32 p.m. UTC | #1
On Mon, Jan 15, 2018 at 05:57:04PM -0800, Hyun Kwon wrote:
> The dt binding for Xilinx display pipeline. The pipeline can be
> composed with multiple and different types of sub-devices. This node
> is to represent the entire pipeline as a single entity.
> 
> Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
> ---
> v2
> - Remove linux specific terms
> - Elaborate details, ex regarding port binding
> - Rename xlnx,kms to xlnx,display
> - Rename the file name to xlnx,display.txt
> - Add examples of hardware blocks
> ---
> ---
>  .../bindings/display/xlnx/xlnx,display.txt         | 68 ++++++++++++++++++++++
>  1 file changed, 68 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt
> 
> diff --git a/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt
> new file mode 100644
> index 0000000..fde1a35
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt
> @@ -0,0 +1,68 @@
> +Xilinx Display Pipeline
> +-----------------------
> +
> +Xilinx display pipeline can be designed with various types of multiple IPs:
> +IPs hardened on chip, ob board IPs, and soft IPs in programmable logic.

s/ob board/on-board/

> +While each component would need its own node, this node represents
> +a whole display pipeline as a single entity by integrating individual subdevice
> +with glue logics.
> +
> +The following illustrates some examples of topology:
> +
> +A linear pipeline with multiple blocks:
> +
> +       SoC DMA -> SoC display controller -> SoC display enc
> +or,
> +       FPGA DMA -> FPGA display controller -> FPGA display enc
> +
> +A pipeline with branches:
> +
> +       SoC DMA -> SoC display controller -> SoC display enc
> +               |
> +       FPGA DMA->
> +or,
> +       SoC DMA -> SoC display controller -> SoC display enc
> +                                         |
> +                                         -> FPAG display enc

s/FPAG/FPGA/

> +
> +or,
> +
> +                       SoC DMA -> SoC display controller -> SoC display enc
> +                               |                         |
> +       FPGA display controller ->                        -> FPGA display enc
> +
> +Required properties:
> +
> +- compatible: Must be "xlnx,display".
> +
> +- ports: phandles for ports of display controller subdevice.
> +  In the display controller port nodes, topology for entire pipeline
> +  should be described using the DT bindings defined in
> +  Documentation/devicetree/bindings/graph.txt.
> +
> +Example:
> +
> +       xlnx_display {
> +               compatible = "xlnx,display";
> +               ports = <&display_controller_port>;

I still don't think you need this node. Match the DRM driver with the 
display controller node.

> +       };
> +
> +       display_controller {

display-controller@???

Please show at least the compatible and reg in the example.

> +               ...
> +               display_controller_port: port@0 {

Unit address is not needed here. If you have a unit address, then you 
should have a reg property (and #size-cells and #address-cells in the 
parent).

> +                       display_controller_ep: endpoint {
> +                               remote-endpoint = <&dp_controller_ep>;
> +                       };
> +               };
> +               ...
> +       };
> +
> +       dp_controller {
> +               ...
> +               dp_controller_port: port@0 {
> +                       dp_controller_ep: endpoint {
> +                               remote-endpoint = <&display_controller_ep>;
> +                       };
> +               };
> +               ...
> +       };
> --
> 2.7.4
> 
> This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately.
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hyun Kwon Jan. 20, 2018, 2:22 a.m. UTC | #2
Hi Rob,

Thanks for the review.

> -----Original Message-----

> From: Rob Herring [mailto:robh@kernel.org]

> Sent: Friday, January 19, 2018 3:33 PM

> To: Hyun Kwon <hyunk@xilinx.com>

> Cc: dri-devel@lists.freedesktop.org; devicetree@vger.kernel.org; Michal

> Simek <michal.simek@xilinx.com>; Daniel Vetter <daniel.vetter@ffwll.ch>;

> Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> Subject: Re: [PATCH v3 1/8] dt-bindings: display: xlnx: Add bindings for

> Xilinx display pipeline

> 

> On Mon, Jan 15, 2018 at 05:57:04PM -0800, Hyun Kwon wrote:

> > The dt binding for Xilinx display pipeline. The pipeline can be

> > composed with multiple and different types of sub-devices. This node

> > is to represent the entire pipeline as a single entity.

> >

> > Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>

> > ---

> > v2

> > - Remove linux specific terms

> > - Elaborate details, ex regarding port binding

> > - Rename xlnx,kms to xlnx,display

> > - Rename the file name to xlnx,display.txt

> > - Add examples of hardware blocks

> > ---

> > ---

> >  .../bindings/display/xlnx/xlnx,display.txt         | 68

> ++++++++++++++++++++++

> >  1 file changed, 68 insertions(+)

> >  create mode 100644

> Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt

> >

> > diff --git

> a/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt

> b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt

> > new file mode 100644

> > index 0000000..fde1a35

> > --- /dev/null

> > +++ b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt

> > @@ -0,0 +1,68 @@

> > +Xilinx Display Pipeline

> > +-----------------------

> > +

> > +Xilinx display pipeline can be designed with various types of multiple IPs:

> > +IPs hardened on chip, ob board IPs, and soft IPs in programmable logic.

> 

> s/ob board/on-board/

> 


Will fix it.

> > +While each component would need its own node, this node represents

> > +a whole display pipeline as a single entity by integrating individual

> subdevice

> > +with glue logics.

> > +

> > +The following illustrates some examples of topology:

> > +

> > +A linear pipeline with multiple blocks:

> > +

> > +       SoC DMA -> SoC display controller -> SoC display enc

> > +or,

> > +       FPGA DMA -> FPGA display controller -> FPGA display enc

> > +

> > +A pipeline with branches:

> > +

> > +       SoC DMA -> SoC display controller -> SoC display enc

> > +               |

> > +       FPGA DMA->

> > +or,

> > +       SoC DMA -> SoC display controller -> SoC display enc

> > +                                         |

> > +                                         -> FPAG display enc

> 

> s/FPAG/FPGA/

> 


Will fix.

> > +

> > +or,

> > +

> > +                       SoC DMA -> SoC display controller -> SoC display enc

> > +                               |                         |

> > +       FPGA display controller ->                        -> FPGA display enc

> > +

> > +Required properties:

> > +

> > +- compatible: Must be "xlnx,display".

> > +

> > +- ports: phandles for ports of display controller subdevice.

> > +  In the display controller port nodes, topology for entire pipeline

> > +  should be described using the DT bindings defined in

> > +  Documentation/devicetree/bindings/graph.txt.

> > +

> > +Example:

> > +

> > +       xlnx_display {

> > +               compatible = "xlnx,display";

> > +               ports = <&display_controller_port>;

> 

> I still don't think you need this node. Match the DRM driver with the

> display controller node.

> 


With that approach, it becomes tricky as multiple devices can form a single
DRM device (single pipeline). For example, the SoC display controller would
match the DRM driver when it's used alone. There can be a standalone FPGA
display controller which will match the DRM driver. But there can also be
a design where both controllers are connected together and share some block,
ex DisplayPort transmitter. There it's not clear which one to match
the DRM driver. Thus this logical node helps to represent fragmented devices
as a single device display pipeline. If this is not acceptable, I'll try to
find other options.

> > +       };

> > +

> > +       display_controller {

> 

> display-controller@???

> 

> Please show at least the compatible and reg in the example.

> 


Sure will do.

> > +               ...

> > +               display_controller_port: port@0 {

> 

> Unit address is not needed here. If you have a unit address, then you

> should have a reg property (and #size-cells and #address-cells in the

> parent).

> 


Will fix.

Thanks,
-hyun
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt
new file mode 100644
index 0000000..fde1a35
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/xlnx/xlnx,display.txt
@@ -0,0 +1,68 @@ 
+Xilinx Display Pipeline
+-----------------------
+
+Xilinx display pipeline can be designed with various types of multiple IPs:
+IPs hardened on chip, ob board IPs, and soft IPs in programmable logic.
+While each component would need its own node, this node represents
+a whole display pipeline as a single entity by integrating individual subdevice
+with glue logics.
+
+The following illustrates some examples of topology:
+
+A linear pipeline with multiple blocks:
+
+       SoC DMA -> SoC display controller -> SoC display enc
+or,
+       FPGA DMA -> FPGA display controller -> FPGA display enc
+
+A pipeline with branches:
+
+       SoC DMA -> SoC display controller -> SoC display enc
+               |
+       FPGA DMA->
+or,
+       SoC DMA -> SoC display controller -> SoC display enc
+                                         |
+                                         -> FPAG display enc
+
+or,
+
+                       SoC DMA -> SoC display controller -> SoC display enc
+                               |                         |
+       FPGA display controller ->                        -> FPGA display enc
+
+Required properties:
+
+- compatible: Must be "xlnx,display".
+
+- ports: phandles for ports of display controller subdevice.
+  In the display controller port nodes, topology for entire pipeline
+  should be described using the DT bindings defined in
+  Documentation/devicetree/bindings/graph.txt.
+
+Example:
+
+       xlnx_display {
+               compatible = "xlnx,display";
+               ports = <&display_controller_port>;
+       };
+
+       display_controller {
+               ...
+               display_controller_port: port@0 {
+                       display_controller_ep: endpoint {
+                               remote-endpoint = <&dp_controller_ep>;
+                       };
+               };
+               ...
+       };
+
+       dp_controller {
+               ...
+               dp_controller_port: port@0 {
+                       dp_controller_ep: endpoint {
+                               remote-endpoint = <&display_controller_ep>;
+                       };
+               };
+               ...
+       };