diff mbox series

[3/3] drm/dp: extract drm_dp_dpcd_clear_payload()

Message ID a873b0e3c59b92ba447a0f750b17dc21c38a586c.1731942780.git.jani.nikula@intel.com (mailing list archive)
State New
Headers show
Series drm/dp: extract payload helpers | expand

Commit Message

Jani Nikula Nov. 18, 2024, 3:14 p.m. UTC
SST with 128b/132b channel coding needs this too. Extract to a separate
helper, independent of MST.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/display/drm_dp_helper.c       | 14 ++++++++++++++
 drivers/gpu/drm/display/drm_dp_mst_topology.c |  2 +-
 include/drm/display/drm_dp_helper.h           |  1 +
 3 files changed, 16 insertions(+), 1 deletion(-)

Comments

Imre Deak Nov. 20, 2024, 3:09 p.m. UTC | #1
On Mon, Nov 18, 2024 at 05:14:54PM +0200, Jani Nikula wrote:
> SST with 128b/132b channel coding needs this too. Extract to a separate
> helper, independent of MST.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

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

> ---
>  drivers/gpu/drm/display/drm_dp_helper.c       | 14 ++++++++++++++
>  drivers/gpu/drm/display/drm_dp_mst_topology.c |  2 +-
>  include/drm/display/drm_dp_helper.h           |  1 +
>  3 files changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
> index 0c9230f3f994..9b7f8393440d 100644
> --- a/drivers/gpu/drm/display/drm_dp_helper.c
> +++ b/drivers/gpu/drm/display/drm_dp_helper.c
> @@ -848,6 +848,20 @@ int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux,
>  }
>  EXPORT_SYMBOL(drm_dp_dpcd_write_payload);
>  
> +/**
> + * drm_dp_dpcd_clear_payload() - Clear the entire VC Payload ID table
> + * @aux: DisplayPort AUX channel
> + *
> + * Clear the entire VC Payload ID table.
> + *
> + * Returns: 0 on success, negative error code on errors.
> + */
> +int drm_dp_dpcd_clear_payload(struct drm_dp_aux *aux)
> +{
> +	return drm_dp_dpcd_write_payload(aux, 0, 0, 0x3f);
> +}
> +EXPORT_SYMBOL(drm_dp_dpcd_clear_payload);
> +
>  /**
>   * drm_dp_dpcd_poll_act_handled() - Polls for ACT handled status.
>   * @aux: DisplayPort AUX channel
> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> index a426d13a7a36..307ce0981e2c 100644
> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> @@ -3679,7 +3679,7 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
>  			goto out_unlock;
>  
>  		/* Write reset payload */
> -		drm_dp_dpcd_write_payload(mgr->aux, 0, 0, 0x3f);
> +		drm_dp_dpcd_clear_payload(mgr->aux);
>  
>  		drm_dp_mst_queue_probe_work(mgr);
>  
> diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
> index 69793815aa82..8f4054a56039 100644
> --- a/include/drm/display/drm_dp_helper.h
> +++ b/include/drm/display/drm_dp_helper.h
> @@ -569,6 +569,7 @@ int drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux,
>  
>  int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux,
>  			      int vcpid, u8 start_time_slot, u8 time_slot_count);
> +int drm_dp_dpcd_clear_payload(struct drm_dp_aux *aux);
>  int drm_dp_dpcd_poll_act_handled(struct drm_dp_aux *aux, int timeout_ms);
>  
>  bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,
> -- 
> 2.39.5
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
index 0c9230f3f994..9b7f8393440d 100644
--- a/drivers/gpu/drm/display/drm_dp_helper.c
+++ b/drivers/gpu/drm/display/drm_dp_helper.c
@@ -848,6 +848,20 @@  int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux,
 }
 EXPORT_SYMBOL(drm_dp_dpcd_write_payload);
 
+/**
+ * drm_dp_dpcd_clear_payload() - Clear the entire VC Payload ID table
+ * @aux: DisplayPort AUX channel
+ *
+ * Clear the entire VC Payload ID table.
+ *
+ * Returns: 0 on success, negative error code on errors.
+ */
+int drm_dp_dpcd_clear_payload(struct drm_dp_aux *aux)
+{
+	return drm_dp_dpcd_write_payload(aux, 0, 0, 0x3f);
+}
+EXPORT_SYMBOL(drm_dp_dpcd_clear_payload);
+
 /**
  * drm_dp_dpcd_poll_act_handled() - Polls for ACT handled status.
  * @aux: DisplayPort AUX channel
diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
index a426d13a7a36..307ce0981e2c 100644
--- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
@@ -3679,7 +3679,7 @@  int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
 			goto out_unlock;
 
 		/* Write reset payload */
-		drm_dp_dpcd_write_payload(mgr->aux, 0, 0, 0x3f);
+		drm_dp_dpcd_clear_payload(mgr->aux);
 
 		drm_dp_mst_queue_probe_work(mgr);
 
diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
index 69793815aa82..8f4054a56039 100644
--- a/include/drm/display/drm_dp_helper.h
+++ b/include/drm/display/drm_dp_helper.h
@@ -569,6 +569,7 @@  int drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux,
 
 int drm_dp_dpcd_write_payload(struct drm_dp_aux *aux,
 			      int vcpid, u8 start_time_slot, u8 time_slot_count);
+int drm_dp_dpcd_clear_payload(struct drm_dp_aux *aux);
 int drm_dp_dpcd_poll_act_handled(struct drm_dp_aux *aux, int timeout_ms);
 
 bool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux,