diff mbox series

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

Message ID 20190207083647.20615-3-linus.walleij@linaro.org
State New
Headers show
Series None | expand

Commit Message

Linus Walleij Feb. 7, 2019, 8:36 a.m. UTC
This adds the device tree bindings for the ST-Ericsson
Multi Channel Display Engine MCDE as found in the U8500
SoCs.

Cc: devicetree@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

---
 .../devicetree/bindings/display/ste,mcde.txt  | 110 ++++++++++++++++++
 1 file changed, 110 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/ste,mcde.txt

-- 
2.20.1

Comments

Rob Herring (Arm) Feb. 25, 2019, 10:31 p.m. UTC | #1
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: devicetree@vger.kernel.org

> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

> ---

>  .../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

>
diff mbox series

Patch

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"
+- 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"
+  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;
+
+	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 {
+			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>;
+				};
+			};
+		};
+
+	};
+	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>;
+	};
+};