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

Commit 77bbd891 authored by Hyungwon Hwang's avatar Hyungwon Hwang Committed by Inki Dae
Browse files

drm/exynos: mic: add MIC driver



MIC(Mobile image compressor) is newly added IP in Exynos5433. MIC
resides between decon and mipi dsim, and compresses frame data by 50%.
With dsi, not display port, to send frame data to the panel, the
bandwidth is not enough. That is why this compressor is introduced.

Signed-off-by: default avatarHyungwon Hwang <human.hwang@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 8ccd0d0c
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>;
			};
		};
	};
};
+6 −0
Original line number Diff line number Diff line
@@ -103,3 +103,9 @@ config DRM_EXYNOS_GSC
	depends on DRM_EXYNOS_IPP && ARCH_EXYNOS5 && !ARCH_MULTIPLATFORM
	help
	  Choose this option if you want to use Exynos GSC for DRM.

config DRM_EXYNOS_MIC
	bool "Exynos DRM MIC"
	depends on (DRM_EXYNOS && DRM_EXYNOS5433_DECON)
	help
	  Choose this option if you want to use Exynos MIC for DRM.
+1 −0
Original line number Diff line number Diff line
@@ -22,5 +22,6 @@ exynosdrm-$(CONFIG_DRM_EXYNOS_IPP) += exynos_drm_ipp.o
exynosdrm-$(CONFIG_DRM_EXYNOS_FIMC)	+= exynos_drm_fimc.o
exynosdrm-$(CONFIG_DRM_EXYNOS_ROTATOR)	+= exynos_drm_rotator.o
exynosdrm-$(CONFIG_DRM_EXYNOS_GSC)	+= exynos_drm_gsc.o
exynosdrm-$(CONFIG_DRM_EXYNOS_MIC)     += exynos_drm_mic.o

obj-$(CONFIG_DRM_EXYNOS)		+= exynosdrm.o
+3 −3
Original line number Diff line number Diff line
@@ -357,6 +357,9 @@ static struct platform_driver *const exynos_drm_kms_drivers[] = {
#ifdef CONFIG_DRM_EXYNOS7_DECON
	&decon_driver,
#endif
#ifdef CONFIG_DRM_EXYNOS_MIC
	&mic_driver,
#endif
#ifdef CONFIG_DRM_EXYNOS_DP
	&dp_driver,
#endif
@@ -370,9 +373,6 @@ static struct platform_driver *const exynos_drm_kms_drivers[] = {
};

static struct platform_driver *const exynos_drm_non_kms_drivers[] = {
#ifdef CONFIG_DRM_EXYNOS_MIC
	&mic_driver,
#endif
#ifdef CONFIG_DRM_EXYNOS_G2D
	&g2d_driver,
#endif
+1 −0
Original line number Diff line number Diff line
@@ -314,4 +314,5 @@ extern struct platform_driver fimc_driver;
extern struct platform_driver rotator_driver;
extern struct platform_driver gsc_driver;
extern struct platform_driver ipp_driver;
extern struct platform_driver mic_driver;
#endif
Loading