[PATCH RFC] drm: add of_graph endpoint helper to find possible CRTCs

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Jul 3 15:41:17 PDT 2014


On Thu, Jul 03, 2014 at 06:17:24PM -0400, Rob Clark wrote:
> On Thu, Jul 3, 2014 at 12:49 PM, Russell King
> <rmk+kernel at arm.linux.org.uk> wrote:
> > Add a helper to allow encoders to find their possible CRTCs from the
> > OF graph without having to re-implement this functionality.  We add a
> > device_node to drm_crtc which corresponds with the port node in the
> > DT description of the CRTC device.
> >
> > We can then scan the DRM device list for CRTCs to find their index,
> > matching the appropriate CRTC using the port device_node, thus building
> > up the possible CRTC mask.
> >
> > Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
> > ---
> > This helper will be shared between imx-drm and Armada DRM, and should
> > be useful for other OF-based drivers.  At the moment, this is being
> > sent for comments and acks; I need to build upon this patch in order
> > to convert Armada DRM to DT.
> 
> ok, possibly a dumb question, but in my defense I don't claim to be a
> DT expert ;-)
> 
> Do you have somewhere handy a example dts which this would be parsing?
>  I think that would help me understand this patch a bit better.

The patch is merely moving something that's already being used by
imx-drm into a more convenient location.

The documentation for the "binding" (it isn't really parsing a binding,
merely traversing the graph itself) is:

Documentation/devicetree/bindings/graph.txt

which is shared from the v4l2 code.

To give an example, this is an extract from the imx6qdl dtsi file.  I've
cut out a load of stuff which isn't that relevant to the overall
structure.  The full stuff is arch/arm/boots/dts/imx6qdl.dtsi.

IPU contains two display interfaces (DIs, aka CRTCs).  Each display
interface is connected to a set of muxes, one mux per display bridge
(encoder/connector) which can select between DI0 or DI1.  Some chips
have two IPUs, hence four DIs, making it possible to drive the four
display bridges entirely independently.

                ipu1: ipu at 02400000 {
                        ipu1_di0: port at 2 {
                                ipu1_di0_hdmi: endpoint at 1 {
                                        remote-endpoint = <&hdmi_mux_0>;
                                };
...
                                ipu1_di0_lvds1: endpoint at 4 {
                                        remote-endpoint = <&lvds1_mux_0>;
                                };
                        };

                        ipu1_di1: port at 3 {
                                ipu1_di0_disp1: endpoint at 0 {
                                };

                                ipu1_di1_hdmi: endpoint at 1 {
                                        remote-endpoint = <&hdmi_mux_1>;
                                };
...
                                ipu1_di1_lvds1: endpoint at 4 {
                                        remote-endpoint = <&lvds1_mux_1>;
                                };
                        };
                };

HDMI transmitter component:

                        hdmi: hdmi at 0120000 {
                                port at 0 {
                                        reg = <0>;

                                        hdmi_mux_0: endpoint {
                                                remote-endpoint = <&ipu1_di0_hdmi>;
                                        };
                                };

                                port at 1 {
                                        reg = <1>;

                                        hdmi_mux_1: endpoint {
                                                remote-endpoint = <&ipu1_di1_hdmi>;
                                        };
                                };
                        };

-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.



More information about the linux-arm-kernel mailing list