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

Commit 75c73861 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

Summary:
. Add atomic feature support
  - Exynos also now supports atomic feature. However, it doesn't
    guarantee atomic operation yet, and is required for more cleanups.
    This time we just modified for Exynos drm driver to use atomic
    interfaces instead of legacy ones. Next time, we will enhance
    Exynos drm driver to support the atomic operation.
. Add iommu support
  - This is a patch series according to below Exynos iommu integration
    work with DT and dma-mapping subsystem,
    http://lwn.net/Articles/607626/
. Consolidate Exynos drm driver initialization.
  - This patch sereis resolves the issue that only the first compoments
    was bound when happened deferred probing for other pipelines and
    also makes the driver to be more cleanned up by moving the dispered
    codes for registering kms drivers to one place.
. Add new MIC, DECON drivers, and MIPI-DSI support for Exynos5433.
  - Add MIC(Mobile image compressor) driver. MIC is a new IP for Exynos5433
    and later, which is used to transfer frame data to MIPI-DSI controller
    compressing the data to reduce memory bandwidth.
  - Add DECON driver for Exynos5433 SoC. This IP is a dislay controller
    similar to Exynos7's one but this controller has much different registers
    from Exynos7's ones so this driver has been implemented separately.
    We will implement a helper modules for FIMD and two DECON controllers
    to remove duplicated codes later.
  - Add Exynos5433 SoC support to MIPI-DSI driver, and device tree
    relevant patches.

* 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (50 commits)
  ARM: dts: rename the clock of MIPI DSI 'pll_clk' to 'sclk_mipi'
  drm/exynos: dsi: do not set TE GPIO direction by input
  drm/exynos: dsi: add support for MIC driver as a bridge
  drm/exynos: dsi: add support for Exynos5433
  drm/exynos: dsi: make use of array for clock access
  drm/exynos: dsi: make use of driver data for static values
  drm/exynos: dsi: add macros for register access
  drm/exynos: dsi: rename pll_clk to sclk_clk
  drm/exynos: mic: add MIC driver
  of: add helper for getting endpoint node of specific identifiers
  drm/exynos: add Exynos5433 decon driver
  drm/exynos: fix the input prompt of Exynos7 DECON
  drm/exynos: add drm_iommu_attach_device_if_possible()
  drm/exynos: Add the dependency for DRM_EXYNOS to DPI/DSI/DP
  drm/exynos: remove the dependency of DP driver for ARCH_EXYNOS
  drm/exynos: do not wait for vblank at atomic operation
  drm/exynos: Remove unused vma field of exynos_drm_gem_obj
  drm/exynos: fimd: fix page fault issue with iommu
  drm/exynos: iommu: improve a check for non-iommu dma_ops
  drm/exynos: iommu: detach from default dma-mapping domain on init
  ...
parents b7ddeee5 4f01e650
Loading
Loading
Loading
Loading
+51 −0
Original line number Diff line number Diff line
Device-Tree bindings for Samsung Exynos SoC mobile image compressor (MIC)

MIC (mobile image compressor) resides between decon and mipi dsi. Mipi dsi is
not capable to transfer high resoltuion frame data as decon can send. MIC
solves this problem by compressing the frame data by 1/2 before it is
transferred through mipi dsi. The compressed frame data must be uncompressed in
the panel PCB.

Required properties:
- compatible: value should be "samsung,exynos5433-mic".
- reg: physical base address and length of the MIC registers set and system
       register of mic.
- clocks: must include clock specifiers corresponding to entries in the
	  clock-names property.
- clock-names: list of clock names sorted in the same order as the clocks
	       property. Must contain "pclk_mic0", "sclk_rgb_vclk_to_mic0".
- samsung,disp-syscon: the reference node for syscon for DISP block.
- ports: contains a port which is connected to decon node and dsi node.
	 address-cells and size-cells must 1 and 0, respectively.
- port: contains an endpoint node which is connected to the endpoint in the
	decon node or dsi node. The reg value must be 0 and 1 respectively.

Example:
SoC specific DT entry:
mic: mic@13930000 {
	compatible = "samsung,exynos5433-mic";
	reg = <0x13930000 0x48>;
	clocks = <&cmu_disp CLK_PCLK_MIC0>,
	       <&cmu_disp CLK_SCLK_RGB_VCLK_TO_MIC0>;
	clock-names = "pclk_mic0", "sclk_rgb_vclk_to_mic0";
	samsung,disp-syscon = <&syscon_disp>;

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

		port@0 {
			reg = <0>;
			mic_to_decon: endpoint {
				remote-endpoint = <&decon_to_mic>;
			};
		};

		port@1 {
			reg = <1>;
			mic_to_dsi: endpoint {
				remote-endpoint = <&dsi_to_mic>;
			};
		};
	};
};
+65 −0
Original line number Diff line number Diff line
Device-Tree bindings for Samsung Exynos SoC display controller (DECON)

DECON (Display and Enhancement Controller) is the Display Controller for the
Exynos series of SoCs which transfers the image data from a video memory
buffer to an external LCD interface.

Required properties:
- compatible: value should be "samsung,exynos5433-decon";
- reg: physical base address and length of the DECON registers set.
- interrupts: should contain a list of all DECON IP block interrupts in the
	      order: VSYNC, LCD_SYSTEM. The interrupt specifier format
	      depends on the interrupt controller used.
- interrupt-names: should contain the interrupt names: "vsync", "lcd_sys"
		   in the same order as they were listed in the interrupts
		   property.
- clocks: must include clock specifiers corresponding to entries in the
	  clock-names property.
- clock-names: list of clock names sorted in the same order as the clocks
	       property. Must contain "aclk_decon", "aclk_smmu_decon0x",
	       "aclk_xiu_decon0x", "pclk_smmu_decon0x", clk_decon_vclk",
	       "sclk_decon_eclk"
- ports: contains a port which is connected to mic node. address-cells and
	 size-cells must 1 and 0, respectively.
- port: contains an endpoint node which is connected to the endpoint in the mic
	node. The reg value muset be 0.
- i80-if-timings: specify whether the panel which is connected to decon uses
		  i80 lcd interface or mipi video interface. This node contains
		  no timing information as that of fimd does. Because there is
		  no register in decon to specify i80 interface timing value,
		  it is not needed, but make it remain to use same kind of node
		  in fimd and exynos7 decon.

Example:
SoC specific DT entry:
decon: decon@13800000 {
	compatible = "samsung,exynos5433-decon";
	reg = <0x13800000 0x2104>;
	clocks = <&cmu_disp CLK_ACLK_DECON>, <&cmu_disp CLK_ACLK_SMMU_DECON0X>,
		<&cmu_disp CLK_ACLK_XIU_DECON0X>,
		<&cmu_disp CLK_PCLK_SMMU_DECON0X>,
		<&cmu_disp CLK_SCLK_DECON_VCLK>,
		<&cmu_disp CLK_SCLK_DECON_ECLK>;
	clock-names = "aclk_decon", "aclk_smmu_decon0x", "aclk_xiu_decon0x",
		"pclk_smmu_decon0x", "sclk_decon_vclk", "sclk_decon_eclk";
	interrupt-names = "vsync", "lcd_sys";
	interrupts = <0 202 0>, <0 203 0>;

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

		port@0 {
			reg = <0>;
			decon_to_mic: endpoint {
				remote-endpoint = <&mic_to_decon>;
			};
		};
	};
};

Board specific DT entry:
&decon {
	i80-if-timings {
	};
};
+25 −6
Original line number Diff line number Diff line
@@ -6,17 +6,19 @@ Required properties:
		"samsung,exynos4210-mipi-dsi" /* for Exynos4 SoCs */
		"samsung,exynos4415-mipi-dsi" /* for Exynos4415 SoC */
		"samsung,exynos5410-mipi-dsi" /* for Exynos5410/5420/5440 SoCs */
		"samsung,exynos5433-mipi-dsi" /* for Exynos5433 SoCs */
  - 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
  - clock-names: should include "bus_clk"and "sclk_mipi" entries
		 the use of "pll_clk" is deprecated
  - 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
  - samsung,pll-clock-frequency: specifies frequency of the oscillator clock
  - #address-cells, #size-cells: should be set respectively to <1> and <0>
    according to DSI host bindings (see MIPI DSI bindings [1])

@@ -30,10 +32,19 @@ 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;
  port node inbound:
    - reg: (required) must be 0.
  port node outbound:
    - reg: (required) must be 1.

  endpoint node of DSI port (reg = 1):
  endpoint node connected from mic node (reg = 0):
    - remote-endpoint: specifies the endpoint in mic node. This node is required
		       for Exynos5433 mipi dsi. So mic can access to panel node
		       thoughout this dsi node.
  endpoint node connected to panel node (reg = 1):
    - remote-endpoint: specifies the endpoint in panel node. This node is
		       required in all kinds of exynos mipi dsi to represent
		       the connection between mipi dsi and panel.
    - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst
      mode
    - samsung,esc-clock-frequency: specifies DSI frequency in escape mode
@@ -48,7 +59,7 @@ Example:
		reg = <0x11C80000 0x10000>;
		interrupts = <0 79 0>;
		clocks = <&clock 286>, <&clock 143>;
		clock-names = "bus_clk", "pll_clk";
		clock-names = "bus_clk", "sclk_mipi";
		phys = <&mipi_phy 1>;
		phy-names = "dsim";
		vddcore-supply = <&vusb_reg>;
@@ -72,7 +83,15 @@ Example:
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				decon_to_mic: endpoint {
					remote-endpoint = <&mic_to_decon>;
				};
			};

			port@1 {
				reg = <1>;
				dsi_ep: endpoint {
					reg = <0>;
					samsung,burst-clock-frequency = <500000000>;
+1 −1
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@
		phys = <&mipi_phy 1>;
		phy-names = "dsim";
		clocks = <&clock CLK_DSIM0>, <&clock CLK_SCLK_MIPI0>;
		clock-names = "bus_clk", "pll_clk";
		clock-names = "bus_clk", "sclk_mipi";
		status = "disabled";
		#address-cells = <1>;
		#size-cells = <0>;
+5 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include "drmP.h"
#include "drm_crtc.h"
#include "drm_crtc_helper.h"
#include "drm_atomic_helper.h"

/* Brightness scale on the Parade chip */
#define PS8622_MAX_BRIGHTNESS 0xff
@@ -499,10 +500,13 @@ static void ps8622_connector_destroy(struct drm_connector *connector)
}

static const struct drm_connector_funcs ps8622_connector_funcs = {
	.dpms = drm_helper_connector_dpms,
	.dpms = drm_atomic_helper_connector_dpms,
	.fill_modes = drm_helper_probe_single_connector_modes,
	.detect = ps8622_detect,
	.destroy = ps8622_connector_destroy,
	.reset = drm_atomic_helper_connector_reset,
	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
};

static int ps8622_attach(struct drm_bridge *bridge)
Loading