Received: by 10.192.165.148 with SMTP id m20csp2626688imm; Sun, 6 May 2018 20:32:24 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoDUw+jyxVoQ3OH9tLtmLEeeXD810BsG1vQRiaGWlz8Su+NEPO89PqP6FiRncxnc5GTZEtf X-Received: by 10.98.61.201 with SMTP id x70mr34710303pfj.85.1525663944333; Sun, 06 May 2018 20:32:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525663944; cv=none; d=google.com; s=arc-20160816; b=IZIOgtyIaS/ghgyZ6QjIkIeRY3mkqM4FCcuDkxwmYngqkOS/yjS2EhUpWTySlzKqVv sGDaAQQ99FuIEIo8ZxDAWEH04BF4LbkKNQkBeUF+320y+mOPw3e7wYXztkmRZdtBceQz Lo4mtd4AABFD/UM6F9JPKkUAIWpvgDkofqbSnZKHj81XSpdYd1dMRm3Afx09iRYKn5nx qcoU+2/eDNet/LGu+qb7s2ZnnPIH9TrlgahecvXWn6L+e4XobYlGZblgxwWUn9cB04d4 8eSZdlA/w3t/y7SbtMLDj4Se6XnAb8TsJUldhzNUxgbuWQBNnn7Uzmp/8Pbnx8w3Yuiu NmfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:dlp-filter:cms-type :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :dkim-filter:arc-authentication-results; bh=aIFqKPSk0L5dV8sJgXRTlbSZnJMYSrtG2vt6y9liLK4=; b=n4OgGHxlo66CZwgRPpFLsaH2mqzt02IJlcTvYJIaGah33f90Abm/yHfBJ5kkoa61+J rYfX0A9lDjkx19IvhFtR6ZnO8mqDyVXnOTBvjkfNuk3ufGerN2q8eBERZIOWpAHAxooh or5dOxxEwnuBp0Bug+l3Wpi/rb0cxYAcCspM88Oy1uyN9kJmtVUXtA6pjTYXhM7jmLRX QqxoeKlde6+kO5uAX697zrt/3iaLs8TrbjxmQE0jkAySXzdEQajdzpBrv/Ju4teKTe3Y 0CO8CaDb6OT34CaB0gEM44Jq1s6oJDOXu8DlTL/G9KOna/hYpv5q9Yy+zFhgmPF9WKx3 5o4Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=uaxqZCZg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x22si21229301pfe.318.2018.05.06.20.32.08; Sun, 06 May 2018 20:32:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=uaxqZCZg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751903AbeEGDb6 (ORCPT + 99 others); Sun, 6 May 2018 23:31:58 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:16758 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751794AbeEGDbz (ORCPT ); Sun, 6 May 2018 23:31:55 -0400 Received: from epcas5p1.samsung.com (unknown [182.195.41.39]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20180507033152epoutp01dad897ead7f601aecd0e1bca4b4d14d6~sPz7OU13k2220122201epoutp01W for ; Mon, 7 May 2018 03:31:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20180507033152epoutp01dad897ead7f601aecd0e1bca4b4d14d6~sPz7OU13k2220122201epoutp01W 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 Content-Type: text/plain; charset="utf-8" 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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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