From patchwork Fri Oct 10 12:48:36 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 5065311 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 5B2DB9F2F1 for ; Fri, 10 Oct 2014 12:54:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 624C320268 for ; Fri, 10 Oct 2014 12:54:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B764420253 for ; Fri, 10 Oct 2014 12:54:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752770AbaJJMyo (ORCPT ); Fri, 10 Oct 2014 08:54:44 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:11201 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751684AbaJJMym (ORCPT ); Fri, 10 Oct 2014 08:54:42 -0400 Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0ND800CJJBV2MB80@mailout3.samsung.com>; Fri, 10 Oct 2014 21:54:38 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.125]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id C2.C6.18484.E07D7345; Fri, 10 Oct 2014 21:54:38 +0900 (KST) X-AuditID: cbfee68f-f791c6d000004834-c2-5437d70e0180 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 60.98.09430.D07D7345; Fri, 10 Oct 2014 21:54:38 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0ND800KK4BTARM80@mmp1.samsung.com>; Fri, 10 Oct 2014 21:54:37 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org Cc: jy0922.shim@samsung.com, inki.dae@samsung.com, kgene.kim@samsung.com, seanpaul@google.com, ajaynumb@gmail.com, jg1.han@samsung.com, prashanth.g@samsung.com, Ajay Kumar , Akshu Agrawal Subject: [RFC PATCH] drm/exynos: Add DECON driver Date: Fri, 10 Oct 2014 18:18:36 +0530 Message-id: <1412945316-26877-1-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRmVeSWpSXmKPExsWyRsSkVpfvunmIwY4v4hYH3h9ksdjwZiGz xarP51gt5h8BEle+vmezmHR/AovF5YWXWC1e3LvIYtG74CqbxYzz+5gsVh3ewG4x92CuA4/H zll32T0WbCr1uN99nMmjb8sqRo/Pm+QCWKO4bFJSczLLUov07RK4Ml42TWApWNzIXLH24mqm Bsb+3UxdjJwcEgImErs2HWeEsMUkLtxbz9bFyMUhJLCUUeLTpbusMEWPX7QyQyQWMUo82dzC DuFMYJI4828B2Cg2AW2JbdNvsnQxcnCICKRIPP/LB1LDLPCRUeLgv7dgK4QFDCVmXDrHBFLD IqAq0bNcDiTMK+AhcfP9ZmaQsISAgsScSTYgrRICq9gl/i3pZAepYREQkPg2+RALRI2sxKYD zBC3SUocXHGDZQKj4AJGhlWMoqkFyQXFSelFxnrFibnFpXnpesn5uZsYgWF++t+z/h2Mdw9Y H2IU4GBU4uHVkDcPEWJNLCuuzD3EaAq0YSKzlGhyPjCa8kriDY3NjCxMTUyNjcwtzZTEeRdK /QwWEkhPLEnNTk0tSC2KLyrNSS0+xMjEwSnVwJhX+0uiLT2Wa/3zhfdvT5O4ZbnQlu2Mv2Nt 7mzzWz8v/ebS+mDaGDYnukE3/+mFG/vz5WeoPP790UHGZeXVXgMHE5NTzbEVMSHGOb4Hqp8W Jqryea1uWFHWV563MUQ4bY7dg2+6F6r0Td88O8/Hyvf3lfIkZrmAkllpT+6eMXqtH7XN9NI5 TyWW4oxEQy3mouJEADam7IRuAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrKIsWRmVeSWpSXmKPExsVy+t9jAV2+6+YhBsf2sVsceH+QxWLDm4XM Fqs+n2O1mH8ESFz5+p7NYtL9CSwWlxdeYrV4ce8ii0XvgqtsFjPO72OyWHV4A7vF3IO5Djwe O2fdZfdYsKnU4373cSaPvi2rGD0+b5ILYI1qYLTJSE1MSS1SSM1Lzk/JzEu3VfIOjneONzUz MNQ1tLQwV1LIS8xNtVVy8QnQdcvMATpPSaEsMacUKBSQWFyspG+HaUJoiJuuBUxjhK5vSBBc j5EBGkhYw5jxsmkCS8HiRuaKtRdXMzUw9u9m6mLk5JAQMJF4/KKVGcIWk7hwbz1bFyMXh5DA IkaJJ5tb2CGcCUwSZ/4tAOtgE9CW2Db9JksXIweHiECKxPO/fCA1zAIfGSUO/nvLCFIjLGAo MePSOSaQGhYBVYme5XIgYV4BD4mb7zczg4QlBBQk5kyymcDIvYCRYRWjaGpBckFxUnqukV5x Ym5xaV66XnJ+7iZGcBQ9k97BuKrB4hCjAAejEg/vBRnzECHWxLLiytxDjBIczEoivCpXgUK8 KYmVValF+fFFpTmpxYcYTYF2T2SWEk3OB0Z4Xkm8obGJuamxqaWJhYmZpZI478FW60AhgfTE ktTs1NSC1CKYPiYOTqkGxpK/H+WebAvn37A0+cpl1UdHo+WrBOMsT08LjNEtrOI9wcxy6faD BdPkTrgZuKivXqrh63f2QKNsxBFb+6m/bp3ieLp0xpWdUx6wVKzXWTvtxZ4zqQJKly+dWVo5 rcaDmU91oWhadcCtCvvPCR2LjvW63/s484X24mfflnOz9XBP6P4zaaJp7mYlluKMREMt5qLi RADDs4vsuAIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This series 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. Signed-off-by: Akshu Agrawal Signed-off-by: Ajay Kumar --- .../devicetree/bindings/video/exynos-decon.txt | 68 ++ drivers/gpu/drm/exynos/Kconfig | 11 +- drivers/gpu/drm/exynos/Makefile | 1 + drivers/gpu/drm/exynos/exynos_drm_decon.c | 1086 ++++++++++++++++++++ drivers/gpu/drm/exynos/exynos_drm_drv.c | 17 +- drivers/gpu/drm/exynos/exynos_drm_drv.h | 11 + include/video/samsung_decon.h | 346 +++++++ 7 files changed, 1537 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/video/exynos-decon.txt create mode 100644 drivers/gpu/drm/exynos/exynos_drm_decon.c create mode 100644 include/video/samsung_decon.h diff --git a/Documentation/devicetree/bindings/video/exynos-decon.txt b/Documentation/devicetree/bindings/video/exynos-decon.txt new file mode 100644 index 0000000..e865650 --- /dev/null +++ b/Documentation/devicetree/bindings/video/exynos-decon.txt @@ -0,0 +1,68 @@ +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", "sclk_dsd", aclk_lh_disp0", + "aclk_disp", "aclk_lh_disp1". + +Optional Properties: +- samsung,power-domain: a phandle to DECON power domain node. + +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_disp SCLK_DSD>, + <&clock_bus0 ACLK_LH_DISP0>, + <&clock_disp ACLK_CP_DISP>, + <&clock_bus0 ACLK_LH_DISP1>; + clock-names = "pclk_decon0", "aclk_decon0", "decon0_eclk", + "decon0_vclk", "sclk_dsd", "aclk_lh_disp0", + "aclk_disp", "aclk_lh_disp1"; + status = "disabled"; + }; + +Board specific DT entry: + + decon@13930000 { + pinctrl-0 = <&lcd_clk &pwm1_out>; + pinctrl-names = "default"; + status = "okay"; + }; diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index fd1c070..89275ea 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -31,6 +31,13 @@ config DRM_EXYNOS_FIMD help Choose this option if you want to use Exynos FIMD for DRM. +config DRM_EXYNOS_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 @@ -41,7 +48,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_EXYNOS_DECON) select DRM_MIPI_DSI select DRM_PANEL default n @@ -50,7 +57,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_EXYNOS_DECON) && ARCH_EXYNOS && (DRM_PTN3460=n || DRM_PTN3460=y || DRM_PTN3460=DRM_EXYNOS) default DRM_EXYNOS select DRM_PANEL help diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index 33ae365..c3282ac 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -11,6 +11,7 @@ exynosdrm-y := exynos_drm_drv.o exynos_drm_encoder.o \ exynosdrm-$(CONFIG_DRM_EXYNOS_IOMMU) += exynos_drm_iommu.o exynosdrm-$(CONFIG_DRM_EXYNOS_DMABUF) += exynos_drm_dmabuf.o exynosdrm-$(CONFIG_DRM_EXYNOS_FIMD) += exynos_drm_fimd.o +exynosdrm-$(CONFIG_DRM_EXYNOS_DECON) += exynos_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 diff --git a/drivers/gpu/drm/exynos/exynos_drm_decon.c b/drivers/gpu/drm/exynos/exynos_drm_decon.c new file mode 100644 index 0000000..5ac4557 --- /dev/null +++ b/drivers/gpu/drm/exynos/exynos_drm_decon.c @@ -0,0 +1,1086 @@ +/* exynos_drm_decon.c + * + * Copyright (C) 2014 Samsung Electronics Co.Ltd + * Authors: + * Akshu Agarwal + * Ajay Kumar + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include