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

Commit 96976c3d authored by Ajay Kumar's avatar Ajay Kumar Committed by Inki Dae
Browse files

drm/exynos: Add DECON driver

This patch is based on exynos-drm-next branch of Inki Dae's tree at:
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git



DECON(Display and Enhancement Controller) is the new IP
in exynos7 SOC for generating video signals using pixel data.

DECON driver can be used to drive 2 different interfaces on Exynos7:
DECON-INT(video controller) and DECON-EXT(Mixer for HDMI)

The existing FIMD driver code was used as a template to create
DECON driver. Only DECON-INT is supported as of now, and
DECON-EXT support will be added later.

The current version of the driver supports video mode displays.

Changelog v2:
- Change config name, DRM_EXYNOS_DECON to DRM_EXYNOS7_DECON.

Signed-off-by: default avatarAkshu Agrawal <akshua@gmail.com>
Signed-off-by: default avatarAjay Kumar <ajaykumar.rs@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 936ce5cc
Loading
Loading
Loading
Loading
+68 −0
Original line number Diff line number Diff line
Device-Tree bindings for Samsung Exynos7 SoC display controller (DECON)

DECON (Display and Enhancement Controller) is the Display Controller for the
Exynos7 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,exynos7-decon";

- reg: physical base address and length of the DECON registers set.

- interrupt-parent: should be the phandle of the decon controller's
		parent interrupt controller.

- interrupts: should contain a list of all DECON IP block interrupts in the
		 order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier
		 format depends on the interrupt controller used.

- interrupt-names: should contain the interrupt names: "fifo", "vsync",
	"lcd_sys", in the same order as they were listed in the interrupts
        property.

- pinctrl-0: pin control group to be used for this controller.

- pinctrl-names: must contain a "default" entry.

- 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_decon0", "aclk_decon0",
	       "decon0_eclk", "decon0_vclk".
- i80-if-timings: timing configuration for lcd i80 interface support.

Optional Properties:
- samsung,power-domain: a phandle to DECON power domain node.
- display-timings: timing settings for DECON, as described in document [1].
		Can be used in case timings cannot be provided otherwise
		or to override timings provided by the panel.

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

Example:

SoC specific DT entry:

	decon@13930000 {
		compatible = "samsung,exynos7-decon";
		interrupt-parent = <&combiner>;
		reg = <0x13930000 0x1000>;
		interrupt-names = "lcd_sys", "vsync", "fifo";
		interrupts = <0 188 0>, <0 189 0>, <0 190 0>;
		clocks = <&clock_disp PCLK_DECON_INT>,
			 <&clock_disp ACLK_DECON_INT>,
			 <&clock_disp SCLK_DECON_INT_ECLK>,
			 <&clock_disp SCLK_DECON_INT_EXTCLKPLL>;
		clock-names = "pclk_decon0", "aclk_decon0", "decon0_eclk",
				"decon0_vclk";
		status = "disabled";
	};

Board specific DT entry:

	decon@13930000 {
		pinctrl-0 = <&lcd_clk &pwm1_out>;
		pinctrl-names = "default";
		status = "okay";
	};
+10 −3
Original line number Diff line number Diff line
@@ -24,9 +24,16 @@ config DRM_EXYNOS_FIMD
	help
	  Choose this option if you want to use Exynos FIMD for DRM.

config DRM_EXYNOS7_DECON
	bool "Exynos DRM DECON"
	depends on DRM_EXYNOS
	select FB_MODE_HELPERS
	help
	  Choose this option if you want to use Exynos DECON for DRM.

config DRM_EXYNOS_DPI
	bool "EXYNOS DRM parallel output support"
	depends on DRM_EXYNOS_FIMD
	depends on (DRM_EXYNOS_FIMD || DRM_EXYNOS7_DECON)
	select DRM_PANEL
	default n
	help
@@ -34,7 +41,7 @@ config DRM_EXYNOS_DPI

config DRM_EXYNOS_DSI
	bool "EXYNOS DRM MIPI-DSI driver support"
	depends on DRM_EXYNOS_FIMD
	depends on (DRM_EXYNOS_FIMD || DRM_EXYNOS7_DECON)
	select DRM_MIPI_DSI
	select DRM_PANEL
	default n
@@ -43,7 +50,7 @@ config DRM_EXYNOS_DSI

config DRM_EXYNOS_DP
	bool "EXYNOS DRM DP driver support"
	depends on DRM_EXYNOS_FIMD && ARCH_EXYNOS && (DRM_PTN3460=n || DRM_PTN3460=y || DRM_PTN3460=DRM_EXYNOS)
	depends on (DRM_EXYNOS_FIMD || DRM_EXYNOS7DECON) && ARCH_EXYNOS && (DRM_PTN3460=n || DRM_PTN3460=y || DRM_PTN3460=DRM_EXYNOS)
	default DRM_EXYNOS
	select DRM_PANEL
	help
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ exynosdrm-y := exynos_drm_drv.o exynos_drm_encoder.o \

exynosdrm-$(CONFIG_DRM_EXYNOS_IOMMU) += exynos_drm_iommu.o
exynosdrm-$(CONFIG_DRM_EXYNOS_FIMD)	+= exynos_drm_fimd.o
exynosdrm-$(CONFIG_DRM_EXYNOS7_DECON)	+= exynos7_drm_decon.o
exynosdrm-$(CONFIG_DRM_EXYNOS_DPI)	+= exynos_drm_dpi.o
exynosdrm-$(CONFIG_DRM_EXYNOS_DSI)	+= exynos_drm_dsi.o
exynosdrm-$(CONFIG_DRM_EXYNOS_DP)	+= exynos_dp_core.o exynos_dp_reg.o
+990 −0

File added.

Preview size limit exceeded, changes collapsed.

+4 −0
Original line number Diff line number Diff line
@@ -556,6 +556,9 @@ static struct platform_driver *const exynos_drm_kms_drivers[] = {
#ifdef CONFIG_DRM_EXYNOS_FIMD
	&fimd_driver,
#endif
#ifdef CONFIG_DRM_EXYNOS7_DECON
	&decon_driver,
#endif
#ifdef CONFIG_DRM_EXYNOS_DP
	&dp_driver,
#endif
@@ -612,6 +615,7 @@ static const char * const strings[] = {
	"samsung,exynos3",
	"samsung,exynos4",
	"samsung,exynos5",
	"samsung,exynos7",
};

static struct platform_driver exynos_drm_platform_driver = {
Loading