From patchwork Mon Apr 21 22:39:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 4027851 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 778BDBFF02 for ; Tue, 22 Apr 2014 01:30:07 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A2F5E2035E for ; Tue, 22 Apr 2014 01:30:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id D08F7202B8 for ; Tue, 22 Apr 2014 01:30:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A57F66E7AA; Mon, 21 Apr 2014 18:30:02 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by gabe.freedesktop.org (Postfix) with ESMTP id 58FE26E460 for ; Mon, 21 Apr 2014 15:39:54 -0700 (PDT) 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 <0N4E00FTOKAHYL10@mailout3.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 22 Apr 2014 07:39:53 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.125]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id FB.C7.11120.93E95535; Tue, 22 Apr 2014 07:39:53 +0900 (KST) X-AuditID: cbfee68f-b7eff6d000002b70-6d-53559e39e88b Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 40.82.27725.83E95535; Tue, 22 Apr 2014 07:39:53 +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 <0N4E00B0HKA7C630@mmp1.samsung.com>; Tue, 22 Apr 2014 07:39:52 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org Subject: [PATCH V2 2/9] drm/panel: add pre_enable and post_disable routines Date: Tue, 22 Apr 2014 04:09:11 +0530 Message-id: <1398119958-32005-3-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1398119958-32005-1-git-send-email-ajaykumar.rs@samsung.com> References: <1398119958-32005-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFLMWRmVeSWpSXmKPExsWyRsSkVtdyXmiwwc2TPBYH3h9ksdjwZiGz xZWv79ksJt2fwGLxfdcXdosZ5/cxWaw6vIHdYu7BXAcOj52z7rJ7LNhU6nG/+ziTR9+WVYwe nzfJBbBGcdmkpOZklqUW6dslcGUcOruDpWCpSMWj9mvsDYwXBLoYOTkkBEwkVl1pYYawxSQu 3FvP1sXIxSEksJRR4sbCjYwwRQcf7mCGSCxilDh2cR8rhDOBSeLovZlMIFVsAtoS26bfZAGx RQTcJJoOzwQrYhaYwShx9+UDNpCEsIC3xOvzG8AaWARUJTZuPskOYvMKeEg86/kCtI4DaJ2C xJxJNiBhTgFPie3z/rKC2EJAJRP3/GAHmSkhsIxdYvPGtcwQcwQkvk0+xALRKyux6QDUO5IS B1fcYJnAKLyAkWEVo2hqQXJBcVJ6kbFecWJucWleul5yfu4mRmC4n/73rH8H490D1ocYk4HG TWSWEk3OB8ZLXkm8obGZkYWpiamxkbmlGWnCSuK89x8mBQkJpCeWpGanphakFsUXleakFh9i ZOLglGpgdJ/ydrVC8f/uyyzyYu/7WCc/EV18r2FKSvJs7iOayiyrPHjfZhXOd638KLPLtkum 0a0x3LCsr0/t2t+VU2srqx9dFN/Fe7Y1QLNIi1Wjpe/b0VQfn0B7z8NHLhdcttHt8HCXUjmg 6nzxcU5I49/ql3+rVVdvsA2ylvF533li36xjpwM/dRQpsRRnJBpqMRcVJwIAy2dWw40CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOIsWRmVeSWpSXmKPExsVy+t9jAV3LeaHBBi9nMlsceH+QxWLDm4XM Fle+vmezmHR/AovF911f2C1mnN/HZLHq8AZ2i7kHcx04PHbOusvusWBTqcf97uNMHn1bVjF6 fN4kF8Aa1cBok5GamJJapJCal5yfkpmXbqvkHRzvHG9qZmCoa2hpYa6kkJeYm2qr5OIToOuW mQN0ipJCWWJOKVAoILG4WEnfDtOE0BA3XQuYxghd35AguB4jAzSQsIYx49DZHSwFS0UqHrVf Y29gvCDQxcjJISFgInHw4Q5mCFtM4sK99WxdjFwcQgKLGCWOXdzHCuFMYJI4em8mE0gVm4C2 xLbpN1lAbBEBN4mmwzPBipgFZjBK3H35gA0kISzgLfH6/AawBhYBVYmNm0+yg9i8Ah4Sz3q+ MHYxcgCtU5CYM8kGJMwp4Cmxfd5fVhBbCKhk4p4f7BMYeRcwMqxiFE0tSC4oTkrPNdQrTswt Ls1L10vOz93ECI6mZ1I7GFc2WBxiFOBgVOLhlTAIDRZiTSwrrsw9xCjBwawkwrs2DSjEm5JY WZValB9fVJqTWnyIMRnoqInMUqLJ+cBIzyuJNzQ2MTc1NrU0sTAxsyRNWEmc90CrdaCQQHpi SWp2ampBahHMFiYOTqkGRomJfzTjrlxxfDxbtvmGk2ZaveKEyU3JVyXmZ/5jyDgWejxhDS+T wW+vghlbp0l9tbbyvG485cu3VS5e1gtv508ONWP6Lqsi9L/v1ddre5omvVH0nF4hcNJactZR /tSgLX8sJiy5NNt8irjPWUltP9Xihk1Vt9YceGS9Ikm79WqImUDwjQ2pX5VYijMSDbWYi4oT AZucCO/qAgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Mon, 21 Apr 2014 18:29:54 -0700 Cc: seanpaul@google.com, 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/BL_EN And, a de-init sequence as mentioned below: -- poweroff LED unit/BL_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: -- "pre_enable" callback which can be called before the actual video data is on, and then call the "enable" callback after the video data is available. -- "post_disable" 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 = "pre_enable" callback poweron LED unit/BL_EN = "enable" callback poweroff LED unit/BL_EN = "disable" callback poweroff LCD unit/LCD_EN = "post_disable" callback Signed-off-by: Ajay Kumar --- Changes since V1: Added post_disable callback 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..bf191df 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 (*post_disable)(struct drm_panel *panel); int (*disable)(struct drm_panel *panel); + int (*pre_enable)(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_post_disable(struct drm_panel *panel) +{ + if (panel && panel->funcs && panel->funcs->post_disable) + return panel->funcs->post_disable(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_pre_enable(struct drm_panel *panel) +{ + if (panel && panel->funcs && panel->funcs->pre_enable) + return panel->funcs->pre_enable(panel); + + return panel ? -ENOSYS : -EINVAL; +} + static inline int drm_panel_enable(struct drm_panel *panel) { if (panel && panel->funcs && panel->funcs->enable)