diff mbox series

[v2,1/3] drm/dp_mst: add passthrough_aux to struct drm_dp_mst_port

Message ID 20220805211317.176672-1-hamza.mahfooz@amd.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/3] drm/dp_mst: add passthrough_aux to struct drm_dp_mst_port | expand

Commit Message

Hamza Mahfooz Aug. 5, 2022, 9:13 p.m. UTC
Currently, there is no way to identify if DSC pass-through can be
enabled and what aux DSC pass-through requests ought to be sent to. So,
add a variable to struct drm_dp_mst_port that keeps track of the
aforementioned information.

Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
---
v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
---
 drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
 include/drm/display/drm_dp.h                  | 1 +
 include/drm/display/drm_dp_mst_helper.h       | 3 +++
 3 files changed, 7 insertions(+), 1 deletion(-)

Comments

Lyude Paul Aug. 5, 2022, 9:17 p.m. UTC | #1
lgtm!

Reviewed-by: Lyude Paul <lyude@redhat.com>

On Fri, 2022-08-05 at 17:13 -0400, Hamza Mahfooz wrote:
> Currently, there is no way to identify if DSC pass-through can be
> enabled and what aux DSC pass-through requests ought to be sent to. So,
> add a variable to struct drm_dp_mst_port that keeps track of the
> aforementioned information.
> 
> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> ---
> v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
> ---
>  drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
>  include/drm/display/drm_dp.h                  | 1 +
>  include/drm/display/drm_dp_mst_helper.h       | 3 +++
>  3 files changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> index 67b3b9697da7..71915afd9892 100644
> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> @@ -5921,8 +5921,10 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
>  		/* Enpoint decompression with DP-to-DP peer device */
>  		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
>  		    (endpoint_fec & DP_FEC_CAPABLE) &&
> -		    (upstream_dsc & 0x2) /* DSC passthrough */)
> +		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
> +			port->passthrough_aux = &immediate_upstream_port->aux;
>  			return &port->aux;
> +		}
>  
>  		/* Virtual DPCD decompression with DP-to-DP peer device */
>  		return &immediate_upstream_port->aux;
> diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
> index 9e3aff7e68bb..4d0abe4c7ea9 100644
> --- a/include/drm/display/drm_dp.h
> +++ b/include/drm/display/drm_dp.h
> @@ -239,6 +239,7 @@
>  
>  #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
>  # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
> +# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
>  
>  #define DP_DSC_REV                          0x061
>  # define DP_DSC_MAJOR_MASK                  (0xf << 0)
> diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
> index 10adec068b7f..4a39c95f8afd 100644
> --- a/include/drm/display/drm_dp_mst_helper.h
> +++ b/include/drm/display/drm_dp_mst_helper.h
> @@ -86,6 +86,8 @@ struct drm_dp_vcpi {
>   * @next: link to next port on this branch device
>   * @aux: i2c aux transport to talk to device connected to this port, protected
>   * by &drm_dp_mst_topology_mgr.base.lock.
> + * @passthrough_aux: parent aux to which DSC pass-through requests should be
> + * sent, only set if DSC pass-through is possible.
>   * @parent: branch device parent of this port
>   * @vcpi: Virtual Channel Payload info for this port.
>   * @connector: DRM connector this port is connected to. Protected by
> @@ -140,6 +142,7 @@ struct drm_dp_mst_port {
>  	 */
>  	struct drm_dp_mst_branch *mstb;
>  	struct drm_dp_aux aux; /* i2c bus for this port? */
> +	struct drm_dp_aux *passthrough_aux;
>  	struct drm_dp_mst_branch *parent;
>  
>  	struct drm_dp_vcpi vcpi;
Hamza Mahfooz Aug. 9, 2022, 3:15 p.m. UTC | #2
Hey Lyude,

On 2022-08-05 17:17, Lyude Paul wrote:
> lgtm!
> 

Any chance you can apply this to drm-misc-next?

> Reviewed-by: Lyude Paul <lyude@redhat.com>
> 
> On Fri, 2022-08-05 at 17:13 -0400, Hamza Mahfooz wrote:
>> Currently, there is no way to identify if DSC pass-through can be
>> enabled and what aux DSC pass-through requests ought to be sent to. So,
>> add a variable to struct drm_dp_mst_port that keeps track of the
>> aforementioned information.
>>
>> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
>> ---
>> v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
>> ---
>>   drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
>>   include/drm/display/drm_dp.h                  | 1 +
>>   include/drm/display/drm_dp_mst_helper.h       | 3 +++
>>   3 files changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> index 67b3b9697da7..71915afd9892 100644
>> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> @@ -5921,8 +5921,10 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
>>   		/* Enpoint decompression with DP-to-DP peer device */
>>   		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
>>   		    (endpoint_fec & DP_FEC_CAPABLE) &&
>> -		    (upstream_dsc & 0x2) /* DSC passthrough */)
>> +		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
>> +			port->passthrough_aux = &immediate_upstream_port->aux;
>>   			return &port->aux;
>> +		}
>>   
>>   		/* Virtual DPCD decompression with DP-to-DP peer device */
>>   		return &immediate_upstream_port->aux;
>> diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
>> index 9e3aff7e68bb..4d0abe4c7ea9 100644
>> --- a/include/drm/display/drm_dp.h
>> +++ b/include/drm/display/drm_dp.h
>> @@ -239,6 +239,7 @@
>>   
>>   #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
>>   # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
>> +# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
>>   
>>   #define DP_DSC_REV                          0x061
>>   # define DP_DSC_MAJOR_MASK                  (0xf << 0)
>> diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
>> index 10adec068b7f..4a39c95f8afd 100644
>> --- a/include/drm/display/drm_dp_mst_helper.h
>> +++ b/include/drm/display/drm_dp_mst_helper.h
>> @@ -86,6 +86,8 @@ struct drm_dp_vcpi {
>>    * @next: link to next port on this branch device
>>    * @aux: i2c aux transport to talk to device connected to this port, protected
>>    * by &drm_dp_mst_topology_mgr.base.lock.
>> + * @passthrough_aux: parent aux to which DSC pass-through requests should be
>> + * sent, only set if DSC pass-through is possible.
>>    * @parent: branch device parent of this port
>>    * @vcpi: Virtual Channel Payload info for this port.
>>    * @connector: DRM connector this port is connected to. Protected by
>> @@ -140,6 +142,7 @@ struct drm_dp_mst_port {
>>   	 */
>>   	struct drm_dp_mst_branch *mstb;
>>   	struct drm_dp_aux aux; /* i2c bus for this port? */
>> +	struct drm_dp_aux *passthrough_aux;
>>   	struct drm_dp_mst_branch *parent;
>>   
>>   	struct drm_dp_vcpi vcpi;
>
Lyude Paul Aug. 9, 2022, 10:01 p.m. UTC | #3
Ah yes of course! Probably should have asked when I gave the r-b :). Also,
just so patchwork actually catches it I will say the magic incantation:

Reviewed-by: Lyude Paul <lyude@redhat.com>

Do we want to merge just this patch to drm-misc-next, or do you want to merge
the whole series through there? If you'd rather just merge this through amd's
branch I'm fine with that as well

On Tue, 2022-08-09 at 11:15 -0400, Hamza Mahfooz wrote:
> Hey Lyude,
> 
> On 2022-08-05 17:17, Lyude Paul wrote:
> > lgtm!
> > 
> 
> Any chance you can apply this to drm-misc-next?
> 
> > Reviewed-by: Lyude Paul <lyude@redhat.com>
> > 
> > On Fri, 2022-08-05 at 17:13 -0400, Hamza Mahfooz wrote:
> > > Currently, there is no way to identify if DSC pass-through can be
> > > enabled and what aux DSC pass-through requests ought to be sent to. So,
> > > add a variable to struct drm_dp_mst_port that keeps track of the
> > > aforementioned information.
> > > 
> > > Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> > > ---
> > > v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
> > > ---
> > >   drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
> > >   include/drm/display/drm_dp.h                  | 1 +
> > >   include/drm/display/drm_dp_mst_helper.h       | 3 +++
> > >   3 files changed, 7 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > index 67b3b9697da7..71915afd9892 100644
> > > --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > @@ -5921,8 +5921,10 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
> > >   		/* Enpoint decompression with DP-to-DP peer device */
> > >   		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
> > >   		    (endpoint_fec & DP_FEC_CAPABLE) &&
> > > -		    (upstream_dsc & 0x2) /* DSC passthrough */)
> > > +		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
> > > +			port->passthrough_aux = &immediate_upstream_port->aux;
> > >   			return &port->aux;
> > > +		}
> > >   
> > >   		/* Virtual DPCD decompression with DP-to-DP peer device */
> > >   		return &immediate_upstream_port->aux;
> > > diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
> > > index 9e3aff7e68bb..4d0abe4c7ea9 100644
> > > --- a/include/drm/display/drm_dp.h
> > > +++ b/include/drm/display/drm_dp.h
> > > @@ -239,6 +239,7 @@
> > >   
> > >   #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
> > >   # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
> > > +# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
> > >   
> > >   #define DP_DSC_REV                          0x061
> > >   # define DP_DSC_MAJOR_MASK                  (0xf << 0)
> > > diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
> > > index 10adec068b7f..4a39c95f8afd 100644
> > > --- a/include/drm/display/drm_dp_mst_helper.h
> > > +++ b/include/drm/display/drm_dp_mst_helper.h
> > > @@ -86,6 +86,8 @@ struct drm_dp_vcpi {
> > >    * @next: link to next port on this branch device
> > >    * @aux: i2c aux transport to talk to device connected to this port, protected
> > >    * by &drm_dp_mst_topology_mgr.base.lock.
> > > + * @passthrough_aux: parent aux to which DSC pass-through requests should be
> > > + * sent, only set if DSC pass-through is possible.
> > >    * @parent: branch device parent of this port
> > >    * @vcpi: Virtual Channel Payload info for this port.
> > >    * @connector: DRM connector this port is connected to. Protected by
> > > @@ -140,6 +142,7 @@ struct drm_dp_mst_port {
> > >   	 */
> > >   	struct drm_dp_mst_branch *mstb;
> > >   	struct drm_dp_aux aux; /* i2c bus for this port? */
> > > +	struct drm_dp_aux *passthrough_aux;
> > >   	struct drm_dp_mst_branch *parent;
> > >   
> > >   	struct drm_dp_vcpi vcpi;
> > 
>
Hamza Mahfooz Aug. 10, 2022, 1:23 p.m. UTC | #4
On 2022-08-09 18:01, Lyude Paul wrote:
> Ah yes of course! Probably should have asked when I gave the r-b :). Also,
> just so patchwork actually catches it I will say the magic incantation:
> 
> Reviewed-by: Lyude Paul <lyude@redhat.com>
> 
> Do we want to merge just this patch to drm-misc-next, or do you want to merge
> the whole series through there? If you'd rather just merge this through amd's
> branch I'm fine with that as well

In that case, it is preferable to have all of the patches in this series
to get merged through amd's branch.

> 
> On Tue, 2022-08-09 at 11:15 -0400, Hamza Mahfooz wrote:
>> Hey Lyude,
>>
>> On 2022-08-05 17:17, Lyude Paul wrote:
>>> lgtm!
>>>
>>
>> Any chance you can apply this to drm-misc-next?
>>
>>> Reviewed-by: Lyude Paul <lyude@redhat.com>
>>>
>>> On Fri, 2022-08-05 at 17:13 -0400, Hamza Mahfooz wrote:
>>>> Currently, there is no way to identify if DSC pass-through can be
>>>> enabled and what aux DSC pass-through requests ought to be sent to. So,
>>>> add a variable to struct drm_dp_mst_port that keeps track of the
>>>> aforementioned information.
>>>>
>>>> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
>>>> ---
>>>> v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
>>>> ---
>>>>    drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
>>>>    include/drm/display/drm_dp.h                  | 1 +
>>>>    include/drm/display/drm_dp_mst_helper.h       | 3 +++
>>>>    3 files changed, 7 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>>>> index 67b3b9697da7..71915afd9892 100644
>>>> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>>>> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>>>> @@ -5921,8 +5921,10 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
>>>>    		/* Enpoint decompression with DP-to-DP peer device */
>>>>    		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
>>>>    		    (endpoint_fec & DP_FEC_CAPABLE) &&
>>>> -		    (upstream_dsc & 0x2) /* DSC passthrough */)
>>>> +		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
>>>> +			port->passthrough_aux = &immediate_upstream_port->aux;
>>>>    			return &port->aux;
>>>> +		}
>>>>    
>>>>    		/* Virtual DPCD decompression with DP-to-DP peer device */
>>>>    		return &immediate_upstream_port->aux;
>>>> diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
>>>> index 9e3aff7e68bb..4d0abe4c7ea9 100644
>>>> --- a/include/drm/display/drm_dp.h
>>>> +++ b/include/drm/display/drm_dp.h
>>>> @@ -239,6 +239,7 @@
>>>>    
>>>>    #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
>>>>    # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
>>>> +# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
>>>>    
>>>>    #define DP_DSC_REV                          0x061
>>>>    # define DP_DSC_MAJOR_MASK                  (0xf << 0)
>>>> diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
>>>> index 10adec068b7f..4a39c95f8afd 100644
>>>> --- a/include/drm/display/drm_dp_mst_helper.h
>>>> +++ b/include/drm/display/drm_dp_mst_helper.h
>>>> @@ -86,6 +86,8 @@ struct drm_dp_vcpi {
>>>>     * @next: link to next port on this branch device
>>>>     * @aux: i2c aux transport to talk to device connected to this port, protected
>>>>     * by &drm_dp_mst_topology_mgr.base.lock.
>>>> + * @passthrough_aux: parent aux to which DSC pass-through requests should be
>>>> + * sent, only set if DSC pass-through is possible.
>>>>     * @parent: branch device parent of this port
>>>>     * @vcpi: Virtual Channel Payload info for this port.
>>>>     * @connector: DRM connector this port is connected to. Protected by
>>>> @@ -140,6 +142,7 @@ struct drm_dp_mst_port {
>>>>    	 */
>>>>    	struct drm_dp_mst_branch *mstb;
>>>>    	struct drm_dp_aux aux; /* i2c bus for this port? */
>>>> +	struct drm_dp_aux *passthrough_aux;
>>>>    	struct drm_dp_mst_branch *parent;
>>>>    
>>>>    	struct drm_dp_vcpi vcpi;
>>>
>>
>
Lyude Paul Aug. 10, 2022, 9:24 p.m. UTC | #5
On Wed, 2022-08-10 at 09:23 -0400, Hamza Mahfooz wrote:
> On 2022-08-09 18:01, Lyude Paul wrote:
> > Ah yes of course! Probably should have asked when I gave the r-b :). Also,
> > just so patchwork actually catches it I will say the magic incantation:
> > 
> > Reviewed-by: Lyude Paul <lyude@redhat.com>
> > 
> > Do we want to merge just this patch to drm-misc-next, or do you want to merge
> > the whole series through there? If you'd rather just merge this through amd's
> > branch I'm fine with that as well
> 
> In that case, it is preferable to have all of the patches in this series
> to get merged through amd's branch.\

Sounds totally fine to me! Just make sure to run it by Harry or another amdgpu
maintainer first, and then you should be good to go.

> 
> > 
> > On Tue, 2022-08-09 at 11:15 -0400, Hamza Mahfooz wrote:
> > > Hey Lyude,
> > > 
> > > On 2022-08-05 17:17, Lyude Paul wrote:
> > > > lgtm!
> > > > 
> > > 
> > > Any chance you can apply this to drm-misc-next?
> > > 
> > > > Reviewed-by: Lyude Paul <lyude@redhat.com>
> > > > 
> > > > On Fri, 2022-08-05 at 17:13 -0400, Hamza Mahfooz wrote:
> > > > > Currently, there is no way to identify if DSC pass-through can be
> > > > > enabled and what aux DSC pass-through requests ought to be sent to. So,
> > > > > add a variable to struct drm_dp_mst_port that keeps track of the
> > > > > aforementioned information.
> > > > > 
> > > > > Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
> > > > > ---
> > > > > v2: define DP_DSC_PASSTHROUGH_IS_SUPPORTED
> > > > > ---
> > > > >    drivers/gpu/drm/display/drm_dp_mst_topology.c | 4 +++-
> > > > >    include/drm/display/drm_dp.h                  | 1 +
> > > > >    include/drm/display/drm_dp_mst_helper.h       | 3 +++
> > > > >    3 files changed, 7 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > > > index 67b3b9697da7..71915afd9892 100644
> > > > > --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > > > +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
> > > > > @@ -5921,8 +5921,10 @@ struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
> > > > >    		/* Enpoint decompression with DP-to-DP peer device */
> > > > >    		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
> > > > >    		    (endpoint_fec & DP_FEC_CAPABLE) &&
> > > > > -		    (upstream_dsc & 0x2) /* DSC passthrough */)
> > > > > +		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
> > > > > +			port->passthrough_aux = &immediate_upstream_port->aux;
> > > > >    			return &port->aux;
> > > > > +		}
> > > > >    
> > > > >    		/* Virtual DPCD decompression with DP-to-DP peer device */
> > > > >    		return &immediate_upstream_port->aux;
> > > > > diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
> > > > > index 9e3aff7e68bb..4d0abe4c7ea9 100644
> > > > > --- a/include/drm/display/drm_dp.h
> > > > > +++ b/include/drm/display/drm_dp.h
> > > > > @@ -239,6 +239,7 @@
> > > > >    
> > > > >    #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
> > > > >    # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
> > > > > +# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
> > > > >    
> > > > >    #define DP_DSC_REV                          0x061
> > > > >    # define DP_DSC_MAJOR_MASK                  (0xf << 0)
> > > > > diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
> > > > > index 10adec068b7f..4a39c95f8afd 100644
> > > > > --- a/include/drm/display/drm_dp_mst_helper.h
> > > > > +++ b/include/drm/display/drm_dp_mst_helper.h
> > > > > @@ -86,6 +86,8 @@ struct drm_dp_vcpi {
> > > > >     * @next: link to next port on this branch device
> > > > >     * @aux: i2c aux transport to talk to device connected to this port, protected
> > > > >     * by &drm_dp_mst_topology_mgr.base.lock.
> > > > > + * @passthrough_aux: parent aux to which DSC pass-through requests should be
> > > > > + * sent, only set if DSC pass-through is possible.
> > > > >     * @parent: branch device parent of this port
> > > > >     * @vcpi: Virtual Channel Payload info for this port.
> > > > >     * @connector: DRM connector this port is connected to. Protected by
> > > > > @@ -140,6 +142,7 @@ struct drm_dp_mst_port {
> > > > >    	 */
> > > > >    	struct drm_dp_mst_branch *mstb;
> > > > >    	struct drm_dp_aux aux; /* i2c bus for this port? */
> > > > > +	struct drm_dp_aux *passthrough_aux;
> > > > >    	struct drm_dp_mst_branch *parent;
> > > > >    
> > > > >    	struct drm_dp_vcpi vcpi;
> > > > 
> > > 
> > 
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c b/drivers/gpu/drm/display/drm_dp_mst_topology.c
index 67b3b9697da7..71915afd9892 100644
--- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
@@ -5921,8 +5921,10 @@  struct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)
 		/* Enpoint decompression with DP-to-DP peer device */
 		if ((endpoint_dsc & DP_DSC_DECOMPRESSION_IS_SUPPORTED) &&
 		    (endpoint_fec & DP_FEC_CAPABLE) &&
-		    (upstream_dsc & 0x2) /* DSC passthrough */)
+		    (upstream_dsc & DP_DSC_PASSTHROUGH_IS_SUPPORTED)) {
+			port->passthrough_aux = &immediate_upstream_port->aux;
 			return &port->aux;
+		}
 
 		/* Virtual DPCD decompression with DP-to-DP peer device */
 		return &immediate_upstream_port->aux;
diff --git a/include/drm/display/drm_dp.h b/include/drm/display/drm_dp.h
index 9e3aff7e68bb..4d0abe4c7ea9 100644
--- a/include/drm/display/drm_dp.h
+++ b/include/drm/display/drm_dp.h
@@ -239,6 +239,7 @@ 
 
 #define DP_DSC_SUPPORT                      0x060   /* DP 1.4 */
 # define DP_DSC_DECOMPRESSION_IS_SUPPORTED  (1 << 0)
+# define DP_DSC_PASSTHROUGH_IS_SUPPORTED    (1 << 1)
 
 #define DP_DSC_REV                          0x061
 # define DP_DSC_MAJOR_MASK                  (0xf << 0)
diff --git a/include/drm/display/drm_dp_mst_helper.h b/include/drm/display/drm_dp_mst_helper.h
index 10adec068b7f..4a39c95f8afd 100644
--- a/include/drm/display/drm_dp_mst_helper.h
+++ b/include/drm/display/drm_dp_mst_helper.h
@@ -86,6 +86,8 @@  struct drm_dp_vcpi {
  * @next: link to next port on this branch device
  * @aux: i2c aux transport to talk to device connected to this port, protected
  * by &drm_dp_mst_topology_mgr.base.lock.
+ * @passthrough_aux: parent aux to which DSC pass-through requests should be
+ * sent, only set if DSC pass-through is possible.
  * @parent: branch device parent of this port
  * @vcpi: Virtual Channel Payload info for this port.
  * @connector: DRM connector this port is connected to. Protected by
@@ -140,6 +142,7 @@  struct drm_dp_mst_port {
 	 */
 	struct drm_dp_mst_branch *mstb;
 	struct drm_dp_aux aux; /* i2c bus for this port? */
+	struct drm_dp_aux *passthrough_aux;
 	struct drm_dp_mst_branch *parent;
 
 	struct drm_dp_vcpi vcpi;