* [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios [not found] <1586242207-23214-1-git-send-email-jeevan.b@intel.com> @ 2020-04-07 6:50 ` Jeevan B 2020-04-15 10:04 ` [Intel-gfx] " Jani Nikula 2020-04-07 6:50 ` [PATCH 5/5] drm/amdgpu: utilize subconnector property for DP through DisplayManager Jeevan B 1 sibling, 1 reply; 5+ messages in thread From: Jeevan B @ 2020-04-07 6:50 UTC (permalink / raw) To: dri-devel, intel-gfx Cc: David Zhou, jani.nikula, Oleg Vasilev, amd-gfx, Jeevan B, uma.shankar, Alex Deucher, Christian König, ville.syrjala 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; } -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Intel-gfx] [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios 2020-04-07 6:50 ` [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios Jeevan B @ 2020-04-15 10:04 ` Jani Nikula 2020-04-16 13:53 ` Alex Deucher 0 siblings, 1 reply; 5+ messages in thread From: Jani Nikula @ 2020-04-15 10:04 UTC (permalink / raw) To: Jeevan B, dri-devel, intel-gfx Cc: David Zhou, Jeevan B, Oleg Vasilev, amd-gfx, Alex Deucher, Harry Wentland, Christian König 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; > } -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-gfx] [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios 2020-04-15 10:04 ` [Intel-gfx] " Jani Nikula @ 2020-04-16 13:53 ` Alex Deucher 2020-04-16 18:39 ` Jani Nikula 0 siblings, 1 reply; 5+ messages in thread From: Alex Deucher @ 2020-04-16 13:53 UTC (permalink / raw) To: Jani Nikula Cc: Jeevan B, Intel Graphics Development, Oleg Vasilev, amd-gfx list, Maling list - DRI developers, Alex Deucher, Harry Wentland, Christian König 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 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Intel-gfx] [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios 2020-04-16 13:53 ` Alex Deucher @ 2020-04-16 18:39 ` Jani Nikula 0 siblings, 0 replies; 5+ messages in thread From: Jani Nikula @ 2020-04-16 18:39 UTC (permalink / raw) To: Alex Deucher Cc: Jeevan B, Intel Graphics Development, Oleg Vasilev, amd-gfx list, Maling list - DRI developers, Alex Deucher, Harry Wentland, Christian König 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 -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 5/5] drm/amdgpu: utilize subconnector property for DP through DisplayManager [not found] <1586242207-23214-1-git-send-email-jeevan.b@intel.com> 2020-04-07 6:50 ` [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios Jeevan B @ 2020-04-07 6:50 ` Jeevan B 1 sibling, 0 replies; 5+ messages in thread From: Jeevan B @ 2020-04-07 6:50 UTC (permalink / raw) To: dri-devel, intel-gfx Cc: David Zhou, jani.nikula, Oleg Vasilev, amd-gfx, Jeevan B, uma.shankar, Alex Deucher, Christian König, ville.syrjala 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. Display Core already has the subconnector information, we only need to expose it through DRM property. 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> Tested-by: Oleg Vasilev <oleg.vasilev@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-7-oleg.vasilev@intel.com --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 41 +++++++++++++++++++++- .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 3 ++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index d3674d8..91c0ef2 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -121,6 +121,42 @@ MODULE_FIRMWARE(FIRMWARE_NAVI12_DMCU); static int amdgpu_dm_init(struct amdgpu_device *adev); static void amdgpu_dm_fini(struct amdgpu_device *adev); +static enum drm_mode_subconnector get_subconnector_type(struct dc_link *link) +{ + switch (link->dpcd_caps.dongle_type) { + case DISPLAY_DONGLE_NONE: + return DRM_MODE_SUBCONNECTOR_Native; + case DISPLAY_DONGLE_DP_VGA_CONVERTER: + return DRM_MODE_SUBCONNECTOR_VGA; + case DISPLAY_DONGLE_DP_DVI_CONVERTER: + case DISPLAY_DONGLE_DP_DVI_DONGLE: + return DRM_MODE_SUBCONNECTOR_DVID; + case DISPLAY_DONGLE_DP_HDMI_CONVERTER: + case DISPLAY_DONGLE_DP_HDMI_DONGLE: + return DRM_MODE_SUBCONNECTOR_HDMIA; + case DISPLAY_DONGLE_DP_HDMI_MISMATCHED_DONGLE: + default: + return DRM_MODE_SUBCONNECTOR_Unknown; + } +} + +static void update_subconnector_property(struct amdgpu_dm_connector *aconnector) +{ + struct dc_link *link = aconnector->dc_link; + struct drm_connector *connector = &aconnector->base; + enum drm_mode_subconnector subconnector = DRM_MODE_SUBCONNECTOR_Unknown; + + if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort) + return; + + if (aconnector->dc_sink) + subconnector = get_subconnector_type(link); + + drm_object_property_set_value(&connector->base, + connector->dev->mode_config.dp_subconnector_property, + subconnector); +} + /* * initializes drm_device display related structures, based on the information * provided by DAL. The drm strcutures are: drm_crtc, drm_connector, @@ -1917,7 +1953,6 @@ void amdgpu_dm_update_connector_after_detect( if (aconnector->mst_mgr.mst_state == true) return; - sink = aconnector->dc_link->local_sink; if (sink) dc_sink_retain(sink); @@ -2038,6 +2073,8 @@ void amdgpu_dm_update_connector_after_detect( mutex_unlock(&dev->mode_config.mutex); + update_subconnector_property(aconnector); + if (sink) dc_sink_release(sink); } @@ -4518,6 +4555,8 @@ amdgpu_dm_connector_detect(struct drm_connector *connector, bool force) else connected = (aconnector->base.force == DRM_FORCE_ON); + update_subconnector_property(aconnector); + return (connected ? connector_status_connected : connector_status_disconnected); } diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c index d56b758..267c82c 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c @@ -26,6 +26,7 @@ #include <linux/version.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_dp_mst_helper.h> +#include <drm/drm_dp_helper.h> #include "dm_services.h" #include "amdgpu.h" #include "amdgpu_dm.h" @@ -464,6 +465,8 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm, 16, 4, aconnector->connector_id); + + drm_mode_add_dp_subconnector_property(&aconnector->base); } int dm_mst_get_pbn_divider(struct dc_link *link) -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-04-16 19:19 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1586242207-23214-1-git-send-email-jeevan.b@intel.com>
2020-04-07 6:50 ` [PATCH 4/5] drm/amdgpu: utilize subconnector property for DP through atombios Jeevan B
2020-04-15 10:04 ` [Intel-gfx] " Jani Nikula
2020-04-16 13:53 ` Alex Deucher
2020-04-16 18:39 ` Jani Nikula
2020-04-07 6:50 ` [PATCH 5/5] drm/amdgpu: utilize subconnector property for DP through DisplayManager Jeevan B
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox