[RESEND RFC 04/18] drm/display/dp_mst: Call them time slots, not VCPI slots
Lin, Wayne
Wayne.Lin at amd.com
Wed Jun 15 04:28:13 UTC 2022
[Public]
Thank you Lyude for addressing this!
VCPI is also a confusing naming to me at first glance since it stands for
Virtual Channel Payload Identification which is just an ID number ( we can
look up these payload IDs In DPCD 0x2C1 ~0x2FF).
I also look up left VCPI terms in rest of the code. Seems like we still can modify
some parts here? Like:
/**
* struct drm_dp_vcpi - Virtual Channel Payload Identifier
* @vcpi: Virtual channel ID.
* @pbn: Payload Bandwidth Number for this channel
* @aligned_pbn: PBN aligned with slot size
* @num_slots: number of slots for this PBN
*/
struct drm_dp_vcpi {
int vcpi;
int pbn;
int aligned_pbn;
int num_slots;
};
Would like to change the structure name to "struct drm_dp_mst_vcp {}" to represent
the virtual channel payload. Not specific to the ID.
Would like to know your thoughts : )
> -----Original Message-----
> From: Lyude Paul <lyude at redhat.com>
> Sent: Wednesday, June 8, 2022 3:29 AM
> To: dri-devel at lists.freedesktop.org; nouveau at lists.freedesktop.org; amd-
> gfx at lists.freedesktop.org
> Cc: Lin, Wayne <Wayne.Lin at amd.com>; Ville Syrjälä
> <ville.syrjala at linux.intel.com>; Zuo, Jerry <Jerry.Zuo at amd.com>; Jani Nikula
> <jani.nikula at intel.com>; Imre Deak <imre.deak at intel.com>; Daniel Vetter
> <daniel.vetter at ffwll.ch>; Sean Paul <sean at poorly.run>; Wentland, Harry
> <Harry.Wentland at amd.com>; Li, Sun peng (Leo) <Sunpeng.Li at amd.com>;
> Siqueira, Rodrigo <Rodrigo.Siqueira at amd.com>; Deucher, Alexander
> <Alexander.Deucher at amd.com>; Koenig, Christian
> <Christian.Koenig at amd.com>; Pan, Xinhui <Xinhui.Pan at amd.com>; David
> Airlie <airlied at linux.ie>; Daniel Vetter <daniel at ffwll.ch>; Jani Nikula
> <jani.nikula at linux.intel.com>; Joonas Lahtinen
> <joonas.lahtinen at linux.intel.com>; Rodrigo Vivi <rodrigo.vivi at intel.com>;
> Tvrtko Ursulin <tvrtko.ursulin at linux.intel.com>; Ben Skeggs
> <bskeggs at redhat.com>; Karol Herbst <kherbst at redhat.com>; Kazlauskas,
> Nicholas <Nicholas.Kazlauskas at amd.com>; Li, Roman
> <Roman.Li at amd.com>; Shih, Jude <Jude.Shih at amd.com>; Simon Ser
> <contact at emersion.fr>; Wu, Hersen <hersenxs.wu at amd.com>; Thomas
> Zimmermann <tzimmermann at suse.de>; Lakha, Bhawanpreet
> <Bhawanpreet.Lakha at amd.com>; José Roberto de Souza
> <jose.souza at intel.com>; He Ying <heying24 at huawei.com>; Matt Roper
> <matthew.d.roper at intel.com>; Sean Paul <seanpaul at chromium.org>; Hans
> Verkuil <hverkuil-cisco at xs4all.nl>; Fernando Ramos <greenfoo at u92.eu>;
> Javier Martinez Canillas <javierm at redhat.com>; open list <linux-
> kernel at vger.kernel.org>; open list:INTEL DRM DRIVERS <intel-
> gfx at lists.freedesktop.org>
> Subject: [RESEND RFC 04/18] drm/display/dp_mst: Call them time slots, not
> VCPI slots
>
> VCPI is only sort of the correct term here, originally the majority of this code
> simply referred to timeslots vaguely as "slots" - and since I started working
> on it and adding atomic functionality, the name "VCPI slots" has been used to
> represent time slots.
>
> Now that we actually have consistent access to the DisplayPort spec thanks to
> VESA, I now know this isn't actually the proper term - as the specification
> refers to these as time slots.
>
> Since we're trying to make this code as easy to figure out as possible, let's
> take this opportunity to correct this nomenclature and call them by their
> proper name - timeslots. Likewise, we rename various functions
> appropriately, along with replacing references in the kernel documentation
> and various debugging messages.
>
> It's important to note that this patch series leaves the legacy MST code
> untouched for the most part, which is fine since we'll be removing it soon
> anyhow. There should be no functional changes in this series.
>
> Signed-off-by: Lyude Paul <lyude at redhat.com>
> Cc: Wayne Lin <Wayne.Lin at amd.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Fangzhi Zuo <Jerry.Zuo at amd.com>
> Cc: Jani Nikula <jani.nikula at intel.com>
> Cc: Imre Deak <imre.deak at intel.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Sean Paul <sean at poorly.run>
> ---
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 28 ++---
> drivers/gpu/drm/display/drm_dp_mst_topology.c | 106 +++++++++---------
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 5 +-
> drivers/gpu/drm/nouveau/dispnv50/disp.c | 4 +-
> include/drm/display/drm_dp_mst_helper.h | 6 +-
> 6 files changed, 75 insertions(+), 76 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index ad4571190a90..f84a4ad736d8 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -7393,7 +7393,7 @@ static int dm_encoder_helper_atomic_check(struct
> drm_encoder *encoder,
> clock = adjusted_mode->clock;
> dm_new_connector_state->pbn =
> drm_dp_calc_pbn_mode(clock, bpp, false);
> }
> - dm_new_connector_state->vcpi_slots =
> drm_dp_atomic_find_vcpi_slots(state,
> + dm_new_connector_state->vcpi_slots =
> +drm_dp_atomic_find_time_slots(state,
>
> mst_mgr,
>
> mst_port,
>
> dm_new_connector_state->pbn, diff --git
> a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 9221b6690a4a..e40ff51e7be0 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -378,7 +378,7 @@ static int dm_dp_mst_atomic_check(struct
> drm_connector *connector,
> return 0;
> }
>
> - return drm_dp_atomic_release_vcpi_slots(state,
> + return drm_dp_atomic_release_time_slots(state,
> mst_mgr,
> mst_port);
> }
> @@ -689,7 +689,7 @@ static void increase_dsc_bpp(struct
> drm_atomic_state *state,
>
> if (initial_slack[next_index] > fair_pbn_alloc) {
> vars[next_index].pbn += fair_pbn_alloc;
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
>
> params[next_index].port->mgr,
>
> params[next_index].port,
>
> vars[next_index].pbn,
> @@ -699,7 +699,7 @@ static void increase_dsc_bpp(struct
> drm_atomic_state *state,
> vars[next_index].bpp_x16 =
> bpp_x16_from_pbn(params[next_index], vars[next_index].pbn);
> } else {
> vars[next_index].pbn -= fair_pbn_alloc;
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
>
> params[next_index].port->mgr,
>
> params[next_index].port,
>
> vars[next_index].pbn,
> @@ -708,7 +708,7 @@ static void increase_dsc_bpp(struct
> drm_atomic_state *state,
> }
> } else {
> vars[next_index].pbn += initial_slack[next_index];
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
>
> params[next_index].port->mgr,
>
> params[next_index].port,
>
> vars[next_index].pbn,
> @@ -718,7 +718,7 @@ static void increase_dsc_bpp(struct
> drm_atomic_state *state,
> vars[next_index].bpp_x16 =
> params[next_index].bw_range.max_target_bpp_x16;
> } else {
> vars[next_index].pbn -=
> initial_slack[next_index];
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
>
> params[next_index].port->mgr,
>
> params[next_index].port,
>
> vars[next_index].pbn,
> @@ -775,7 +775,7 @@ static void try_disable_dsc(struct drm_atomic_state
> *state,
> break;
>
> vars[next_index].pbn =
> kbps_to_peak_pbn(params[next_index].bw_range.stream_kbps);
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
> params[next_index].port-
> >mgr,
> params[next_index].port,
> vars[next_index].pbn,
> @@ -787,7 +787,7 @@ static void try_disable_dsc(struct drm_atomic_state
> *state,
> vars[next_index].bpp_x16 = 0;
> } else {
> vars[next_index].pbn =
> kbps_to_peak_pbn(params[next_index].bw_range.max_kbps);
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
>
> params[next_index].port->mgr,
>
> params[next_index].port,
>
> vars[next_index].pbn,
> @@ -873,11 +873,11 @@ static bool
> compute_mst_dsc_configs_for_link(struct drm_atomic_state *state,
> vars[i + k].pbn =
> kbps_to_peak_pbn(params[i].bw_range.stream_kbps);
> vars[i + k].dsc_enabled = false;
> vars[i + k].bpp_x16 = 0;
> - if (drm_dp_atomic_find_vcpi_slots(state,
> - params[i].port->mgr,
> - params[i].port,
> - vars[i + k].pbn,
> -
> dm_mst_get_pbn_divider(dc_link)) < 0)
> + if (drm_dp_atomic_find_time_slots(state,
> + params[i].port->mgr,
> + params[i].port,
> + vars[i + k].pbn,
> +
> dm_mst_get_pbn_divider(dc_link)) < 0)
> return false;
> }
> if (!drm_dp_mst_atomic_check(state) && !debugfs_overwrite) { @@
> -891,7 +891,7 @@ static bool compute_mst_dsc_configs_for_link(struct
> drm_atomic_state *state,
> vars[i + k].pbn =
> kbps_to_peak_pbn(params[i].bw_range.min_kbps);
> vars[i + k].dsc_enabled = true;
> vars[i + k].bpp_x16 =
> params[i].bw_range.min_target_bpp_x16;
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
> params[i].port->mgr,
> params[i].port,
> vars[i + k].pbn,
> @@ -901,7 +901,7 @@ static bool compute_mst_dsc_configs_for_link(struct
> drm_atomic_state *state,
> vars[i + k].pbn =
> kbps_to_peak_pbn(params[i].bw_range.stream_kbps);
> vars[i + k].dsc_enabled = false;
> vars[i + k].bpp_x16 = 0;
> - if (drm_dp_atomic_find_vcpi_slots(state,
> + if (drm_dp_atomic_find_time_slots(state,
> params[i].port->mgr,
> params[i].port,
> vars[i + k].pbn,
> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> index 38eecb89e22d..702ff5d9ecc7 100644
> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> @@ -4304,11 +4304,11 @@ struct edid *drm_dp_mst_get_edid(struct
> drm_connector *connector, struct drm_dp_
> EXPORT_SYMBOL(drm_dp_mst_get_edid);
>
> /**
> - * drm_dp_find_vcpi_slots() - Find VCPI slots for this PBN value
> + * drm_dp_find_vcpi_slots() - Find time slots for this PBN value
> * @mgr: manager to use
> * @pbn: payload bandwidth to convert into slots.
> *
> - * Calculate the number of VCPI slots that will be required for the given PBN
> + * Calculate the number of time slots that will be required for the
> + given PBN
> * value. This function is deprecated, and should not be used in atomic
> * drivers.
> *
> @@ -4345,17 +4345,17 @@ static int drm_dp_init_vcpi(struct
> drm_dp_mst_topology_mgr *mgr, }
>
> /**
> - * drm_dp_atomic_find_vcpi_slots() - Find and add VCPI slots to the state
> + * drm_dp_atomic_find_time_slots() - Find and add time slots to the
> + state
> * @state: global atomic state
> * @mgr: MST topology manager for the port
> - * @port: port to find vcpi slots for
> + * @port: port to find time slots for
> * @pbn: bandwidth required for the mode in PBN
> * @pbn_div: divider for DSC mode that takes FEC into account
> *
> - * Allocates VCPI slots to @port, replacing any previous VCPI allocations it
> + * Allocates time slots to @port, replacing any previous timeslot
> + allocations it
> * may have had. Any atomic drivers which support MST must call this
> function
> * in their &drm_encoder_helper_funcs.atomic_check() callback to change
> the
> - * current VCPI allocation for the new state, but only when
> + * current timeslot allocation for the new state, but only when
> * &drm_crtc_state.mode_changed or &drm_crtc_state.connectors_changed
> is set
> * to ensure compatibility with userspace applications that still use the
> * legacy modesetting UAPI.
> @@ -4365,17 +4365,17 @@ static int drm_dp_init_vcpi(struct
> drm_dp_mst_topology_mgr *mgr,
> *
> * Additionally, it is OK to call this function multiple times on the same
> * @port as needed. It is not OK however, to call this function and
> - * drm_dp_atomic_release_vcpi_slots() in the same atomic check phase.
> + * drm_dp_atomic_release_time_slots() in the same atomic check phase.
> *
> * See also:
> - * drm_dp_atomic_release_vcpi_slots()
> + * drm_dp_atomic_release_time_slots()
> * drm_dp_mst_atomic_check()
> *
> * Returns:
> * Total slots in the atomic state assigned for this port, or a negative error
> * code if the port no longer exists
> */
> -int drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
> +int drm_dp_atomic_find_time_slots(struct drm_atomic_state *state,
> struct drm_dp_mst_topology_mgr *mgr,
> struct drm_dp_mst_port *port, int pbn,
> int pbn_div)
> @@ -4392,17 +4392,17 @@ int drm_dp_atomic_find_vcpi_slots(struct
> drm_atomic_state *state,
> list_for_each_entry(pos, &topology_state->payloads, next) {
> if (pos->port == port) {
> payload = pos;
> - prev_slots = payload->vcpi;
> + prev_slots = payload->time_slots;
> prev_bw = payload->pbn;
>
> /*
> * This should never happen, unless the driver tries
> - * releasing and allocating the same VCPI allocation,
> + * releasing and allocating the same timeslot
> allocation,
> * which is an error
> */
> if (WARN_ON(!prev_slots)) {
> drm_err(mgr->dev,
> - "cannot allocate and release VCPI on
> [MST PORT:%p] in the same state\n",
> + "cannot allocate and release time
> slots on [MST PORT:%p] in the
> +same state\n",
> port);
> return -EINVAL;
> }
> @@ -4420,7 +4420,7 @@ int drm_dp_atomic_find_vcpi_slots(struct
> drm_atomic_state *state,
>
> req_slots = DIV_ROUND_UP(pbn, pbn_div);
>
> - drm_dbg_atomic(mgr->dev, "[CONNECTOR:%d:%s] [MST PORT:%p]
> VCPI %d -> %d\n",
> + drm_dbg_atomic(mgr->dev, "[CONNECTOR:%d:%s] [MST PORT:%p]
> TU %d ->
> +%d\n",
> port->connector->base.id, port->connector->name,
> port, prev_slots, req_slots);
> drm_dbg_atomic(mgr->dev, "[CONNECTOR:%d:%s] [MST PORT:%p]
> PBN %d -> %d\n", @@ -4437,20 +4437,20 @@ int
> drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
> payload->port = port;
> list_add(&payload->next, &topology_state->payloads);
> }
> - payload->vcpi = req_slots;
> + payload->time_slots = req_slots;
> payload->pbn = pbn;
>
> return req_slots;
> }
> -EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots);
> +EXPORT_SYMBOL(drm_dp_atomic_find_time_slots);
>
> /**
> - * drm_dp_atomic_release_vcpi_slots() - Release allocated vcpi slots
> + * drm_dp_atomic_release_time_slots() - Release allocated time slots
> * @state: global atomic state
> * @mgr: MST topology manager for the port
> - * @port: The port to release the VCPI slots from
> + * @port: The port to release the time slots from
> *
> - * Releases any VCPI slots that have been allocated to a port in the atomic
> + * Releases any time slots that have been allocated to a port in the
> + atomic
> * state. Any atomic drivers which support MST must call this function in
> * their &drm_connector_helper_funcs.atomic_check() callback when the
> * connector will no longer have VCPI allocated (e.g. because its CRTC was
> @@ -4459,18 +4459,18 @@
> EXPORT_SYMBOL(drm_dp_atomic_find_vcpi_slots);
> * It is OK to call this even if @port has been removed from the system.
> * Additionally, it is OK to call this function multiple times on the same
> * @port as needed. It is not OK however, to call this function and
> - * drm_dp_atomic_find_vcpi_slots() on the same @port in a single atomic
> check
> + * drm_dp_atomic_find_time_slots() on the same @port in a single atomic
> + check
> * phase.
> *
> * See also:
> - * drm_dp_atomic_find_vcpi_slots()
> + * drm_dp_atomic_find_time_slots()
> * drm_dp_mst_atomic_check()
> *
> * Returns:
> * 0 if all slots for this port were added back to
> * &drm_dp_mst_topology_state.avail_slots or negative error code
> */
> -int drm_dp_atomic_release_vcpi_slots(struct drm_atomic_state *state,
> +int drm_dp_atomic_release_time_slots(struct drm_atomic_state *state,
> struct drm_dp_mst_topology_mgr *mgr,
> struct drm_dp_mst_port *port)
> {
> @@ -4494,16 +4494,16 @@ int drm_dp_atomic_release_vcpi_slots(struct
> drm_atomic_state *state,
> return -EINVAL;
> }
>
> - drm_dbg_atomic(mgr->dev, "[MST PORT:%p] VCPI %d -> 0\n", port,
> pos->vcpi);
> - if (pos->vcpi) {
> + drm_dbg_atomic(mgr->dev, "[MST PORT:%p] TU %d -> 0\n", port,
> pos->time_slots);
> + if (pos->time_slots) {
> drm_dp_mst_put_port_malloc(port);
> - pos->vcpi = 0;
> + pos->time_slots = 0;
> pos->pbn = 0;
> }
>
> return 0;
> }
> -EXPORT_SYMBOL(drm_dp_atomic_release_vcpi_slots);
> +EXPORT_SYMBOL(drm_dp_atomic_release_time_slots);
>
> /**
> * drm_dp_mst_update_slots() - updates the slot info depending on the DP
> ecoding format @@ -4557,7 +4557,7 @@ bool
> drm_dp_mst_allocate_vcpi(struct drm_dp_mst_topology_mgr *mgr,
>
> ret = drm_dp_init_vcpi(mgr, &port->vcpi, pbn, slots);
> if (ret) {
> - drm_dbg_kms(mgr->dev, "failed to init vcpi slots=%d
> ret=%d\n",
> + drm_dbg_kms(mgr->dev, "failed to init time slots=%d
> ret=%d\n",
> DIV_ROUND_UP(pbn, mgr->pbn_div), ret);
> drm_dp_mst_topology_put_port(port);
> goto out;
> @@ -5083,8 +5083,8 @@ drm_dp_mst_duplicate_state(struct
> drm_private_obj *obj)
> INIT_LIST_HEAD(&state->payloads);
>
> list_for_each_entry(pos, &old_state->payloads, next) {
> - /* Prune leftover freed VCPI allocations */
> - if (!pos->vcpi)
> + /* Prune leftover freed timeslot allocations */
> + if (!pos->time_slots)
> continue;
>
> payload = kmemdup(pos, sizeof(*payload), GFP_KERNEL);
> @@ -5116,7 +5116,7 @@ static void drm_dp_mst_destroy_state(struct
> drm_private_obj *obj,
>
> list_for_each_entry_safe(pos, tmp, &mst_state->payloads, next) {
> /* We only keep references to ports with non-zero VCPIs */
> - if (pos->vcpi)
> + if (pos->time_slots)
> drm_dp_mst_put_port_malloc(pos->port);
> kfree(pos);
> }
> @@ -5242,28 +5242,28 @@
> drm_dp_mst_atomic_check_port_bw_limit(struct drm_dp_mst_port *port, }
>
> static inline int
> -drm_dp_mst_atomic_check_vcpi_alloc_limit(struct
> drm_dp_mst_topology_mgr *mgr,
> - struct drm_dp_mst_topology_state
> *mst_state)
> +drm_dp_mst_atomic_check_payload_alloc_limits(struct
> drm_dp_mst_topology_mgr *mgr,
> + struct
> drm_dp_mst_topology_state *mst_state)
> {
> struct drm_dp_mst_atomic_payload *payload;
> int avail_slots = mst_state->total_avail_slots, payload_count = 0;
>
> list_for_each_entry(payload, &mst_state->payloads, next) {
> /* Releasing payloads is always OK-even if the port is gone */
> - if (!payload->vcpi) {
> - drm_dbg_atomic(mgr->dev, "[MST PORT:%p]
> releases all VCPI slots\n",
> + if (!payload->time_slots) {
> + drm_dbg_atomic(mgr->dev, "[MST PORT:%p]
> releases all time slots\n",
> payload->port);
> continue;
> }
>
> - drm_dbg_atomic(mgr->dev, "[MST PORT:%p] requires %d
> vcpi slots\n",
> - payload->port, payload->vcpi);
> + drm_dbg_atomic(mgr->dev, "[MST PORT:%p] requires %d
> time slots\n",
> + payload->port, payload->time_slots);
>
> - avail_slots -= payload->vcpi;
> + avail_slots -= payload->time_slots;
> if (avail_slots < 0) {
> drm_dbg_atomic(mgr->dev,
> - "[MST PORT:%p] not enough VCPI slots in
> mst state %p (avail=%d)\n",
> - payload->port, mst_state, avail_slots +
> payload->vcpi);
> + "[MST PORT:%p] not enough time slots in
> mst state %p (avail=%d)\n",
> + payload->port, mst_state, avail_slots +
> +payload->time_slots);
> return -ENOSPC;
> }
>
> @@ -5274,7 +5274,7 @@ drm_dp_mst_atomic_check_vcpi_alloc_limit(struct
> drm_dp_mst_topology_mgr *mgr,
> return -EINVAL;
> }
> }
> - drm_dbg_atomic(mgr->dev, "[MST MGR:%p] mst state %p VCPI
> avail=%d used=%d\n",
> + drm_dbg_atomic(mgr->dev, "[MST MGR:%p] mst state %p TU
> avail=%d
> +used=%d\n",
> mgr, mst_state, avail_slots, mst_state->total_avail_slots -
> avail_slots);
>
> return 0;
> @@ -5363,7 +5363,7 @@ int drm_dp_mst_atomic_enable_dsc(struct
> drm_atomic_state *state,
> struct drm_dp_mst_topology_state *mst_state;
> struct drm_dp_mst_atomic_payload *pos;
> bool found = false;
> - int vcpi = 0;
> + int time_slots = 0;
>
> mst_state = drm_atomic_get_mst_topology_state(state, port->mgr);
>
> @@ -5379,30 +5379,30 @@ int drm_dp_mst_atomic_enable_dsc(struct
> drm_atomic_state *state,
>
> if (!found) {
> drm_dbg_atomic(state->dev,
> - "[MST PORT:%p] Couldn't find VCPI allocation in
> mst state %p\n",
> + "[MST PORT:%p] Couldn't find payload in mst
> state %p\n",
> port, mst_state);
> return -EINVAL;
> }
>
> if (pos->dsc_enabled == enable) {
> drm_dbg_atomic(state->dev,
> - "[MST PORT:%p] DSC flag is already set to %d,
> returning %d VCPI slots\n",
> - port, enable, pos->vcpi);
> - vcpi = pos->vcpi;
> + "[MST PORT:%p] DSC flag is already set to %d,
> returning %d time slots\n",
> + port, enable, pos->time_slots);
> + time_slots = pos->time_slots;
> }
>
> if (enable) {
> - vcpi = drm_dp_atomic_find_vcpi_slots(state, port->mgr, port,
> pbn, pbn_div);
> + time_slots = drm_dp_atomic_find_time_slots(state, port-
> >mgr, port,
> +pbn, pbn_div);
> drm_dbg_atomic(state->dev,
> - "[MST PORT:%p] Enabling DSC flag, reallocating
> %d VCPI slots on the port\n",
> - port, vcpi);
> - if (vcpi < 0)
> + "[MST PORT:%p] Enabling DSC flag, reallocating
> %d time slots on the port\n",
> + port, time_slots);
> + if (time_slots < 0)
> return -EINVAL;
> }
>
> pos->dsc_enabled = enable;
>
> - return vcpi;
> + return time_slots;
> }
> EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc);
> /**
> @@ -5412,15 +5412,15 @@
> EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc);
> *
> * Checks the given topology state for an atomic update to ensure that it's
> * valid. This includes checking whether there's enough bandwidth to
> support
> - * the new VCPI allocations in the atomic update.
> + * the new timeslot allocations in the atomic update.
> *
> * Any atomic drivers supporting DP MST must make sure to call this after
> * checking the rest of their state in their
> * &drm_mode_config_funcs.atomic_check() callback.
> *
> * See also:
> - * drm_dp_atomic_find_vcpi_slots()
> - * drm_dp_atomic_release_vcpi_slots()
> + * drm_dp_atomic_find_time_slots()
> + * drm_dp_atomic_release_time_slots()
> *
> * Returns:
> *
> @@ -5436,7 +5436,7 @@ int drm_dp_mst_atomic_check(struct
> drm_atomic_state *state)
> if (!mgr->mst_state)
> continue;
>
> - ret = drm_dp_mst_atomic_check_vcpi_alloc_limit(mgr,
> mst_state);
> + ret = drm_dp_mst_atomic_check_payload_alloc_limits(mgr,
> mst_state);
> if (ret)
> break;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 061b277e5ce7..0c922667398a 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -70,7 +70,7 @@ static int intel_dp_mst_compute_link_config(struct
> intel_encoder *encoder,
> crtc_state->pipe_bpp,
> false);
>
> - slots = drm_dp_atomic_find_vcpi_slots(state, &intel_dp-
> >mst_mgr,
> + slots = drm_dp_atomic_find_time_slots(state, &intel_dp-
> >mst_mgr,
> connector->port,
> crtc_state->pbn,
>
> drm_dp_get_vc_payload_bw(&intel_dp->mst_mgr,
> @@ -344,8 +344,7 @@ intel_dp_mst_atomic_check(struct drm_connector
> *connector,
> }
>
> mgr = &enc_to_mst(to_intel_encoder(old_conn_state-
> >best_encoder))->primary->dp.mst_mgr;
> - ret = drm_dp_atomic_release_vcpi_slots(&state->base, mgr,
> - intel_connector->port);
> + ret = drm_dp_atomic_release_time_slots(&state->base, mgr,
> +intel_connector->port);
>
> return ret;
> }
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> index 4347f0b61797..631dba5a2418 100644
> --- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> +++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
> @@ -1070,7 +1070,7 @@ nv50_msto_atomic_check(struct drm_encoder
> *encoder,
> false);
> }
>
> - slots = drm_dp_atomic_find_vcpi_slots(state, &mstm->mgr, mstc-
> >port,
> + slots = drm_dp_atomic_find_time_slots(state, &mstm->mgr, mstc-
> >port,
> asyh->dp.pbn, 0);
> if (slots < 0)
> return slots;
> @@ -1282,7 +1282,7 @@ nv50_mstc_atomic_check(struct drm_connector
> *connector,
> return 0;
> }
>
> - return drm_dp_atomic_release_vcpi_slots(state, mgr, mstc->port);
> + return drm_dp_atomic_release_time_slots(state, mgr, mstc->port);
> }
>
> static int
> diff --git a/include/drm/display/drm_dp_mst_helper.h
> b/include/drm/display/drm_dp_mst_helper.h
> index 5671173f9f37..8ab4f14f2344 100644
> --- a/include/drm/display/drm_dp_mst_helper.h
> +++ b/include/drm/display/drm_dp_mst_helper.h
> @@ -544,7 +544,7 @@ struct drm_dp_payload {
>
> struct drm_dp_mst_atomic_payload {
> struct drm_dp_mst_port *port;
> - int vcpi;
> + int time_slots;
> int pbn;
> bool dsc_enabled;
> struct list_head next;
> @@ -846,7 +846,7 @@ void drm_dp_mst_connector_early_unregister(struct
> drm_connector *connector, struct drm_dp_mst_topology_state
> *drm_atomic_get_mst_topology_state(struct drm_atomic_state *state,
> struct
> drm_dp_mst_topology_mgr *mgr); int __must_check -
> drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state,
> +drm_dp_atomic_find_time_slots(struct drm_atomic_state *state,
> struct drm_dp_mst_topology_mgr *mgr,
> struct drm_dp_mst_port *port, int pbn,
> int pbn_div);
> @@ -858,7 +858,7 @@ int __must_check
> drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_state *state,
> struct drm_dp_mst_topology_mgr *mgr);
> int __must_check -drm_dp_atomic_release_vcpi_slots(struct
> drm_atomic_state *state,
> +drm_dp_atomic_release_time_slots(struct drm_atomic_state *state,
> struct drm_dp_mst_topology_mgr *mgr,
> struct drm_dp_mst_port *port);
> int drm_dp_send_power_updown_phy(struct drm_dp_mst_topology_mgr
> *mgr,
> --
> 2.35.3
--
Regards,
Wayne Lin
More information about the amd-gfx
mailing list