[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