[PATCH v3 00/23] Add vblank hooks to struct drm_crtc_funcs

Sean Paul seanpaul at chromium.org
Wed Feb 8 15:49:57 UTC 2017


On Tue, Feb 07, 2017 at 05:16:12PM +0800, Shawn Guo wrote:
> From: Shawn Guo <shawn.guo at linaro.org>
> 
> 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.
> 

Hi Shawn,
Thanks for the cleanup, it looks great! Let's soak this on the list until next
week, if there are no objections from driver maintainers, I'll merge it to
-misc.

Sean


> 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(-)
> 
> -- 
> 1.9.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Sean Paul, Software Engineer, Google / Chromium OS


More information about the dri-devel mailing list