[v3,4/7] drm/i915: utilize subconnector property for DP
diff mbox series

Message ID 20190826132216.2823-5-oleg.vasilev@intel.com
State New
Headers show
Series
  • [v3,1/7] drm: move DP_MAX_DOWNSTREAM_PORTS from i915 to drm core
Related show

Commit Message

Oleg Vasilev Aug. 26, 2019, 1:22 p.m. UTC
Since DP-specific information is stored in driver's structures, every
driver needs to implement subconnector property by itself.

v2: updates to match previous commit changes

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Oleg Vasilev <oleg.vasilev@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
---
 drivers/gpu/drm/i915/display/intel_dp.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Ville Syrjälä Aug. 28, 2019, 2:27 p.m. UTC | #1
On Mon, Aug 26, 2019 at 04:22:13PM +0300, Oleg Vasilev wrote:
> Since DP-specific information is stored in driver's structures, every
> driver needs to implement subconnector property by itself.
> 
> v2: updates to match previous commit changes
> 
> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> Tested-by: Oleg Vasilev <oleg.vasilev@intel.com>
> Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 6da6a4859f06..9c97ece803eb 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5434,6 +5434,10 @@ intel_dp_detect(struct drm_connector *connector,
>  	if (status != connector_status_connected && !intel_dp->is_mst)
>  		intel_dp_unset_edid(intel_dp);
>  
> +	drm_dp_set_subconnector_property(connector,
> +					 status,
> +					 intel_dp->dpcd,
> +					 intel_dp->downstream_ports);
>  	return status;
>  }
>  
> @@ -6332,6 +6336,8 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
>  	struct drm_i915_private *dev_priv = to_i915(connector->dev);
>  	enum port port = dp_to_dig_port(intel_dp)->base.port;
>  
> +	drm_mode_add_dp_subconnector_property(connector);

Maybe skip this for eDP?

> +
>  	if (!IS_G4X(dev_priv) && port != PORT_A)
>  		intel_attach_force_audio_property(connector);
>  
> -- 
> 2.23.0
Alex Deucher Aug. 29, 2019, 1:09 p.m. UTC | #2
On Wed, Aug 28, 2019 at 10:27 AM Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
>
> On Mon, Aug 26, 2019 at 04:22:13PM +0300, Oleg Vasilev wrote:
> > Since DP-specific information is stored in driver's structures, every
> > driver needs to implement subconnector property by itself.
> >
> > v2: updates to match previous commit changes
> >
> > Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> > Tested-by: Oleg Vasilev <oleg.vasilev@intel.com>
> > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: intel-gfx@lists.freedesktop.org
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> > index 6da6a4859f06..9c97ece803eb 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -5434,6 +5434,10 @@ intel_dp_detect(struct drm_connector *connector,
> >       if (status != connector_status_connected && !intel_dp->is_mst)
> >               intel_dp_unset_edid(intel_dp);
> >
> > +     drm_dp_set_subconnector_property(connector,
> > +                                      status,
> > +                                      intel_dp->dpcd,
> > +                                      intel_dp->downstream_ports);
> >       return status;
> >  }
> >
> > @@ -6332,6 +6336,8 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
> >       struct drm_i915_private *dev_priv = to_i915(connector->dev);
> >       enum port port = dp_to_dig_port(intel_dp)->base.port;
> >
> > +     drm_mode_add_dp_subconnector_property(connector);
>
> Maybe skip this for eDP?

Not sure if you have something similar, but there are AMD platforms
that contain eDP to LVDS bridges.  Then again, probably not a big deal
for the laptop panel.

Alex

>
> > +
> >       if (!IS_G4X(dev_priv) && port != PORT_A)
> >               intel_attach_force_audio_property(connector);
> >
> > --
> > 2.23.0
>
> --
> Ville Syrjälä
> Intel
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Ville Syrjälä Aug. 30, 2019, 12:13 p.m. UTC | #3
On Thu, Aug 29, 2019 at 09:09:14AM -0400, Alex Deucher wrote:
> On Wed, Aug 28, 2019 at 10:27 AM Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
> >
> > On Mon, Aug 26, 2019 at 04:22:13PM +0300, Oleg Vasilev wrote:
> > > Since DP-specific information is stored in driver's structures, every
> > > driver needs to implement subconnector property by itself.
> > >
> > > v2: updates to match previous commit changes
> > >
> > > Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> > > Tested-by: Oleg Vasilev <oleg.vasilev@intel.com>
> > > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Cc: intel-gfx@lists.freedesktop.org
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_dp.c | 6 ++++++
> > >  1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> > > index 6da6a4859f06..9c97ece803eb 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > > @@ -5434,6 +5434,10 @@ intel_dp_detect(struct drm_connector *connector,
> > >       if (status != connector_status_connected && !intel_dp->is_mst)
> > >               intel_dp_unset_edid(intel_dp);
> > >
> > > +     drm_dp_set_subconnector_property(connector,
> > > +                                      status,
> > > +                                      intel_dp->dpcd,
> > > +                                      intel_dp->downstream_ports);
> > >       return status;
> > >  }
> > >
> > > @@ -6332,6 +6336,8 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
> > >       struct drm_i915_private *dev_priv = to_i915(connector->dev);
> > >       enum port port = dp_to_dig_port(intel_dp)->base.port;
> > >
> > > +     drm_mode_add_dp_subconnector_property(connector);
> >
> > Maybe skip this for eDP?
> 
> Not sure if you have something similar, but there are AMD platforms
> that contain eDP to LVDS bridges.  Then again, probably not a big deal
> for the laptop panel.

IIRC those don't generally expose the LVDS side as a DFP anyway.
Ie. they just looks like a DP device with a local sink.

Patch
diff mbox series

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 6da6a4859f06..9c97ece803eb 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5434,6 +5434,10 @@  intel_dp_detect(struct drm_connector *connector,
 	if (status != connector_status_connected && !intel_dp->is_mst)
 		intel_dp_unset_edid(intel_dp);
 
+	drm_dp_set_subconnector_property(connector,
+					 status,
+					 intel_dp->dpcd,
+					 intel_dp->downstream_ports);
 	return status;
 }
 
@@ -6332,6 +6336,8 @@  intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
 	struct drm_i915_private *dev_priv = to_i915(connector->dev);
 	enum port port = dp_to_dig_port(intel_dp)->base.port;
 
+	drm_mode_add_dp_subconnector_property(connector);
+
 	if (!IS_G4X(dev_priv) && port != PORT_A)
 		intel_attach_force_audio_property(connector);