Hi, This series started from my work on the hardware state readout[1], and was suggested by Dmitry[2].
This series deal with the fact that drm_private_obj (and thus bridges) are not initialized using the same pattern than any other object. This series solves that inconsistency by aligning it to what we're doing for all the other objects. This was tested on a TI SK-AM62, with three bridges. Let me know what you think, Maxime 1: https://lore.kernel.org/dri-devel/[email protected]/ 2: https://lore.kernel.org/dri-devel/zvqtehg66dbrrdmik6ylo2kdk74umfzo5hbfkizwsb352nlyqv@jgouvmbfwa4x/ Signed-off-by: Maxime Ripard <[email protected]> --- Changes in v2: - Switch to a new hook instead of reset since some drm_private_objs want to persist across suspends - Drop the call to drm_private_obj_funcs.reset in drm_mode_config_reset() - Link to v1: https://lore.kernel.org/r/[email protected] --- Maxime Ripard (16): drm/atomic: Add dev pointer to drm_private_obj drm/atomic: Make drm_atomic_private_obj_init fallible drm/atomic: Add new atomic_create_state callback to drm_private_obj drm/atomic-helper: Add private_obj atomic_create_state helper drm/bridge: Switch private_obj initialization to atomic_create_state drm/dp_mst: Switch private_obj initialization to atomic_create_state drm/dp_tunnel: Switch private_obj initialization to atomic_create_state drm/amdgpu: Switch private_obj initialization to atomic_create_state drm/arm: komeda: Switch private_obj initialization to atomic_create_state drm/ingenic: Switch private_obj initialization to atomic_create_state drm/msm: mdp5: Switch private_obj initialization to atomic_create_state drm/msm: dpu1: Switch private_obj initialization to atomic_create_state drm/omapdrm: Switch private_obj initialization to atomic_create_state drm/tegra: Switch private_obj initialization to atomic_create_state drm/vc4: Switch private_obj initialization to atomic_create_state drm/atomic: Remove state argument to drm_atomic_private_obj_init drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 51 ++--- .../gpu/drm/arm/display/komeda/komeda_pipeline.h | 2 + .../drm/arm/display/komeda/komeda_private_obj.c | 208 ++++++++++++++------- drivers/gpu/drm/display/drm_dp_mst_topology.c | 36 ++-- drivers/gpu/drm/display/drm_dp_tunnel.c | 25 ++- drivers/gpu/drm/drm_atomic.c | 24 ++- drivers/gpu/drm/drm_atomic_state_helper.c | 22 +++ drivers/gpu/drm/drm_bridge.c | 32 ++-- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 28 +-- drivers/gpu/drm/ingenic/ingenic-ipu.c | 28 +-- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 41 ++-- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 40 ++-- drivers/gpu/drm/omapdrm/omap_drv.c | 22 ++- drivers/gpu/drm/tegra/hub.c | 22 ++- drivers/gpu/drm/vc4/vc4_kms.c | 67 ++++--- include/drm/drm_atomic.h | 25 ++- include/drm/drm_atomic_state_helper.h | 3 + 17 files changed, 444 insertions(+), 232 deletions(-) --- base-commit: aa1c2b073ad23847dd2e7bdc7d30009f34ed7f59 change-id: 20251008-drm-private-obj-reset-ae1e2741027a Best regards, -- Maxime Ripard <[email protected]>
