From patchwork Fri Sep 29 10:05:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 9977405 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 0571B60329 for ; Fri, 29 Sep 2017 10:05:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F189F29805 for ; Fri, 29 Sep 2017 10:05:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E666F2980D; Fri, 29 Sep 2017 10:05:53 +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=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 77A4B29805 for ; Fri, 29 Sep 2017 10:05:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752067AbdI2KFw (ORCPT ); Fri, 29 Sep 2017 06:05:52 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:50407 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751801AbdI2KFu (ORCPT ); Fri, 29 Sep 2017 06:05:50 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20170929100547euoutp010aaac2250bfabf48da6ba8178eb511a8~ozRDpuAG_2612326123euoutp01c; Fri, 29 Sep 2017 10:05:47 +0000 (GMT) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170929100547eucas1p1b7e43e3757d278f4d7547f5c844940b9~ozRC7xrbX2191921919eucas1p1y; Fri, 29 Sep 2017 10:05:47 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 4A.CE.12907.AFA1EC95; Fri, 29 Sep 2017 11:05:46 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170929100546eucas1p20f2a84d13ea64f5c3329e4e641730643~ozRCVLcWy1848418484eucas1p2j; Fri, 29 Sep 2017 10:05:46 +0000 (GMT) X-AuditID: cbfec7f1-f793a6d00000326b-8c-59ce1afa254e Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 85.27.18832.AFA1EC95; Fri, 29 Sep 2017 11:05:46 +0100 (BST) Received: from AMDC2768.DIGITAL.local ([106.120.43.17]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OX100L2HDDLSN30@eusync4.samsung.com>; Fri, 29 Sep 2017 11:05:46 +0100 (BST) From: Andrzej Hajda To: Inki Dae Cc: Andrzej Hajda , Bartlomiej Zolnierkiewicz , Marek Szyprowski , dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, Tobias Jakobi , Daniel Drake Subject: [PATCH v2 02/11] drm/exynos/mixer: move mode commit to enable callback Date: Fri, 29 Sep 2017 12:05:33 +0200 Message-id: <20170929100542.12849-3-a.hajda@samsung.com> X-Mailer: git-send-email 2.14.1 In-reply-to: <20170929100542.12849-1-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMIsWRmVeSWpSXmKPExsWy7djP87q/pM5FGhzYYmJxa905VouNM9az Wjya/5jZ4srX92wWk+5PYLGYcX4fk8XaI3fZLdpWf2B14PBY9D3L4373cSaPf8fYPfq2rGL0 +LxJLoA1issmJTUnsyy1SN8ugStjxaZFrAXPZCte/+hibWBslexi5OSQEDCRWHrtJRuELSZx 4d56IJuLQ0hgKaPEtN1TWSCcz4wSt/4/YIPp+HzgEiNEYhmjxNXbn6Gc/4wSf+d8YgSpYhPQ lPi7+SZYh4iAssSqfe3sIEXMAsuYJA7c3MUKkhAWCJToXTCBHcRmEVCVmHBvDQuIzStgIXH+ TjsTxDp5iXMPbjOD2JwClhKLJ39hAhkkITCDTeLVvT9QN7lIrFvTzwhhC0u8Or6FHcKWkejs OAjV0M0o8an/BDuEM4VR4t+HGcwQVdYSh49fBDuJWYBPYtK26UBxDqA4r0RHmxBEiYfEr2lf WSDCjhLdM+UhXu5hlHjXsop1AqP0AkaGVYwiqaXFuempxUZ6xYm5xaV56XrJ+bmbGIFRe/rf 8Y87GN+fsDrEKMDBqMTDe0PubKQQa2JZcWXuIUYJDmYlEd4nnOcihXhTEiurUovy44tKc1KL DzFKc7AoifPaRrVFCgmkJ5akZqemFqQWwWSZODilGhg1/W1LZjc73uJ/7qQoem2Z04lVHl+e Rx9a4BUd+CJ0w0/r7q6ics8qOzadkOvvXJzi9ojI7VtTs0H58LTJMzg7tujXrS+eYNzC9V7J xHx5vVpes43ekn4FA/+5tdaLFQTbs3g1DjQ/YFwazixr5+alUvbEdcaDKT8nfL9s9DdarqJq QROTjxJLcUaioRZzUXEiABuDs+rWAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprOLMWRmVeSWpSXmKPExsVy+t/xa7q/pM5FGvy4IWVxa905VouNM9az Wjya/5jZ4srX92wWk+5PYLGYcX4fk8XaI3fZLdpWf2B14PBY9D3L4373cSaPf8fYPfq2rGL0 +LxJLoA1issmJTUnsyy1SN8ugStjxaZFrAXPZCte/+hibWBslexi5OSQEDCR+HzgEiOELSZx 4d56ti5GLg4hgSWMEueurWOBcBqZJG52PmIHqWIT0JT4u/kmG4gtIqAssWpfOztIEbPAKiaJ WW29YAlhAX+Jb6vmsYDYLAKqEhPurQGzeQUsJM7faWeCWCcvce7BbWYQm1PAUmLx5C9gcSGg mkUL17NOYORdwMiwilEktbQ4Nz232FCvODG3uDQvXS85P3cTIzC4th37uXkH46WNwYcYBTgY lXh4b8idjRRiTSwrrsw9xCjBwawkwvuE81ykEG9KYmVValF+fFFpTmrxIUZpDhYlcd7ePasj hQTSE0tSs1NTC1KLYLJMHJxSDYwq/+uSyw6x/Plvxe1W9mT5vbDWW1fUU0//+nbO2qYkOcHw j1ZV9p4CmVuRwWk3/Y8Jc8V84XnM/TD2bQazCotiZByXntiOpqUNO/iv7La/x7j0mu382slR AV1lzF8kWw2n97brHXBbs+2C5/NZ67ftDdzJ7H8+weVvScahJTd/tuftMFFN7VBiKc5INNRi LipOBAARL+jPKgIAAA== X-CMS-MailID: 20170929100546eucas1p20f2a84d13ea64f5c3329e4e641730643 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-CMS-RootMailID: 20170929100546eucas1p20f2a84d13ea64f5c3329e4e641730643 X-RootMTR: 20170929100546eucas1p20f2a84d13ea64f5c3329e4e641730643 References: <20170929100542.12849-1-a.hajda@samsung.com> Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Mode commit should not be called for every plane separately. It is enough to call it once in enable callback. The change also requires that the interlace check is moved to mixer_commit. It should be done in the same patch to avoid regression. Signed-off-by: Andrzej Hajda Reviewed-by: Tobias Jakobi --- drivers/gpu/drm/exynos/exynos_mixer.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index 499ebdca4fed..ae89e53186ee 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c @@ -477,6 +477,11 @@ static void mixer_commit(struct mixer_context *ctx) { struct drm_display_mode *mode = &ctx->crtc->base.state->adjusted_mode; + if (mode->flags & DRM_MODE_FLAG_INTERLACE) + __set_bit(MXR_BIT_INTERLACE, &ctx->flags); + else + __clear_bit(MXR_BIT_INTERLACE, &ctx->flags); + /* setup display size */ if (ctx->mxr_ver == MXR_VER_128_0_0_184) { u32 val = MXR_MXR_RES_HEIGHT(mode->vdisplay) @@ -494,7 +499,6 @@ static void vp_video_buffer(struct mixer_context *ctx, { struct exynos_drm_plane_state *state = to_exynos_plane_state(plane->base.state); - struct drm_display_mode *mode = &state->base.crtc->state->adjusted_mode; struct mixer_resources *res = &ctx->mixer_res; struct drm_framebuffer *fb = state->base.fb; unsigned int priority = state->base.normalized_zpos + 1; @@ -509,8 +513,7 @@ static void vp_video_buffer(struct mixer_context *ctx, luma_addr[0] = exynos_drm_fb_dma_addr(fb, 0); chroma_addr[0] = exynos_drm_fb_dma_addr(fb, 1); - if (mode->flags & DRM_MODE_FLAG_INTERLACE) { - __set_bit(MXR_BIT_INTERLACE, &ctx->flags); + if (test_bit(MXR_BIT_INTERLACE, &ctx->flags)) { if (is_tiled) { luma_addr[1] = luma_addr[0] + 0x40; chroma_addr[1] = chroma_addr[0] + 0x40; @@ -519,7 +522,6 @@ static void vp_video_buffer(struct mixer_context *ctx, chroma_addr[1] = chroma_addr[0] + fb->pitches[0]; } } else { - __clear_bit(MXR_BIT_INTERLACE, &ctx->flags); luma_addr[1] = 0; chroma_addr[1] = 0; } @@ -571,7 +573,6 @@ static void vp_video_buffer(struct mixer_context *ctx, mixer_cfg_layer(ctx, plane->index, priority, true); mixer_cfg_vp_blend(ctx); - mixer_commit(ctx); spin_unlock_irqrestore(&res->reg_slock, flags); @@ -591,7 +592,6 @@ static void mixer_graph_buffer(struct mixer_context *ctx, { struct exynos_drm_plane_state *state = to_exynos_plane_state(plane->base.state); - struct drm_display_mode *mode = &state->base.crtc->state->adjusted_mode; struct mixer_resources *res = &ctx->mixer_res; struct drm_framebuffer *fb = state->base.fb; unsigned int priority = state->base.normalized_zpos + 1; @@ -637,11 +637,6 @@ static void mixer_graph_buffer(struct mixer_context *ctx, + (state->src.x * fb->format->cpp[0]) + (state->src.y * fb->pitches[0]); - if (mode->flags & DRM_MODE_FLAG_INTERLACE) - __set_bit(MXR_BIT_INTERLACE, &ctx->flags); - else - __clear_bit(MXR_BIT_INTERLACE, &ctx->flags); - spin_lock_irqsave(&res->reg_slock, flags); /* setup format */ @@ -668,7 +663,6 @@ static void mixer_graph_buffer(struct mixer_context *ctx, mixer_cfg_layer(ctx, win, priority, true); mixer_cfg_gfx_blend(ctx, win, is_alpha_format(fb->format->format)); - mixer_commit(ctx); /* layer update mandatory for mixer 16.0.33.0 */ if (ctx->mxr_ver == MXR_VER_16_0_33_0 || @@ -1021,6 +1015,8 @@ static void mixer_enable(struct exynos_drm_crtc *crtc) } mixer_win_reset(ctx); + mixer_commit(ctx); + mixer_vsync_set_update(ctx, true); set_bit(MXR_BIT_POWERED, &ctx->flags);