On Wed, 2022-06-15 at 04:28 +0000, Lin, Wayne wrote: > [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 : ) JFYI - I didn't rename this structure because we actually remove it entirely in later patches > > > -----Original Message----- > > From: Lyude Paul <lyude@xxxxxxxxxx> > > Sent: Wednesday, June 8, 2022 3:29 AM > > To: dri-devel@xxxxxxxxxxxxxxxxxxxxx; nouveau@xxxxxxxxxxxxxxxxxxxxx; amd- > > gfx@xxxxxxxxxxxxxxxxxxxxx > > Cc: Lin, Wayne <Wayne.Lin@xxxxxxx>; Ville Syrjälä > > <ville.syrjala@xxxxxxxxxxxxxxx>; Zuo, Jerry <Jerry.Zuo@xxxxxxx>; Jani > > Nikula > > <jani.nikula@xxxxxxxxx>; Imre Deak <imre.deak@xxxxxxxxx>; Daniel Vetter > > <daniel.vetter@xxxxxxxx>; Sean Paul <sean@xxxxxxxxxx>; Wentland, Harry > > <Harry.Wentland@xxxxxxx>; Li, Sun peng (Leo) <Sunpeng.Li@xxxxxxx>; > > Siqueira, Rodrigo <Rodrigo.Siqueira@xxxxxxx>; Deucher, Alexander > > <Alexander.Deucher@xxxxxxx>; Koenig, Christian > > <Christian.Koenig@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; David > > Airlie <airlied@xxxxxxxx>; Daniel Vetter <daniel@xxxxxxxx>; Jani Nikula > > <jani.nikula@xxxxxxxxxxxxxxx>; Joonas Lahtinen > > <joonas.lahtinen@xxxxxxxxxxxxxxx>; Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>; > > Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx>; Ben Skeggs > > <bskeggs@xxxxxxxxxx>; Karol Herbst <kherbst@xxxxxxxxxx>; Kazlauskas, > > Nicholas <Nicholas.Kazlauskas@xxxxxxx>; Li, Roman > > <Roman.Li@xxxxxxx>; Shih, Jude <Jude.Shih@xxxxxxx>; Simon Ser > > <contact@xxxxxxxxxxx>; Wu, Hersen <hersenxs.wu@xxxxxxx>; Thomas > > Zimmermann <tzimmermann@xxxxxxx>; Lakha, Bhawanpreet > > <Bhawanpreet.Lakha@xxxxxxx>; José Roberto de Souza > > <jose.souza@xxxxxxxxx>; He Ying <heying24@xxxxxxxxxx>; Matt Roper > > <matthew.d.roper@xxxxxxxxx>; Sean Paul <seanpaul@xxxxxxxxxxxx>; Hans > > Verkuil <hverkuil-cisco@xxxxxxxxx>; Fernando Ramos <greenfoo@xxxxxx>; > > Javier Martinez Canillas <javierm@xxxxxxxxxx>; open list <linux- > > kernel@xxxxxxxxxxxxxxx>; open list:INTEL DRM DRIVERS <intel- > > gfx@xxxxxxxxxxxxxxxxxxxxx> > > 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@xxxxxxxxxx> > > Cc: Wayne Lin <Wayne.Lin@xxxxxxx> > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Cc: Fangzhi Zuo <Jerry.Zuo@xxxxxxx> > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > > Cc: Imre Deak <imre.deak@xxxxxxxxx> > > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > > Cc: Sean Paul <sean@xxxxxxxxxx> > > --- > > .../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 -- Cheers, Lyude Paul (she/her) Software Engineer at Red Hat