From patchwork Fri Dec 7 10:01:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 10717807 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8EFC413BF for ; Fri, 7 Dec 2018 10:02:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7CC602DEA7 for ; Fri, 7 Dec 2018 10:02:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 70E412E151; Fri, 7 Dec 2018 10:02:06 +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=-5.2 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 715152DEA7 for ; Fri, 7 Dec 2018 10:02:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 420D76E709; Fri, 7 Dec 2018 10:02:01 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2F1EB6E708 for ; Fri, 7 Dec 2018 10:02:00 +0000 (UTC) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20181207100159euoutp01a143d5becb4419ec5cc59952b50eb774~uBLn7RQl10694506945euoutp013; Fri, 7 Dec 2018 10:01:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20181207100159euoutp01a143d5becb4419ec5cc59952b50eb774~uBLn7RQl10694506945euoutp013 Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181207100158eucas1p1e204c1d91703cc5c2c5a9fd225f8215d~uBLng3iJM2226222262eucas1p1A; Fri, 7 Dec 2018 10:01:58 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id F0.19.04441.6154A0C5; Fri, 7 Dec 2018 10:01:58 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181207100157eucas1p150fec40afefbe9f5f1f5c676b5e09d54~uBLm5wWHk0854808548eucas1p1n; Fri, 7 Dec 2018 10:01:57 +0000 (GMT) X-AuditID: cbfec7f2-5e3ff70000001159-1d-5c0a45166c0c Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 99.A3.04284.5154A0C5; Fri, 7 Dec 2018 10:01:57 +0000 (GMT) Received: from AMDC3748.DIGITAL.local ([106.120.43.17]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PJD006FP2J86Y70@eusync1.samsung.com>; Fri, 07 Dec 2018 10:01:57 +0000 (GMT) From: Andrzej Hajda To: Inki Dae Subject: [PATCH REBASED 3/3] drm/exynos/fimd: add dynamic zpos support Date: Fri, 07 Dec 2018 11:01:52 +0100 Message-id: <20181207100152.30028-4-a.hajda@samsung.com> X-Mailer: git-send-email 2.17.1 In-reply-to: <20181207100152.30028-1-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsWy7djPc7pirlwxBt96xS1urTvHarFxxnpW iytf37NZTLo/gcVixvl9TBZrj9xld2DzuN99nMmjb8sqRo/Pm+QCmKO4bFJSczLLUov07RK4 Mras38dWcEyyYsLN+gbGZaJdjJwcEgImEjvefWDpYuTiEBJYwSjRe30+M4TzmVFi8dnT7DBV X753MkEkljFKfNzfAOX8Z5Q4ceMBK0gVm4CmxN/NN9lAbBEBZYlV+9rZQYqYBS4xSrw+2c0I khAWcJNYd7MTzGYRUJU43dfEBGLzClhI/Lt4hxFinbzE6g0HmEFsTgFLie3rr7KBDJIQ+Mgq cX/7EmaIIheJ7safTBC2sMSr41ugbpWR6Ow4CBWvl2iaeYUZorkD6NTFy9kgEtYSh49fBDub WYBPYtK26UBFHEBxXomONiGIEg+JbZvWsEG82cMocXrLVLYJjJILGBlWMYqnlhbnpqcWG+al lusVJ+YWl+al6yXn525iBEbZ6X/HP+1g/Hop6RCjAAejEg9vhQNnjBBrYllxZe4hRgkOZiUR XiVbrhgh3pTEyqrUovz4otKc1OJDjNIcLErivNUMD6KFBNITS1KzU1MLUotgskwcnFINjEK1 eVnpJwy123aK/w4zlk+YW8wsdaVSWyPscaWVt2jpLE1T//a82VMMlzRtrbr/sjvm3ZvFF5ZY 5s0O2/7rxmVvSyZFk9dvQjJmSS8O9/aTffnNJWOmxD+v6Rld9bIpk1xcW6OWK3i8PLW+6v6K 2wc4mKcamCldcH7XuvlY9rcPcbLLHILWK7EUZyQaajEXFScCAJJ3FD+uAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrBJMWRmVeSWpSXmKPExsVy+t/xy7qirlwxBrf3mVvcWneO1WLjjPWs Fle+vmezmHR/AovFjPP7mCzWHrnL7sDmcb/7OJNH35ZVjB6fN8kFMEdx2aSk5mSWpRbp2yVw ZWxZv4+t4JhkxYSb9Q2My0S7GDk5JARMJL5872TqYuTiEBJYwihxeskFZginkUmi++VRFpAq NgFNib+bb7KB2CICyhKr9rWzgxQxC1xhlGj/1sUOkhAWcJNYd7OTEcRmEVCVON3XxARi8wpY SPy7eIcRYp28xOoNB5hBbE4BS4nt66+CDRUCqln+eTPLBEaeBYwMqxhFUkuLc9Nziw31ihNz i0vz0vWS83M3MQLDY9uxn5t3MF7aGHyIUYCDUYmHt8KBM0aINbGsuDL3EKMEB7OSCK+SLVeM EG9KYmVValF+fFFpTmrxIUZpDhYlcd7zBpVRQgLpiSWp2ampBalFMFkmDk6pBka9jpPnppTq hTn+q/ghop28a9PBqqVZdx5NlIn1LGXbkKx7quv+OlYlvQ3nDr8s3LVlzfx3++R42gt+/7id E6G26PVPv2NMNlz5IXOPTWtRdV19YM6RFnnGnMX27H++y+1MnnXM+dBar9iGiXujDD+843Yz n+l8c0L9bcVDuZWbsgRbdm54YsunxFKckWioxVxUnAgArmIO6wsCAAA= X-CMS-MailID: 20181207100157eucas1p150fec40afefbe9f5f1f5c676b5e09d54 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181207100157eucas1p150fec40afefbe9f5f1f5c676b5e09d54 References: <20181207100152.30028-1-a.hajda@samsung.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-samsung-soc@vger.kernel.org, Marek Szyprowski , dri-devel@lists.freedesktop.org, Bartlomiej Zolnierkiewicz MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP FIMD has fixed hardware window order. To implement dynamic zpos normalized_zpos of active plane has to be connected to window number, and remaining windows have to be disabled. Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 33 ++++++++---------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index a7993f5d8371..4d2bc32e26b6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -228,14 +228,6 @@ static const uint32_t fimd_formats[] = { DRM_FORMAT_ARGB8888, }; -static const unsigned int capabilities[WINDOWS_NR] = { - 0, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, -}; - static inline void fimd_set_bits(struct fimd_context *ctx, u32 reg, u32 mask, u32 val) { @@ -781,6 +773,12 @@ static void fimd_atomic_flush(struct exynos_drm_crtc *crtc) if (ctx->suspended) return; + for (i = hweight32(crtc->base.state->plane_mask); i < WINDOWS_NR; i++) { + if (!(readl(ctx->regs + WINCON(i)) & WINCONx_ENWIN)) + break; + fimd_disable_win(ctx, i); + } + for (i = 0; i < WINDOWS_NR; i++) fimd_shadow_protect_win(ctx, i, false); @@ -797,7 +795,7 @@ static void fimd_update_plane(struct exynos_drm_crtc *crtc, dma_addr_t dma_addr; unsigned long val, size, offset; unsigned int last_x, last_y, buf_offsize, line_size; - unsigned int win = plane->index; + unsigned int win = state->base.normalized_zpos; unsigned int cpp = fb->format->cpp[0]; unsigned int pitch = fb->pitches[0]; @@ -879,17 +877,6 @@ static void fimd_update_plane(struct exynos_drm_crtc *crtc, atomic_set(&ctx->win_updated, 1); } -static void fimd_disable_plane(struct exynos_drm_crtc *crtc, - struct exynos_drm_plane *plane) -{ - struct fimd_context *ctx = crtc->ctx; - - if (ctx->suspended) - return; - - fimd_disable_win(ctx, plane->index); -} - static void fimd_enable(struct exynos_drm_crtc *crtc) { struct fimd_context *ctx = crtc->ctx; @@ -1008,7 +995,6 @@ static const struct exynos_drm_crtc_ops fimd_crtc_ops = { .disable_vblank = fimd_disable_vblank, .atomic_begin = fimd_atomic_begin, .update_plane = fimd_update_plane, - .disable_plane = fimd_disable_plane, .atomic_flush = fimd_atomic_flush, .atomic_check = fimd_atomic_check, .te_handler = fimd_te_handler, @@ -1062,7 +1048,10 @@ static int fimd_bind(struct device *dev, struct device *master, void *data) ctx->configs[i].num_pixel_formats = ARRAY_SIZE(fimd_formats); ctx->configs[i].zpos = i; ctx->configs[i].type = fimd_win_types[i]; - ctx->configs[i].capabilities = capabilities[i]; + ctx->configs[i].capabilities = EXYNOS_DRM_PLANE_CAP_ZPOS + | EXYNOS_DRM_PLANE_CAP_WIN_BLEND + | EXYNOS_DRM_PLANE_CAP_PIX_BLEND; + ret = exynos_plane_init(drm_dev, &ctx->planes[i], i, &ctx->configs[i]); if (ret)