linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/22] drm: Clean up VBLANK callbacks in struct drm_driver
@ 2020-01-23 13:59 Thomas Zimmermann
  2020-01-23 13:59 ` [PATCH v4 01/22] drm: Remove internal setup of struct drm_device.vblank_disable_immediate Thomas Zimmermann
                   ` (21 more replies)
  0 siblings, 22 replies; 31+ messages in thread
From: Thomas Zimmermann @ 2020-01-23 13:59 UTC (permalink / raw)
  To: airlied, daniel, alexander.deucher, christian.koenig,
	David1.Zhou, maarten.lankhorst, patrik.r.jakobsson, robdclark,
	sean, benjamin.gaignard, vincent.abriou, yannick.fertre,
	philippe.cornu, mcoquelin.stm32, alexandre.torgue, eric,
	rodrigosiqueiramelo, hamohammed.sa, linux-graphics-maintainer,
	thellstrom, bskeggs, harry.wentland, sunpeng.li, jani.nikula,
	joonas.lahtinen, rodrigo.vivi
  Cc: dri-devel, amd-gfx, intel-gfx, linux-arm-msm, freedreno, nouveau,
	Thomas Zimmermann

VBLANK handlers in struct drm_driver are deprecated. Only legacy,
non-KMS drivers are supposed to used them. DRM drivers with kernel
modesetting are supposed to use VBLANK callbacks of the CRTC
infrastructure.

This patchset converts all DRM drivers to CRTC VBLANK callbacks and
cleans up struct drm_driver. The remaining VBLANK callbacks in struct
drm_driver are only used by legacy drivers.

Patch 1 removes an additional setup step of vblank_disable_immediate
in struct drm_device. This simplifies the integration of CRTC VBLANK
callbacks in patch 3. If necessary, a future patch could move
vblank_disable_immedate to struct drm_crtc, so that high-precision
VBLANKs could be enabled on a per-CRTC basis.

Patches 2 and 3 prepare the DRM infrastructure. These patches add
get_scanout_position() to struct drm_crtc_helper_funcs,
get_vblank_timestamp() to struct drm_crtc_funcs, and add helpers for
the new interfaces.

Patches 4 to 20 convert drivers over.

In patch 21, all VBLANK callbacks are removed from struct drm_driver,
except for get_vblank_counter(), enable_vblank(), and disable_vblank().
These interfaces are moved to the legacy section at the end of the
structure. Old helper code is now unused and being removed as well.
Finally, patch 22 removes an older version of get_scanout_position()
from the VBLANK interface.

To cover all affected drivers, I build the patchset in x86, x86-64,
arm and aarch64. I smoke-tested amdgpu, gma500, i915, radeon and vc4 on
respective hardware.

v4:
	* fixed warnings and improved code readability (Ville, Jani)
v3:
	* refactor drm_calc_vbltimestamp_from_scanout_pos to share code
	  with new helper (Villa, Jani)
	* do more checks for crtc != NULL to cover non-KMS drivers (Ville)
	* add function typedefs for readability (Ville)
v2:
	* reorder patches so the i915 can be converted without duplicating
	  helper code.
	* merged cleanup patches
	* changed VBLANK function signatures in amdgpu (Alex)

Thomas Zimmermann (22):
  drm: Remove internal setup of struct
    drm_device.vblank_disable_immediate
  drm: Add get_scanout_position() to struct drm_crtc_helper_funcs
  drm: Add get_vblank_timestamp() to struct drm_crtc_funcs
  drm/amdgpu: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/amdgpu: Convert to CRTC VBLANK callbacks
  drm/gma500: Convert to CRTC VBLANK callbacks
  drm/i915: Convert to CRTC VBLANK callbacks
  drm/nouveau: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/nouveau: Convert to CRTC VBLANK callbacks
  drm/radeon: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/radeon: Convert to CRTC VBLANK callbacks
  drm/msm: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/msm: Convert to CRTC VBLANK callbacks
  drm/stm: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/stm: Convert to CRTC VBLANK callbacks
  drm/sti: Convert to CRTC VBLANK callbacks
  drm/vc4: Convert to struct
    drm_crtc_helper_funcs.get_scanout_position()
  drm/vc4: Convert to CRTC VBLANK callbacks
  drm/vkms: Convert to CRTC VBLANK callbacks
  drm/vmwgfx: Convert to CRTC VBLANK callbacks
  drm: Clean-up VBLANK-related callbacks in struct drm_driver
  drm: Remove legacy version of get_scanout_position()

 drivers/gpu/drm/amd/amdgpu/amdgpu.h           |   6 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   |  16 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c       |  15 --
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c       |  21 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h      |   5 +
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        |   5 +
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        |   5 +
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         |   5 +
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         |   5 +
 drivers/gpu/drm/amd/amdgpu/dce_virtual.c      |   5 +
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  13 +-
 drivers/gpu/drm/drm_vblank.c                  | 146 +++++++++-------
 drivers/gpu/drm/gma500/cdv_intel_display.c    |   3 +
 drivers/gpu/drm/gma500/psb_drv.c              |   4 -
 drivers/gpu/drm/gma500/psb_drv.h              |   6 +-
 drivers/gpu/drm/gma500/psb_intel_display.c    |   3 +
 drivers/gpu/drm/gma500/psb_irq.c              |  12 +-
 drivers/gpu/drm/gma500/psb_irq.h              |   7 +-
 drivers/gpu/drm/i915/display/intel_display.c  |   7 +
 drivers/gpu/drm/i915/i915_drv.c               |   3 -
 drivers/gpu/drm/i915/i915_irq.c               |  20 ++-
 drivers/gpu/drm/i915/i915_irq.h               |   6 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      |   2 +
 drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c     |   2 +
 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  82 +++++++++
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c      |  95 -----------
 drivers/gpu/drm/msm/msm_drv.c                 |  10 +-
 drivers/gpu/drm/msm/msm_drv.h                 |   3 +
 drivers/gpu/drm/nouveau/dispnv04/crtc.c       |   4 +
 drivers/gpu/drm/nouveau/dispnv50/head.c       |   5 +
 drivers/gpu/drm/nouveau/nouveau_display.c     |  28 +---
 drivers/gpu/drm/nouveau/nouveau_display.h     |  11 +-
 drivers/gpu/drm/nouveau/nouveau_drm.c         |   5 -
 drivers/gpu/drm/radeon/atombios_crtc.c        |   1 +
 drivers/gpu/drm/radeon/radeon_display.c       |  25 ++-
 drivers/gpu/drm/radeon/radeon_drv.c           |  18 --
 drivers/gpu/drm/radeon/radeon_kms.c           |  29 ++--
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c   |   3 +-
 drivers/gpu/drm/radeon/radeon_mode.h          |   6 +
 drivers/gpu/drm/sti/sti_crtc.c                |  11 +-
 drivers/gpu/drm/sti/sti_crtc.h                |   2 -
 drivers/gpu/drm/sti/sti_drv.c                 |   4 -
 drivers/gpu/drm/stm/drv.c                     |   2 -
 drivers/gpu/drm/stm/ltdc.c                    |  66 ++++----
 drivers/gpu/drm/stm/ltdc.h                    |   5 -
 drivers/gpu/drm/vc4/vc4_crtc.c                |  13 +-
 drivers/gpu/drm/vc4/vc4_drv.c                 |   3 -
 drivers/gpu/drm/vc4/vc4_drv.h                 |   4 -
 drivers/gpu/drm/vkms/vkms_crtc.c              |   9 +-
 drivers/gpu/drm/vkms/vkms_drv.c               |   1 -
 drivers/gpu/drm/vkms/vkms_drv.h               |   4 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c           |   3 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h           |   6 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c           |   6 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c           |   3 +
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c          |   3 +
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c          |   3 +
 include/drm/drm_crtc.h                        |  46 +++++-
 include/drm/drm_drv.h                         | 156 +-----------------
 include/drm/drm_modeset_helper_vtables.h      |  47 ++++++
 include/drm/drm_vblank.h                      |  35 +++-
 61 files changed, 559 insertions(+), 520 deletions(-)

--
2.24.1


^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2020-03-02 21:55 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-23 13:59 [PATCH v4 00/22] drm: Clean up VBLANK callbacks in struct drm_driver Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 01/22] drm: Remove internal setup of struct drm_device.vblank_disable_immediate Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 02/22] drm: Add get_scanout_position() to struct drm_crtc_helper_funcs Thomas Zimmermann
2020-03-02 21:55   ` Daniel Vetter
2020-01-23 13:59 ` [PATCH v4 03/22] drm: Add get_vblank_timestamp() to struct drm_crtc_funcs Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 04/22] drm/amdgpu: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-02-03 20:41   ` Alex Deucher
2020-01-23 13:59 ` [PATCH v4 05/22] drm/amdgpu: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-02-03 20:42   ` Alex Deucher
2020-01-23 13:59 ` [PATCH v4 06/22] drm/gma500: " Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 07/22] drm/i915: " Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 08/22] drm/nouveau: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-01-29  8:25   ` Ben Skeggs
2020-01-23 13:59 ` [PATCH v4 09/22] drm/nouveau: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-01-29  8:25   ` Ben Skeggs
2020-01-23 13:59 ` [PATCH v4 10/22] drm/radeon: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-02-03 20:39   ` Alex Deucher
2020-01-23 13:59 ` [PATCH v4 11/22] drm/radeon: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 12/22] drm/msm: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 13/22] drm/msm: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 14/22] drm/stm: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-01-24 10:42   ` Philippe CORNU
2020-01-23 13:59 ` [PATCH v4 15/22] drm/stm: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-01-24 10:43   ` Philippe CORNU
2020-01-23 13:59 ` [PATCH v4 16/22] drm/sti: " Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 17/22] drm/vc4: Convert to struct drm_crtc_helper_funcs.get_scanout_position() Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 18/22] drm/vc4: Convert to CRTC VBLANK callbacks Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 19/22] drm/vkms: " Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 20/22] drm/vmwgfx: " Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 21/22] drm: Clean-up VBLANK-related callbacks in struct drm_driver Thomas Zimmermann
2020-01-23 13:59 ` [PATCH v4 22/22] drm: Remove legacy version of get_scanout_position() Thomas Zimmermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).