Commit ad6d17e1 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring
Browse files

dt-bindings: display: samsung,exynos5-dp: convert to DT Schema



Convert Samsung Exynos5250/5420 SoC Display Port Controller bindings to
DT schema with a change: add power-domains, already used in DTS.

This Display Port controller is actually variant of Analogix Display
Port bridge, however new DT Schema does not reference analogix,dp.yaml,
because of incompatibilities in the driver.  The analogix,dp.yaml
expects two ports, input and output, but Linux Exynos DP DRM driver and
DTS use only one port: output.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarConor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20240313182855.14140-1-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 4cece764
Loading
Loading
Loading
Loading
+0 −112
Original line number Diff line number Diff line
The Exynos display port interface should be configured based on
the type of panel connected to it.

We use two nodes:
	-dp-controller node
	-dptx-phy node(defined inside dp-controller node)

For the DP-PHY initialization, we use the dptx-phy node.
Required properties for dptx-phy: deprecated, use phys and phy-names
	-reg: deprecated
		Base address of DP PHY register.
	-samsung,enable-mask: deprecated
		The bit-mask used to enable/disable DP PHY.

For the Panel initialization, we read data from dp-controller node.
Required properties for dp-controller:
	-compatible:
		should be "samsung,exynos5-dp".
	-reg:
		physical base address of the controller and length
		of memory mapped region.
	-interrupts:
		interrupt combiner values.
	-clocks:
		from common clock binding: handle to dp clock.
	-clock-names:
		from common clock binding: Shall be "dp".
	-phys:
		from general PHY binding: the phandle for the PHY device.
	-phy-names:
		from general PHY binding: Should be "dp".

Optional properties for dp-controller:
	-interlaced:
		interlace scan mode.
			Progressive if defined, Interlaced if not defined
	-vsync-active-high:
		VSYNC polarity configuration.
			High if defined, Low if not defined
	-hsync-active-high:
		HSYNC polarity configuration.
			High if defined, Low if not defined
	-samsung,hpd-gpio:
		Hotplug detect GPIO.
			Indicates which GPIO should be used for hotplug
			detection
	-video interfaces: Device node can contain video interface port
			nodes according to [1].
	- display-timings: timings for the connected panel as described by
		Documentation/devicetree/bindings/display/panel/display-timing.txt

For the below properties, please refer to Analogix DP binding document:
 * Documentation/devicetree/bindings/display/bridge/analogix,dp.yaml
	-phys (required)
	-phy-names (required)
	-hpd-gpios (optional)
	 force-hpd (optional)

Deprecated properties for DisplayPort:
-interlaced:            deprecated prop that can parsed from drm_display_mode.
-vsync-active-high:     deprecated prop that can parsed from drm_display_mode.
-hsync-active-high:     deprecated prop that can parsed from drm_display_mode.
-samsung,ycbcr-coeff:   deprecated prop that can parsed from drm_display_mode.
-samsung,dynamic-range: deprecated prop that can parsed from drm_display_mode.
-samsung,color-space:   deprecated prop that can parsed from drm_display_info.
-samsung,color-depth:   deprecated prop that can parsed from drm_display_info.
-samsung,link-rate:     deprecated prop that can reading from monitor by dpcd method.
-samsung,lane-count:    deprecated prop that can reading from monitor by dpcd method.
-samsung,hpd-gpio:      deprecated name for hpd-gpios.

-------------------------------------------------------------------------------

Example:

SOC specific portion:
	dp-controller {
		compatible = "samsung,exynos5-dp";
		reg = <0x145b0000 0x10000>;
		interrupts = <10 3>;
		interrupt-parent = <&combiner>;
		clocks = <&clock 342>;
		clock-names = "dp";

		phys = <&dp_phy>;
		phy-names = "dp";
	};

Board Specific portion:
	dp-controller {
		display-timings {
			native-mode = <&lcd_timing>;
			lcd_timing: 1366x768 {
				clock-frequency = <70589280>;
				hactive = <1366>;
				vactive = <768>;
				hfront-porch = <40>;
				hback-porch = <40>;
				hsync-len = <32>;
				vback-porch = <10>;
				vfront-porch = <12>;
				vsync-len = <6>;
			};
		};

		ports {
			port@0 {
				dp_out: endpoint {
					remote-endpoint = <&bridge_in>;
				};
			};
		};
	};
+163 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/samsung/samsung,exynos5-dp.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung Exynos5250/Exynos5420 SoC Display Port

maintainers:
  - Inki Dae <inki.dae@samsung.com>
  - Seung-Woo Kim <sw0312.kim@samsung.com>
  - Kyungmin Park <kyungmin.park@samsung.com>
  - Krzysztof Kozlowski <krzk@kernel.org>

properties:
  compatible:
    const: samsung,exynos5-dp

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: dp

  display-timings:
    $ref: /schemas/display/panel/display-timings.yaml#

  interrupts:
    maxItems: 1

  hpd-gpios:
    description:
      Hotplug detect GPIO.
      Indicates which GPIO should be used for hotplug detection

  phys:
    maxItems: 1

  phy-names:
    items:
      - const: dp

  power-domains:
    maxItems: 1

  interlaced:
    type: boolean
    deprecated: true
    description:
      Interlace scan mode. Progressive if defined, interlaced if not defined.

  vsync-active-high:
    type: boolean
    deprecated: true
    description:
      VSYNC polarity configuration. High if defined, low if not defined

  hsync-active-high:
    type: boolean
    deprecated: true
    description:
      HSYNC polarity configuration. High if defined, low if not defined

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port:
        $ref: /schemas/graph.yaml#/properties/port
        description:
          Port node with one endpoint connected to a dp-connector node.

    required:
      - port

  samsung,hpd-gpios:
    maxItems: 1
    deprecated: true

  samsung,ycbcr-coeff:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can parsed from drm_display_mode.

  samsung,dynamic-range:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can parsed from drm_display_mode.

  samsung,color-space:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can parsed from drm_display_info.

  samsung,color-depth:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can parsed from drm_display_info.

  samsung,link-rate:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can reading from monitor by dpcd method.

  samsung,lane-count:
    $ref: /schemas/types.yaml#/definitions/uint32
    deprecated: true
    description:
      Deprecated prop that can reading from monitor by dpcd method.

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts
  - phys
  - phy-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/exynos5250.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    dp-controller@145b0000 {
        compatible = "samsung,exynos5-dp";
        reg = <0x145b0000 0x1000>;
        clocks = <&clock CLK_DP>;
        clock-names = "dp";
        interrupts = <10 3>;
        interrupt-parent = <&combiner>;
        phys = <&dp_phy>;
        phy-names = "dp";
        pinctrl-0 = <&dp_hpd>;
        pinctrl-names = "default";
        power-domains = <&pd_disp1>;

        samsung,color-space = <0>;
        samsung,color-depth = <1>;
        samsung,link-rate = <0x0a>;
        samsung,lane-count = <2>;
        hpd-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>;

        ports {
            port {
                dp_out: endpoint {
                    remote-endpoint = <&bridge_in>;
                };
            };
        };
    };