Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752600AbbGIG1I (ORCPT ); Thu, 9 Jul 2015 02:27:08 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:18474 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751936AbbGIG0g (ORCPT ); Thu, 9 Jul 2015 02:26:36 -0400 X-AuditID: cbfec7f5-f794b6d000001495-5c-559e141a3dc1 From: Andrzej Hajda To: inki.dae@samsung.com Cc: Andrzej Hajda , Marek Szyprowski , Kyungmin Park , b.zolnierkie@samsung.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH RESEND 6/6] drm/exynos/mixer: replace MXR_INT_EN register cache with flag Date: Thu, 09 Jul 2015 08:25:43 +0200 Message-id: <1436423143-22027-7-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1436423143-22027-1-git-send-email-a.hajda@samsung.com> References: <1436423143-22027-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkluLIzCtJLcpLzFFi42I5/e/4VV0pkXmhBtO+MVvcWneO1WLjjPWs Fle+vmezmHR/AovF2aY37BaXd81hs1h75C67A7vH/e7jTB59W1YxenzeJBfAHMVlk5Kak1mW WqRvl8CV8f3hRvaCDSIVc861sTUw9gh2MXJySAiYSHz79poJwhaTuHBvPVsXIxeHkMBSRolv n66zgSSEBJqYJGb3hoHYbAKaEn833wSLiwhISMx8dRGsmVngHqPE6RcaILawQLREz54OZhCb RUBVYnHHbUYQm1fAWWLenHtsEMvkJE4em8wKYnMKuEjc/tPDCLHLWeLMih3MExh5FzAyrGIU TS1NLihOSs810itOzC0uzUvXS87P3cQICaCvOxiXHrM6xCjAwajEw9uwc26oEGtiWXFl7iFG CQ5mJRFejZVAId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rwzd70PERJITyxJzU5NLUgtgskycXBK NTAu+Ng0vya2U0ul/DO7g5j8Twdn1jNxARqFwilfJSsmn7w77eOzGfx1VY/Cr3usKQ06t/m+ +nHuPykHjT+otLk845js8y13u6Uae5PJPtdX619/KS13vXqkwqnfhuHz9hLV7p3RPL1ymlof FU8dtZvf73BUUtkhYH57a8TGb9WXog5xFqg+qVViKc5INNRiLipOBADUSknuHAIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2774 Lines: 84 Driver uses only VSYNC interrupts, so we need to cache VSYNC bit state only. Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/exynos/exynos_mixer.c | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index 453b6bb..7e57409 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c @@ -71,6 +71,7 @@ enum mixer_version_id { enum mixer_flag_bits { MXR_BIT_POWERED, + MXR_BIT_VSYNC, }; struct mixer_context { @@ -84,7 +85,6 @@ struct mixer_context { bool interlace; bool vp_enabled; bool has_sclk; - u32 int_en; struct mixer_resources mixer_res; enum mixer_version_id mxr_ver; @@ -902,10 +902,9 @@ static int mixer_enable_vblank(struct exynos_drm_crtc *crtc) struct mixer_context *mixer_ctx = crtc->ctx; struct mixer_resources *res = &mixer_ctx->mixer_res; - if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) { - mixer_ctx->int_en |= MXR_INT_EN_VSYNC; + __set_bit(MXR_BIT_VSYNC, &mixer_ctx->flags); + if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) return 0; - } /* enable vsync interrupt */ mixer_reg_writemask(res, MXR_INT_STATUS, ~0, MXR_INT_CLEAR_VSYNC); @@ -919,10 +918,10 @@ static void mixer_disable_vblank(struct exynos_drm_crtc *crtc) struct mixer_context *mixer_ctx = crtc->ctx; struct mixer_resources *res = &mixer_ctx->mixer_res; - if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) { - mixer_ctx->int_en &= MXR_INT_EN_VSYNC; + __clear_bit(MXR_BIT_VSYNC, &mixer_ctx->flags); + + if (!test_bit(MXR_BIT_POWERED, &mixer_ctx->flags)) return; - } /* disable vsync interrupt */ mixer_reg_writemask(res, MXR_INT_STATUS, ~0, MXR_INT_CLEAR_VSYNC); @@ -1035,9 +1034,10 @@ static void mixer_enable(struct exynos_drm_crtc *crtc) mixer_reg_writemask(res, MXR_STATUS, ~0, MXR_STATUS_SOFT_RESET); - if (ctx->int_en & MXR_INT_EN_VSYNC) + if (test_bit(MXR_BIT_VSYNC, &ctx->flags)) { mixer_reg_writemask(res, MXR_INT_STATUS, ~0, MXR_INT_CLEAR_VSYNC); - mixer_reg_write(res, MXR_INT_EN, ctx->int_en); + mixer_reg_writemask(res, MXR_INT_EN, ~0, MXR_INT_EN_VSYNC); + } mixer_win_reset(ctx); } @@ -1056,8 +1056,6 @@ static void mixer_disable(struct exynos_drm_crtc *crtc) for (i = 0; i < MIXER_WIN_NR; i++) mixer_win_disable(crtc, i); - ctx->int_en = mixer_reg_read(res, MXR_INT_EN); - clear_bit(MXR_BIT_POWERED, &ctx->flags); clk_disable_unprepare(res->hdmi); -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/