From patchwork Thu Nov 13 16:37:47 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 5299211 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 09EDEC11AC for ; Thu, 13 Nov 2014 16:38:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4091720211 for ; Thu, 13 Nov 2014 16:38:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 607F5201F4 for ; Thu, 13 Nov 2014 16:38:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 85B036E437; Thu, 13 Nov 2014 08:38:17 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com [210.118.77.13]) by gabe.freedesktop.org (Postfix) with ESMTP id 95E1F6E437 for ; Thu, 13 Nov 2014 08:38:16 -0800 (PST) Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0NEZ00048L0JTG90@mailout3.w1.samsung.com> for dri-devel@lists.freedesktop.org; Thu, 13 Nov 2014 16:41:07 +0000 (GMT) X-AuditID: cbfec7f4-b7f6c6d00000120b-11-5464de76c66e Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id C2.58.04619.67ED4645; Thu, 13 Nov 2014 16:38:14 +0000 (GMT) Received: from AMDC1061.digital.local ([106.116.147.88]) by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01 (7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0NEZ00FSHKV93H60@eusync2.samsung.com>; Thu, 13 Nov 2014 16:38:14 +0000 (GMT) From: Andrzej Hajda To: Inki Dae Subject: [PATCH 6/7] drm/exynos/mixer: replace MXR_INT_EN register cache with flag Date: Thu, 13 Nov 2014 17:37:47 +0100 Message-id: <1415896668-27226-7-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1415896668-27226-1-git-send-email-a.hajda@samsung.com> References: <1415896668-27226-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPJMWRmVeSWpSXmKPExsVy+t/xK7pl91JCDObOlbK4te4cq8WVr+/Z LCbdn8Bi8eLeRRaLtUfusjuwetzvPs7k0bdlFWMAUxSXTUpqTmZZapG+XQJXxvwPk1kLzopU zFh8l7mBcaNgFyMnh4SAicShrwtZIGwxiQv31rN1MXJxCAksZZQ409cI5fQxSax5/oEZpIpN QFPi7+abbCC2iICyxKp97ewgRcwCixklHjTcYgVJCAuESPzevRysiEVAVWLj5FYmEJtXwFli zo5Wdoh1chInj00Gq+cUcJHoXbQYbIEQUM37aetZJzDyLmBkWMUomlqaXFCclJ5rqFecmFtc mpeul5yfu4kREihfdjAuPmZ1iFGAg1GJh/cDd0qIEGtiWXFl7iFGCQ5mJRFe78NAId6UxMqq 1KL8+KLSnNTiQ4xMHJxSDYzOy3rPKGhqJWrf+rk/VU5Mb3Z787s6PWtPH/t7PFYrotlDJc1m XUvc++uuSIBNkG1b6mPjCcfOMz4psm/4w3mzQq7ItYlLf9KvtW4uixsMzbvdTFlPRXy5WvZ/ ven+KbperPa9p5sZ7dreSQcvrknYGT8xqPu/4q6U4h1VH9XFGGdf3j51thJLcUaioRZzUXEi AIsnyojyAQAA Cc: Andrzej Hajda , dri-devel@lists.freedesktop.org, Marek Szyprowski 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-Spam-Status: No, score=-5.2 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 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 2465b1d..4858170e 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c @@ -87,6 +87,7 @@ enum mixer_version_id { enum mixer_flag_bits { MXR_BIT_POWERED, + MXR_BIT_VSYNC, }; struct mixer_context { @@ -98,7 +99,6 @@ struct mixer_context { bool interlace; bool vp_enabled; bool has_sclk; - u32 int_en; struct mixer_resources mixer_res; struct hdmi_win_data win_data[MIXER_WIN_NR]; @@ -897,10 +897,9 @@ static int mixer_enable_vblank(struct exynos_drm_manager *mgr) struct mixer_context *mixer_ctx = mgr->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); @@ -914,10 +913,10 @@ static void mixer_disable_vblank(struct exynos_drm_manager *mgr) struct mixer_context *mixer_ctx = mgr->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); @@ -1092,9 +1091,10 @@ static void mixer_poweron(struct exynos_drm_manager *mgr) 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); mixer_window_resume(mgr); @@ -1111,8 +1111,6 @@ static void mixer_poweroff(struct exynos_drm_manager *mgr) mixer_stop(ctx); mixer_window_suspend(mgr); - ctx->int_en = mixer_reg_read(res, MXR_INT_EN); - clear_bit(MXR_BIT_POWERED, &ctx->flags); clk_disable_unprepare(res->mixer);