Thread (20 messages) 20 messages, 6 authors, 2016-02-22

[PATCH v2 0/2] Improve drm_of_component_probe() and move rockchip to use it

From: Jean-Francois Moine <hidden>
Date: 2015-12-25 09:38:29
Also in: dri-devel, linux-devicetree, linux-rockchip, lkml

On Thu, 24 Dec 2015 12:36:10 +0000
Russell King - ARM Linux [off-list ref] wrote:
It seems that you're trying to work around a limitation in Linux by
modifying the hardware representation...
Sorry to come back to this topic, but I think you are wrong.

Looking at the imx6 DTs, the problem comes from the display-subsystem
node which is a pure Linux specific software entity.

If you want to describe only the hardware in the DT, everything is
simple.

A IPU is a image controller with its sub-devices. Seen from the system, it
is like a 'board' with its devices (LCDs, camera...).

When 2 IPUs, there are 2 independant boards.

Here is what could be a pure hardware DT:

/* no display-subsystem */

	ipu1: ipu at 02400000 {		/* image controller / board 1 */
		compatible = "fsl,imx6q-ipu";
		...
		ports = <&ipu1_di0>, <&ipu1_di1>;
	};
	ipu1_di0: di at 0 {		/* display interface / crtc 1 */
		compatible = "fsl,imx6q-di";
		...
		ipu1_di0_hdmi: endpoint at 1 {
			remote-endpoint = <&hdmi_mux_0>;
		};
		ipu1_di0_mipi: endpoint at 2 {
			remote-endpoint = <&mipi_mux_0>;
		}
		...
	};
	ipu1_di1: di at 1 {		/* display interface / crtc 2 */
		compatible = "fsl,imx6q-di";
		...
		ipu1_di1_hdmi: endpoint at 1 {
			remote-endpoint = <&hdmi_mux_1>;
		};
		ipu1_di1_mipi: endpoint at 2 {
			remote-endpoint = <&mipi_mux_1>;
		}
		...
	};

	ipu2: ipu at 02800000 {		/* image controller / board 2 */
		compatible = "fsl,imx6q-ipu";
		...
		ports = <&ipu2_di0>, <&ipu2_di1>;
	};
	ipu2_di0: di at 0 {		/* display interface / crtc 1 */
		compatible = "fsl,imx6q-di";
		...
		ipu2_di0_hdmi: endpoint at 1 {
			remote-endpoint = <&hdmi_mux_2>;
		};
		ipu2_di0_mipi: endpoint at 2 {
			remote-endpoint = <&mipi_mux_2>;
		}
		...
	};
	ipu2_di1: di at 1 {		/* display interface / crtc 2 */
		compatible = "fsl,imx6q-di";
		...
		ipu2_di1_hdmi: endpoint at 1 {
			remote-endpoint = <&hdmi_mux_3>;
		};
		ipu2_di1_mipi: endpoint at 2 {
			remote-endpoint = <&mipi_mux_3>;
		}
		...
	};

Then, a standard component binding (port->parent) works fine...

(you may note that the same problem exists with audio: the
'simple-card' is also a pure Linux specific software entity)

-- 
Merry Christmas	|	      ** Breizh ha Linux atav! **
Jef		|		http://moinejf.free.fr/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help