From patchwork Thu Jul 17 20:43:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 4578781 Return-Path: X-Original-To: patchwork-linux-samsung-soc@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 F143BC0514 for ; Thu, 17 Jul 2014 20:47:02 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2B09620160 for ; Thu, 17 Jul 2014 20:47:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 307E12011E for ; Thu, 17 Jul 2014 20:47:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752770AbaGQUrA (ORCPT ); Thu, 17 Jul 2014 16:47:00 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:51182 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752334AbaGQUrA (ORCPT ); Thu, 17 Jul 2014 16:47:00 -0400 Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N8V0077HJ2ARB70@mailout2.samsung.com> for linux-samsung-soc@vger.kernel.org; Fri, 18 Jul 2014 05:46:58 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.122]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 10.99.16580.24638C35; Fri, 18 Jul 2014 05:46:58 +0900 (KST) X-AuditID: cbfee691-b7f2f6d0000040c4-96-53c83642870b Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 17.6C.04943.14638C35; Fri, 18 Jul 2014 05:46:58 +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 <0N8V002BCJ1T7D60@mmp1.samsung.com>; Fri, 18 Jul 2014 05:46:57 +0900 (KST) From: Ajay Kumar To: dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org Cc: inki.dae@samsung.com, robdclark@gmail.com, daniel.vetter@ffwll.ch, thierry.reding@gmail.com, seanpaul@google.com, ajaynumb@gmail.com, jg1.han@samsung.com, joshi@samsung.com, prashanth.g@samsung.com, javier@dowhile0.org, Ajay Kumar Subject: [RESEND PATCH V5 02/12] drm/panel: add prepare and unprepare routines Date: Fri, 18 Jul 2014 02:13:48 +0530 Message-id: <1405629839-12086-3-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1405629839-12086-1-git-send-email-ajaykumar.rs@samsung.com> References: <1405629839-12086-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprDIsWRmVeSWpSXmKPExsWyRsSkStfJ7ESwwe4pfBYH3h9ksdjwZiGz xcKHd5ktrnx9z2Yx6f4EFotrv2ewWVxeeInV4vuuL+wWM87vY7JYdXgDu8XzhT+YLeYezLX4 uWseiwOvx9/Zrcwee78tYPHYOesuu8eCTaUe97uPM3n0bVnF6PF5k1wAexSXTUpqTmZZapG+ XQJXxrdF85gLXglXfHh6i72BcYFAFyMnh4SAicSO3zuZIGwxiQv31rN1MXJxCAksZZSYf2YG C0zRs3WnmCASixglrjx5zQzhTGCS2LDmJCtIFZuAtsS26TfBOkQE3CSaDs9kBSliFuhmkth3 7yxQgoNDWMBP4u8BTpAaFgFViVm73zGC2LwCHhIbJh1jBymREFCQmDPJBiTMKeApMbPzB9hI IaCSn7u/g+2VELjGLrGsaS8LxBwBiW+TD7FA9MpKbDrADHG0pMTBFTdYJjAKL2BkWMUomlqQ XFCclF5kqlecmFtcmpeul5yfu4kRGDOn/z2buIPx/gHrQ4zJQOMmMkuJJucDYy6vJN7Q2MzI wtTE1NjI3NKMNGElcd70R0lBQgLpiSWp2ampBalF8UWlOanFhxiZODilGhi7dnZ8cg+o5mi2 SoiVWb7ION1e/vqLYpduPrUXeQ7r3Db9ne74otu8dIeUqvtEl8R5Hf55K9+Wp8y4Ks+Ty5fT 9WBlBrO5rp3XRWEtl7KmhPcWW/6K9/sK2MSq8YRnL+dUl5Lf9OxVzWPmn61Bz0SuBwd8NYzX eblKdZ/89O/euWYlLVc5lViKMxINtZiLihMBDCE/I68CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNIsWRmVeSWpSXmKPExsVy+t9jAV0nsxPBBtcnsFoceH+QxWLDm4XM Fgsf3mW2uPL1PZvFpPsTWCyu/Z7BZnF54SVWi++7vrBbzDi/j8li1eEN7BbPF/5gtph7MNfi 5655LA68Hn9ntzJ77P22gMVj56y77B4LNpV63O8+zuTRt2UVo8fnTXIB7FENjDYZqYkpqUUK qXnJ+SmZeem2St7B8c7xpmYGhrqGlhbmSgp5ibmptkouPgG6bpk5QNcqKZQl5pQChQISi4uV 9O0wTQgNcdO1gGmM0PUNCYLrMTJAAwlrGDO+LZrHXPBKuOLD01vsDYwLBLoYOTkkBEwknq07 xQRhi0lcuLeerYuRi0NIYBGjxJUnr5khnAlMEhvWnGQFqWIT0JbYNv0mC4gtIuAm0XR4JitI EbNAN5PEvntngRIcHMICfhJ/D3CC1LAIqErM2v2OEcTmFfCQ2DDpGDtIiYSAgsScSTYgYU4B T4mZnT/ARgoBlfzc/Z15AiPvAkaGVYyiqQXJBcVJ6bmGesWJucWleel6yfm5mxjBEflMagfj ygaLQ4wCHIxKPLwWN48HC7EmlhVX5h5ilOBgVhLhzb4PFOJNSaysSi3Kjy8qzUktPsRoCnTU RGYp0eR8YLLIK4k3NDYxNzU2tTSxMDGzVBLnPdBqHSgkkJ5YkpqdmlqQWgTTx8TBKdXAeGzW 28mvHHNswluZWoQn6X0tqFpsufb/rO0JH9wYM0rP75s/s6nbvDy8J7+61veO749pVTJivhqC onnij6/aaD5a1N4x6cWSsD/ntQSqJjp1epzqEzlpUSW4tsv9hr/HiahbdcunaMSZv3q3aL5Y Z43J6bzvYm11U1szGC/8/hxfflnaPXOGEktxRqKhFnNRcSIARqMOm94CAAA= 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=-6.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 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)