Received: by 10.192.165.148 with SMTP id m20csp467934imm; Fri, 4 May 2018 00:40:43 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrsiRQYDjnm+FV1EZC75RcxTdtQ5joVXFNTrz3Ix062ZijHpIJsND/dhVjPEykv5ljUJfwb X-Received: by 2002:a17:902:1681:: with SMTP id h1-v6mr26729069plh.145.1525419643248; Fri, 04 May 2018 00:40:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525419643; cv=none; d=google.com; s=arc-20160816; b=IWrjFBTErYRGoVsAcgqqLItLc/rJDGd8ZO/z0/fu7ceWaqc8apfDy50kRM0mEqy6CZ VaMF9RzvW+2fBjdkH6yZuOY97aHui1u1YOar2vqbC7iAIlT2OFJKw5aVUTNRAx1k+akB 5LHgcsKlWOTv0NfeYh64BrgEckbXhigt+TUcz6Psn3bQm7EXcD0wUE/XcSKcVf0pqhdA i0EHeNLeMN/FjUMhHXjb9KQWUBHLuZpUMpgUjQax/cw0tpi0IY9MvE22TiQLVcPwrgiF yI+7oUjF0q8DK6VZDtqSsY2Iv1KiXusq8nCCOJS2penyJ8yRC/p3nwHueRvMVFYNQtgp 2o2w== 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=ZHZyQ+HbIXPn5sVLa92DvZN+/v6RIfOdbFXXnAF5M/E=; b=YN7yPDOTSWTL8otPX0XVyzOWyo4oB6gIBM4mJwsOtTLEhkqIdlYsbVWOSGZJHAVPoa lFBcGKRA6hDAT2Yj+l8I00rWdl1Ke2K4U4/MmtWHOHGg8Eme4u0Jy6YKnL6pVGCXwT/S bKnHuDD9pzbT2Y0gSLOf5Xz+lHISXMbZqSNCR6JiZixbGfMmbMziuQgx+kHl87zEAlQl qtMafWOTHhm6Js8WqY1jsqE+ck6kWTxZ2kcFB751kLVCDY/YBOIdx/Fcbycu98c2lhFU gd3/RHs1XRQNyqPV8ijM6ZEpGesL3vtHicEusZ1FZQhrl/pzqbc+PuugOg3x9AsS+rIT RH5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=XqGADPmu; 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 b21-v6si12635458pgn.276.2018.05.04.00.40.27; Fri, 04 May 2018 00:40:43 -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=XqGADPmu; 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 S1751469AbeEDHkT (ORCPT + 99 others); Fri, 4 May 2018 03:40:19 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:50848 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750979AbeEDHkR (ORCPT ); Fri, 4 May 2018 03:40:17 -0400 Received: from epcas5p4.samsung.com (unknown [182.195.41.42]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20180504074015epoutp04004287645728f2514613b33ae8a256d6~rYQ7XOGCp3020830208epoutp04m for ; Fri, 4 May 2018 07:40:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20180504074015epoutp04004287645728f2514613b33ae8a256d6~rYQ7XOGCp3020830208epoutp04m DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1525419615; bh=ZHZyQ+HbIXPn5sVLa92DvZN+/v6RIfOdbFXXnAF5M/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XqGADPmuCkGhzMNAX79uYEM+7hohcxuOervLDGkB/8scsD8sR0ueRgVNbU9nc3vzT QgLCA1jPWlYvxTOzMaEKVx2z+J+dscocDNaxoylEJmeeZWiMvd7CLeKKlPXmowcoWC 6w9cDSm1yu/R9wJZgVlqpaSKaJ25ylyrun0fQhOA= Received: from epsmges5p3new.samsung.com (unknown [182.195.40.72]) by epcas5p4.samsung.com (KnoxPortal) with ESMTP id 20180504074014epcas5p4ba1f83a5144dc7da01d1115431503ade~rYQ6g6fWw1081210812epcas5p4b; Fri, 4 May 2018 07:40:14 +0000 (GMT) Received: from epcas5p3.samsung.com ( [182.195.41.41]) by epsmges5p3new.samsung.com (Symantec Messaging Gateway) with SMTP id 21.95.04244.E5E0CEA5; Fri, 4 May 2018 16:40:14 +0900 (KST) Received: from epsmtrp2.samsung.com (unknown [182.195.40.14]) by epcas5p4.samsung.com (KnoxPortal) with ESMTPA id 20180504074013epcas5p4564cb7043e1875154469052d097848db~rYQ6LCkn01080110801epcas5p4P; Fri, 4 May 2018 07:40:13 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp2.samsung.com (KnoxPortal) with ESMTP id 20180504074013epsmtrp23f369aaa10d01cf5cfaebb0e08a36bb8~rYQ6IKvEy0535105351epsmtrp2a; Fri, 4 May 2018 07:40:13 +0000 (GMT) X-AuditID: b6c32a4b-185ff70000001094-95-5aec0e5e22b7 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id 40.61.03711.D5E0CEA5; Fri, 4 May 2018 16:40:13 +0900 (KST) Received: from localhost.localdomain (unknown [107.108.189.138]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20180504074009epsmtip2479d141ea6e713abd1f55720aa3d89a3~rYQ18H5rk0604006040epsmtip2O; Fri, 4 May 2018 07:40:09 +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 v1] drm/kms/mode: added a new helper for calculating videomode from crtc's display mode Date: Fri, 4 May 2018 13:10:00 +0530 Message-Id: <1525419600-1774-1-git-send-email-satendra.t@samsung.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <20180503103639.GH1027@e110455-lin.cambridge.arm.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFJsWRmVeSWpSXmKPExsWy7bCmpm4c35sog4tNPBa9504yWbS/W8Zu se9UP4vFo1MXGC2ufH3PZrHzwS52i1fn3zBbTLo/gcVi+eX1jBYv7l1kseh//JrZ4vz5DewW Z5vesFtsenyN1eLyrjlsFjPO72OyOLC0ncVi4cetLBaHpy5hs1j25QyLxfbNC5kt1p5vZbG4 u+Eso8Xy09eZLWZMfsnmIOmxZt4aRo95a6o9ZjdcZPFYfvsuq8fOWXfZPTat6mTz2P7tAavH vJOBHve7jzN5bF5S73Hnx1JGj52T9jJ59G1ZxejxeZNcAF9Uqk1GamJKapFCal5yfkpmXrqt kndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4CuW2YOMCiUFMoSc0qBQgGJxcVK+nY2RfmlJakK GfnFJbZK0YaGRnqGBuZ6RkZGeiamsVZGpkAlCakZ08+2sBe8jahoW7WSuYFxkVcXIyeHhICJ xM/Xa1m7GLk4hAR2M0p87jjGCJIQEvjEKDFluSdE4hujxIbFK9hhOvbPms0MkdjLKPFwy1IW COcro8TqbZ/BqtiAqp7PmQE2V0RgJ5vEwa8fwKqYBfoZJV68mswKUiUskCnx6s9+MJtFQFVi 2vV2ZhCbV8BVomP+NBaIfXISN891gsU5BZwkPr3/ADZVQuARu0Tj+zusEEUuEg3bDzJB2MIS r45vgTpWSuLzu71sEA3NjBIP1i1kh3B6GCU6Oo9BVdlLtEw5ALSOA+g+TYn1u/QhwrYSV78u AVvALMAn0fv7CRNIiYQAr0RHmxBEiYrEyheHmWF2/VnQBXWPh8SDb4eh7nGUOLd7LzTApjJK dK9pYZnAKD8LYdsCRsZVjJKpBcW56anFpgXGeanlesWJucWleel6yfm5mxjB6V7LewfjpnM+ hxgFOBiVeHh32L6OEmJNLCuuzD3EKMHBrCTCO+sQUIg3JbGyKrUoP76oNCe1+BCjKTBoJzJL iSbnA3NRXkm8oYmlgYmZmbmhgYGliZI4782T96KEBNITS1KzU1MLUotg+pg4OKUaGA3yDtum bFQqzXv0hj+X0zPnxrsfP6K2nll+1FDVPTJvUVnxi3zBjaoy2n1PDoeGtxbduhayLcjSgG99 1vZXzPnOOteSpA7GRJ9xaVmosXmizcEp/T9fWW4/dfKzQUak3T572wqxvh81l1Zrr92dOcUo /PnFaxcdMqZEtMQp+c8OtXlzgUOST4mlOCPRUIu5qDgRADXuR1ANBAAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrFIsWRmVeSWpSXmKPExsWy7bCSvG4s35sog5fPdC16z51ksmh/t4zd Yt+pfhaLR6cuMFpc+fqezWLng13sFq/Ov2G2mHR/AovF8svrGS1e3LvIYtH/+DWzxfnzG9gt zja9YbfY9Pgaq8XlXXPYLGac38dkcWBpO4vFwo9bWSwOT13CZrHsyxkWi+2bFzJbrD3fymJx d8NZRovlp68zW8yY/JLNQdJjzbw1jB7z1lR7zG64yOKx/PZdVo+ds+6ye2xa1cnmsf3bA1aP eScDPe53H2fy2Lyk3uPOj6WMHjsn7WXy6NuyitHj8ya5AL4oLpuU1JzMstQifbsErozpZ1vY C95GVLStWsncwLjIq4uRk0NCwERi/6zZzF2MXBxCArsZJfZPusEMkZCSWPZmGxuELSyx8t9z doiiz4wSr/73MYIk2IC6n8+ZwQqSEBE4zSbxd08DC4jDLDCZUaJl4jN2kCphgXSJH7cusYDY LAKqEtOut4Ot4BVwleiYP40FYoWcxM1znWBxTgEniU/vP7CC2EICjhJrl2xkmsDIt4CRYRWj ZGpBcW56brFhgVFearlecWJucWleul5yfu4mRnAMamntYDxxIv4QowAHoxIP7w7b11FCrIll xZW5hxglOJiVRHhnHQIK8aYkVlalFuXHF5XmpBYfYpTmYFES55XPPxYpJJCeWJKanZpakFoE k2Xi4JRqYJx2qmF9R5lI3KW2fy6/ViY9q1OyYfEve3vmb1+wpWeVSOG0u/ySURqfHr1x1vGt MmT7bT+HOaBC/6drgN3u4r+ZPSl3V033Pufop5ejzXdLg23O3eTIFD/9/tNKH1Izzr5UXdnn KzzD4r/onznXJEQqOLaK8h1Id+1iDU9gMD0hxNOr8uuwEktxRqKhFnNRcSIAvTQT4L0CAAA= X-CMS-MailID: 20180504074013epcas5p4564cb7043e1875154469052d097848db X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-MTR: 20180504074013epcas5p4564cb7043e1875154469052d097848db CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20180504074013epcas5p4564cb7043e1875154469052d097848db X-RootMTR: 20180504074013epcas5p4564cb7043e1875154469052d097848db References: <20180503103639.GH1027@e110455-lin.cambridge.arm.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 Reviewed-by: Jani Nikula Acked-by: Liviu Dudau Signed-off-by: Satendra Singh Thakur Acked-by: Madhur Verma Cc: Hemanshu Srivastava --- v1: Fixed review comments by Mr Jani Initialized with 0 the struct videomode so that stack garbage won't come Added Reviewed-by and Acked-by fields 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