When eDP connector is forced off (video=eDP-1:d), intel_edp_init_connector() ignores the force flag and still probes the AUX channel for DPCD and EDID.
video=eDP-1:d sets connector->force = DRM_FORCE_OFF via drm_connector_get_cmdline_mode() inside drm_connector_init_with_ddc(), which logs 'forcing eDP-1 connector off'. However, intel_edp_init_connector() is called immediately after and ignores the force flag, so AUX/PPS probing still occurs. Fix this by checking connector->base.force == DRM_FORCE_OFF in intel_edp_init_connector() after the intel_dp_is_edp() check, before any AUX/DPCD probing is attempted. When the connector is forced off, log an informational message and goto out_vdd_off to properly clean up PPS state and skip all remaining hardware probing. Suggested-by: Arun R Murthy <[email protected]> Signed-off-by: LIOU, Mei Fan <[email protected]> --- drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 3569e61e7fee..fa61b299f83e 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -7057,6 +7057,17 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, intel_alpm_init(intel_dp); + /* + * If the connector has been forced off via the kernel cmdline + * (e.g. video=eDP-1:d), skip DPCD/AUX probing. + */ + if (connector->base.force == DRM_FORCE_OFF) { + drm_info(display->drm, + "[ENCODER:%d:%s] eDP disabled via cmdline, skipping eDP init\n", + encoder->base.base.id, encoder->base.name); + goto out_vdd_off; + } + /* Cache DPCD and EDID for edp. */ has_dpcd = intel_edp_init_dpcd(intel_dp, connector); -- 2.52.0
