diff mbox series

[2/3] drm/i915/mst: add mst sub-struct to struct intel_connector

Message ID e2afaf4595ae8e3241aaca1c1bb4d6356b07e44a.1740746939.git.jani.nikula@intel.com (mailing list archive)
State New
Headers show
Series drm/i915/display: add some sub-structs for clarity | expand

Commit Message

Jani Nikula Feb. 28, 2025, 12:49 p.m. UTC
Move port and mst_port members of struct intel_connector under an mst
sub-struct to group mst related things together.

Rename the latter dp for clarity.

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 .../gpu/drm/i915/display/intel_connector.c    |  4 +-
 .../drm/i915/display/intel_display_debugfs.c  |  4 +-
 .../drm/i915/display/intel_display_types.h    | 13 ++--
 drivers/gpu/drm/i915/display/intel_dp.c       | 12 ++--
 drivers/gpu/drm/i915/display/intel_dp_hdcp.c  |  6 +-
 drivers/gpu/drm/i915/display/intel_dp_mst.c   | 72 +++++++++----------
 drivers/gpu/drm/i915/display/intel_hdcp.c     |  8 +--
 7 files changed, 60 insertions(+), 59 deletions(-)

Comments

Imre Deak Feb. 28, 2025, 3:52 p.m. UTC | #1
On Fri, Feb 28, 2025 at 02:49:30PM +0200, Jani Nikula wrote:
> Move port and mst_port members of struct intel_connector under an mst
> sub-struct to group mst related things together.
> 
> Rename the latter dp for clarity.
> 
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Imre Deak <imre.deak@intel.com>

> ---
>  .../gpu/drm/i915/display/intel_connector.c    |  4 +-
>  .../drm/i915/display/intel_display_debugfs.c  |  4 +-
>  .../drm/i915/display/intel_display_types.h    | 13 ++--
>  drivers/gpu/drm/i915/display/intel_dp.c       | 12 ++--
>  drivers/gpu/drm/i915/display/intel_dp_hdcp.c  |  6 +-
>  drivers/gpu/drm/i915/display/intel_dp_mst.c   | 72 +++++++++----------
>  drivers/gpu/drm/i915/display/intel_hdcp.c     |  8 +--
>  7 files changed, 60 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c
> index 358965fc7f55..e42357bd9e80 100644
> --- a/drivers/gpu/drm/i915/display/intel_connector.c
> +++ b/drivers/gpu/drm/i915/display/intel_connector.c
> @@ -145,8 +145,8 @@ void intel_connector_destroy(struct drm_connector *connector)
>  
>  	drm_connector_cleanup(connector);
>  
> -	if (intel_connector->port)
> -		drm_dp_mst_put_port_malloc(intel_connector->port);
> +	if (intel_connector->mst.port)
> +		drm_dp_mst_put_port_malloc(intel_connector->mst.port);
>  
>  	kfree(connector);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 408f80194334..510c15a6271f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -261,7 +261,7 @@ static void intel_connector_info(struct seq_file *m,
>  	switch (connector->connector_type) {
>  	case DRM_MODE_CONNECTOR_DisplayPort:
>  	case DRM_MODE_CONNECTOR_eDP:
> -		if (intel_connector->mst_port)
> +		if (intel_connector->mst.dp)
>  			intel_dp_mst_info(m, intel_connector);
>  		else
>  			intel_dp_info(m, intel_connector);
> @@ -1341,7 +1341,7 @@ void intel_connector_debugfs_add(struct intel_connector *connector)
>  	intel_dp_link_training_debugfs_add(connector);
>  
>  	if (DISPLAY_VER(display) >= 11 &&
> -	    ((connector_type == DRM_MODE_CONNECTOR_DisplayPort && !connector->mst_port) ||
> +	    ((connector_type == DRM_MODE_CONNECTOR_DisplayPort && !connector->mst.dp) ||
>  	     connector_type == DRM_MODE_CONNECTOR_eDP)) {
>  		debugfs_create_file("i915_dsc_fec_support", 0644, root,
>  				    connector, &i915_dsc_fec_support_fops);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 2aa8f6264708..b52fca816591 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -534,10 +534,6 @@ struct intel_connector {
>  	   state of connector->polled in case hotplug storm detection changes it */
>  	u8 polled;
>  
> -	struct drm_dp_mst_port *port;
> -
> -	struct intel_dp *mst_port;
> -
>  	int force_joined_pipes;
>  
>  	struct {
> @@ -549,6 +545,11 @@ struct intel_connector {
>  		u8 dsc_decompression_enabled:1;
>  	} dp;
>  
> +	struct {
> +		struct drm_dp_mst_port *port;
> +		struct intel_dp *dp;
> +	} mst;
> +
>  	/* Work struct to schedule a uevent on link train failure */
>  	struct work_struct modeset_retry_work;
>  
> @@ -1956,8 +1957,8 @@ static inline struct intel_dp *enc_to_intel_dp(struct intel_encoder *encoder)
>  
>  static inline struct intel_dp *intel_attached_dp(struct intel_connector *connector)
>  {
> -	if (connector->mst_port)
> -		return connector->mst_port;
> +	if (connector->mst.dp)
> +		return connector->mst.dp;
>  	else
>  		return enc_to_intel_dp(intel_attached_encoder(connector));
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 5e84103c8d54..205ec315b413 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1376,7 +1376,7 @@ bool intel_dp_has_dsc(const struct intel_connector *connector)
>  	if (!HAS_DSC(display))
>  		return false;
>  
> -	if (connector->mst_port && !HAS_DSC_MST(display))
> +	if (connector->mst.dp && !HAS_DSC_MST(display))
>  		return false;
>  
>  	if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP &&
> @@ -3080,7 +3080,7 @@ intel_dp_queue_modeset_retry_for_link(struct intel_atomic_state *state,
>  		if (!conn_state->base.crtc)
>  			continue;
>  
> -		if (connector->mst_port == intel_dp)
> +		if (connector->mst.dp == intel_dp)
>  			intel_connector_queue_modeset_retry_work(connector);
>  	}
>  }
> @@ -3302,8 +3302,8 @@ intel_dp_sink_set_dsc_passthrough(const struct intel_connector *connector,
>  				  bool enable)
>  {
>  	struct intel_display *display = to_intel_display(connector);
> -	struct drm_dp_aux *aux = connector->port ?
> -				 connector->port->passthrough_aux : NULL;
> +	struct drm_dp_aux *aux = connector->mst.port ?
> +				 connector->mst.port->passthrough_aux : NULL;
>  
>  	if (!aux)
>  		return;
> @@ -3330,7 +3330,7 @@ static int intel_dp_dsc_aux_ref_count(struct intel_atomic_state *state,
>  	 * On SST the decompression AUX device won't be shared, each connector
>  	 * uses for this its own AUX targeting the sink device.
>  	 */
> -	if (!connector->mst_port)
> +	if (!connector->mst.dp)
>  		return connector->dp.dsc_decompression_enabled ? 1 : 0;
>  
>  	for_each_oldnew_connector_in_state(&state->base, _connector_iter,
> @@ -3338,7 +3338,7 @@ static int intel_dp_dsc_aux_ref_count(struct intel_atomic_state *state,
>  		const struct intel_connector *
>  			connector_iter = to_intel_connector(_connector_iter);
>  
> -		if (connector_iter->mst_port != connector->mst_port)
> +		if (connector_iter->mst.dp != connector->mst.dp)
>  			continue;
>  
>  		if (!connector_iter->dp.dsc_decompression_enabled)
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> index 00c493cc8a4b..4c9481124c90 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
> @@ -705,10 +705,10 @@ int intel_dp_hdcp_get_remote_capability(struct intel_connector *connector,
>  
>  	*hdcp_capable = false;
>  	*hdcp2_capable = false;
> -	if (!connector->mst_port)
> +	if (!connector->mst.dp)
>  		return -EINVAL;
>  
> -	aux = &connector->port->aux;
> +	aux = &connector->mst.port->aux;
>  	ret =  _intel_dp_hdcp2_get_capability(aux, hdcp2_capable);
>  	if (ret)
>  		drm_dbg_kms(display->drm,
> @@ -883,7 +883,7 @@ int intel_dp_hdcp_init(struct intel_digital_port *dig_port,
>  	if (!is_hdcp_supported(display, port))
>  		return 0;
>  
> -	if (intel_connector->mst_port)
> +	if (intel_connector->mst.dp)
>  		return intel_hdcp_init(intel_connector, dig_port,
>  				       &intel_dp_mst_hdcp_shim);
>  	else if (!intel_dp_is_edp(intel_dp))
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index e96236fbe407..02f95108c637 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -356,7 +356,7 @@ int intel_dp_mtp_tu_compute_config(struct intel_dp *intel_dp,
>  			crtc_state->dp_m_n.tu = remote_tu;
>  
>  			slots = drm_dp_atomic_find_time_slots(state, &intel_dp->mst.mgr,
> -							      connector->port,
> +							      connector->mst.port,
>  							      dfixed_trunc(pbn));
>  		} else {
>  			/* Same as above for remote_tu */
> @@ -509,8 +509,8 @@ hblank_expansion_quirk_needs_dsc(const struct intel_connector *connector,
>  {
>  	const struct drm_display_mode *adjusted_mode =
>  		&crtc_state->hw.adjusted_mode;
> -	bool is_uhbr_sink = connector->mst_port &&
> -			    drm_dp_128b132b_supported(connector->mst_port->dpcd);
> +	bool is_uhbr_sink = connector->mst.dp &&
> +			    drm_dp_128b132b_supported(connector->mst.dp->dpcd);
>  	int hblank_limit = is_uhbr_sink ? 500 : 300;
>  
>  	if (!connector->dp.dsc_hblank_expansion_quirk)
> @@ -741,7 +741,7 @@ intel_dp_mst_transcoder_mask(struct intel_atomic_state *state,
>  		const struct intel_crtc_state *crtc_state;
>  		struct intel_crtc *crtc;
>  
> -		if (connector->mst_port != mst_port || !conn_state->base.crtc)
> +		if (connector->mst.dp != mst_port || !conn_state->base.crtc)
>  			continue;
>  
>  		crtc = to_intel_crtc(conn_state->base.crtc);
> @@ -769,12 +769,12 @@ static u8 get_pipes_downstream_of_mst_port(struct intel_atomic_state *state,
>  		if (!conn_state->base.crtc)
>  			continue;
>  
> -		if (&connector->mst_port->mst.mgr != mst_mgr)
> +		if (&connector->mst.dp->mst.mgr != mst_mgr)
>  			continue;
>  
> -		if (connector->port != parent_port &&
> +		if (connector->mst.port != parent_port &&
>  		    !drm_dp_mst_port_downstream_of_parent(mst_mgr,
> -							  connector->port,
> +							  connector->mst.port,
>  							  parent_port))
>  			continue;
>  
> @@ -925,7 +925,7 @@ mst_connector_atomic_topology_check(struct intel_connector *connector,
>  		struct intel_crtc_state *crtc_state;
>  		struct intel_crtc *crtc;
>  
> -		if (connector_iter->mst_port != connector->mst_port ||
> +		if (connector_iter->mst.dp != connector->mst.dp ||
>  		    connector_iter == connector)
>  			continue;
>  
> @@ -974,15 +974,15 @@ mst_connector_atomic_check(struct drm_connector *_connector,
>  
>  	if (intel_connector_needs_modeset(state, &connector->base)) {
>  		ret = intel_dp_tunnel_atomic_check_state(state,
> -							 connector->mst_port,
> +							 connector->mst.dp,
>  							 connector);
>  		if (ret)
>  			return ret;
>  	}
>  
>  	return drm_dp_atomic_release_time_slots(&state->base,
> -						&connector->mst_port->mst.mgr,
> -						connector->port);
> +						&connector->mst.dp->mst.mgr,
> +						connector->mst.port);
>  }
>  
>  static void mst_stream_disable(struct intel_atomic_state *state,
> @@ -1027,9 +1027,9 @@ static void mst_stream_post_disable(struct intel_atomic_state *state,
>  	struct drm_dp_mst_topology_state *new_mst_state =
>  		drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst.mgr);
>  	const struct drm_dp_mst_atomic_payload *old_payload =
> -		drm_atomic_get_mst_payload_state(old_mst_state, connector->port);
> +		drm_atomic_get_mst_payload_state(old_mst_state, connector->mst.port);
>  	struct drm_dp_mst_atomic_payload *new_payload =
> -		drm_atomic_get_mst_payload_state(new_mst_state, connector->port);
> +		drm_atomic_get_mst_payload_state(new_mst_state, connector->mst.port);
>  	struct intel_crtc *pipe_crtc;
>  	bool last_mst_stream;
>  	int i;
> @@ -1080,7 +1080,7 @@ static void mst_stream_post_disable(struct intel_atomic_state *state,
>  	 * Power down mst path before disabling the port, otherwise we end
>  	 * up getting interrupts from the sink upon detecting link loss.
>  	 */
> -	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->port,
> +	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port,
>  				     false);
>  
>  	/*
> @@ -1199,7 +1199,7 @@ static void mst_stream_pre_enable(struct intel_atomic_state *state,
>  	if (first_mst_stream)
>  		intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
>  
> -	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->port, true);
> +	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port, true);
>  
>  	intel_dp_sink_enable_decompression(state, connector, pipe_config);
>  
> @@ -1213,7 +1213,7 @@ static void mst_stream_pre_enable(struct intel_atomic_state *state,
>  	intel_dp->mst.active_links++;
>  
>  	ret = drm_dp_add_payload_part1(&intel_dp->mst.mgr, mst_state,
> -				       drm_atomic_get_mst_payload_state(mst_state, connector->port));
> +				       drm_atomic_get_mst_payload_state(mst_state, connector->mst.port));
>  	if (ret < 0)
>  		intel_dp_queue_modeset_retry_for_link(state, primary_encoder, pipe_config);
>  
> @@ -1339,7 +1339,7 @@ static void mst_stream_enable(struct intel_atomic_state *state,
>  
>  	ret = drm_dp_add_payload_part2(&intel_dp->mst.mgr,
>  				       drm_atomic_get_mst_payload_state(mst_state,
> -									connector->port));
> +									connector->mst.port));
>  	if (ret < 0)
>  		intel_dp_queue_modeset_retry_for_link(state, primary_encoder, pipe_config);
>  
> @@ -1392,7 +1392,7 @@ static int mst_connector_get_ddc_modes(struct drm_connector *_connector)
>  {
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  	struct intel_display *display = to_intel_display(connector);
> -	struct intel_dp *intel_dp = connector->mst_port;
> +	struct intel_dp *intel_dp = connector->mst.dp;
>  	const struct drm_edid *drm_edid;
>  	int ret;
>  
> @@ -1402,7 +1402,7 @@ static int mst_connector_get_ddc_modes(struct drm_connector *_connector)
>  	if (!intel_display_driver_check_access(display))
>  		return drm_edid_connector_add_modes(&connector->base);
>  
> -	drm_edid = drm_dp_mst_edid_read(&connector->base, &intel_dp->mst.mgr, connector->port);
> +	drm_edid = drm_dp_mst_edid_read(&connector->base, &intel_dp->mst.mgr, connector->mst.port);
>  
>  	ret = intel_connector_update_modes(&connector->base, drm_edid);
>  
> @@ -1417,13 +1417,13 @@ mst_connector_late_register(struct drm_connector *_connector)
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  	int ret;
>  
> -	ret = drm_dp_mst_connector_late_register(&connector->base, connector->port);
> +	ret = drm_dp_mst_connector_late_register(&connector->base, connector->mst.port);
>  	if (ret < 0)
>  		return ret;
>  
>  	ret = intel_connector_register(&connector->base);
>  	if (ret < 0)
> -		drm_dp_mst_connector_early_unregister(&connector->base, connector->port);
> +		drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port);
>  
>  	return ret;
>  }
> @@ -1434,7 +1434,7 @@ mst_connector_early_unregister(struct drm_connector *_connector)
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  
>  	intel_connector_unregister(&connector->base);
> -	drm_dp_mst_connector_early_unregister(&connector->base, connector->port);
> +	drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port);
>  }
>  
>  static const struct drm_connector_funcs mst_connector_funcs = {
> @@ -1463,9 +1463,9 @@ mst_connector_mode_valid_ctx(struct drm_connector *_connector,
>  {
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  	struct intel_display *display = to_intel_display(connector);
> -	struct intel_dp *intel_dp = connector->mst_port;
> +	struct intel_dp *intel_dp = connector->mst.dp;
>  	struct drm_dp_mst_topology_mgr *mgr = &intel_dp->mst.mgr;
> -	struct drm_dp_mst_port *port = connector->port;
> +	struct drm_dp_mst_port *port = connector->mst.port;
>  	const int min_bpp = 18;
>  	int max_dotclk = display->cdclk.max_dotclk_freq;
>  	int max_rate, mode_rate, max_lanes, max_link_clock;
> @@ -1576,7 +1576,7 @@ mst_connector_atomic_best_encoder(struct drm_connector *_connector,
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  	struct drm_connector_state *connector_state =
>  		drm_atomic_get_new_connector_state(state, &connector->base);
> -	struct intel_dp *intel_dp = connector->mst_port;
> +	struct intel_dp *intel_dp = connector->mst.dp;
>  	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
>  
>  	return &intel_dp->mst.stream_encoders[crtc->pipe]->base.base;
> @@ -1588,7 +1588,7 @@ mst_connector_detect_ctx(struct drm_connector *_connector,
>  {
>  	struct intel_connector *connector = to_intel_connector(_connector);
>  	struct intel_display *display = to_intel_display(connector);
> -	struct intel_dp *intel_dp = connector->mst_port;
> +	struct intel_dp *intel_dp = connector->mst.dp;
>  
>  	if (!intel_display_device_enabled(display))
>  		return connector_status_disconnected;
> @@ -1602,7 +1602,7 @@ mst_connector_detect_ctx(struct drm_connector *_connector,
>  	intel_dp_flush_connector_commits(connector);
>  
>  	return drm_dp_mst_detect_port(&connector->base, ctx, &intel_dp->mst.mgr,
> -				      connector->port);
> +				      connector->mst.port);
>  }
>  
>  static const struct drm_connector_helper_funcs mst_connector_helper_funcs = {
> @@ -1693,10 +1693,10 @@ static bool detect_dsc_hblank_expansion_quirk(const struct intel_connector *conn
>  	 * A logical port's OUI (at least for affected sinks) is all 0, so
>  	 * instead of that the parent port's OUI is used for identification.
>  	 */
> -	if (drm_dp_mst_port_is_logical(connector->port)) {
> -		aux = drm_dp_mst_aux_for_parent(connector->port);
> +	if (drm_dp_mst_port_is_logical(connector->mst.port)) {
> +		aux = drm_dp_mst_aux_for_parent(connector->mst.port);
>  		if (!aux)
> -			aux = &connector->mst_port->aux;
> +			aux = &connector->mst.dp->aux;
>  	}
>  
>  	if (drm_dp_read_dpcd_caps(aux, dpcd) < 0)
> @@ -1744,8 +1744,8 @@ mst_topology_add_connector(struct drm_dp_mst_topology_mgr *mgr,
>  
>  	connector->get_hw_state = mst_connector_get_hw_state;
>  	connector->sync_state = intel_dp_connector_sync_state;
> -	connector->mst_port = intel_dp;
> -	connector->port = port;
> +	connector->mst.dp = intel_dp;
> +	connector->mst.port = port;
>  	drm_dp_mst_get_port_malloc(port);
>  
>  	ret = drm_connector_dynamic_init(display->drm, &connector->base, &mst_connector_funcs,
> @@ -1954,11 +1954,11 @@ intel_dp_mst_add_topology_state_for_connector(struct intel_atomic_state *state,
>  {
>  	struct drm_dp_mst_topology_state *mst_state;
>  
> -	if (!connector->mst_port)
> +	if (!connector->mst.dp)
>  		return 0;
>  
>  	mst_state = drm_atomic_get_mst_topology_state(&state->base,
> -						      &connector->mst_port->mst.mgr);
> +						      &connector->mst.dp->mst.mgr);
>  	if (IS_ERR(mst_state))
>  		return PTR_ERR(mst_state);
>  
> @@ -2056,7 +2056,7 @@ bool intel_dp_mst_crtc_needs_modeset(struct intel_atomic_state *state,
>  		const struct intel_crtc_state *old_crtc_state;
>  		struct intel_crtc *crtc_iter;
>  
> -		if (connector->mst_port != crtc_connector->mst_port ||
> +		if (connector->mst.dp != crtc_connector->mst.dp ||
>  		    !conn_state->crtc)
>  			continue;
>  
> @@ -2079,7 +2079,7 @@ bool intel_dp_mst_crtc_needs_modeset(struct intel_atomic_state *state,
>  		 * case.
>  		 */
>  		if (connector->dp.dsc_decompression_aux ==
> -		    &connector->mst_port->aux)
> +		    &connector->mst.dp->aux)
>  			return true;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 100f3fb1c1a0..46f53ade432e 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -70,13 +70,13 @@ static int intel_conn_to_vcpi(struct intel_atomic_state *state,
>  	int vcpi = 0;
>  
>  	/* For HDMI this is forced to be 0x0. For DP SST also this is 0x0. */
> -	if (!connector->port)
> +	if (!connector->mst.port)
>  		return 0;
> -	mgr = connector->port->mgr;
> +	mgr = connector->mst.port->mgr;
>  
>  	drm_modeset_lock(&mgr->base.lock, state->base.acquire_ctx);
>  	mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
> -	payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
> +	payload = drm_atomic_get_mst_payload_state(mst_state, connector->mst.port);
>  	if (drm_WARN_ON(mgr->dev, !payload))
>  		goto out;
>  
> @@ -2775,7 +2775,7 @@ static void __intel_hdcp_info(struct seq_file *m, struct intel_connector *connec
>  void intel_hdcp_info(struct seq_file *m, struct intel_connector *connector)
>  {
>  	seq_puts(m, "\tHDCP version: ");
> -	if (connector->mst_port) {
> +	if (connector->mst.dp) {
>  		__intel_hdcp_info(m, connector, true);
>  		seq_puts(m, "\tMST Hub HDCP version: ");
>  	}
> -- 
> 2.39.5
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c
index 358965fc7f55..e42357bd9e80 100644
--- a/drivers/gpu/drm/i915/display/intel_connector.c
+++ b/drivers/gpu/drm/i915/display/intel_connector.c
@@ -145,8 +145,8 @@  void intel_connector_destroy(struct drm_connector *connector)
 
 	drm_connector_cleanup(connector);
 
-	if (intel_connector->port)
-		drm_dp_mst_put_port_malloc(intel_connector->port);
+	if (intel_connector->mst.port)
+		drm_dp_mst_put_port_malloc(intel_connector->mst.port);
 
 	kfree(connector);
 }
diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 408f80194334..510c15a6271f 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -261,7 +261,7 @@  static void intel_connector_info(struct seq_file *m,
 	switch (connector->connector_type) {
 	case DRM_MODE_CONNECTOR_DisplayPort:
 	case DRM_MODE_CONNECTOR_eDP:
-		if (intel_connector->mst_port)
+		if (intel_connector->mst.dp)
 			intel_dp_mst_info(m, intel_connector);
 		else
 			intel_dp_info(m, intel_connector);
@@ -1341,7 +1341,7 @@  void intel_connector_debugfs_add(struct intel_connector *connector)
 	intel_dp_link_training_debugfs_add(connector);
 
 	if (DISPLAY_VER(display) >= 11 &&
-	    ((connector_type == DRM_MODE_CONNECTOR_DisplayPort && !connector->mst_port) ||
+	    ((connector_type == DRM_MODE_CONNECTOR_DisplayPort && !connector->mst.dp) ||
 	     connector_type == DRM_MODE_CONNECTOR_eDP)) {
 		debugfs_create_file("i915_dsc_fec_support", 0644, root,
 				    connector, &i915_dsc_fec_support_fops);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 2aa8f6264708..b52fca816591 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -534,10 +534,6 @@  struct intel_connector {
 	   state of connector->polled in case hotplug storm detection changes it */
 	u8 polled;
 
-	struct drm_dp_mst_port *port;
-
-	struct intel_dp *mst_port;
-
 	int force_joined_pipes;
 
 	struct {
@@ -549,6 +545,11 @@  struct intel_connector {
 		u8 dsc_decompression_enabled:1;
 	} dp;
 
+	struct {
+		struct drm_dp_mst_port *port;
+		struct intel_dp *dp;
+	} mst;
+
 	/* Work struct to schedule a uevent on link train failure */
 	struct work_struct modeset_retry_work;
 
@@ -1956,8 +1957,8 @@  static inline struct intel_dp *enc_to_intel_dp(struct intel_encoder *encoder)
 
 static inline struct intel_dp *intel_attached_dp(struct intel_connector *connector)
 {
-	if (connector->mst_port)
-		return connector->mst_port;
+	if (connector->mst.dp)
+		return connector->mst.dp;
 	else
 		return enc_to_intel_dp(intel_attached_encoder(connector));
 }
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 5e84103c8d54..205ec315b413 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1376,7 +1376,7 @@  bool intel_dp_has_dsc(const struct intel_connector *connector)
 	if (!HAS_DSC(display))
 		return false;
 
-	if (connector->mst_port && !HAS_DSC_MST(display))
+	if (connector->mst.dp && !HAS_DSC_MST(display))
 		return false;
 
 	if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP &&
@@ -3080,7 +3080,7 @@  intel_dp_queue_modeset_retry_for_link(struct intel_atomic_state *state,
 		if (!conn_state->base.crtc)
 			continue;
 
-		if (connector->mst_port == intel_dp)
+		if (connector->mst.dp == intel_dp)
 			intel_connector_queue_modeset_retry_work(connector);
 	}
 }
@@ -3302,8 +3302,8 @@  intel_dp_sink_set_dsc_passthrough(const struct intel_connector *connector,
 				  bool enable)
 {
 	struct intel_display *display = to_intel_display(connector);
-	struct drm_dp_aux *aux = connector->port ?
-				 connector->port->passthrough_aux : NULL;
+	struct drm_dp_aux *aux = connector->mst.port ?
+				 connector->mst.port->passthrough_aux : NULL;
 
 	if (!aux)
 		return;
@@ -3330,7 +3330,7 @@  static int intel_dp_dsc_aux_ref_count(struct intel_atomic_state *state,
 	 * On SST the decompression AUX device won't be shared, each connector
 	 * uses for this its own AUX targeting the sink device.
 	 */
-	if (!connector->mst_port)
+	if (!connector->mst.dp)
 		return connector->dp.dsc_decompression_enabled ? 1 : 0;
 
 	for_each_oldnew_connector_in_state(&state->base, _connector_iter,
@@ -3338,7 +3338,7 @@  static int intel_dp_dsc_aux_ref_count(struct intel_atomic_state *state,
 		const struct intel_connector *
 			connector_iter = to_intel_connector(_connector_iter);
 
-		if (connector_iter->mst_port != connector->mst_port)
+		if (connector_iter->mst.dp != connector->mst.dp)
 			continue;
 
 		if (!connector_iter->dp.dsc_decompression_enabled)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
index 00c493cc8a4b..4c9481124c90 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c
@@ -705,10 +705,10 @@  int intel_dp_hdcp_get_remote_capability(struct intel_connector *connector,
 
 	*hdcp_capable = false;
 	*hdcp2_capable = false;
-	if (!connector->mst_port)
+	if (!connector->mst.dp)
 		return -EINVAL;
 
-	aux = &connector->port->aux;
+	aux = &connector->mst.port->aux;
 	ret =  _intel_dp_hdcp2_get_capability(aux, hdcp2_capable);
 	if (ret)
 		drm_dbg_kms(display->drm,
@@ -883,7 +883,7 @@  int intel_dp_hdcp_init(struct intel_digital_port *dig_port,
 	if (!is_hdcp_supported(display, port))
 		return 0;
 
-	if (intel_connector->mst_port)
+	if (intel_connector->mst.dp)
 		return intel_hdcp_init(intel_connector, dig_port,
 				       &intel_dp_mst_hdcp_shim);
 	else if (!intel_dp_is_edp(intel_dp))
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index e96236fbe407..02f95108c637 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -356,7 +356,7 @@  int intel_dp_mtp_tu_compute_config(struct intel_dp *intel_dp,
 			crtc_state->dp_m_n.tu = remote_tu;
 
 			slots = drm_dp_atomic_find_time_slots(state, &intel_dp->mst.mgr,
-							      connector->port,
+							      connector->mst.port,
 							      dfixed_trunc(pbn));
 		} else {
 			/* Same as above for remote_tu */
@@ -509,8 +509,8 @@  hblank_expansion_quirk_needs_dsc(const struct intel_connector *connector,
 {
 	const struct drm_display_mode *adjusted_mode =
 		&crtc_state->hw.adjusted_mode;
-	bool is_uhbr_sink = connector->mst_port &&
-			    drm_dp_128b132b_supported(connector->mst_port->dpcd);
+	bool is_uhbr_sink = connector->mst.dp &&
+			    drm_dp_128b132b_supported(connector->mst.dp->dpcd);
 	int hblank_limit = is_uhbr_sink ? 500 : 300;
 
 	if (!connector->dp.dsc_hblank_expansion_quirk)
@@ -741,7 +741,7 @@  intel_dp_mst_transcoder_mask(struct intel_atomic_state *state,
 		const struct intel_crtc_state *crtc_state;
 		struct intel_crtc *crtc;
 
-		if (connector->mst_port != mst_port || !conn_state->base.crtc)
+		if (connector->mst.dp != mst_port || !conn_state->base.crtc)
 			continue;
 
 		crtc = to_intel_crtc(conn_state->base.crtc);
@@ -769,12 +769,12 @@  static u8 get_pipes_downstream_of_mst_port(struct intel_atomic_state *state,
 		if (!conn_state->base.crtc)
 			continue;
 
-		if (&connector->mst_port->mst.mgr != mst_mgr)
+		if (&connector->mst.dp->mst.mgr != mst_mgr)
 			continue;
 
-		if (connector->port != parent_port &&
+		if (connector->mst.port != parent_port &&
 		    !drm_dp_mst_port_downstream_of_parent(mst_mgr,
-							  connector->port,
+							  connector->mst.port,
 							  parent_port))
 			continue;
 
@@ -925,7 +925,7 @@  mst_connector_atomic_topology_check(struct intel_connector *connector,
 		struct intel_crtc_state *crtc_state;
 		struct intel_crtc *crtc;
 
-		if (connector_iter->mst_port != connector->mst_port ||
+		if (connector_iter->mst.dp != connector->mst.dp ||
 		    connector_iter == connector)
 			continue;
 
@@ -974,15 +974,15 @@  mst_connector_atomic_check(struct drm_connector *_connector,
 
 	if (intel_connector_needs_modeset(state, &connector->base)) {
 		ret = intel_dp_tunnel_atomic_check_state(state,
-							 connector->mst_port,
+							 connector->mst.dp,
 							 connector);
 		if (ret)
 			return ret;
 	}
 
 	return drm_dp_atomic_release_time_slots(&state->base,
-						&connector->mst_port->mst.mgr,
-						connector->port);
+						&connector->mst.dp->mst.mgr,
+						connector->mst.port);
 }
 
 static void mst_stream_disable(struct intel_atomic_state *state,
@@ -1027,9 +1027,9 @@  static void mst_stream_post_disable(struct intel_atomic_state *state,
 	struct drm_dp_mst_topology_state *new_mst_state =
 		drm_atomic_get_new_mst_topology_state(&state->base, &intel_dp->mst.mgr);
 	const struct drm_dp_mst_atomic_payload *old_payload =
-		drm_atomic_get_mst_payload_state(old_mst_state, connector->port);
+		drm_atomic_get_mst_payload_state(old_mst_state, connector->mst.port);
 	struct drm_dp_mst_atomic_payload *new_payload =
-		drm_atomic_get_mst_payload_state(new_mst_state, connector->port);
+		drm_atomic_get_mst_payload_state(new_mst_state, connector->mst.port);
 	struct intel_crtc *pipe_crtc;
 	bool last_mst_stream;
 	int i;
@@ -1080,7 +1080,7 @@  static void mst_stream_post_disable(struct intel_atomic_state *state,
 	 * Power down mst path before disabling the port, otherwise we end
 	 * up getting interrupts from the sink upon detecting link loss.
 	 */
-	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->port,
+	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port,
 				     false);
 
 	/*
@@ -1199,7 +1199,7 @@  static void mst_stream_pre_enable(struct intel_atomic_state *state,
 	if (first_mst_stream)
 		intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
 
-	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->port, true);
+	drm_dp_send_power_updown_phy(&intel_dp->mst.mgr, connector->mst.port, true);
 
 	intel_dp_sink_enable_decompression(state, connector, pipe_config);
 
@@ -1213,7 +1213,7 @@  static void mst_stream_pre_enable(struct intel_atomic_state *state,
 	intel_dp->mst.active_links++;
 
 	ret = drm_dp_add_payload_part1(&intel_dp->mst.mgr, mst_state,
-				       drm_atomic_get_mst_payload_state(mst_state, connector->port));
+				       drm_atomic_get_mst_payload_state(mst_state, connector->mst.port));
 	if (ret < 0)
 		intel_dp_queue_modeset_retry_for_link(state, primary_encoder, pipe_config);
 
@@ -1339,7 +1339,7 @@  static void mst_stream_enable(struct intel_atomic_state *state,
 
 	ret = drm_dp_add_payload_part2(&intel_dp->mst.mgr,
 				       drm_atomic_get_mst_payload_state(mst_state,
-									connector->port));
+									connector->mst.port));
 	if (ret < 0)
 		intel_dp_queue_modeset_retry_for_link(state, primary_encoder, pipe_config);
 
@@ -1392,7 +1392,7 @@  static int mst_connector_get_ddc_modes(struct drm_connector *_connector)
 {
 	struct intel_connector *connector = to_intel_connector(_connector);
 	struct intel_display *display = to_intel_display(connector);
-	struct intel_dp *intel_dp = connector->mst_port;
+	struct intel_dp *intel_dp = connector->mst.dp;
 	const struct drm_edid *drm_edid;
 	int ret;
 
@@ -1402,7 +1402,7 @@  static int mst_connector_get_ddc_modes(struct drm_connector *_connector)
 	if (!intel_display_driver_check_access(display))
 		return drm_edid_connector_add_modes(&connector->base);
 
-	drm_edid = drm_dp_mst_edid_read(&connector->base, &intel_dp->mst.mgr, connector->port);
+	drm_edid = drm_dp_mst_edid_read(&connector->base, &intel_dp->mst.mgr, connector->mst.port);
 
 	ret = intel_connector_update_modes(&connector->base, drm_edid);
 
@@ -1417,13 +1417,13 @@  mst_connector_late_register(struct drm_connector *_connector)
 	struct intel_connector *connector = to_intel_connector(_connector);
 	int ret;
 
-	ret = drm_dp_mst_connector_late_register(&connector->base, connector->port);
+	ret = drm_dp_mst_connector_late_register(&connector->base, connector->mst.port);
 	if (ret < 0)
 		return ret;
 
 	ret = intel_connector_register(&connector->base);
 	if (ret < 0)
-		drm_dp_mst_connector_early_unregister(&connector->base, connector->port);
+		drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port);
 
 	return ret;
 }
@@ -1434,7 +1434,7 @@  mst_connector_early_unregister(struct drm_connector *_connector)
 	struct intel_connector *connector = to_intel_connector(_connector);
 
 	intel_connector_unregister(&connector->base);
-	drm_dp_mst_connector_early_unregister(&connector->base, connector->port);
+	drm_dp_mst_connector_early_unregister(&connector->base, connector->mst.port);
 }
 
 static const struct drm_connector_funcs mst_connector_funcs = {
@@ -1463,9 +1463,9 @@  mst_connector_mode_valid_ctx(struct drm_connector *_connector,
 {
 	struct intel_connector *connector = to_intel_connector(_connector);
 	struct intel_display *display = to_intel_display(connector);
-	struct intel_dp *intel_dp = connector->mst_port;
+	struct intel_dp *intel_dp = connector->mst.dp;
 	struct drm_dp_mst_topology_mgr *mgr = &intel_dp->mst.mgr;
-	struct drm_dp_mst_port *port = connector->port;
+	struct drm_dp_mst_port *port = connector->mst.port;
 	const int min_bpp = 18;
 	int max_dotclk = display->cdclk.max_dotclk_freq;
 	int max_rate, mode_rate, max_lanes, max_link_clock;
@@ -1576,7 +1576,7 @@  mst_connector_atomic_best_encoder(struct drm_connector *_connector,
 	struct intel_connector *connector = to_intel_connector(_connector);
 	struct drm_connector_state *connector_state =
 		drm_atomic_get_new_connector_state(state, &connector->base);
-	struct intel_dp *intel_dp = connector->mst_port;
+	struct intel_dp *intel_dp = connector->mst.dp;
 	struct intel_crtc *crtc = to_intel_crtc(connector_state->crtc);
 
 	return &intel_dp->mst.stream_encoders[crtc->pipe]->base.base;
@@ -1588,7 +1588,7 @@  mst_connector_detect_ctx(struct drm_connector *_connector,
 {
 	struct intel_connector *connector = to_intel_connector(_connector);
 	struct intel_display *display = to_intel_display(connector);
-	struct intel_dp *intel_dp = connector->mst_port;
+	struct intel_dp *intel_dp = connector->mst.dp;
 
 	if (!intel_display_device_enabled(display))
 		return connector_status_disconnected;
@@ -1602,7 +1602,7 @@  mst_connector_detect_ctx(struct drm_connector *_connector,
 	intel_dp_flush_connector_commits(connector);
 
 	return drm_dp_mst_detect_port(&connector->base, ctx, &intel_dp->mst.mgr,
-				      connector->port);
+				      connector->mst.port);
 }
 
 static const struct drm_connector_helper_funcs mst_connector_helper_funcs = {
@@ -1693,10 +1693,10 @@  static bool detect_dsc_hblank_expansion_quirk(const struct intel_connector *conn
 	 * A logical port's OUI (at least for affected sinks) is all 0, so
 	 * instead of that the parent port's OUI is used for identification.
 	 */
-	if (drm_dp_mst_port_is_logical(connector->port)) {
-		aux = drm_dp_mst_aux_for_parent(connector->port);
+	if (drm_dp_mst_port_is_logical(connector->mst.port)) {
+		aux = drm_dp_mst_aux_for_parent(connector->mst.port);
 		if (!aux)
-			aux = &connector->mst_port->aux;
+			aux = &connector->mst.dp->aux;
 	}
 
 	if (drm_dp_read_dpcd_caps(aux, dpcd) < 0)
@@ -1744,8 +1744,8 @@  mst_topology_add_connector(struct drm_dp_mst_topology_mgr *mgr,
 
 	connector->get_hw_state = mst_connector_get_hw_state;
 	connector->sync_state = intel_dp_connector_sync_state;
-	connector->mst_port = intel_dp;
-	connector->port = port;
+	connector->mst.dp = intel_dp;
+	connector->mst.port = port;
 	drm_dp_mst_get_port_malloc(port);
 
 	ret = drm_connector_dynamic_init(display->drm, &connector->base, &mst_connector_funcs,
@@ -1954,11 +1954,11 @@  intel_dp_mst_add_topology_state_for_connector(struct intel_atomic_state *state,
 {
 	struct drm_dp_mst_topology_state *mst_state;
 
-	if (!connector->mst_port)
+	if (!connector->mst.dp)
 		return 0;
 
 	mst_state = drm_atomic_get_mst_topology_state(&state->base,
-						      &connector->mst_port->mst.mgr);
+						      &connector->mst.dp->mst.mgr);
 	if (IS_ERR(mst_state))
 		return PTR_ERR(mst_state);
 
@@ -2056,7 +2056,7 @@  bool intel_dp_mst_crtc_needs_modeset(struct intel_atomic_state *state,
 		const struct intel_crtc_state *old_crtc_state;
 		struct intel_crtc *crtc_iter;
 
-		if (connector->mst_port != crtc_connector->mst_port ||
+		if (connector->mst.dp != crtc_connector->mst.dp ||
 		    !conn_state->crtc)
 			continue;
 
@@ -2079,7 +2079,7 @@  bool intel_dp_mst_crtc_needs_modeset(struct intel_atomic_state *state,
 		 * case.
 		 */
 		if (connector->dp.dsc_decompression_aux ==
-		    &connector->mst_port->aux)
+		    &connector->mst.dp->aux)
 			return true;
 	}
 
diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 100f3fb1c1a0..46f53ade432e 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -70,13 +70,13 @@  static int intel_conn_to_vcpi(struct intel_atomic_state *state,
 	int vcpi = 0;
 
 	/* For HDMI this is forced to be 0x0. For DP SST also this is 0x0. */
-	if (!connector->port)
+	if (!connector->mst.port)
 		return 0;
-	mgr = connector->port->mgr;
+	mgr = connector->mst.port->mgr;
 
 	drm_modeset_lock(&mgr->base.lock, state->base.acquire_ctx);
 	mst_state = to_drm_dp_mst_topology_state(mgr->base.state);
-	payload = drm_atomic_get_mst_payload_state(mst_state, connector->port);
+	payload = drm_atomic_get_mst_payload_state(mst_state, connector->mst.port);
 	if (drm_WARN_ON(mgr->dev, !payload))
 		goto out;
 
@@ -2775,7 +2775,7 @@  static void __intel_hdcp_info(struct seq_file *m, struct intel_connector *connec
 void intel_hdcp_info(struct seq_file *m, struct intel_connector *connector)
 {
 	seq_puts(m, "\tHDCP version: ");
-	if (connector->mst_port) {
+	if (connector->mst.dp) {
 		__intel_hdcp_info(m, connector, true);
 		seq_puts(m, "\tMST Hub HDCP version: ");
 	}