On Fri, Feb 05, 2021 at 02:46:44PM +0100, Hans Verkuil wrote: > On 05/02/2021 14:24, Ville Syrjälä wrote: > > On Fri, Feb 05, 2021 at 04:17:51PM +1100, Sam McNally wrote: > >> On Thu, 4 Feb 2021 at 21:19, Hans Verkuil <hverkuil@xxxxxxxxx> wrote: > >>> > >>> On 01/02/2021 23:13, Ville Syrjälä wrote: > >>>> On Wed, Sep 23, 2020 at 12:13:53PM +1000, Sam McNally wrote: > >>>>> From: Hans Verkuil <hans.verkuil@xxxxxxxxx> > >>>>> > >>>>> For adapters behind an MST hub use the correct AUX channel. > >>>>> > >>>>> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> > >>>>> [sammc@xxxxxxxxxxxx: rebased, removing redundant changes] > >>>>> Signed-off-by: Sam McNally <sammc@xxxxxxxxxxxx> > >>>>> --- > >>>>> > >>>>> (no changes since v1) > >>>>> > >>>>> drivers/gpu/drm/drm_dp_mst_topology.c | 36 +++++++++++++++++++++++++++ > >>>>> 1 file changed, 36 insertions(+) > >>>>> > >>>>> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c > >>>>> index 15b6cc39a754..0d753201adbd 100644 > >>>>> --- a/drivers/gpu/drm/drm_dp_mst_topology.c > >>>>> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c > >>>>> @@ -2255,6 +2255,9 @@ drm_dp_mst_topology_unlink_port(struct drm_dp_mst_topology_mgr *mgr, > >>>>> drm_dp_mst_topology_put_port(port); > >>>>> } > >>>>> > >>>>> +static ssize_t > >>>>> +drm_dp_mst_aux_transfer(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg); > >>>>> + > >>>>> static struct drm_dp_mst_port * > >>>>> drm_dp_mst_add_port(struct drm_device *dev, > >>>>> struct drm_dp_mst_topology_mgr *mgr, > >>>>> @@ -2271,9 +2274,13 @@ drm_dp_mst_add_port(struct drm_device *dev, > >>>>> port->port_num = port_number; > >>>>> port->mgr = mgr; > >>>>> port->aux.name = "DPMST"; > >>>>> + mutex_init(&port->aux.hw_mutex); > >>>>> + mutex_init(&port->aux.cec.lock); > >>>>> port->aux.dev = dev->dev; > >>>>> port->aux.is_remote = true; > >>>>> > >>>>> + port->aux.transfer = drm_dp_mst_aux_transfer; > >>>>> + > >>>> > >>>> This was supposed to be handled via higher levels checking for > >>>> is_remote==true. > >>> > >>> Ah, I suspect this patch can be dropped entirely: it predates commit 2f221a5efed4 > >>> ("drm/dp_mst: Add MST support to DP DPCD R/W functions"). > >>> > >>> It looks like that commit basically solved what this older patch attempts to do > >>> as well. > >>> > >>> Sam, can you test if it works without this patch? > >> > >> It almost just works; drm_dp_cec uses whether aux.transfer is non-null > >> to filter out non-DP connectors. Using aux.is_remote as another signal > >> indicating a DP connector seems plausible. We can drop this patch. > > > > Why would anyone even call this stuff on a non-DP connector? > > And where did they even get the struct drm_dp_aux to do so? > > This check came in with commit 5ce70c799ac2 ("drm_dp_cec: check that aux > has a transfer function"). It seems nouveau and amdgpu specific. I see. > > A better approach would be to fix those drivers to only call these cec > functions for DP outputs. I think I moved the test to drm_dp_cec.c primarily > for robustness (i.e. do nothing if called for a non-DP output). But that > might not be the right approach after all. Shrug. I guess just extending to check is_remote (or maybe there is some other member that's always set?) is a good enough short term solution. Someone may want to have a look at adjusting amdgpu/nouveau to not need it, but who knows how much work that is. -- Ville Syrjälä Intel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel