From patchwork Thu Jun 5 19:10:46 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 4309381 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.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 68502BEECB for ; Fri, 6 Jun 2014 00:33:11 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8AE6420268 for ; Fri, 6 Jun 2014 00:33:10 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id C77DC20222 for ; Fri, 6 Jun 2014 00:33:09 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B77596EA00; Thu, 5 Jun 2014 17:32:58 -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 B9DC26E9B9 for ; Thu, 5 Jun 2014 12:12:40 -0700 (PDT) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N6P006BWMP4W150@mailout1.samsung.com> for dri-devel@lists.freedesktop.org; Fri, 06 Jun 2014 04:12:40 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.126]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 58.06.19452.721C0935; Fri, 06 Jun 2014 04:12:39 +0900 (KST) X-AuditID: cbfee68e-b7fb96d000004bfc-2d-5390c127a87e Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id E9.67.07139.721C0935; Fri, 06 Jun 2014 04:12:39 +0900 (KST) Received: from chromebld-server.sisodomain.com ([107.108.73.106]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N6P00FLRMOSKS30@mmp2.samsung.com>; Fri, 06 Jun 2014 04:12:39 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH V3 2/8] drm/panel: add prepare and unprepare routines Date: Fri, 06 Jun 2014 00:40:46 +0530 Message-id: <1401995452-15798-3-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1401995452-15798-1-git-send-email-ajaykumar.rs@samsung.com> References: <1401995452-15798-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprMIsWRmVeSWpSXmKPExsWyRsSkTlf94IRgg6ZnNhYH3h9ksdjwZiGz xcKHd5ktrnx9z2Yx6f4EFovLCy+xWnzf9YXdYsb5fUwWqw5vYLd4vvAHs8Xcg7kWP3fNY3Hg 8dj7bQGLx85Zd9k9Fmwq9bjffZzJo2/LKkaPz5vkAtiiuGxSUnMyy1KL9O0SuDK+LZrHXPBK uOLD01vsDYwLBLoYOTkkBEwkzh67ywZhi0lcuLceyObiEBJYyijx5vIKRpiiPTO2sEIkpjNK NO0+xA7hTGCSOPh/JjNIFZuAtsS26TdZQGwRATeJpsMzwTqYBb4xSvw5fx9sh7CAq8SULfPB GlgEVCXWXmwBs3kFPCSmb98PZHMArVOQmDPJBiTMKeApsXfvNLCZQkAlyyaeAztPQuAUu8SB 7mYmiDkCEt8mH2KB6JWV2HSAGeJqSYmDK26wTGAUXsDIsIpRNLUguaA4Kb3ISK84Mbe4NC9d Lzk/dxMjMEJO/3vWt4Px5gHrQ4zJQOMmMkuJJucDIyyvJN7Q2MzIwtTE1NjI3NKMNGElcd5F D5OChATSE0tSs1NTC1KL4otKc1KLDzEycXBKNTBK3LT/OaeYb09eQ8V1yXXHgrf/u/Dg1PPp SssVmn7Pa9Nk4p5iad2xyixy7407Ey7XPyq+73zmm57U0r9N05avMnu01Mru+pnNy1s2fPwh 92lS2VRd0zNNaxSryybosvB6PVc5zHnYQzh+8YQ7/KWXSp5E6Aq7z47v4LxSOn+15NKLyYXB PGuuKbEUZyQaajEXFScCAOaPcG+mAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrAIsWRmVeSWpSXmKPExsVy+t9jQV31gxOCDU49NbY48P4gi8WGNwuZ LRY+vMtsceXrezaLSfcnsFhcXniJ1eL7ri/sFjPO72OyWHV4A7vF84U/mC3mHsy1+LlrHosD j8febwtYPHbOusvusWBTqcf97uNMHn1bVjF6fN4kF8AW1cBok5GamJJapJCal5yfkpmXbqvk HRzvHG9qZmCoa2hpYa6kkJeYm2qr5OIToOuWmQN0o5JCWWJOKVAoILG4WEnfDtOE0BA3XQuY xghd35AguB4jAzSQsIYx49uiecwFr4QrPjy9xd7AuECgi5GTQ0LARGLPjC2sELaYxIV769m6 GLk4hASmM0o07T7EDuFMYJI4+H8mM0gVm4C2xLbpN1lAbBEBN4mmwzNZQYqYBb4xSvw5f58N JCEs4CoxZct8sAYWAVWJtRdbwGxeAQ+J6dv3A9kcQOsUJOZMsgEJcwp4SuzdOw1sphBQybKJ 59gmMPIuYGRYxSiaWpBcUJyUnmukV5yYW1yal66XnJ+7iREcf8+kdzCuarA4xCjAwajEw/uz Z0KwEGtiWXFl7iFGCQ5mJRFeji1AId6UxMqq1KL8+KLSnNTiQ4zJQEdNZJYSTc4Hpoa8knhD YxNzU2NTSxMLEzNL0oSVxHkPtloHCgmkJ5akZqemFqQWwWxh4uCUamBMLyy5qzRrwuI/yRfu 3XrxLNXDVEbRpqNpt7kjC+d0t/KSs0p2PWZ/p4UohGrGXE99bHI48LKZz6tVDI1Sdc8jVfZ0 f/jSXqsYJHXz1S/TXsa+CeetOhV2ScfsCnmz8KttkOW6dScUOzcs2eZ+t/FmYFK2S4Bi6oxF lizaL7QTdpkGxjTuVVZiKc5INNRiLipOBACi6IvOAwMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Thu, 05 Jun 2014 17:32:52 -0700 Cc: seanpaul@google.com, daniel.vetter@ffwll.ch, joshi@samsung.com, ajaynumb@gmail.com, prashanth.g@samsung.com, Ajay Kumar X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.15 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=-4.8 required=5.0 tests=BAYES_00, 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 Most of the panels need an init sequence as mentioned below: -- poweron LCD unit/LCD_EN -- start video data -- poweron LED unit/BACKLIGHT_EN And, a de-init sequence as mentioned below: -- poweroff LED unit/BACKLIGHT_EN -- stop video data -- poweroff LCD unit/LCD_EN With existing callbacks for drm panel, we cannot accomodate such panels, since only two callbacks, i.e "panel_enable" and panel_disable are supported. This patch adds: -- "prepare" callback which can be called before the actual video data is on, and then call the "enable" callback after the video data is available. -- "unprepare" callback which can be called after the video data is off, and use "disable" callback to do something before switching off the video data. Now, we can easily map the above scenario as shown below: poweron LCD unit/LCD_EN = "prepare" callback poweron LED unit/BACKLIGHT_EN = "enable" callback poweroff LED unit/BACKLIGHT_EN = "disable" callback poweroff LCD unit/LCD_EN = "unprepare" callback Signed-off-by: Ajay Kumar --- include/drm/drm_panel.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h index c2ab77a..9addc69 100644 --- a/include/drm/drm_panel.h +++ b/include/drm/drm_panel.h @@ -31,7 +31,9 @@ struct drm_device; struct drm_panel; struct drm_panel_funcs { + int (*unprepare)(struct drm_panel *panel); int (*disable)(struct drm_panel *panel); + int (*prepare)(struct drm_panel *panel); int (*enable)(struct drm_panel *panel); int (*get_modes)(struct drm_panel *panel); }; @@ -46,6 +48,14 @@ struct drm_panel { struct list_head list; }; +static inline int drm_panel_unprepare(struct drm_panel *panel) +{ + if (panel && panel->funcs && panel->funcs->unprepare) + return panel->funcs->unprepare(panel); + + return panel ? -ENOSYS : -EINVAL; +} + static inline int drm_panel_disable(struct drm_panel *panel) { if (panel && panel->funcs && panel->funcs->disable) @@ -54,6 +64,14 @@ static inline int drm_panel_disable(struct drm_panel *panel) return panel ? -ENOSYS : -EINVAL; } +static inline int drm_panel_prepare(struct drm_panel *panel) +{ + if (panel && panel->funcs && panel->funcs->prepare) + return panel->funcs->prepare(panel); + + return panel ? -ENOSYS : -EINVAL; +} + static inline int drm_panel_enable(struct drm_panel *panel) { if (panel && panel->funcs && panel->funcs->enable)