From patchwork Mon Jun 22 11:16:19 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Inki Dae X-Patchwork-Id: 6655031 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 72C3BC05AC for ; Mon, 22 Jun 2015 11:16:38 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5D6E82056C for ; Mon, 22 Jun 2015 11:16:36 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id CA1AA2055C for ; Mon, 22 Jun 2015 11:16:33 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B935A6E3DD; Mon, 22 Jun 2015 04:16:32 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by gabe.freedesktop.org (Postfix) with ESMTP id B7ECB6E3DD for ; Mon, 22 Jun 2015 04:16:30 -0700 (PDT) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0NQC02Z04FB9RL10@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Mon, 22 Jun 2015 20:16:21 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.116]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id 3C.8A.29324.58EE7855; Mon, 22 Jun 2015 20:16:21 +0900 (KST) X-AuditID: cbfee68d-f79106d00000728c-6e-5587ee857444 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 32.F5.05312.48EE7855; Mon, 22 Jun 2015 20:16:21 +0900 (KST) Received: from daeinki-desktop.10.32.193.11 ([10.252.83.67]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0NQC00L3FFB83C00@mmp2.samsung.com>; Mon, 22 Jun 2015 20:16:20 +0900 (KST) From: Inki Dae To: dri-devel@lists.freedesktop.org Subject: [PATCH v7 05/15] drm/exynos: add Exynos5433 decon driver Date: Mon, 22 Jun 2015 20:16:19 +0900 Message-id: <1434971779-5342-1-git-send-email-inki.dae@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1434113958-15877-6-git-send-email-human.hwang@samsung.com> References: <1434113958-15877-6-git-send-email-human.hwang@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsWyRsSkRLf1XXuoQUOjiEXvuZNMFle+vmez WDqjj9Vi0v0JLBYv7l1ksZhxfh+TA5vH9m8PWD3udx9n8ujbsorR4/MmuQCWKC6blNSczLLU In27BK6MpzsbWQtWPGKsaLl6iLWB8e5Oxi5GTg4JAROJx9uWskPYYhIX7q1nA7GFBJYySvQ8 M4SpWb/vCFA9F1B8OqPEwvPd7BBOA5PEtmcfwDrYBFQlJq64D2aLCChL/J24CqyDWWADo8SS J7eYQRLCAo4SS7cfA1vNAtSw4NxpsAZeAWeJxSc2A8U5gNYpSMyZZAMS5hTwkOg99psR4iJ3 iWd7eplBZkoI9LNLLNzfyg4xR0Di2+RDLBC9shKbDjBDXC0pcXDFDZYJjMILGBlWMYqmFiQX FCelFxnqFSfmFpfmpesl5+duYgSG9el/z3p3MN4+YH2IUYCDUYmHl+Nte6gQa2JZcWXuIUZT oA0TmaVEk/OB0ZNXEm9obGZkYWpiamxkbmmmJM6rKPUzWEggPbEkNTs1tSC1KL6oNCe1+BAj EwenVAPjpN5muaVCfF940isTH5zYPu1Me8wSD9Hte7iludbaN29nz+4O2tPBxxQUJSZ+bXIi t3LtgR2r7tqG3TzZsSp2WeTJPJ+JC19d3vHB41tS3NWK69csPPIdGbwspPf8+pYyK2K/Z6Xh F7bam+sTPR+oGghPW/v1T4qu54wgtQP3verFf71Qvq+sxFKckWioxVxUnAgAlQDOfGYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprHIsWRmVeSWpSXmKPExsVy+t9jQd3Wd+2hBpM2M1r0njvJZHHl63s2 i6Uz+lgtJt2fwGLx4t5FFosZ5/cxObB5bP/2gNXjfvdxJo++LasYPT5vkgtgiWpgtMlITUxJ LVJIzUvOT8nMS7dV8g6Od443NTMw1DW0tDBXUshLzE21VXLxCdB1y8wB2q6kUJaYUwoUCkgs LlbSt8M0ITTETdcCpjFC1zckCK7HyAANJKxhzHi6s5G1YMUjxoqWq4dYGxjv7mTsYuTkkBAw kVi/7wiULSZx4d56ti5GLg4hgemMEgvPd7NDOA1MEtuefWADqWITUJWYuOI+mC0ioCzxd+Iq RpAiZoENjBJLntxiBkkICzhKLN1+DGwsC1DDgnOnwRp4BZwlFp/YDBTnAFqnIDFnkg1ImFPA Q6L32G+wciEBd4lne3qZJzDyLmBkWMUomlqQXFCclJ5rpFecmFtcmpeul5yfu4kRHDfPpHcw rmqwOMQowMGoxMPL8bY9VIg1say4MvcQowQHs5IIb8tZoBBvSmJlVWpRfnxRaU5q8SFGU6Cj JjJLiSbnA2M6ryTe0NjEzMjSyNzQwsjYXEmc92S+T6iQQHpiSWp2ampBahFMHxMHp1QDY2q0 V86qLyZfuTT3O//+dz9qT5/ZM/99zJevH0ireOO1zHEvk3z1iUsZ7boWxaasyzmyN/Odu/nA 6Ow2tzn7jrYWndWb9+Ca5pYK/xenuz++nrlb2nPunXfpjS6Vp7fsM/q2ZaZRjFLr/4c/F3MY v7fn+bP2nry9++9OvdUh9+bzzj2s4XR7308lluKMREMt5qLiRABgFPFzsQIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: linux-samsung-soc@vger.kernel.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,FUZZY_XPILL, RCVD_IN_DNSWL_MED, 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 From: Joonyoung Shim DECON(Display and Enhancement Controller) is new IP replacing FIMD in Exynos5433. This patch adds Exynos5433 decon driver. Changelog v7: - Rebased on top of exynos-drm-next. - Added runtime pm support. Signed-off-by: Joonyoung Shim Signed-off-by: Hyungwon Hwang Signed-off-by: Inki Dae --- .../devicetree/bindings/video/exynos5433-decon.txt | 65 ++ drivers/gpu/drm/exynos/Kconfig | 6 + drivers/gpu/drm/exynos/Makefile | 1 + drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 660 ++++++++++++++++++++ drivers/gpu/drm/exynos/exynos_drm_drv.h | 1 + include/video/exynos5433_decon.h | 165 +++++ 6 files changed, 898 insertions(+) create mode 100644 Documentation/devicetree/bindings/video/exynos5433-decon.txt create mode 100644 drivers/gpu/drm/exynos/exynos5433_drm_decon.c create mode 100644 include/video/exynos5433_decon.h diff --git a/Documentation/devicetree/bindings/video/exynos5433-decon.txt b/Documentation/devicetree/bindings/video/exynos5433-decon.txt new file mode 100644 index 0000000..377afbf --- /dev/null +++ b/Documentation/devicetree/bindings/video/exynos5433-decon.txt @@ -0,0 +1,65 @@ +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 { + }; +}; diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig index ddb7c8a..51a4eb5 100644 --- a/drivers/gpu/drm/exynos/Kconfig +++ b/drivers/gpu/drm/exynos/Kconfig @@ -24,6 +24,12 @@ config DRM_EXYNOS_FIMD help Choose this option if you want to use Exynos FIMD for DRM. +config DRM_EXYNOS5433_DECON + bool "Exynos5433 DRM DECON" + depends on DRM_EXYNOS + help + Choose this option if you want to use Exynos5433 DECON for DRM. + config DRM_EXYNOS7_DECON bool "Exynos7 DRM DECON" depends on DRM_EXYNOS && !FB_S3C diff --git a/drivers/gpu/drm/exynos/Makefile b/drivers/gpu/drm/exynos/Makefile index cc90679..fbd084d 100644 --- a/drivers/gpu/drm/exynos/Makefile +++ b/drivers/gpu/drm/exynos/Makefile @@ -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_EXYNOS5433_DECON) += exynos5433_drm_decon.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 diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c new file mode 100644 index 0000000..8b1225f --- /dev/null +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -0,0 +1,660 @@ +/* drivers/gpu/drm/exynos5433_drm_decon.c + * + * Copyright (C) 2015 Samsung Electronics Co.Ltd + * Authors: + * Joonyoung Shim + * Hyungwon Hwang + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundationr + */ + +#include +#include +#include +#include +#include + +#include