Received: by 10.192.165.148 with SMTP id m20csp1674847imm; Thu, 3 May 2018 03:38:18 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrsitNw4T0A7HKYslqGKRScFaW3w6pQ17cPwYW2CYitk4q+w4UDC30uQc07JXOkaUOZ0OyL X-Received: by 2002:a63:7b0f:: with SMTP id w15-v6mr18150633pgc.405.1525343898448; Thu, 03 May 2018 03:38:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525343898; cv=none; d=google.com; s=arc-20160816; b=ZIXwDD3N/f1wFdEG37h6D426R1R3YmxcZVOpayopRt1/GBY1x1gFw15+c59Hva1ifu LJ20dNdGcRDjPLt7eb3QU3vDkenEZh2QZ6/UHkD8qenpezNRulBuaRGBReZOAPp4Wjqw uRFb520v+Pt924SKXQBAX8IYxm7kjTuEXu9r1fj2ObuFkBKGdZQGiSPr0CCVeTd9tCS3 e0Yyerqxs7D+oTFGHeuAfu3NhgjBbhjP8hxI05urTWDEZ2OFp2d7Vaw1fmf7M4Jp2sDW jU6Rk65acLlEFPMyiOimUOsbxGMwc9AyYUWFHXSSfqTbs2sT1xYl/MbIUwOcR/rS82UN DEGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date :arc-authentication-results; bh=lXtxTUEEvEm+kdNOdAB4AvPzU+YRDpBIc7r+bVvoB4Y=; b=tCh+eGEnoQ8Tov0hjSyWahiYwQ4PwnDsj7BE5O3MuIFx76S7lXQk+HnrmarvcX4ZMv UG758p8c5AIwZDp1VOqrofVNv1AjCea7Y50o4/bwZywgzzH8Rm5+zusueibxzkqH+B4u svLpZcrFNKJgS6nKwxfGvh4Wr1OHD0AgO+c0RkjfIKOPZBuOHKFbmdBS1w3NAFpNrBd0 gW2T6UunFt9ChlUeelCQQKbGEEcftHIhOpKfLSv/Ty3AJo2AgAvHsN/vwJCAnDTsSvFN I6pJVz+jwlLjpNXBwlJMiSu7reGoKhi2Gc3ODFSSqeuL2/6FCnIHjRJNyuBFP0LTemm+ wZWQ== 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 64-v6si13175954plb.574.2018.05.03.03.38.04; Thu, 03 May 2018 03:38:18 -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 S1752108AbeECKgq (ORCPT + 99 others); Thu, 3 May 2018 06:36:46 -0400 Received: from foss.arm.com ([217.140.101.70]:39554 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751737AbeECKgl (ORCPT ); Thu, 3 May 2018 06:36:41 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 51B181529; Thu, 3 May 2018 03:36:41 -0700 (PDT) Received: from e110455-lin.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E92EF3F487; Thu, 3 May 2018 03:36:40 -0700 (PDT) Received: by e110455-lin.cambridge.arm.com (Postfix, from userid 1000) id 4C9846804F0; Thu, 3 May 2018 11:36:39 +0100 (BST) Date: Thu, 3 May 2018 11:36:39 +0100 From: Liviu Dudau To: Satendra Singh Thakur Cc: 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, Madhur Verma , Hemanshu Srivastava Subject: Re: [PATCH] drm/kms/mode: added a new helper for calculating videomode from crtc's display mode Message-ID: <20180503103639.GH1027@e110455-lin.cambridge.arm.com> References: <1525327118-26078-1-git-send-email-satendra.t@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1525327118-26078-1-git-send-email-satendra.t@samsung.com> User-Agent: Mutt/1.9.5 (2018-04-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 03, 2018 at 11:28:37AM +0530, 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) For the HDLCD part: Acked-by: Liviu Dudau If you're not sending the final version through drm-misc then let me know and I can pick up the HDLCD part separately. Best regards, Liviu > 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, > + * @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..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