From patchwork Wed Jun 11 18:27:00 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 4338931 Return-Path: X-Original-To: patchwork-dri-devel@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 5AECD9F3B4 for ; Thu, 12 Jun 2014 00:23:32 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8968A202FE for ; Thu, 12 Jun 2014 00:23:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 863A42034B for ; Thu, 12 Jun 2014 00:23:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9C1E56E8CF; Wed, 11 Jun 2014 17:23:26 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by gabe.freedesktop.org (Postfix) with ESMTP id EA02B6E892 for ; Wed, 11 Jun 2014 11:29:40 -0700 (PDT) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N7000E4UOOHIN20@mailout2.samsung.com> for dri-devel@lists.freedesktop.org; Thu, 12 Jun 2014 03:29:05 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.125]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id A9.01.24374.0FF98935; Thu, 12 Jun 2014 03:29:05 +0900 (KST) X-AuditID: cbfee68d-b7fd46d000005f36-29-53989ff0b936 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 4D.73.08203.0FF98935; Thu, 12 Jun 2014 03:29:04 +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 <0N70000F9OO6ED50@mmp2.samsung.com>; Thu, 12 Jun 2014 03:29:04 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH V4 02/10] drm/panel: add prepare and unprepare routines Date: Wed, 11 Jun 2014 23:57:00 +0530 Message-id: <1402511228-18945-3-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1402511228-18945-1-git-send-email-ajaykumar.rs@samsung.com> References: <1402511228-18945-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFIsWRmVeSWpSXmKPExsWyRsSkVvfj/BnBBp+/s1oceH+QxWLDm4XM Fgsf3mW2mH/kHKvFla/v2Swm3Z/AYvF91xd2ixnn9zFZzDv0m9Fi1eEN7BbPF/5gtph7MNfi 5655LA68HrMbLrJ47P22gMVj56y77B4LNpV63O8+zuTRt2UVo8fnTXIB7FFcNimpOZllqUX6 dglcGd8WzWMueCVc8eHpLfYGxgUCXYycHBICJhJ7bj5ngrDFJC7cW8/WxcjFISSwlFFi0YHD rF2MHGBFd165QMSnM0qsmnkdqmgCk0Trr5+sIN1sAtoS26bfZAFpEBFIkXj+lw+khlngO6PE 9sMPmUFqhAXcJZ73ngPbxiKgKnG/8zKYzSvgIfHtzA12iGUKEnMm2YCYnAKeErt3B4JUCAFV /J3XwAIyUkLgGrtE/8zbbBBjBCS+TT7EAtEqK7HpADPEL5ISB1fcYJnAKLyAkWEVo2hqQXJB cVJ6kaFecWJucWleul5yfu4mRmC8nP73rHcH4+0D1ocYk4HGTWSWEk3OB8ZbXkm8obGZkYWp iamxkbmlGWnCSuK8SQ+TgoQE0hNLUrNTUwtSi+KLSnNSiw8xMnFwSjUw3uXZf3TT8/K6qzVl jGWfKjP1LPleGJj8OC0g9c9kc4lmcPyquD8TWu+USP80EnB6/zDmXpsa15v6mMN/wpbl/+0X Dk1wfde+12lTnco1xYOTlOfyvPK8uGBW/0ERRbfKpeE7TkvyRTfODFS9vENIrfrhMvcZu/Zk lOk5T+452/L5+J5qzk3aSizFGYmGWsxFxYkAJ0+mJ60CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOIsWRmVeSWpSXmKPExsVy+t9jQd0P82cEGyy7Ymlx4P1BFosNbxYy Wyx8eJfZYv6Rc6wWV76+Z7OYdH8Ci8X3XV/YLWac38dkMe/Qb0aLVYc3sFs8X/iD2WLuwVyL n7vmsTjwesxuuMjisffbAhaPnbPusnss2FTqcb/7OJNH35ZVjB6fN8kFsEc1MNpkpCampBYp pOYl56dk5qXbKnkHxzvHm5oZGOoaWlqYKynkJeam2iq5+AToumXmAF2rpFCWmFMKFApILC5W 0rfDNCE0xE3XAqYxQtc3JAiux8gADSSsYcz4tmgec8Er4YoPT2+xNzAuEOhi5OCQEDCRuPPK pYuRE8gUk7hwbz1bFyMXh5DAdEaJVTOvQzkTmCRaf/1kBaliE9CW2Db9JgtIs4hAisTzv3wg NcwC3xklth9+yAxSIyzgLvG89xwTiM0ioCpxv/MymM0r4CHx7cwNdojFChJzJtmAmJwCnhK7 dweCVAgBVfyd18AygZF3ASPDKkbR1ILkguKk9FxDveLE3OLSvHS95PzcTYzgaHwmtYNxZYPF IUYBDkYlHt6I+hnBQqyJZcWVuYcYJTiYlUR4I5qBQrwpiZVVqUX58UWlOanFhxiTgW6ayCwl mpwPTBR5JfGGxibmpsamliYWJmaWpAkrifMeaLUOFBJITyxJzU5NLUgtgtnCxMEp1cDIPq3i e+wM/0eMPW7PHZumvBA+t/mB3oIp8aWH5j26VLSDaapuZILj1iVhkiphu0xiS8NSxToCsl8n r3yRdeopc9JWff0+ac6Te3e8+cBj4hL1+L71RvMOgdOv2bru7TsqZaIz6VLLi87/HPu/Hn1z 6LhW1blnUpvFm1fL/sw9V66Z7bZy0oFXSizFGYmGWsxFxYkAonHDmAoDAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Wed, 11 Jun 2014 17:23:23 -0700 Cc: seanpaul@google.com, daniel.vetter@ffwll.ch, joshi@samsung.com, ajaynumb@gmail.com, marcheu@chromium.org, 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)