From: Leo <sunpeng.li-5C7GfCeVMHo@public.gmane.org> To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Subject: Re: [PATCH v7 11/17] drm/dp_mst: Add DSC enablement helpers to DRM Date: Tue, 26 Nov 2019 10:24:30 -0500 [thread overview] Message-ID: <fe56a601-777d-f8db-c229-f155a162f100@amd.com> (raw) In-Reply-To: <20191116220128.16598-12-mikita.lipski-5C7GfCeVMHo@public.gmane.org> On 2019-11-16 5:01 p.m., mikita.lipski@amd.com wrote: > From: Mikita Lipski <mikita.lipski@amd.com> > > Adding a helper function to be called by > drivers outside of DRM to enable DSC on > the MST ports. > > Function is called to recalculate VCPI allocation > if DSC is enabled and raise the DSC flag to enable. > In case of disabling DSC the flag is set to false > and recalculation of VCPI slots is expected to be done > in encoder's atomic_check. > > v2: squash separate functions into one and call it per > port > > Cc: Harry Wentland <harry.wentland@amd.com> > Cc: Lyude Paul <lyude@redhat.com> > Signed-off-by: Mikita Lipski <mikita.lipski@amd.com> > --- > drivers/gpu/drm/drm_dp_mst_topology.c | 61 +++++++++++++++++++++++++++ > include/drm/drm_dp_mst_helper.h | 5 +++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c > index 94bb259ab73e..98cc93d5ddd7 100644 > --- a/drivers/gpu/drm/drm_dp_mst_topology.c > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c > @@ -3876,6 +3876,67 @@ drm_dp_mst_atomic_check_topology_state(struct drm_dp_mst_topology_mgr *mgr, > return 0; > } > > +/** > + * drm_dp_mst_atomic_enable_dsc - Set DSC Enable Flag to On/Off > + * @state: Pointer to the new drm_atomic_state > + * @pointer: Pointer to the affected MST Port s/@pointer/@port/ > + * @pbn: Newly recalculated bw required for link with DSC enabled > + * @pbn_div: Divider to calculate correct number of pbn per slot > + * @enable: Boolean flag enabling or disabling DSC on the port > + * > + * This function enables DSC on the given Port > + * by recalculating its vcpi from pbn provided > + * and sets dsc_enable flag to keep track of which > + * ports have DSC enabled Would be good to document the return value as well. > + * > + */ > +int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, > + struct drm_dp_mst_port *port, > + int pbn, int pbn_div, > + bool enable) > +{ > + struct drm_dp_mst_topology_state *mst_state; > + struct drm_dp_vcpi_allocation *pos; > + bool found = false; > + int vcpi = 0; > + > + mst_state = drm_atomic_get_mst_topology_state(state, port->mgr); > + > + if (IS_ERR(mst_state)) > + return PTR_ERR(mst_state); > + > + list_for_each_entry(pos, &mst_state->vcpis, next) { > + if (pos->port == port) { > + found = true; > + break; > + } > + } > + > + if (!found) { > + DRM_DEBUG_ATOMIC("[MST PORT:%p] Couldn't find VCPI allocation in mst state %p\n", > + port, mst_state); > + return -EINVAL; > + } > + > + if (pos->dsc_enabled == enable) { > + DRM_DEBUG_ATOMIC("[MST PORT:%p] DSC flag is already set to %d, returning %d VCPI slots\n", > + port, enable, pos->vcpi); > + vcpi = pos->vcpi; Do we want to early return here? - Leo > + } > + > + if (enable) { > + vcpi = drm_dp_atomic_find_vcpi_slots(state, port->mgr, port, pbn, pbn_div); > + DRM_DEBUG_ATOMIC("[MST PORT:%p] Enabling DSC flag, reallocating %d VCPI slots on the port\n", > + port, vcpi); > + if (vcpi < 0) > + return -EINVAL; > + } > + > + pos->dsc_enabled = enable; > + > + return vcpi; > +} > +EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc); > /** > * drm_dp_mst_atomic_check - Check that the new state of an MST topology in an > * atomic update is valid > diff --git a/include/drm/drm_dp_mst_helper.h b/include/drm/drm_dp_mst_helper.h > index fc19094b06c3..b1b00de3083b 100644 > --- a/include/drm/drm_dp_mst_helper.h > +++ b/include/drm/drm_dp_mst_helper.h > @@ -431,6 +431,7 @@ struct drm_dp_payload { > struct drm_dp_vcpi_allocation { > struct drm_dp_mst_port *port; > int vcpi; > + bool dsc_enabled; > struct list_head next; > }; > > @@ -663,6 +664,10 @@ drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state, > struct drm_dp_mst_topology_mgr *mgr, > struct drm_dp_mst_port *port, int pbn, > int pbn_div); > +int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, > + struct drm_dp_mst_port *port, > + int pbn, int pbn_div, > + bool enable); > int __must_check > drm_dp_atomic_release_vcpi_slots(struct drm_atomic_state *state, > struct drm_dp_mst_topology_mgr *mgr, > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Leo <sunpeng.li@amd.com> To: amd-gfx@lists.freedesktop.org Subject: Re: [PATCH v7 11/17] drm/dp_mst: Add DSC enablement helpers to DRM Date: Tue, 26 Nov 2019 10:24:30 -0500 [thread overview] Message-ID: <fe56a601-777d-f8db-c229-f155a162f100@amd.com> (raw) Message-ID: <20191126152430.2O-6XzS06anb9qR2F07elnV_f-sa2LMSuWYRg0sBV_I@z> (raw) In-Reply-To: <20191116220128.16598-12-mikita.lipski@amd.com> On 2019-11-16 5:01 p.m., mikita.lipski@amd.com wrote: > From: Mikita Lipski <mikita.lipski@amd.com> > > Adding a helper function to be called by > drivers outside of DRM to enable DSC on > the MST ports. > > Function is called to recalculate VCPI allocation > if DSC is enabled and raise the DSC flag to enable. > In case of disabling DSC the flag is set to false > and recalculation of VCPI slots is expected to be done > in encoder's atomic_check. > > v2: squash separate functions into one and call it per > port > > Cc: Harry Wentland <harry.wentland@amd.com> > Cc: Lyude Paul <lyude@redhat.com> > Signed-off-by: Mikita Lipski <mikita.lipski@amd.com> > --- > drivers/gpu/drm/drm_dp_mst_topology.c | 61 +++++++++++++++++++++++++++ > include/drm/drm_dp_mst_helper.h | 5 +++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c > index 94bb259ab73e..98cc93d5ddd7 100644 > --- a/drivers/gpu/drm/drm_dp_mst_topology.c > +++ b/drivers/gpu/drm/drm_dp_mst_topology.c > @@ -3876,6 +3876,67 @@ drm_dp_mst_atomic_check_topology_state(struct drm_dp_mst_topology_mgr *mgr, > return 0; > } > > +/** > + * drm_dp_mst_atomic_enable_dsc - Set DSC Enable Flag to On/Off > + * @state: Pointer to the new drm_atomic_state > + * @pointer: Pointer to the affected MST Port s/@pointer/@port/ > + * @pbn: Newly recalculated bw required for link with DSC enabled > + * @pbn_div: Divider to calculate correct number of pbn per slot > + * @enable: Boolean flag enabling or disabling DSC on the port > + * > + * This function enables DSC on the given Port > + * by recalculating its vcpi from pbn provided > + * and sets dsc_enable flag to keep track of which > + * ports have DSC enabled Would be good to document the return value as well. > + * > + */ > +int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, > + struct drm_dp_mst_port *port, > + int pbn, int pbn_div, > + bool enable) > +{ > + struct drm_dp_mst_topology_state *mst_state; > + struct drm_dp_vcpi_allocation *pos; > + bool found = false; > + int vcpi = 0; > + > + mst_state = drm_atomic_get_mst_topology_state(state, port->mgr); > + > + if (IS_ERR(mst_state)) > + return PTR_ERR(mst_state); > + > + list_for_each_entry(pos, &mst_state->vcpis, next) { > + if (pos->port == port) { > + found = true; > + break; > + } > + } > + > + if (!found) { > + DRM_DEBUG_ATOMIC("[MST PORT:%p] Couldn't find VCPI allocation in mst state %p\n", > + port, mst_state); > + return -EINVAL; > + } > + > + if (pos->dsc_enabled == enable) { > + DRM_DEBUG_ATOMIC("[MST PORT:%p] DSC flag is already set to %d, returning %d VCPI slots\n", > + port, enable, pos->vcpi); > + vcpi = pos->vcpi; Do we want to early return here? - Leo > + } > + > + if (enable) { > + vcpi = drm_dp_atomic_find_vcpi_slots(state, port->mgr, port, pbn, pbn_div); > + DRM_DEBUG_ATOMIC("[MST PORT:%p] Enabling DSC flag, reallocating %d VCPI slots on the port\n", > + port, vcpi); > + if (vcpi < 0) > + return -EINVAL; > + } > + > + pos->dsc_enabled = enable; > + > + return vcpi; > +} > +EXPORT_SYMBOL(drm_dp_mst_atomic_enable_dsc); > /** > * drm_dp_mst_atomic_check - Check that the new state of an MST topology in an > * atomic update is valid > diff --git a/include/drm/drm_dp_mst_helper.h b/include/drm/drm_dp_mst_helper.h > index fc19094b06c3..b1b00de3083b 100644 > --- a/include/drm/drm_dp_mst_helper.h > +++ b/include/drm/drm_dp_mst_helper.h > @@ -431,6 +431,7 @@ struct drm_dp_payload { > struct drm_dp_vcpi_allocation { > struct drm_dp_mst_port *port; > int vcpi; > + bool dsc_enabled; > struct list_head next; > }; > > @@ -663,6 +664,10 @@ drm_dp_atomic_find_vcpi_slots(struct drm_atomic_state *state, > struct drm_dp_mst_topology_mgr *mgr, > struct drm_dp_mst_port *port, int pbn, > int pbn_div); > +int drm_dp_mst_atomic_enable_dsc(struct drm_atomic_state *state, > + struct drm_dp_mst_port *port, > + int pbn, int pbn_div, > + bool enable); > int __must_check > drm_dp_atomic_release_vcpi_slots(struct drm_atomic_state *state, > struct drm_dp_mst_topology_mgr *mgr, > _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-11-26 15:24 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-16 22:01 [PATCH v7 00/17] DSC MST support for DRM and AMDGPU mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 01/17] drm/dp_mst: Add PBN calculation for DSC modes mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 05/17] drm/dp_mst: Add helpers for MST DSC and virtual DPCD aux mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski [not found] ` <20191116220128.16598-1-mikita.lipski-5C7GfCeVMHo@public.gmane.org> 2019-11-16 22:01 ` [PATCH v7 02/17] drm/dp_mst: Parse FEC capability on MST ports mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 03/17] drm/dp_mst: Add MST support to DP DPCD R/W functions mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 04/17] drm/dp_mst: Fill branch->num_ports mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 06/17] drm/dp_mst: Add new quirk for Synaptics MST hubs mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 07/17] drm/amd/display: Initialize DSC PPS variables to 0 mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 08/17] drm/amd/display: Validate DSC caps on MST endpoints mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 09/17] drm/amd/display: Write DSC enable to MST DPCD mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 10/17] drm/dp_mst: Manually overwrite PBN divider for calculating timeslots mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski [not found] ` <20191116220128.16598-11-mikita.lipski-5C7GfCeVMHo@public.gmane.org> 2019-11-26 15:06 ` Leo 2019-11-26 15:06 ` Leo 2019-11-16 22:01 ` [PATCH v7 11/17] drm/dp_mst: Add DSC enablement helpers to DRM mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski [not found] ` <20191116220128.16598-12-mikita.lipski-5C7GfCeVMHo@public.gmane.org> 2019-11-26 15:24 ` Leo [this message] 2019-11-26 15:24 ` Leo [not found] ` <fe56a601-777d-f8db-c229-f155a162f100-5C7GfCeVMHo@public.gmane.org> 2019-11-26 15:27 ` Leo 2019-11-26 15:27 ` Leo 2019-11-26 15:32 ` Mikita Lipski 2019-11-26 15:32 ` Mikita Lipski 2019-11-16 22:01 ` [PATCH v7 12/17] drm/dp_mst: Add branch bandwidth validation to MST atomic check mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski [not found] ` <20191116220128.16598-13-mikita.lipski-5C7GfCeVMHo@public.gmane.org> 2019-11-26 19:55 ` Leo 2019-11-26 19:55 ` Leo 2019-11-26 19:55 ` Leo 2019-11-16 22:01 ` [PATCH v7 13/17] drm/dp_mst: Add helper to trigger modeset on affected DSC MST CRTCs mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 14/17] drm/amd/display: Add PBN per slot calculation for DSC mikita.lipski-5C7GfCeVMHo 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 15/17] drm/amd/display: MST DSC compute fair share mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 16/17] drm/amd/display: Recalculate VCPI slots for new DSC connectors mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` [PATCH v7 17/17] drm/amd/display: Trigger modesets on MST " mikita.lipski 2019-11-16 22:01 ` mikita.lipski 2019-11-16 22:01 ` mikita.lipski
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=fe56a601-777d-f8db-c229-f155a162f100@amd.com \ --to=sunpeng.li-5c7gfcevmho@public.gmane.org \ --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.