drm/i915/dp_link_training: Allocate atomic state for autoretrain modeset

Allocate a local atomic state for the autoretrain modeset. This
prepares for a follow-up change that needs to access the state after
the modeset for sending userspace notifications.

v2: Rebase on upstream drm_atomic_state -> drm_atomic_commit rename.

Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patch.msgid.link/20260601093836.3057345-20-imre.deak@intel.com
This commit is contained in:
Imre Deak
2026-06-01 12:38:32 +03:00
parent 0fd9803a2e
commit 9074b9ff90

View File

@@ -27,6 +27,7 @@
#include <drm/display/drm_dp_helper.h>
#include <drm/drm_print.h>
#include "intel_display.h"
#include "intel_display_core.h"
#include "intel_display_jiffies.h"
#include "intel_display_types.h"
@@ -2165,6 +2166,8 @@ static int intel_dp_retrain_link(struct intel_encoder *encoder,
struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
struct intel_dp_link_training *link_training =
intel_dp->link.training;
struct intel_atomic_state *state;
struct drm_atomic_commit *_state;
u8 pipe_mask;
int ret;
@@ -2194,9 +2197,15 @@ static int intel_dp_retrain_link(struct intel_encoder *encoder,
encoder->base.base.id, encoder->base.name,
str_yes_no(intel_dp_link_training_get_force_retrain(link_training)));
ret = intel_modeset_commit_pipes(display, pipe_mask, ctx);
_state = drm_atomic_commit_alloc(display->drm);
if (!_state)
return -ENOMEM;
state = to_intel_atomic_state(_state);
ret = intel_modeset_commit_pipes_for_atomic_state(state, pipe_mask, ctx);
if (ret == -EDEADLK)
return ret;
goto out;
intel_dp_link_training_set_force_retrain(link_training, false);
@@ -2205,6 +2214,8 @@ static int intel_dp_retrain_link(struct intel_encoder *encoder,
"[ENCODER:%d:%s] link retraining failed: %pe\n",
encoder->base.base.id, encoder->base.name,
ERR_PTR(ret));
out:
drm_atomic_commit_put(&state->base);
return ret;
}