From patchwork Wed Jun 1 05:53:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?64yA7J246riwL1RpemVuIFBsYXRmb3JtIExhYihTUikv7IK87ISx7KCE7J6Q?= X-Patchwork-Id: 9146075 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5635160751 for ; Wed, 1 Jun 2016 05:54:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 485622040D for ; Wed, 1 Jun 2016 05:54:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3CAA623749; Wed, 1 Jun 2016 05:54:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C35812040D for ; Wed, 1 Jun 2016 05:54:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 67D3E6E686; Wed, 1 Jun 2016 05:53:59 +0000 (UTC) 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 ESMTPS id 55BE76E51F for ; Wed, 1 Jun 2016 05:53:58 +0000 (UTC) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0O82023DAWDVVMD0@mailout2.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 01 Jun 2016 14:53:55 +0900 (KST) Received: from epcpsbgm2new.samsung.com ( [172.20.52.112]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id 81.8A.04998.3787E475; Wed, 1 Jun 2016 14:53:55 +0900 (KST) X-AuditID: cbfee68d-f79646d000001386-c1-574e78733547 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id 12.CB.06706.3787E475; Tue, 31 May 2016 22:53:55 -0700 (MST) Received: from localhost.localdomain ([10.113.62.206]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0O8200M88WDV2290@mmp1.samsung.com>; Wed, 01 Jun 2016 14:53:55 +0900 (KST) From: Inki Dae To: dri-devel@lists.freedesktop.org Subject: [PATCH] drm/exynos: fimd: fix trigger mode change regression Date: Wed, 01 Jun 2016 14:53:54 +0900 Message-id: <1464760434-16709-1-git-send-email-inki.dae@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrALMWRmVeSWpSXmKPExsWyRsSkQLe4wi/cYEuTmsWVr+/ZLCbdn8Bi MeP8PiaLL5/XMjuweNzvPs7ksWzKBEaPvi2rGD0+b5ILYInisklJzcksSy3St0vgyjh6YT1j wQTRii+7LjE2MN4Q6GLk5JAQMJGY9XIjE4QtJnHh3nq2LkYuDiGBFYwSJxuWscEU7Z3bwQSR WMoose3mSijnB6PE0u3rWECq2ARUJSauuA/WISKgLPF34ipGEJtZIFbi74LTrCC2sICrxK/n v5lBbBag+gUnLoHV8wq4SKxrb2WG2CYncfLYZFaQBRICz9kkZnduZ4FoEJD4NvkQkM0BlJCV 2HQAql5S4uCKGywTGAUXMDKsYhRNLUguKE5KLzLUK07MLS7NS9dLzs/dxAgMyNP/nvXuYLx9 wPoQowAHoxIPb8Mt33Ah1sSy4srcQ4ymQBsmMkuJJucDwz6vJN7Q2MzIwtTE1NjI3NJMSZxX UepnsJBAemJJanZqakFqUXxRaU5q8SFGJg5OqQZGzrfcKzaaLZfJ6tsxfZ/4nk1P7RcY8kzt uRdu+HlS7ebIR6dT5E/suefvqn9wvjDLigUb1afncskvsYpTK/nhY3BGzez+scD0e/15/1Xk vCdYph9niWzavar3srR3Oe989h+Pg+5rdq88UJHQ0PvWZt4qvbwIV1HnMrUmg+Cc/TYTnoUW XapUYinOSDTUYi4qTgQAQNkeZkMCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrLLMWRmVeSWpSXmKPExsVy+t9jAd3iCr9wgwuvFCyufH3PZjHp/gQW ixnn9zFZfPm8ltmBxeN+93Emj2VTJjB69G1ZxejxeZNcAEtUA6NNRmpiSmqRQmpecn5KZl66 rZJ3cLxzvKmZgaGuoaWFuZJCXmJuqq2Si0+ArltmDtBOJYWyxJxSoFBAYnGxkr4dpgmhIW66 FjCNEbq+IUFwPUYGaCBhDWPG0QvrGQsmiFZ82XWJsYHxhkAXIyeHhICJxN65HUwQtpjEhXvr 2boYuTiEBJYySmy7uZIJwvnBKLF0+zoWkCo2AVWJiSvus4HYIgLKEn8nrmIEsZkFYiX+LjjN CmILC7hK/Hr+mxnEZgGqX3DiElg9r4CLxLr2VmaIbXISJ49NZp3AyL2AkWEVo0RqQXJBcVJ6 rlFearlecWJucWleul5yfu4mRnDQP5PewXh4l/shRgEORiUe3orLvuFCrIllxZW5hxglOJiV RHhLi/3ChXhTEiurUovy44tKc1KLDzGaAh0wkVlKNDkfGJF5JfGGxiZmRpZG5oYWRsbmSuK8 j/+vCxMSSE8sSc1OTS1ILYLpY+LglGpgjDM+fdQt6u+qvweNZf7KhLSl8E27Jm/K+n22o/nX SqXgnfe/t/ipZBUuWnLASUVAxtvBLUI513bnm9eP9Wace+WxwvLYbe8fpr2PJ2Ws4OGeJlTN JNBwtHv1eum7QiKSednTJh/TsPe+v1xQWf9Vdr7h4de581lMau582W1vybDcbWHHDuEMJZbi jERDLeai4kQAkhxGI5ACAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: maz@misterjones.org, 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-Virus-Scanned: ClamAV using ClamSMTP This patch fixes a regression that Display panel doesn't work since HW trigger mode was supported. The trigger mode should be changed on PSR(Panel Self Refresh) mode of Panel device according to HW guy's saying. However, with previous HW trigger support, trigger mode could been changed in normal mode of Panel device. So this patch makes sure to change the trigger mode after power off and on again. Later we need to add PSR relevant codes instead. Signed-off-by: Inki Dae --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 3efe1aa..355149f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -203,6 +203,11 @@ struct fimd_context { atomic_t wait_vsync_event; atomic_t win_updated; atomic_t triggering; + /* + * fimd_setup_trigger function will try to change trigger mode + * only in case that this flag is set. + */ + atomic_t deferred_tr_mode; const struct fimd_driver_data *driver_data; struct drm_encoder *encoder; @@ -430,11 +435,37 @@ static void fimd_setup_trigger(struct fimd_context *ctx) val &= ~(TRGMODE_ENABLE); if (trg_type == I80_HW_TRG) { + /* + * change trigger mode after power off and on again. + * deferred_tr_mode will be set when fimd_disable is called. + * + * TODO. Trigger mode should be changed on PSR mode of Panel + * device. So we have to add relevant codes to make sure + * entering into PSR mode later. + */ + if (val & TRGMODE_ENABLE && + !atomic_read(&ctx->deferred_tr_mode)) + return; + if (ctx->driver_data->has_hw_trigger) val |= HWTRGEN_ENABLE | HWTRGMASK_ENABLE; if (ctx->driver_data->has_trigger_per_te) val |= HWTRIGEN_PER_ENABLE; } else { + /* + * change trigger mode after power off and on again. + * deferred_tr_mode will be set when fimd_disable is called. + * + * TODO. Trigger mode should be changed on PSR mode of Panel + * device. So we have to add relevant codes to make sure + * entering into PSR mode later. + */ + if (ctx->driver_data->has_hw_trigger) { + if (val & HWTRGEN_ENABLE && + !atomic_read(&ctx->deferred_tr_mode)) + return; + } + val |= TRGMODE_ENABLE; } @@ -864,6 +895,10 @@ static void fimd_disable(struct exynos_drm_crtc *crtc) writel(0, ctx->regs + VIDCON0); pm_runtime_put_sync(ctx->dev); + + if (ctx->i80_if) + atomic_set(&ctx->deferred_tr_mode, 1); + ctx->suspended = true; }