Linux kernel and device drivers for NXP i.MX platforms
 help / color / mirror / Atom feed
* [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset
@ 2026-08-21 14:38 Maxime Ripard
  2026-08-21 14:38 ` [PATCH 11/70] drm/imx: dc: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Maxime Ripard @ 2026-08-21 14:38 UTC (permalink / raw)
  To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter
  Cc: dri-devel, Maxime Ripard, Janne Grunau, Sasha Finkelstein, asahi,
	Christian König, Alex Deucher, amd-gfx, Liviu Dudau,
	Russell King, Alim Akhtar, Inki Dae, Krzysztof Kozlowski,
	Kyungmin Park, Peter Griffin, Seung-Woo Kim, linux-samsung-soc,
	Alison Wang, Stefan Agner, Ruben Wauters, Tian Tao, Xinwei Kong,
	Yongbang Shi, John Stultz, Sumit Semwal, Xinliang Liu,
	Yongqin Liu, Dexuan Cui, Long Li, Saurabh Sengar, linux-hyperv,
	Fabio Estevam, Frank Li, Liu Ying, Pengutronix Kernel Team,
	Sascha Hauer, imx, Laurentiu Palcu, Lucas Stach, Paul Cercueil,
	linux-mips, Anitha Chrisanthus, Paul Kocialkowski, Jerome Brunet,
	Kevin Hilman, Martin Blumenstingl, linux-amlogic, Abhinav Kumar,
	Dmitry Baryshkov, Jessica Zhang, Marijn Suijten, Rob Clark,
	Sean Paul, freedreno, linux-arm-msm, Marek Vasut, Dave Airlie,
	Gerd Hoffmann, spice-devel, virtualization, Geert Uytterhoeven,
	linux-renesas-soc, Marcus Folkesson, Baolin Wang, Chunyan Zhang,
	Orson Zhai, Alain Volmat, Raphael Gallais-Pou, Alexandre Torgue,
	Maxime Coquelin, Philippe Cornu, Raphael Gallais-Pou,
	Yannick Fertre, Chen-Yu Tsai, Samuel Holland, linux-sunxi,
	Jyri Sarha, Tomi Valkeinen, Aditya Garg, Aun-Ali Zaidi,
	LiangCheng Wang, Alex Lanzano, Hans de Goede, Icenowy Zheng,
	Chia-I Wu, Dmitry Osipenko, Gurchetan Singh, Michal Simek,
	Javier Martinez Canillas, Harry Wentland, Leo Li,
	Rodrigo Siqueira, Jocelyn Falempe, Alexandre Belloni,
	Claudiu Beznea, Dharma Balasubiramani, Manikandan Muralidharan,
	Nicolas Ferre, Philipp Zabel, Huacai Chen, Jianmin Lv,
	Mingcong Bai, Qianhai Wu, Xi Ruoyao, AngeloGioacchino Del Regno,
	Chun-Kuang Hu, Matthias Brugger, Danilo Krummrich, Lyude Paul,
	nouveau, Kieran Bingham, Laurent Pinchart, Magnus Damm,
	Tomi Valkeinen, Biju Das, Heiko Stübner, Andy Yan,
	Sandy Huang, linux-rockchip, Iker Pedrosa, Jonathan Hunter,
	Mikko Perttunen, Thierry Reding, linux-tegra, Maíra Canal,
	Dave Stevenson, Raspberry Pi Kernel Maintenance, Haneen Mohammed,
	Louis Chauvet, Melissa Wen, Broadcom internal kernel review list,
	Zack Rusin

This is a follow-up to the plane reset removal series, and part of a
larger effort to remove the reset hook from all KMS objects.

The CRTC reset hook is overloaded: it is called both at probe time to
create the initial software state and during suspend/resume to reset
hardware and software state. These two roles have different
requirements, and the reset hook is not fallible, making error
handling difficult for the initial state allocation path.

While reset has the semantics to reset both the software and hardware
state, the vast majority of implementations and all the helpers only
reset the software state, making them equivalent to
atomic_create_state in practice. The atomic_create_state hook makes
this explicit: it only allocates and initializes a pristine state
without any side effect, and returns the state pointer or an ERR_PTR
on failure.

This series converts all CRTC drivers tree-wide from the reset hook to
atomic_create_state, then removes the reset hook from struct
drm_crtc_funcs entirely. Two drivers (tilcdc and loongson) had actual
hardware reset logic mixed into their reset hook; those are moved to
CRTC creation instead. The conversions were done using a combination of
Coccinelle semantic patches and manual adjustments.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Maxime Ripard (70):
      drm/adp: Switch to drm_atomic_helper_crtc_create_state
      drm/amdgpu: vkms: Switch to drm_atomic_helper_crtc_create_state
      drm/arm: hdlcd: Switch to drm_atomic_helper_crtc_create_state
      drm/armada: Switch to drm_atomic_helper_crtc_create_state
      drm/exynos: Switch to drm_atomic_helper_crtc_create_state
      drm/fsl-dcu: Switch to drm_atomic_helper_crtc_create_state
      drm/gud: Switch to drm_atomic_helper_crtc_create_state
      drm/hisilicon: hibmc: Switch to drm_atomic_helper_crtc_create_state
      drm/hisilicon: kirin: Switch to drm_atomic_helper_crtc_create_state
      drm/hyperv: Switch to drm_atomic_helper_crtc_create_state
      drm/imx: dc: Switch to drm_atomic_helper_crtc_create_state
      drm/imx: dcss: Switch to drm_atomic_helper_crtc_create_state
      drm/ingenic: Switch to drm_atomic_helper_crtc_create_state
      drm/kmb: Switch to drm_atomic_helper_crtc_create_state
      drm/logicvc: Switch to drm_atomic_helper_crtc_create_state
      drm/meson: Switch to drm_atomic_helper_crtc_create_state
      drm/msm: mdp4: Switch to drm_atomic_helper_crtc_create_state
      drm/mxs: mxsfb: Switch to drm_atomic_helper_crtc_create_state
      drm/qxl: Switch to drm_atomic_helper_crtc_create_state
      drm/renesas: shmobile: Switch to drm_atomic_helper_crtc_create_state
      drm/simple-kms: Remove unused reset_crtc hook
      drm/simple-kms: Switch to drm_atomic_helper_crtc_create_state
      drm/sitronix: st7571: Switch to drm_atomic_helper_crtc_create_state
      drm/sprd: Switch to drm_atomic_helper_crtc_create_state
      drm/sti: Switch to drm_atomic_helper_crtc_create_state
      drm/stm: Switch to drm_atomic_helper_crtc_create_state
      drm/sun4i: Switch to drm_atomic_helper_crtc_create_state
      drm/tests: Switch to drm_atomic_helper_crtc_create_state
      drm/tilcdc: Move hardware reset to CRTC creation
      drm/tilcdc: Switch to drm_atomic_helper_crtc_create_state
      drm/tiny: appletbdrm: Switch to drm_atomic_helper_crtc_create_state
      drm/tiny: bochs: Switch to drm_atomic_helper_crtc_create_state
      drm/tiny: cirrus: Switch to drm_atomic_helper_crtc_create_state
      drm/tiny: pixpaper: Switch to drm_atomic_helper_crtc_create_state
      drm/tiny: sharp: Switch to drm_atomic_helper_crtc_create_state
      drm/udl: Switch to drm_atomic_helper_crtc_create_state
      drm/vbox: Switch to drm_atomic_helper_crtc_create_state
      drm/verisilicon: Switch to drm_atomic_helper_crtc_create_state
      drm/virtio: Switch to drm_atomic_helper_crtc_create_state
      drm/xlnx: Switch to drm_atomic_helper_crtc_create_state
      drm/mipi-dbi: Switch to drm_atomic_helper_crtc_create_state
      drm/atomic-helper: Remove drm_atomic_helper_crtc_reset
      sysfb: Convert to create_state
      drm/amdgpu: dm: Convert to atomic_create_state
      drm/komeda: Convert to atomic_create_state
      drm/malidp: Convert to atomic_create_state
      drm/ast: Convert to atomic_create_state
      drm/atmel-hlcdc: Convert to atomic_create_state
      drm/imx: ipuv3: Convert to atomic_create_state
      drm/loongsoon: Move hardware reset to CRTC creation
      drm/loongson: Convert to atomic_create_state
      drm/mediatek: Convert to atomic_create_state
      drm/mgag200: Convert to atomic_create_state
      drm/msm: dpu1: Convert to atomic_create_state
      drm/msm: mdp5: Convert to atomic_create_state
      drm/mxsfb: lcdif: Convert to atomic_create_state
      drm/nouveau: Convert to atomic_create_state
      drm/omapdrm: Convert to atomic_create_state
      drm/rcar-du: Convert to atomic_create_state
      drm/rzg2l-du: Convert to atomic_create_state
      drm/rockchip: vop: Convert to atomic_create_state
      drm/rockchip: vop2: Convert to atomic_create_state
      drm/sitronix: st7920: Convert to atomic_create_state
      drm/solomon: ssd130x: Convert to atomic_create_state
      drm/tegra: Convert to atomic_create_state
      drm/vc4: Convert to atomic_create_state
      drm/vkms: Convert to atomic_create_state
      drm/vmwgfx: Convert to atomic_create_state
      drm/atomic-helper: Remove __drm_atomic_helper_crtc_reset
      drm/crtc: Remove reset

 drivers/gpu/drm/adp/adp_drv.c                      |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c           |  2 +-
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 17 ++++----
 drivers/gpu/drm/arm/display/komeda/komeda_crtc.c   | 18 ++++----
 drivers/gpu/drm/arm/hdlcd_crtc.c                   |  2 +-
 drivers/gpu/drm/arm/malidp_crtc.c                  | 18 ++++----
 drivers/gpu/drm/armada/armada_crtc.c               |  2 +-
 drivers/gpu/drm/ast/ast_mode.c                     | 18 ++++----
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c     | 19 ++++-----
 drivers/gpu/drm/drm_atomic_state_helper.c          | 45 --------------------
 drivers/gpu/drm/drm_mode_config.c                  |  4 +-
 drivers/gpu/drm/drm_simple_kms_helper.c            | 13 +-----
 drivers/gpu/drm/exynos/exynos_drm_crtc.c           |  2 +-
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c         |  2 +-
 drivers/gpu/drm/gud/gud_drv.c                      |  2 +-
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c     |  2 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c    |  2 +-
 drivers/gpu/drm/hyperv/hyperv_drm_modeset.c        |  2 +-
 drivers/gpu/drm/imx/dc/dc-crtc.c                   |  2 +-
 drivers/gpu/drm/imx/dcss/dcss-crtc.c               |  2 +-
 drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c             | 18 ++++----
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c          |  2 +-
 drivers/gpu/drm/kmb/kmb_crtc.c                     |  2 +-
 drivers/gpu/drm/logicvc/logicvc_crtc.c             |  2 +-
 drivers/gpu/drm/loongson/lsdc_crtc.c               | 26 ++++++------
 drivers/gpu/drm/mediatek/mtk_crtc.c                | 18 ++++----
 drivers/gpu/drm/meson/meson_crtc.c                 |  2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.h              |  4 +-
 drivers/gpu/drm/mgag200/mgag200_mode.c             | 15 ++++---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c           | 18 ++++----
 drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c          |  2 +-
 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c          | 20 ++++-----
 drivers/gpu/drm/mxsfb/lcdif_kms.c                  | 17 ++++----
 drivers/gpu/drm/mxsfb/mxsfb_kms.c                  |  4 +-
 drivers/gpu/drm/nouveau/dispnv50/head.c            | 14 +++----
 drivers/gpu/drm/omapdrm/omap_crtc.c                | 17 ++++----
 drivers/gpu/drm/qxl/qxl_display.c                  |  2 +-
 drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c     | 17 ++++----
 drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c      | 15 +++----
 drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c  |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c        | 18 ++++----
 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c       | 18 ++++----
 drivers/gpu/drm/sitronix/st7571.c                  |  2 +-
 drivers/gpu/drm/sitronix/st7920.c                  | 10 +++--
 drivers/gpu/drm/solomon/ssd130x.c                  | 10 +++--
 drivers/gpu/drm/sprd/sprd_dpu.c                    |  2 +-
 drivers/gpu/drm/sti/sti_crtc.c                     |  2 +-
 drivers/gpu/drm/stm/ltdc.c                         |  4 +-
 drivers/gpu/drm/sun4i/sun4i_crtc.c                 |  2 +-
 drivers/gpu/drm/sysfb/drm_sysfb_helper.h           |  4 +-
 drivers/gpu/drm/sysfb/drm_sysfb_modeset.c          | 20 ++++-----
 drivers/gpu/drm/tegra/dc.c                         | 18 ++++----
 drivers/gpu/drm/tests/drm_kunit_helpers.c          |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c               | 49 +++++++++-------------
 drivers/gpu/drm/tiny/appletbdrm.c                  |  2 +-
 drivers/gpu/drm/tiny/bochs.c                       |  2 +-
 drivers/gpu/drm/tiny/cirrus-qemu.c                 |  2 +-
 drivers/gpu/drm/tiny/pixpaper.c                    |  2 +-
 drivers/gpu/drm/tiny/sharp-memory.c                |  2 +-
 drivers/gpu/drm/udl/udl_modeset.c                  |  2 +-
 drivers/gpu/drm/vboxvideo/vbox_mode.c              |  2 +-
 drivers/gpu/drm/vc4/tests/vc4_mock_crtc.c          |  2 +-
 drivers/gpu/drm/vc4/vc4_crtc.c                     | 14 +++----
 drivers/gpu/drm/vc4/vc4_drv.h                      |  2 +-
 drivers/gpu/drm/vc4/vc4_txp.c                      |  2 +-
 drivers/gpu/drm/verisilicon/vs_crtc.c              |  2 +-
 drivers/gpu/drm/virtio/virtgpu_display.c           |  2 +-
 drivers/gpu/drm/vkms/vkms_crtc.c                   | 18 ++++----
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c                | 22 ++++------
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.h                |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c                |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c               |  2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c               |  2 +-
 drivers/gpu/drm/xlnx/zynqmp_kms.c                  |  2 +-
 include/drm/drm_atomic_state_helper.h              |  3 --
 include/drm/drm_crtc.h                             | 12 ------
 include/drm/drm_mipi_dbi.h                         |  2 +-
 include/drm/drm_simple_kms_helper.h                |  1 -
 78 files changed, 275 insertions(+), 385 deletions(-)
---
base-commit: 7ea58b9ddb52264a4ed36bccb975062ada32c62d
change-id: 20260709-drm-no-more-crtc-reset-14a4d5bc8d41

Best regards,
-- 
Maxime Ripard <mripard@kernel.org>


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

end of thread, other threads:[~2026-08-24 14:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21 14:38 [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Maxime Ripard
2026-08-21 14:38 ` [PATCH 11/70] drm/imx: dc: Switch to drm_atomic_helper_crtc_create_state Maxime Ripard
2026-08-21 15:00   ` sashiko-bot
2026-08-21 14:38 ` [PATCH 12/70] drm/imx: dcss: " Maxime Ripard
2026-08-21 14:38 ` [PATCH 18/70] drm/mxs: mxsfb: " Maxime Ripard
2026-08-21 15:12   ` sashiko-bot
2026-08-21 14:39 ` [PATCH 49/70] drm/imx: ipuv3: Convert to atomic_create_state Maxime Ripard
2026-08-24 14:32   ` Philipp Zabel
2026-08-21 14:39 ` [PATCH 56/70] drm/mxsfb: lcdif: " Maxime Ripard
2026-08-24 11:28 ` [PATCH 00/70] drm/crtc: Convert all drivers to atomic_create_state and remove reset Thomas Zimmermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox