From patchwork Tue Feb 7 09:16:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Guo X-Patchwork-Id: 93527 Delivered-To: patch@linaro.org Received: by 10.182.3.34 with SMTP id 2csp2144353obz; Tue, 7 Feb 2017 01:17:44 -0800 (PST) X-Received: by 10.98.158.210 with SMTP id f79mr18476575pfk.145.1486459064743; Tue, 07 Feb 2017 01:17:44 -0800 (PST) Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTPS id b27si3496185pgn.86.2017.02.07.01.17.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 Feb 2017 01:17:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3D0966E61C; Tue, 7 Feb 2017 09:17:13 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id A079F6E61C for ; Tue, 7 Feb 2017 09:17:12 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5D9F5202BE; Tue, 7 Feb 2017 09:17:11 +0000 (UTC) Received: from localhost.localdomain (li411-102.members.linode.com [106.187.91.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 772D1200C1; Tue, 7 Feb 2017 09:16:59 +0000 (UTC) From: Shawn Guo To: Daniel Vetter Subject: [PATCH v3 00/23] Add vblank hooks to struct drm_crtc_funcs Date: Tue, 7 Feb 2017 17:16:12 +0800 Message-Id: <1486458995-31018-1-git-send-email-shawnguo@kernel.org> X-Mailer: git-send-email 1.9.1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Cc: Neil Armstrong , Liviu Dudau , Laurent Pinchart , Daniel Vetter , Marek Vasut , Alexey Brodkin , Russell King , Xinliang Liu , Tomi Valkeinen , Mali DP Maintainers , Ben Skeggs , Jyri Sarha , dri-devel@lists.freedesktop.org, Maxime Ripard X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Shawn Guo The vblank is mostly CRTC specific and implemented as part of CRTC driver. The first patch adds 3 vblank core<->driver hooks into struct drm_crtc_funcs, and plug them into core by adding wrapper functions for vblank handling code. We effectively make the .get_vblank_counter hook optional by providing drm_vblank_no_hw_counter() as the default fallback in the wrapper function. Patch #2 and #3 unexport function drm_vblank_no_hw_counter() by cleaning up its use, since it's already the default implememention for .get_vblank_counter hook anyway. The rest of the series is trying to do a massive conversion to the new hooks for DRIVER_MODESET drivers. But it only handles low-hanging fruit, and leaves out the ones that need a bit surgery, like gma500, i915, msm etc. Most of conversion get done by simply moving code and making functions static, but imx and rockchip are great examples showing how driver code can be cleaned up with these new hooks. The series is generated against branch drm-next. Changes for v3: - Let drm_vblank_no_hw_counter() be the last fallback for .get_vblank_counter() hook. - Improve the kernel-doc for .get_vblank_counter() hook. - Convert more DRIVER_MODESET drivers to new hooks. Changes for v2: - Wrap around core vblank handling code to save drm_crtc_enable[disable]_vblank() helpers - Add .get_vblank_counter to struct drm_crtc_funcs - Add some comments to link between two sets of hooks - Add one hdlcd driver patch for example Shawn Guo (23): drm: add vblank hooks to struct drm_crtc_funcs drm: remove drm_vblank_no_hw_counter assignment from driver code drm: unexport function drm_vblank_no_hw_counter() drm: hdlcd: use vblank hooks in struct drm_crtc_funcs drm: malidp: use vblank hooks in struct drm_crtc_funcs drm: armada: use vblank hooks in struct drm_crtc_funcs drm: atmel: use vblank hooks in struct drm_crtc_funcs drm: exynos: use vblank hooks in struct drm_crtc_funcs drm: fsl-dcu: use vblank hooks in struct drm_crtc_funcs drm: hibmc: use vblank hooks in struct drm_crtc_funcs drm: kirin: use vblank hooks in struct drm_crtc_funcs drm: imx: remove struct imx_drm_crtc and imx_drm_crtc_helper_funcs drm: mediatek: use vblank hooks in struct drm_crtc_funcs drm: meson: use vblank hooks in struct drm_crtc_funcs drm: qxl: use vblank hooks in struct drm_crtc_funcs drm: rcar-du: use vblank hooks in struct drm_crtc_funcs drm: rockchip: remove struct rockchip_crtc_funcs drm: shmobile: use vblank hooks in struct drm_crtc_funcs drm: sun4i: use vblank hooks in struct drm_crtc_funcs drm: tegra: use vblank hooks in struct drm_crtc_funcs drm: tilcdc: use vblank hooks in struct drm_crtc_funcs drm: vc4: use vblank hooks in struct drm_crtc_funcs drm: zte: use vblank hooks in struct drm_crtc_funcs drivers/gpu/drm/arc/arcpgu_drv.c | 1 - drivers/gpu/drm/arm/hdlcd_crtc.c | 20 +++++ drivers/gpu/drm/arm/hdlcd_drv.c | 21 ----- drivers/gpu/drm/arm/malidp_crtc.c | 21 +++++ drivers/gpu/drm/arm/malidp_drv.c | 22 ----- drivers/gpu/drm/armada/armada_crtc.c | 56 ++++++++----- drivers/gpu/drm/armada/armada_crtc.h | 2 - drivers/gpu/drm/armada/armada_drv.c | 17 ---- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c | 21 +++++ drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 22 ----- drivers/gpu/drm/drm_irq.c | 81 +++++++++++++------ drivers/gpu/drm/exynos/exynos_drm_crtc.c | 40 +++++----- drivers/gpu/drm/exynos/exynos_drm_crtc.h | 2 - drivers/gpu/drm/exynos/exynos_drm_drv.c | 4 - drivers/gpu/drm/exynos/exynos_drm_drv.h | 8 -- drivers/gpu/drm/exynos/exynos_hdmi.c | 7 +- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c | 26 ++++++ drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 26 ------ drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 20 +++++ drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 23 ------ drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 11 +-- drivers/gpu/drm/i915/i915_irq.c | 1 - drivers/gpu/drm/imx/imx-drm-core.c | 102 ------------------------ drivers/gpu/drm/imx/imx-drm.h | 13 --- drivers/gpu/drm/imx/ipuv3-crtc.c | 58 +++++--------- drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 8 +- drivers/gpu/drm/mediatek/mtk_drm_crtc.h | 2 - drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 - drivers/gpu/drm/meson/meson_crtc.c | 22 +++++ drivers/gpu/drm/meson/meson_drv.c | 21 ----- drivers/gpu/drm/msm/msm_drv.c | 1 - drivers/gpu/drm/mxsfb/mxsfb_drv.c | 1 - drivers/gpu/drm/nouveau/nouveau_drm.c | 1 - drivers/gpu/drm/omapdrm/omap_drv.c | 1 - drivers/gpu/drm/qxl/qxl_display.c | 16 ++++ drivers/gpu/drm/qxl/qxl_drv.c | 18 ----- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 29 ++++--- drivers/gpu/drm/rcar-du/rcar_du_crtc.h | 1 - drivers/gpu/drm/rcar-du/rcar_du_drv.c | 20 ----- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 52 ------------ drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 14 ---- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 9 +-- drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 51 ++++++++---- drivers/gpu/drm/shmobile/shmob_drm_crtc.h | 1 - drivers/gpu/drm/shmobile/shmob_drm_drv.c | 20 ----- drivers/gpu/drm/sti/sti_drv.c | 1 - drivers/gpu/drm/sun4i/sun4i_crtc.c | 24 ++++++ drivers/gpu/drm/sun4i/sun4i_drv.c | 28 ------- drivers/gpu/drm/tegra/dc.c | 15 +++- drivers/gpu/drm/tegra/drm.c | 38 --------- drivers/gpu/drm/tegra/drm.h | 3 - drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 11 +++ drivers/gpu/drm/tilcdc/tilcdc_drv.c | 13 --- drivers/gpu/drm/vc4/vc4_crtc.c | 8 +- drivers/gpu/drm/vc4/vc4_drv.c | 3 - drivers/gpu/drm/vc4/vc4_drv.h | 2 - drivers/gpu/drm/zte/zx_drm_drv.c | 3 - drivers/gpu/drm/zte/zx_vou.c | 61 ++++++-------- drivers/gpu/drm/zte/zx_vou.h | 3 - include/drm/drm_crtc.h | 44 ++++++++++ include/drm/drm_drv.h | 16 +++- include/drm/drm_irq.h | 1 - 62 files changed, 481 insertions(+), 710 deletions(-) Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart