From patchwork Mon May 7 03:31:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Satendra Singh Thakur X-Patchwork-Id: 10383181 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 B0C84602D8 for ; Mon, 7 May 2018 03:32:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1B5128AFC for ; Mon, 7 May 2018 03:32:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9432828B0C; Mon, 7 May 2018 03:32: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=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=unavailable 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 70A0828AFC for ; Mon, 7 May 2018 03:31:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751822AbeEGDb5 (ORCPT ); Sun, 6 May 2018 23:31:57 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:48654 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751800AbeEGDbz (ORCPT ); Sun, 6 May 2018 23:31:55 -0400 Received: from epcas5p1.samsung.com (unknown [182.195.41.39]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20180507033152epoutp040ff4728d1b186f2350226bc396707542~sPz7OYBUw1645316453epoutp04N for ; Mon, 7 May 2018 03:31:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20180507033152epoutp040ff4728d1b186f2350226bc396707542~sPz7OYBUw1645316453epoutp04N DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1525663912; bh=aIFqKPSk0L5dV8sJgXRTlbSZnJMYSrtG2vt6y9liLK4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uaxqZCZgrm6DrhEMH6FP0yfQGcyIY4rK2fK29OhB70AvxSwttv+T+pm+z/hqo+Eix +/FgRZvrYk1OmRh5KEen0KNoSZlLRTS5dZ8eR5lhnYIIai1pJdDl4KI6mg4fD3LBKd Vuh2BBqbPqh1yKY6D2/PzBwzLqM2vUFJoLq1V2hk= Received: from epsmges5p2new.samsung.com (unknown [182.195.40.71]) by epcas5p3.samsung.com (KnoxPortal) with ESMTP id 20180507033151epcas5p32f3f61f8f413db612496a65374095457~sPz51SAj-0406704067epcas5p3a; Mon, 7 May 2018 03:31:51 +0000 (GMT) Received: from epcas5p2.samsung.com ( [182.195.41.40]) by epsmges5p2new.samsung.com (Symantec Messaging Gateway) with SMTP id AA.D3.04308.7A8CFEA5; Mon, 7 May 2018 12:31:51 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas5p4.samsung.com (KnoxPortal) with ESMTPA id 20180507033149epcas5p4b33b68a21f0883da6aa97419d5114296~sPz4n1dEv0926309263epcas5p4k; Mon, 7 May 2018 03:31:49 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20180507033149epsmtrp114a0ebfdbff474a45e76a6d4851bd263~sPz4ikiHM2796727967epsmtrp1D; Mon, 7 May 2018 03:31:49 +0000 (GMT) X-AuditID: b6c32a4a-a79ff700000010d4-b8-5aefc8a7df5d Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id F5.1E.03711.5A8CFEA5; Mon, 7 May 2018 12:31:49 +0900 (KST) Received: from localhost.localdomain (unknown [107.108.189.138]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20180507033145epsmtip1e7192e8905f8e0a464b0f2bfbf3242b4~sPz0PHExa1356913569epsmtip1a; Mon, 7 May 2018 03:31:45 +0000 (GMT) From: Satendra Singh Thakur To: jani.nikula@linux.intel.com, liviu.dudau@arm.com, Brian Starkey , Mali DP Maintainers , David Airlie , Boris Brezillon , Nicolas Ferre , Alexandre Belloni , Gustavo Padovan , Maarten Lankhorst , Sean Paul , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Kukjin Kim , Krzysztof Kozlowski , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Cc: madhur.verma@samsung.com, sst2005@gmail.com, Satendra Singh Thakur , Hemanshu Srivastava Subject: [PATCH v2] drm/kms/mode: added a new helper for calculating videomode from crtc's display mode Date: Mon, 7 May 2018 09:01:09 +0530 Message-Id: <1525663870-4119-1-git-send-email-satendra.t@samsung.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <87sh777o63.fsf@intel.com> X-Brightmail-Tracker: H4sIAAAAAAAAA0VTbUxbVRj29N7eW4idN910Z/xgzVWzQWxpmxZOdZ1TcbnTJYOYzKTT4A1c 207akt52DpYF5gcMcGOOLcNCCEjXIkE2gbmVZYzRwIRJy4cDQfkI+AEMrVOLTrfMthfiv+d5 3+c5z5s375Fgsr+IJInF5uQcNjafJhLxLwMp2xW+r8JGVUeYRCeCAyJU9quXRN2DVTiaHxwG 6JtImED+uS4SLYdWMHR69hSOfGMXAFqcGcFR1cIdDIVCF0k09N4KidoXxsVorKuOQDWhbhHq OV+Go8a7l3AUOOshkPfPr3F0uaMRQ5+HPsTR9MUhgHy3JjBUU71E7NrCtNa3Aqa+9QhTWzKC M77vpsWM3z1NMu0t5QRzeXVOzNQPZDOzlTdFTIenmPn+7/OA8Z++JmJOdrYA5o/25KwNRm6H mWPzOIecs+Xa8yw2k4F+9bWcl3J06Sq1Qq1HGbTcxlo5A525N0ux25IfXQUtP8Tmu6KlLJbn 6bSdOxx2l5OTm+2800AfUKs1SrUqQ6nRaJRa3ZvPanRRyVucefXBLVBw/fXDncHbRAk4t6cC JEggpYX9N+6KKkCiREZdBXApNAIE8juATTMRsUBWo6RsAV+3eNsGcKFxDcB71x+SsYaMigA4 NlEcw0RU9HNdTdy9ifIT8Ebkt7gDo6oAXFyuFsdUGykLXP6kJ4olEpx6GnYH82JQSr0MPd8e FMKS4WSwHIvhBGob/Gd0NP4MpOZJ2FdaSwiiTBj68eTadBvh8s1OUsBJcKmqlBQM7wM419a4 Rj4C8Hh5/5rqefjBmR48loxRKfBCV5pQNsCOpuH4nBi1AZ749wdRTAIpKTxeKhMkT8HPFgPY etb9hgqxgBl4ryy0hl+AY5XNQFhQEfRf+oI4Bba6/w9rAKAFbOEKeKuJ43UFGhv3rpJnrbzL ZlLm2q3tIH70qa9cAd7g3l5ASQD9qLT5TNgoE7OH+EJrL4ASjN4kfawvWpLmsYVFnMOe43Dl c3wv0EX3+jGW9HiuPfqFbM4ctVav0qanZ6hVKr2W3iydHJgxyigT6+Te4bgCzrHuE0kSkkpA whHZ0M4+g9xc4+l3ZTZtb7O706uLEvVc78OVFU+JvnYyEPrFN8oo+JTE5wp3HYyktcyWOg80 PFLV3G+6PzVlyby99cEVzfDgk9Kst18M7N9z7I7nmU+Tx7OnXNnFTxwtXlXtP/pTHZRXp47P b549vFux0Fj5hndf+Kr77DGr0T1B47yZVadiDp79D7/hD3sKBAAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrBIsWRmVeSWpSXmKPExsWy7bCSnO7SE++jDCauMrToPXeSyaL93TJ2 i32n+lksHp26wGhx5et7NoudD3axW7w6/4bZYtL9CSwWyy+vZ7R4ce8ii0X/49fMFufPb2C3 ONv0ht1i0+NrrBaXd81hs5hxfh+TxYGl7SwWCz9uZbE4PHUJm8WyL2dYLLZvXshssfZ8K4vF 3Q1nGS2Wn77ObDFj8ks2B0mPNfPWMHrMW1PtMbvhIovH8tt3WT12zrrL7rFpVSebx/ZvD1g9 5p0M9LjffZzJY/OSeo87P5YyeuyctJfJo2/LKkaPz5vkAviiuGxSUnMyy1KL9O0SuDK+/T3N WLA/vGLLuatsDYzTPbsYOTkkBEwklq07ydLFyMUhJLCbUaKnfy07REJKYtmbbWwQtrDEyn/P 2SGKPjNKrJz7nhEkwQbU/XzODFaQhIjAaTaJv3sawEYxC0xmlGiZ+AxslLBAusTWyy+BbA4O FgFViX3nUkBMXgFXiSU3siAWyEncPNfJDGJzCqhL/Lp0iQXEFhJQk9gx7SPzBEa+BYwMqxgl UwuKc9Nziw0LjPJSy/WKE3OLS/PS9ZLzczcxguNPS2sH44kT8YcYBTgYlXh4V0x5HyXEmlhW XJl7iFGCg1lJhJf/KFCINyWxsiq1KD++qDQntfgQozQHi5I4r3z+sUghgfTEktTs1NSC1CKY LBMHp1QDo1mq8O6ulKgt7icfLdrUrJN0+NSLG5Mee/hf42yOlNduuzLdJX0Km/DTovhU2Wf9 DhJhyXWyTF9itwWkbPt9re3Pspy/7aXfQjVaAiXjzhr18NmwH6ktmdzSff5Zp6hXaMLStyIa uxk8vS7NcE77zfzwieSEKKO+fcu7/X76xtyaaNit9Hq2EktxRqKhFnNRcSIAVhY1kbsCAAA= X-CMS-MailID: 20180507033149epcas5p4b33b68a21f0883da6aa97419d5114296 X-Msg-Generator: CA X-MTR: 20180507033149epcas5p4b33b68a21f0883da6aa97419d5114296 CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20180507033149epcas5p4b33b68a21f0883da6aa97419d5114296 X-RootMTR: 20180507033149epcas5p4b33b68a21f0883da6aa97419d5114296 References: <87sh777o63.fsf@intel.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 1. -Added a new helper drm_display_mode_crtc_to_videomode -This helper calculates mode parameters like --horizontal front_porch, back_porch, sync length --vertical front_porch, back_porch, sync length -using crtc fields of struct drm_display_mode -It uses following fields of crtc mode --horizontal sync start/end, active and total length --vertical sync start/end, active and total length 2. -Most of the driver use user-supplied mode for calculating videomode -However, few drivers use HW (crtc) mode for calculating videomode -This helper will be useful for such drivers 3. -Currently following drivers will be using this new helper -arm hdlcd -atmel hlcdc -exynos 5433 decon -exynos7 decon -exynos fimd 4. -This change reduces several redundant lines of code for many drivers Acked-by: Liviu Dudau Signed-off-by: Satendra Singh Thakur Acked-by: Madhur Verma Cc: Hemanshu Srivastava --- v2: Removed Mr Jani from Reviewed-by field drivers/gpu/drm/arm/hdlcd_crtc.c | 10 ++-------- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 9 ++------- drivers/gpu/drm/drm_modes.c | 19 +++++++++++++++++++ drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 22 ++++++++++------------ drivers/gpu/drm/exynos/exynos7_drm_decon.c | 23 ++++++++++------------- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 22 +++++++++------------- include/drm/drm_modes.h | 2 ++ 7 files changed, 54 insertions(+), 53 deletions(-) diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c index cf5cbd6..5cec264 100644 --- a/drivers/gpu/drm/arm/hdlcd_crtc.c +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c @@ -127,16 +127,10 @@ static void hdlcd_crtc_mode_set_nofb(struct drm_crtc *crtc) { struct hdlcd_drm_private *hdlcd = crtc_to_hdlcd_priv(crtc); struct drm_display_mode *m = &crtc->state->adjusted_mode; - struct videomode vm; + struct videomode vm = {}; unsigned int polarities, err; - vm.vfront_porch = m->crtc_vsync_start - m->crtc_vdisplay; - vm.vback_porch = m->crtc_vtotal - m->crtc_vsync_end; - vm.vsync_len = m->crtc_vsync_end - m->crtc_vsync_start; - vm.hfront_porch = m->crtc_hsync_start - m->crtc_hdisplay; - vm.hback_porch = m->crtc_htotal - m->crtc_hsync_end; - vm.hsync_len = m->crtc_hsync_end - m->crtc_hsync_start; - + drm_display_mode_crtc_to_videomode(m, &vm); polarities = HDLCD_POLARITY_DATAEN | HDLCD_POLARITY_DATA; if (m->flags & DRM_MODE_FLAG_PHSYNC) diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c index d732810..fb298b8 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c @@ -76,17 +76,12 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) struct drm_display_mode *adj = &c->state->adjusted_mode; struct atmel_hlcdc_crtc_state *state; unsigned long mode_rate; - struct videomode vm; + struct videomode vm = {}; unsigned long prate; unsigned int cfg; int div; - vm.vfront_porch = adj->crtc_vsync_start - adj->crtc_vdisplay; - vm.vback_porch = adj->crtc_vtotal - adj->crtc_vsync_end; - vm.vsync_len = adj->crtc_vsync_end - adj->crtc_vsync_start; - vm.hfront_porch = adj->crtc_hsync_start - adj->crtc_hdisplay; - vm.hback_porch = adj->crtc_htotal - adj->crtc_hsync_end; - vm.hsync_len = adj->crtc_hsync_end - adj->crtc_hsync_start; + drm_display_mode_crtc_to_videomode(adj, &vm); regmap_write(regmap, ATMEL_HLCDC_CFG(1), (vm.hsync_len - 1) | ((vm.vsync_len - 1) << 16)); diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index e82b61e..328f771 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -654,6 +654,25 @@ void drm_display_mode_to_videomode(const struct drm_display_mode *dmode, vm->flags |= DISPLAY_FLAGS_DOUBLECLK; } EXPORT_SYMBOL_GPL(drm_display_mode_to_videomode); +/** + * drm_display_mode_crtc_to_videomode - fill in @vm using crtc fields of @dmode + * @dmode: drm_display_mode structure to use as source + * @vm: videomode structure to use as destination + * + * Fills out @vm using the crtc display mode specified in @dmode. + */ +void drm_display_mode_crtc_to_videomode(const struct drm_display_mode *dmode, + struct videomode *vm) +{ + vm->hfront_porch = dmode->crtc_hsync_start - dmode->crtc_hdisplay; + vm->hsync_len = dmode->crtc_hsync_end - dmode->crtc_hsync_start; + vm->hback_porch = dmode->crtc_htotal - dmode->crtc_hsync_end; + vm->vfront_porch = dmode->crtc_vsync_start - dmode->crtc_vdisplay; + vm->vsync_len = dmode->crtc_vsync_end - dmode->crtc_vsync_start; + vm->vback_porch = dmode->crtc_vtotal - dmode->crtc_vsync_end; + +} +EXPORT_SYMBOL_GPL(drm_display_mode_crtc_to_videomode); /** * drm_bus_flags_from_videomode - extract information about pixelclk and diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 1c330f2..2535ebb 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -20,6 +20,7 @@ #include #include #include +#include