[RFC v2 1/4] dt-bindings: drm/mediatek: Add Mediatek display subsystem dts binding

Philipp Zabel p.zabel at pengutronix.de
Mon Sep 21 01:11:07 PDT 2015


Hi Rob,

thank you for the comments.

Am Freitag, den 18.09.2015, 15:33 -0500 schrieb Rob Herring:
[...]
> > +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.

Ok. The reason I haven't grouped all the display nodes together in the
first place is that they aren't contiguous in the register space. So
instead of:

	ovl at 1400c000 {
		compatible = "mediatek,mt8173-disp-ovl";
	};
	...
	ufoe at 1401a000 {
		compatible = "mediatek,mt8173-disp-ufoe";
	};

	pwm at 1401e000 {
		compatible = "mediatek,mt8173-disp-pwm";
	};

	larb at 14021000 {
		compatible = "mediatek,mt8173-smi-larb";
	};

	od at 14023000 {
		compatible = "mediatek,mt8173-disp-od";
	};

We'd have:

	display-subsystem at 1400c00 {
		compatible = "mediatek,mt8173-disp", "simple-bus";

		ovl at 1400c000 {
			compatible = "mediatek,mt8173-disp-ovl";
		};
		...
		ufoe at 1401a000 {
			compatible = "mediatek,mt8173-disp-ufoe";
		};

		od at 14023000 {
			compatible = "mediatek,mt8173-disp-od";
		};
	};

	pwm at 1401e000 {
		compatible = "mediatek,mt8173-disp-pwm";
	};

	larb at 14021000 {
		compatible = "mediatek,mt8173-smi-larb";
	};

Note how the display-subsystem node overlaps the larb node. Is that
acceptable?

[...]
> > diff --git a/Documentation/devicetree/bindings/drm/mediatek/mediatek,dsi.txt b/Documentation/devicetree/bindings/drm/mediatek/mediatek,dsi.txt
> > new file mode 100644
> > index 0000000..e892ef1
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/drm/mediatek/mediatek,dsi.txt
> > @@ -0,0 +1,29 @@
> > +Mediatek DSI Device
> > +===================
> > +
> > +The Mediatek DSI function block is a sink of the display subsystem and can
> > +drive up to 4-lane MIPI DSI output. Two DSIs can be synchronized for dual-
> > +channel output.
> > +
> > +Required properties:
> > +- compatible: "mediatek,<chip>-dsi"
> > +- reg: Physical base address and length of the controller's registers
> > +- clocks: device clocks
> > +  See Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
> > +- clock-names: must contain "engine" and "digital".
> 
> This leaves wondering which one is used for DSI bit clock.

The MIPI_TX0 module controls the MIPI D-PHY. It contains a PLL that
provides the bit clock to the DSI module.

>From the documentation, it looks to me like the AP_PLL_CON0[6] bit in
the mediatek,mt8173-apmixedsys region gates the 26 MHz reference clock
to MIPI_TX. It is enabled by default. Currently there is no gate clock
registered for that bit.
Can somebody confirm that this gate clock should be added to the
mediatek,mt8173-apmixedsys bindings?

> > +
> > +Example:
> > +
> > +dsi0: dsi at 1401b000 {
> > +       compatible = "mediatek,mt8173-dsi";
> > +       reg = <0 0x1401b000 0 0x1000>,  /* DSI0 */
> > +             <0 0x10215000 0 0x1000>;  /* MIPI_TX0 */

Thinking about it, MIPI_TX0 is for PHY control. Should this be moved
into its own node and the phy bindings used to let the DSI driver find
it?

> > +       clocks = <&mmsys MM_DSI0_ENGINE>, <&mmsys MM_DSI0_DIGITAL>;
> > +       clock-names = "engine", "digital";
> > +
> > +       port {
> 
> Missing from the binding description.

Thanks, I'll fix that next round.

> > +               dsi0_out: endpoint {
> > +                       remote-endpoint = <&panel_in>;
> > +               };
> > +       };
> > +};

best regards
Philipp




More information about the Linux-mediatek mailing list