Received: by 10.192.165.148 with SMTP id m20csp1461656imm; Wed, 2 May 2018 23:00:54 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpnhiuHUh0IRk6zCrnXzO0P/mx1F/laWy+1vvXqj8mUJOv4lnGmR4LwSZJjHfWlS507dtmk X-Received: by 10.98.69.137 with SMTP id n9mr20710865pfi.158.1525327254546; Wed, 02 May 2018 23:00:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525327254; cv=none; d=google.com; s=arc-20160816; b=mClOdD+DmosxDdY4li6+38EgK43ikFCyjEOD3CcoCzCiI3HTwZG8rJXTq5pptsKAX5 Wfi58kq+DYh+2tiBS3ecrcaO+UTpiS8w16CCih6X8Ua0LOIrCsM3ZhR9hGdXo5BNVy+W D+fCbndoG+BehMqYzaSDwdvncp7s6wpmqTnpg2BTWjY4RUMqsu8bcl1VWJGgiVKqnTDT yBTOo59WDT/Nv6q0dR/dthAOJpC0KJB7lkPyVfAPER6P8mnxH+wXIo0aUw6ruU33LjMC Z+uzQBjfSYlkS4ayeJXOtFix8rs7nerfgm50TSGcKLV6oEOoAxntgQs/ofSHe5+3MgSI c+ew== 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:message-id :date:subject:cc:to:from:dkim-signature:dkim-filter :arc-authentication-results; bh=PfHkkxXq1voIdO3qDSHpWyfNj/Y5yYZ60gfcpyzDBHY=; b=l1HuExaqBECGpXyO3T/lAEoPiadKbD/6dMg+IYqjmQ5MuLFrfF5OTE8df2AT1zAgbp rMzJH3G+F/t4UyADi+U3YyhXV23HHzQmUC2375Ipi9XrIg5WkoZmKWolhwrTiTizmzrl vl4M2Vzc8F9GKzHzDQwxwHVbJ0qpUMtJIFZFcEpNToBth8uzkKrzsyO6NtgZjJ+BFfVC //DtyCzYFKYCuQTGfRPHx14xbcYkFWD4m0ZeMFZfmsieHLf/zcnio11MmGkAZQG526SC BFI91oCveUwZGN/gYutTK0yhjQfZ3CRUhLxlkhL4QgTSkTpgsvvzgBpBP62tdnwxvyUV 8AeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=YDgLbk51; 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 q124-v6si10820619pgq.215.2018.05.02.23.00.40; Wed, 02 May 2018 23:00:54 -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=YDgLbk51; 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 S1752073AbeECF7K (ORCPT + 99 others); Thu, 3 May 2018 01:59:10 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:59072 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751825AbeECF7F (ORCPT ); Thu, 3 May 2018 01:59:05 -0400 Received: from epcas5p2.samsung.com (unknown [182.195.41.40]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20180503055904epoutp01407b52bbe8bf74546d2603cf296d8dc1~rDPTAToEz1340613406epoutp01J for ; Thu, 3 May 2018 05:59:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20180503055904epoutp01407b52bbe8bf74546d2603cf296d8dc1~rDPTAToEz1340613406epoutp01J DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1525327144; bh=PfHkkxXq1voIdO3qDSHpWyfNj/Y5yYZ60gfcpyzDBHY=; h=From:To:Cc:Subject:Date:References:From; b=YDgLbk51YqRtv0FU+Kjkj/qzBC58r0kBMfTZwm6Y2xXmWI5pxqFYn/bU9zjCUiBGh o/+badmPv6q4wxYPxUBNxHrOPERVV5nIluYVRSyXfuzX1/g/BB5iyV/27UWVomwmkp 3DeLEYKVOCx4Z/MhN/O1m4kvY1JfiFWTB/EGCs5Y= Received: from epsmges5p3new.samsung.com (unknown [182.195.40.71]) by epcas5p4.samsung.com (KnoxPortal) with ESMTP id 20180503055903epcas5p408309427673dea8639e46fd77d122041~rDPSRgC0q2527725277epcas5p4j; Thu, 3 May 2018 05:59:03 +0000 (GMT) Received: from epcas5p2.samsung.com ( [182.195.41.40]) by epsmges5p3new.samsung.com (Symantec Messaging Gateway) with SMTP id 9D.7A.04244.725AAEA5; Thu, 3 May 2018 14:59:03 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas5p2.samsung.com (KnoxPortal) with ESMTPA id 20180503055902epcas5p2eea7b9f58dc630e60fb28c8fc2ffad7b~rDPR3ZjYO1156511565epcas5p2G; Thu, 3 May 2018 05:59:02 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20180503055902epsmtrp11d7f8f92dc3b5011753e9acad0af5f5d~rDPR0vq551107511075epsmtrp1H; Thu, 3 May 2018 05:59:02 +0000 (GMT) X-AuditID: b6c32a4b-19dff70000001094-7e-5aeaa527dbb0 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id B1.2F.03711.625AAEA5; Thu, 3 May 2018 14:59:02 +0900 (KST) Received: from localhost.localdomain (unknown [107.108.189.138]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20180503055858epsmtip2181e774a2cb557eb0a4023c2418b18e1~rDPN8Sz1N1395313953epsmtip2g; Thu, 3 May 2018 05:58:58 +0000 (GMT) From: Satendra Singh Thakur To: 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: Satendra Singh Thakur , Madhur Verma , Hemanshu Srivastava Subject: [PATCH] drm/kms/mode: added a new helper for calculating videomode from crtc's display mode Date: Thu, 3 May 2018 11:28:37 +0530 Message-Id: <1525327118-26078-1-git-send-email-satendra.t@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA0WTe0xTVxzHc+69vb0+ul2rhjP+IM2Ne0hG7a0tHDbZIzPkZrgMQzaWGlNv yrUQ+mC9rZMtywhT5LGuzDHtBCtkoFmFjVWkgkEJGE1V2jGdURwPH5vQETfGIyTItt7dkv33 +f1+32++5/xyDoWrR8lUqsThFlwO3saQq4nuwc0vZDzfFjfpQsvrkDcawdChxyeV6MJVH4Hu X/0RoJvzf5CoZ6JXieKxaRwdHq8n0OTYMIF8D37HUSzWqURDldNKFHpwS4Fu9DaRyB+7gKH+ tkMEapk5S6DBr1pJdHLuOoHCZ1pw1BE7SKDRziGA/F9Oka+lcO2BdsAF2j/iGiuGCe7U3VEF FwrWkFx4YULBBSI7ufG6Kxh3pvUT7pfFNsD1HO7DuM+7goCbDaXlq0zCtmKBLxJcGsFhcRaV OKw5TF6B+Q2zMVPHZrDZKIvROHi7kMNs35GfkVtiS9yd0ezjbZ5EK58XRWbLK9tcTo9b0BQ7 RXcOs4tl9VpWl6XV6/Vag3H3S3pjQrJHKK5smgNl9wv29/x8HK8A1bm1YBUFaQPsG7mNS6ym zwP4Q/e6WrA6wX8BeGJplpCLBQAXY0vEimP5Yi+QB30Anu2qT6rmAfzm7iQmqciE6lGTXyEN NtBBEoaPXiOlAqfrAPT2HUgkUtR6ei/86e93JQNBPwsbH10nJVbRudDbdVopx6XBO9EaXPJC ulsJAwuDmDzYDn+dG0/yehi/0pU0pMIpX5VSNnwK4MR3LcniMwCray4nVa/CAw39hHQKnN4M v+/dIrdz4LVwp0JinH4KepceYpIE0ipYXaWWJZvgt5OD+ErWk+ZahcwcrLw9k+TXYXB4GMhb 3Q3DHXGsHqQd+z+sGYAgeEYoE+1WQTSWbXUIH2hF3i56HFatxWkPgf+ednreORCK7hgANAWY tar+oSmTWsHvE8vtAwBSOLNB1VAXN6lVRXz5h4LLaXZ5bII4AIyJbX6Bp260OBMfxeE2s4Zs nSEzM4vV6bINTIrqTmTMpKatvFsoFYQywbXiw6hVqRXguYvN0ePLf+4iHgY7wiNPvBrFkRr/ HrXIv/9Ox1vl/1D3PE/zEeEess0YLOObXn587LeP/aU3Tjtv7b/5onrM39AfSbFXr+m5lD2N D2yN7Fz75intmmhB+nuFR/ICG32NI+bZEylOxve2lSgtnSsMhRbn2YOXp5Dq67qqXEthazdD iMU8m467RP5fZRtj5vADAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmpmkeLIzCtJLcpLzFFi42LZdlhJXldt6asog5+HDC16z51ksmh/t4zd Yt+pfhaLR6cuMFpc+fqezWLng13sFq/Ov2G2mHR/AovFi3sXWSz6H79mtjh/fgO7xdmmN+wW mx5fY7W4vGsOm8WM8/uYLA4sbWexWPhxK4vF4alL2CyWfTnDYrF980Jmi7XnW1ks7m44y2gx Y/JLNgdxjzXz1jB6zFtT7TG74SKLx/Lbd1k9Nq3qZPPY/u0Bq8e8k4Ee97uPM3lsXlLvcefH UkaPnZP2Mnn0bVnF6PF5k1wAbxSXTUpqTmZZapG+XQJXRtOcL4wFj4Irdl6dy9zA2OHWxcjJ ISFgIvF3/y7GLkYuDiGB3YwSsx62MkEkpCSWvdnGBmELS6z895wdougzo8Tv6T/YQRJsQN3P 58xgBUmICOxik3g/bx4ziMMs0Mso8WL/frAqYYEUiV933oCNZRFQlZj9/AzYWF4BN4neLavZ IVbISdw818k8gZFnASPDKkbJ1ILi3PTcYsMCo7zUcr3ixNzi0rx0veT83E2M4KjR0trBeOJE /CFGAQ5GJR7eA2dfRgmxJpYVV+YeYpTgYFYS4Z3S/SpKiDclsbIqtSg/vqg0J7X4EKM0B4uS OK98/rFIIYH0xJLU7NTUgtQimCwTB6dUA2OPfGeOutZhk46NKkw3T1SeEI4+MGuhyTalCMeG Lb9nP9h4z5rX5/vdZ9UPo9f+/Wfm8qJYpU2Ex36Hs8WeZp9bzzRWevw7FxjzvUGwSthp64P/ ffbB0stmn9xz+tskpQPLe8w9XVjefT8i0Pfkp6gcw5tNmdJOUb/sPhjXdf95Wqv3c76fTq4S S3FGoqEWc1FxIgCZAZGPlgIAAA== X-CMS-MailID: 20180503055902epcas5p2eea7b9f58dc630e60fb28c8fc2ffad7b X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-MTR: 20180503055902epcas5p2eea7b9f58dc630e60fb28c8fc2ffad7b CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20180503055902epcas5p2eea7b9f58dc630e60fb28c8fc2ffad7b X-RootMTR: 20180503055902epcas5p2eea7b9f58dc630e60fb28c8fc2ffad7b References: 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 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, + * @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