Message ID | a873b0e3c59b92ba447a0f750b17dc21c38a586c.1731942780.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/dp: extract payload helpers | expand |
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 --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,
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(-)