diff mbox series

[4/5] drm/amdgpu: utilize subconnector property for DP through atombios

Message ID 1586242207-23214-4-git-send-email-jeevan.b@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/5] drm: report dp downstream port type as a subconnector property | expand

Commit Message

B, Jeevan April 7, 2020, 6:50 a.m. UTC
From: Oleg Vasilev <oleg.vasilev@intel.com>

Since DP-specific information is stored in driver's structures, every
driver needs to implement subconnector property by itself.

v2: rebase

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: David (ChunMing) Zhou <David1.Zhou@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Signed-off-by: Jeevan B <jeevan.b@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-6-oleg.vasilev@intel.com
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 10 ++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h       |  1 +
 drivers/gpu/drm/amd/amdgpu/atombios_dp.c       | 18 +++++++++++++++++-
 3 files changed, 28 insertions(+), 1 deletion(-)

Comments

Jani Nikula April 15, 2020, 10:04 a.m. UTC | #1
Alex, Harry, Christian, can you please eyeball this series and see if it
makes sense for you?

Thanks,
Jani.


On Tue, 07 Apr 2020, Jeevan B <jeevan.b@intel.com> wrote:
> From: Oleg Vasilev <oleg.vasilev@intel.com>
>
> Since DP-specific information is stored in driver's structures, every
> driver needs to implement subconnector property by itself.
>
> v2: rebase
>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: David (ChunMing) Zhou <David1.Zhou@amd.com>
> Cc: amd-gfx@lists.freedesktop.org
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-6-oleg.vasilev@intel.com
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 10 ++++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h       |  1 +
>  drivers/gpu/drm/amd/amdgpu/atombios_dp.c       | 18 +++++++++++++++++-
>  3 files changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> index f355d9a..71aade0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> @@ -26,6 +26,7 @@
>  
>  #include <drm/drm_edid.h>
>  #include <drm/drm_fb_helper.h>
> +#include <drm/drm_dp_helper.h>
>  #include <drm/drm_probe_helper.h>
>  #include <drm/amdgpu_drm.h>
>  #include "amdgpu.h"
> @@ -1405,6 +1406,10 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
>  		pm_runtime_put_autosuspend(connector->dev->dev);
>  	}
>  
> +	drm_dp_set_subconnector_property(&amdgpu_connector->base,
> +					 ret,
> +					 amdgpu_dig_connector->dpcd,
> +					 amdgpu_dig_connector->downstream_ports);
>  	return ret;
>  }
>  
> @@ -1951,6 +1956,11 @@ amdgpu_connector_add(struct amdgpu_device *adev,
>  	if (has_aux)
>  		amdgpu_atombios_dp_aux_init(amdgpu_connector);
>  
> +	if (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
> +	    connector_type == DRM_MODE_CONNECTOR_eDP) {
> +		drm_mode_add_dp_subconnector_property(&amdgpu_connector->base);
> +	}
> +
>  	return;
>  
>  failed:
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> index 37ba07e..04a430e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> @@ -469,6 +469,7 @@ struct amdgpu_encoder {
>  struct amdgpu_connector_atom_dig {
>  	/* displayport */
>  	u8 dpcd[DP_RECEIVER_CAP_SIZE];
> +	u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
>  	u8 dp_sink_type;
>  	int dp_clock;
>  	int dp_lane_count;
> diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> index 9b74cfd..900b272 100644
> --- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> +++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> @@ -328,6 +328,22 @@ static void amdgpu_atombios_dp_probe_oui(struct amdgpu_connector *amdgpu_connect
>  			      buf[0], buf[1], buf[2]);
>  }
>  
> +static void amdgpu_atombios_dp_ds_ports(struct amdgpu_connector *amdgpu_connector)
> +{
> +	struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
> +	int ret;
> +
> +	if (dig_connector->dpcd[DP_DPCD_REV] > 0x10) {
> +		ret = drm_dp_dpcd_read(&amdgpu_connector->ddc_bus->aux,
> +				       DP_DOWNSTREAM_PORT_0,
> +				       dig_connector->downstream_ports,
> +				       DP_MAX_DOWNSTREAM_PORTS);
> +		if (ret)
> +			memset(dig_connector->downstream_ports, 0,
> +			       DP_MAX_DOWNSTREAM_PORTS);
> +	}
> +}
> +
>  int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
>  {
>  	struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
> @@ -343,7 +359,7 @@ int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
>  			      dig_connector->dpcd);
>  
>  		amdgpu_atombios_dp_probe_oui(amdgpu_connector);
> -
> +		amdgpu_atombios_dp_ds_ports(amdgpu_connector);
>  		return 0;
>  	}
Alex Deucher April 16, 2020, 1:53 p.m. UTC | #2
On Wed, Apr 15, 2020 at 6:05 AM Jani Nikula <jani.nikula@intel.com> wrote:
>
>
> Alex, Harry, Christian, can you please eyeball this series and see if it
> makes sense for you?
>

Patches 4, 5 are:
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Feel free to take them through whichever tree you want.

Alex


> Thanks,
> Jani.
>
>
> On Tue, 07 Apr 2020, Jeevan B <jeevan.b@intel.com> wrote:
> > From: Oleg Vasilev <oleg.vasilev@intel.com>
> >
> > Since DP-specific information is stored in driver's structures, every
> > driver needs to implement subconnector property by itself.
> >
> > v2: rebase
> >
> > Cc: Alex Deucher <alexander.deucher@amd.com>
> > Cc: Christian König <christian.koenig@amd.com>
> > Cc: David (ChunMing) Zhou <David1.Zhou@amd.com>
> > Cc: amd-gfx@lists.freedesktop.org
> > Signed-off-by: Jeevan B <jeevan.b@intel.com>
> > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
> > Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> > Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-6-oleg.vasilev@intel.com
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 10 ++++++++++
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h       |  1 +
> >  drivers/gpu/drm/amd/amdgpu/atombios_dp.c       | 18 +++++++++++++++++-
> >  3 files changed, 28 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > index f355d9a..71aade0 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
> > @@ -26,6 +26,7 @@
> >
> >  #include <drm/drm_edid.h>
> >  #include <drm/drm_fb_helper.h>
> > +#include <drm/drm_dp_helper.h>
> >  #include <drm/drm_probe_helper.h>
> >  #include <drm/amdgpu_drm.h>
> >  #include "amdgpu.h"
> > @@ -1405,6 +1406,10 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
> >               pm_runtime_put_autosuspend(connector->dev->dev);
> >       }
> >
> > +     drm_dp_set_subconnector_property(&amdgpu_connector->base,
> > +                                      ret,
> > +                                      amdgpu_dig_connector->dpcd,
> > +                                      amdgpu_dig_connector->downstream_ports);
> >       return ret;
> >  }
> >
> > @@ -1951,6 +1956,11 @@ amdgpu_connector_add(struct amdgpu_device *adev,
> >       if (has_aux)
> >               amdgpu_atombios_dp_aux_init(amdgpu_connector);
> >
> > +     if (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
> > +         connector_type == DRM_MODE_CONNECTOR_eDP) {
> > +             drm_mode_add_dp_subconnector_property(&amdgpu_connector->base);
> > +     }
> > +
> >       return;
> >
> >  failed:
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > index 37ba07e..04a430e 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
> > @@ -469,6 +469,7 @@ struct amdgpu_encoder {
> >  struct amdgpu_connector_atom_dig {
> >       /* displayport */
> >       u8 dpcd[DP_RECEIVER_CAP_SIZE];
> > +     u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
> >       u8 dp_sink_type;
> >       int dp_clock;
> >       int dp_lane_count;
> > diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > index 9b74cfd..900b272 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
> > @@ -328,6 +328,22 @@ static void amdgpu_atombios_dp_probe_oui(struct amdgpu_connector *amdgpu_connect
> >                             buf[0], buf[1], buf[2]);
> >  }
> >
> > +static void amdgpu_atombios_dp_ds_ports(struct amdgpu_connector *amdgpu_connector)
> > +{
> > +     struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
> > +     int ret;
> > +
> > +     if (dig_connector->dpcd[DP_DPCD_REV] > 0x10) {
> > +             ret = drm_dp_dpcd_read(&amdgpu_connector->ddc_bus->aux,
> > +                                    DP_DOWNSTREAM_PORT_0,
> > +                                    dig_connector->downstream_ports,
> > +                                    DP_MAX_DOWNSTREAM_PORTS);
> > +             if (ret)
> > +                     memset(dig_connector->downstream_ports, 0,
> > +                            DP_MAX_DOWNSTREAM_PORTS);
> > +     }
> > +}
> > +
> >  int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
> >  {
> >       struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
> > @@ -343,7 +359,7 @@ int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
> >                             dig_connector->dpcd);
> >
> >               amdgpu_atombios_dp_probe_oui(amdgpu_connector);
> > -
> > +             amdgpu_atombios_dp_ds_ports(amdgpu_connector);
> >               return 0;
> >       }
>
> --
> Jani Nikula, Intel Open Source Graphics Center
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Jani Nikula April 16, 2020, 6:39 p.m. UTC | #3
On Thu, 16 Apr 2020, Alex Deucher <alexdeucher@gmail.com> wrote:
> On Wed, Apr 15, 2020 at 6:05 AM Jani Nikula <jani.nikula@intel.com> wrote:
>>
>>
>> Alex, Harry, Christian, can you please eyeball this series and see if it
>> makes sense for you?
>>
>
> Patches 4, 5 are:
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
> Feel free to take them through whichever tree you want.

Thanks a bunch! I'll let you know.

BR,
Jani.

>
> Alex
>
>
>> Thanks,
>> Jani.
>>
>>
>> On Tue, 07 Apr 2020, Jeevan B <jeevan.b@intel.com> wrote:
>> > From: Oleg Vasilev <oleg.vasilev@intel.com>
>> >
>> > Since DP-specific information is stored in driver's structures, every
>> > driver needs to implement subconnector property by itself.
>> >
>> > v2: rebase
>> >
>> > Cc: Alex Deucher <alexander.deucher@amd.com>
>> > Cc: Christian König <christian.koenig@amd.com>
>> > Cc: David (ChunMing) Zhou <David1.Zhou@amd.com>
>> > Cc: amd-gfx@lists.freedesktop.org
>> > Signed-off-by: Jeevan B <jeevan.b@intel.com>
>> > Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
>> > Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
>> > Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-6-oleg.vasilev@intel.com
>> > ---
>> >  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 10 ++++++++++
>> >  drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h       |  1 +
>> >  drivers/gpu/drm/amd/amdgpu/atombios_dp.c       | 18 +++++++++++++++++-
>> >  3 files changed, 28 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
>> > index f355d9a..71aade0 100644
>> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
>> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
>> > @@ -26,6 +26,7 @@
>> >
>> >  #include <drm/drm_edid.h>
>> >  #include <drm/drm_fb_helper.h>
>> > +#include <drm/drm_dp_helper.h>
>> >  #include <drm/drm_probe_helper.h>
>> >  #include <drm/amdgpu_drm.h>
>> >  #include "amdgpu.h"
>> > @@ -1405,6 +1406,10 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
>> >               pm_runtime_put_autosuspend(connector->dev->dev);
>> >       }
>> >
>> > +     drm_dp_set_subconnector_property(&amdgpu_connector->base,
>> > +                                      ret,
>> > +                                      amdgpu_dig_connector->dpcd,
>> > +                                      amdgpu_dig_connector->downstream_ports);
>> >       return ret;
>> >  }
>> >
>> > @@ -1951,6 +1956,11 @@ amdgpu_connector_add(struct amdgpu_device *adev,
>> >       if (has_aux)
>> >               amdgpu_atombios_dp_aux_init(amdgpu_connector);
>> >
>> > +     if (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
>> > +         connector_type == DRM_MODE_CONNECTOR_eDP) {
>> > +             drm_mode_add_dp_subconnector_property(&amdgpu_connector->base);
>> > +     }
>> > +
>> >       return;
>> >
>> >  failed:
>> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
>> > index 37ba07e..04a430e 100644
>> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
>> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
>> > @@ -469,6 +469,7 @@ struct amdgpu_encoder {
>> >  struct amdgpu_connector_atom_dig {
>> >       /* displayport */
>> >       u8 dpcd[DP_RECEIVER_CAP_SIZE];
>> > +     u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
>> >       u8 dp_sink_type;
>> >       int dp_clock;
>> >       int dp_lane_count;
>> > diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
>> > index 9b74cfd..900b272 100644
>> > --- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
>> > +++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
>> > @@ -328,6 +328,22 @@ static void amdgpu_atombios_dp_probe_oui(struct amdgpu_connector *amdgpu_connect
>> >                             buf[0], buf[1], buf[2]);
>> >  }
>> >
>> > +static void amdgpu_atombios_dp_ds_ports(struct amdgpu_connector *amdgpu_connector)
>> > +{
>> > +     struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
>> > +     int ret;
>> > +
>> > +     if (dig_connector->dpcd[DP_DPCD_REV] > 0x10) {
>> > +             ret = drm_dp_dpcd_read(&amdgpu_connector->ddc_bus->aux,
>> > +                                    DP_DOWNSTREAM_PORT_0,
>> > +                                    dig_connector->downstream_ports,
>> > +                                    DP_MAX_DOWNSTREAM_PORTS);
>> > +             if (ret)
>> > +                     memset(dig_connector->downstream_ports, 0,
>> > +                            DP_MAX_DOWNSTREAM_PORTS);
>> > +     }
>> > +}
>> > +
>> >  int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
>> >  {
>> >       struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
>> > @@ -343,7 +359,7 @@ int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
>> >                             dig_connector->dpcd);
>> >
>> >               amdgpu_atombios_dp_probe_oui(amdgpu_connector);
>> > -
>> > +             amdgpu_atombios_dp_ds_ports(amdgpu_connector);
>> >               return 0;
>> >       }
>>
>> --
>> Jani Nikula, Intel Open Source Graphics Center
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index f355d9a..71aade0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -26,6 +26,7 @@ 
 
 #include <drm/drm_edid.h>
 #include <drm/drm_fb_helper.h>
+#include <drm/drm_dp_helper.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/amdgpu_drm.h>
 #include "amdgpu.h"
@@ -1405,6 +1406,10 @@  amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
 		pm_runtime_put_autosuspend(connector->dev->dev);
 	}
 
+	drm_dp_set_subconnector_property(&amdgpu_connector->base,
+					 ret,
+					 amdgpu_dig_connector->dpcd,
+					 amdgpu_dig_connector->downstream_ports);
 	return ret;
 }
 
@@ -1951,6 +1956,11 @@  amdgpu_connector_add(struct amdgpu_device *adev,
 	if (has_aux)
 		amdgpu_atombios_dp_aux_init(amdgpu_connector);
 
+	if (connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
+	    connector_type == DRM_MODE_CONNECTOR_eDP) {
+		drm_mode_add_dp_subconnector_property(&amdgpu_connector->base);
+	}
+
 	return;
 
 failed:
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index 37ba07e..04a430e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -469,6 +469,7 @@  struct amdgpu_encoder {
 struct amdgpu_connector_atom_dig {
 	/* displayport */
 	u8 dpcd[DP_RECEIVER_CAP_SIZE];
+	u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
 	u8 dp_sink_type;
 	int dp_clock;
 	int dp_lane_count;
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
index 9b74cfd..900b272 100644
--- a/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
+++ b/drivers/gpu/drm/amd/amdgpu/atombios_dp.c
@@ -328,6 +328,22 @@  static void amdgpu_atombios_dp_probe_oui(struct amdgpu_connector *amdgpu_connect
 			      buf[0], buf[1], buf[2]);
 }
 
+static void amdgpu_atombios_dp_ds_ports(struct amdgpu_connector *amdgpu_connector)
+{
+	struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
+	int ret;
+
+	if (dig_connector->dpcd[DP_DPCD_REV] > 0x10) {
+		ret = drm_dp_dpcd_read(&amdgpu_connector->ddc_bus->aux,
+				       DP_DOWNSTREAM_PORT_0,
+				       dig_connector->downstream_ports,
+				       DP_MAX_DOWNSTREAM_PORTS);
+		if (ret)
+			memset(dig_connector->downstream_ports, 0,
+			       DP_MAX_DOWNSTREAM_PORTS);
+	}
+}
+
 int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
 {
 	struct amdgpu_connector_atom_dig *dig_connector = amdgpu_connector->con_priv;
@@ -343,7 +359,7 @@  int amdgpu_atombios_dp_get_dpcd(struct amdgpu_connector *amdgpu_connector)
 			      dig_connector->dpcd);
 
 		amdgpu_atombios_dp_probe_oui(amdgpu_connector);
-
+		amdgpu_atombios_dp_ds_ports(amdgpu_connector);
 		return 0;
 	}