Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13b93892 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge branch 'exynos-drm-next' of...

Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next

Summaries:
- Add MIPI-DSI Driver, and dt bindigs
- Add S6E8AA0 MIPI-DSI based panel drivers, and dt bindings
- Add LD9040 parallel panel driver
 . this driver is placed in drivers/gpu/drm/panel, and it seems
   to be used for exynos drm as of now,
- Some fixups

Changelog v2:
- Remove super device support, and relevant dt bindings for more reviews.
- Fix module build errors you pointed out.
- Re-based it to drm-next again.

* 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos:
  drm/bridge: export ptn3460_init function
  drm/exynos: remove MODULE_DEVICE_TABLE definitions
  ARM: dts: exynos4412-trats2: enable exynos/fimd node
  ARM: dts: exynos4210-trats: enable exynos/fimd node
  ARM: dts: exynos4412-trats2: add panel node
  ARM: dts: exynos4210-trats: add panel node
  ARM: dts: exynos4: add MIPI DSI Master node
  drm/panel: add S6E8AA0 driver
  ARM: dts: exynos4210-universal_c210: add proper panel node
  drm/panel: add ld9040 driver
  panel/ld9040: add DT bindings
  panel/s6e8aa0: add DT bindings
  drm/exynos: add DSIM driver
  exynos/dsim: add DT bindings
  drm/exynos: disallow fbdev initialization if no device is connected
  drm/mipi_dsi: create dsi devices only for nodes with reg property
  drm/mipi_dsi: add flags to DSI messages
parents 14c6d5bd 96e112c4
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
Samsung LD9040 AMOLED LCD parallel RGB panel with SPI control bus

Required properties:
  - compatible: "samsung,ld9040"
  - reg: address of the panel on SPI bus
  - vdd3-supply: core voltage supply
  - vci-supply: voltage supply for analog circuits
  - reset-gpios: a GPIO spec for the reset pin
  - display-timings: timings for the connected panel according to [1]

The panel must obey rules for SPI slave device specified in document [2].

Optional properties:
  - power-on-delay: delay after turning regulators on [ms]
  - reset-delay: delay after reset sequence [ms]
  - panel-width-mm: physical panel width [mm]
  - panel-height-mm: physical panel height [mm]

The device node can contain one 'port' child node with one child
'endpoint' node, according to the bindings defined in [3]. This
node should describe panel's video bus.

[1]: Documentation/devicetree/bindings/video/display-timing.txt
[2]: Documentation/devicetree/bindings/spi/spi-bus.txt
[3]: Documentation/devicetree/bindings/media/video-interfaces.txt

Example:

	lcd@0 {
		compatible = "samsung,ld9040";
		reg = <0>;
		vdd3-supply = <&ldo7_reg>;
		vci-supply = <&ldo17_reg>;
		reset-gpios = <&gpy4 5 0>;
		spi-max-frequency = <1200000>;
		spi-cpol;
		spi-cpha;
		power-on-delay = <10>;
		reset-delay = <10>;
		panel-width-mm = <90>;
		panel-height-mm = <154>;

		display-timings {
			timing {
				clock-frequency = <23492370>;
				hactive = <480>;
				vactive = <800>;
				hback-porch = <16>;
				hfront-porch = <16>;
				vback-porch = <2>;
				vfront-porch = <28>;
				hsync-len = <2>;
				vsync-len = <1>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};

		port {
			lcd_ep: endpoint {
				remote-endpoint = <&fimd_dpi_ep>;
			};
		};
	};
+56 −0
Original line number Diff line number Diff line
Samsung S6E8AA0 AMOLED LCD 5.3 inch panel

Required properties:
  - compatible: "samsung,s6e8aa0"
  - reg: the virtual channel number of a DSI peripheral
  - vdd3-supply: core voltage supply
  - vci-supply: voltage supply for analog circuits
  - reset-gpios: a GPIO spec for the reset pin
  - display-timings: timings for the connected panel as described by [1]

Optional properties:
  - power-on-delay: delay after turning regulators on [ms]
  - reset-delay: delay after reset sequence [ms]
  - init-delay: delay after initialization sequence [ms]
  - panel-width-mm: physical panel width [mm]
  - panel-height-mm: physical panel height [mm]
  - flip-horizontal: boolean to flip image horizontally
  - flip-vertical: boolean to flip image vertically

The device node can contain one 'port' child node with one child
'endpoint' node, according to the bindings defined in [2]. This
node should describe panel's video bus.

[1]: Documentation/devicetree/bindings/video/display-timing.txt
[2]: Documentation/devicetree/bindings/media/video-interfaces.txt

Example:

	panel {
		compatible = "samsung,s6e8aa0";
		reg = <0>;
		vdd3-supply = <&vcclcd_reg>;
		vci-supply = <&vlcd_reg>;
		reset-gpios = <&gpy4 5 0>;
		power-on-delay= <50>;
		reset-delay = <100>;
		init-delay = <100>;
		panel-width-mm = <58>;
		panel-height-mm = <103>;
		flip-horizontal;
		flip-vertical;

		display-timings {
			timing0: timing-0 {
				clock-frequency = <57153600>;
				hactive = <720>;
				vactive = <1280>;
				hfront-porch = <5>;
				hback-porch = <5>;
				hsync-len = <5>;
				vfront-porch = <13>;
				vback-porch = <1>;
				vsync-len = <2>;
			};
		};
	};
+80 −0
Original line number Diff line number Diff line
Exynos MIPI DSI Master

Required properties:
  - compatible: "samsung,exynos4210-mipi-dsi"
  - reg: physical base address and length of the registers set for the device
  - interrupts: should contain DSI interrupt
  - clocks: list of clock specifiers, must contain an entry for each required
    entry in clock-names
  - clock-names: should include "bus_clk"and "pll_clk" entries
  - phys: list of phy specifiers, must contain an entry for each required
    entry in phy-names
  - phy-names: should include "dsim" entry
  - vddcore-supply: MIPI DSIM Core voltage supply (e.g. 1.1V)
  - vddio-supply: MIPI DSIM I/O and PLL voltage supply (e.g. 1.8V)
  - samsung,pll-clock-frequency: specifies frequency of the "pll_clk" clock
  - #address-cells, #size-cells: should be set respectively to <1> and <0>
    according to DSI host bindings (see MIPI DSI bindings [1])

Optional properties:
  - samsung,power-domain: a phandle to DSIM power domain node

Child nodes:
  Should contain DSI peripheral nodes (see MIPI DSI bindings [1]).

Video interfaces:
  Device node can contain video interface port nodes according to [2].
  The following are properties specific to those nodes:

  port node:
    - reg: (required) can be 0 for input RGB/I80 port or 1 for DSI port;

  endpoint node of DSI port (reg = 1):
    - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst
      mode
    - samsung,esc-clock-frequency: specifies DSI frequency in escape mode

[1]: Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt
[2]: Documentation/devicetree/bindings/media/video-interfaces.txt

Example:

	dsi@11C80000 {
		compatible = "samsung,exynos4210-mipi-dsi";
		reg = <0x11C80000 0x10000>;
		interrupts = <0 79 0>;
		clocks = <&clock 286>, <&clock 143>;
		clock-names = "bus_clk", "pll_clk";
		phys = <&mipi_phy 1>;
		phy-names = "dsim";
		vddcore-supply = <&vusb_reg>;
		vddio-supply = <&vmipi_reg>;
		samsung,power-domain = <&pd_lcd0>;
		#address-cells = <1>;
		#size-cells = <0>;
		samsung,pll-clock-frequency = <24000000>;

		panel@1 {
			reg = <0>;
			...
			port {
				panel_ep: endpoint {
					remote-endpoint = <&dsi_ep>;
				};
			};
		};

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@1 {
				dsi_ep: endpoint {
					reg = <0>;
					samsung,burst-clock-frequency = <500000000>;
					samsung,esc-clock-frequency = <20000000>;
					remote-endpoint = <&panel_ep>;
				};
			};
		};
	};
+14 −0
Original line number Diff line number Diff line
@@ -104,6 +104,20 @@
		reg = <0x10010000 0x400>;
	};

	dsi_0: dsi@11C80000 {
		compatible = "samsung,exynos4210-mipi-dsi";
		reg = <0x11C80000 0x10000>;
		interrupts = <0 79 0>;
		samsung,power-domain = <&pd_lcd0>;
		phys = <&mipi_phy 1>;
		phy-names = "dsim";
		clocks = <&clock 286>, <&clock 143>;
		clock-names = "bus_clk", "pll_clk";
		status = "disabled";
		#address-cells = <1>;
		#size-cells = <0>;
	};

	camera {
		compatible = "samsung,fimc", "simple-bus";
		status = "disabled";
+61 −0
Original line number Diff line number Diff line
@@ -353,6 +353,67 @@
		};
	};

	dsi_0: dsi@11C80000 {
		vddcore-supply = <&vusb_reg>;
		vddio-supply = <&vmipi_reg>;
		samsung,pll-clock-frequency = <24000000>;
		status = "okay";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@1 {
				reg = <1>;

				dsi_out: endpoint {
					remote-endpoint = <&dsi_in>;
					samsung,burst-clock-frequency = <500000000>;
					samsung,esc-clock-frequency = <20000000>;
				};
			};
		};

		panel@0 {
			reg = <0>;
			compatible = "samsung,s6e8aa0";
			vdd3-supply = <&vcclcd_reg>;
			vci-supply = <&vlcd_reg>;
			reset-gpios = <&gpy4 5 0>;
			power-on-delay= <50>;
			reset-delay = <100>;
			init-delay = <100>;
			flip-horizontal;
			flip-vertical;
			panel-width-mm = <58>;
			panel-height-mm = <103>;

			display-timings {
				timing-0 {
					clock-frequency = <57153600>;
					hactive = <720>;
					vactive = <1280>;
					hfront-porch = <5>;
					hback-porch = <5>;
					hsync-len = <5>;
					vfront-porch = <13>;
					vback-porch = <1>;
					vsync-len = <2>;
				};
			};

			port {
				dsi_in: endpoint {
					remote-endpoint = <&dsi_out>;
				};
			};
		};
	};

	fimd@11c00000 {
		status = "okay";
	};

	camera {
		pinctrl-names = "default";
		pinctrl-0 = <>;
Loading