Subject: Re: [PATCH 2/4] drm/mcde: Add device tree bindings

From: Rob Herring <[email-masked]>
Date: Mon, 25 Feb 2019 16:31:24 -0600

On Thu, Feb 07, 2019 at 09:36:45AM +0100, Linus Walleij wrote:
> This adds the device tree bindings for the ST-Ericsson
> Multi Channel Display Engine MCDE as found in the U8500
> SoCs.
> 
> Cc: [email-masked]
> Signed-off-by: Linus Walleij <[email-masked]>
> ---
>  .../devicetree/bindings/display/ste,mcde.txt  | 110 ++++++++++++++++++
>  1 file changed, 110 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/ste,mcde.txt
> 
> diff --git a/Documentation/devicetree/bindings/display/ste,mcde.txt b/Documentation/devicetree/bindings/display/ste,mcde.txt
> new file mode 100644
> index 000000000000..fc58aa5effb5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/ste,mcde.txt
> @@ -0,0 +1,110 @@
> +ST-Ericsson Multi Channel Display Engine MCDE
> +
> +The ST-Ericsson MCDE is a display controller with support for compositing
> +and displaying several channels memory resident graphics data on DSI or
> +LCD displays or bridges. It is used in the ST-Ericsson U8500 platform.
> +
> +Required properties:
> +
> +- compatible: must be:
> +  "ste,mcde"

Only one version? This too is old enough, I'm not too worried about how 
specific the compatibles are here.

> +- reg: register base for the main MCDE control registers, should be
> +  0x1000 in size
> +- interrupts: the interrupt line for the MCDE
> +- epod-supply: a phandle to the EPOD regulator
> +- vana-supply: a phandle to the analog voltage regulator
> +- clocks: an array of the MCDE clocks in this strict order:
> +  MCDECLK (main MCDE clock), LCDCLK (LCD clock), PLLDSI
> +  (HDMI clock), DSI0ESCLK (DSI0 energy save clock),
> +  DSI1ESCLK (DSI1 energy save clock), DSI2ESCLK (DSI2 energy
> +  save clock)
> +- clock-names: must be the following array:
> +  "mcde", "lcd", "hdmi", "dsi0", "dsi1", "dsi0es", "dsi1es", "dsi2es"

dsi2 clock?

Should the dsi clocks be in the child nodes?

> +  to match the required clock inputs above.
> +- #address-cells: should be <1> (for the DSI hosts that will be children)
> +- #size-cells: should be <1> (for the DSI hosts that will be children)
> +- ranges: this should always be stated
> +
> +Required subnodes:
> +
> +The devicetree must specify subnodes for the DSI host adapters.
> +These must have the following characteristics:
> +
> +- compatible: must be:
> +  "ste,mcde-dsi"
> +- reg: must specify the register range for the DSI host
> +- vana-supply: phandle to the VANA voltage regulator
> +- #address-cells: should be <1>
> +- #size-cells: should be <0>
> +
> +Display panels and bridges will appear as children on the DSI hosts, and
> +the displays are connected to the DSI hosts using the common binding
> +for video transmitter interfaces; see
> +Documentation/devicetree/bindings/media/video-interfaces.txt
> +
> +If a DSI host is unused (not connected) it will have no children or ports
> +defined.
> +
> +Example:
> +
> +mcde@a0350000 {
> +	compatible = "ste,mcde";
> +	reg = <0xa0350000 0x1000>;
> +	interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
> +	epod-supply = <&db8500_b2r2_mcde_reg>;
> +	vana-supply = <&ab8500_ldo_ana_reg>;
> +	clocks = <&prcmu_clk PRCMU_MCDECLK>, /* Main MCDE clock */
> +		 <&prcmu_clk PRCMU_LCDCLK>, /* LCD clock */
> +		 <&prcmu_clk PRCMU_PLLDSI>, /* HDMI clock */
> +		 <&prcmu_clk PRCMU_DSI0CLK>, /* DSI 0 */
> +		 <&prcmu_clk PRCMU_DSI1CLK>, /* DSI 1 */
> +		 <&prcmu_clk PRCMU_DSI0ESCCLK>, /* TVout clock 0 */
> +		 <&prcmu_clk PRCMU_DSI1ESCCLK>, /* TVout clock 1 */
> +		 <&prcmu_clk PRCMU_DSI2ESCCLK>; /* TVout clock 2 */
> +	clock-names = "mcde", "lcd", "hdmi", "dsi0", "dsi1",
> +		    "dsi0es", "dsi1es", "dsi2es";
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +	ranges;

A non-empty ranges is preferred, then you can just do offsets below.

> +
> +	dsi0: dsi@a0351000 {
> +		compatible = "ste,mcde-dsi";
> +		reg = <0xa0351000 0x1000>;
> +		vana-supply = <&ab8500_ldo_ana_reg>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		port {
> +			dsi0_out: endpoint {
> +				remote-endpoint = <&panel_in>;
> +			};
> +		};
> +
> +		panel: display {

'panel' would be the somewhat more standard node name.

> +			compatible = "samsung,s6d16d0";
> +			reg = <0>;
> +			vdd1-supply = <&ab8500_ldo_aux1_reg>;
> +			reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
> +
> +			port {
> +				panel_in: endpoint {
> +					remote-endpoint = <&dsi0_out>;

You don't really need the graph here as it is already a child. Generally 
it is either or. The driver can support both ways though.

> +				};
> +			};
> +		};
> +
> +	};
> +	dsi1: dsi@a0352000 {
> +		compatible = "ste,mcde-dsi";
> +		reg = <0xa0352000 0x1000>;
> +		vana-supply = <&ab8500_ldo_ana_reg>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +	};
> +	dsi2: dsi@a0353000 {
> +		compatible = "ste,mcde-dsi";
> +		reg = <0xa0353000 0x1000>;
> +		vana-supply = <&ab8500_ldo_ana_reg>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +	};
> +};
> -- 
> 2.20.1
> 

_______________________________________________
linux-arm-kernel mailing list
[email-masked]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel