Received: by 10.192.165.148 with SMTP id m20csp1547544imm; Thu, 3 May 2018 01:00:12 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqYzHSdmCEbNRA2+VkcghxS9tAdvxuiu1o5kLF2BOIRQ/AV97s+V/VEoSaOaHnQqExhoWas X-Received: by 2002:a17:902:684c:: with SMTP id f12-v6mr23215942pln.139.1525334412549; Thu, 03 May 2018 01:00:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525334412; cv=none; d=google.com; s=arc-20160816; b=XcldsRPOtEVG2V6j3bEa2tLeGAEoel37nujUOwKmAAE9JBttdiR83lNx39Ea4AlK7z IOnd3UPHdcuIoKUr+zUcdGST0QONCf0LOd/lzdonSpbvuEBbaAiaPMVOKxOhihivQqJe yGM8yEx/Wts2953PkFHxmOPPGDTWJIntQ1WwV1PNGySrUbQ8JECsDQeyjYUVrGWTJgwh 8qq4pgTRhgtWLBka+mg3NHKWcxIk0RdynjfOgng4BCDlh3mv7FdALbR7CXH597jG9c62 0Rmm4SjSUWHuC1WqV0X/4WTSNvFR0UbhhH0fFxTEc0aRMcCBwxFHI1fxxT+WvC5oVAuM EkQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :organization:in-reply-to:subject:cc:to:from :arc-authentication-results; bh=X8XQyjW40ZFZ1AZBsomrYicutArNqyQsgBMIvFoUX4s=; b=GJx/GEvvs5/A2SPZ8cnSWFnk7Fw0pNcq4K9thVNkhzBV5ySBnkmUneEudG0J9bEoHk dn260FMIg3CR1DjD6vdxDFRfPfI2lP0HkkmkD0Cr+tTo25A9B8ih2igbnVykjjRrdkEq YonwKQ2aUqsg5GpDevc7ScmD7pVApm4QsugmbLj1rQrnArH3HQS3bVDgB2JMTyBTP1q+ JU0ywz5jIFs73TfiiA3Hli1l/RueAqsoch8JBzX5ll4daQlUl00BJrepk4n9MJqL7zNt UNsNq7wNsb/oJD9hanwAd3ycyHaptA5PC7FCC4tVVyutbrguAzF+lkSVzbcHom7Gb/BQ AwUg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g67si13498768pfe.4.2018.05.03.00.59.57; Thu, 03 May 2018 01:00:12 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751133AbeECH7k (ORCPT + 99 others); Thu, 3 May 2018 03:59:40 -0400 Received: from mga17.intel.com ([192.55.52.151]:54551 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751078AbeECH7i (ORCPT ); Thu, 3 May 2018 03:59:38 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 May 2018 00:59:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,357,1520924400"; d="scan'208";a="52024718" Received: from jnikula-mobl2.fi.intel.com (HELO localhost) ([10.237.72.62]) by fmsmga001.fm.intel.com with ESMTP; 03 May 2018 00:59:32 -0700 From: Jani Nikula To: Satendra Singh Thakur , Liviu Dudau , 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: Hemanshu Srivastava , Satendra Singh Thakur , Madhur Verma Subject: Re: [PATCH] drm/kms/mode: added a new helper for calculating videomode from crtc's display mode In-Reply-To: <1525327118-26078-1-git-send-email-satendra.t@samsung.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <1525327118-26078-1-git-send-email-satendra.t@samsung.com> Date: Thu, 03 May 2018 11:02:13 +0300 Message-ID: <87lgd188vu.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 03 May 2018, Satendra Singh Thakur wrote: > 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 patch removes related duplicate code from above mentioned drivers > > Signed-off-by: Satendra Singh Thakur > Cc: Madhur Verma > Cc: Hemanshu Srivastava > --- > drivers/gpu/drm/arm/hdlcd_crtc.c | 8 +------- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 7 +------ > drivers/gpu/drm/drm_modes.c | 20 ++++++++++++++++++++ > 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, 53 insertions(+), 51 deletions(-) > > diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c > index cf5cbd6..d20e471 100644 > --- a/drivers/gpu/drm/arm/hdlcd_crtc.c > +++ b/drivers/gpu/drm/arm/hdlcd_crtc.c > @@ -130,13 +130,7 @@ static void hdlcd_crtc_mode_set_nofb(struct drm_crtc *crtc) > 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..bafcef6 100644 > --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c > @@ -81,12 +81,7 @@ static void atmel_hlcdc_crtc_mode_set_nofb(struct drm_crtc *c) > 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..a406749 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -654,6 +654,26 @@ 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, "of@dmode" needs a space, superfluous comma at the end. > + * @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; IMO this should fill in or at least clear all fields of videomode, in many call sites they'll contain stack garbage. > + Superfluous newline. > +} > +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..1ba73a8 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