From: <mikita.lipski@amd.com> To: <amd-gfx@lists.freedesktop.org> Cc: David Francis <David.Francis@amd.com>, Mikita Lipski <mikita.lipski@amd.com>, dri-devel@lists.freedesktop.org Subject: [PATCH v8 08/17] drm/amd/display: Validate DSC caps on MST endpoints Date: Tue, 3 Dec 2019 09:35:21 -0500 [thread overview] Message-ID: <20191203143530.27262-9-mikita.lipski@amd.com> (raw) In-Reply-To: <20191203143530.27262-1-mikita.lipski@amd.com> From: David Francis <David.Francis@amd.com> During MST mode enumeration, if a new dc_sink is created, populate it with dsc caps as appropriate. Use drm_dp_mst_dsc_aux_for_port to get the raw caps, then parse them onto dc_sink with dc_dsc_parse_dsc_dpcd. Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com> Signed-off-by: David Francis <David.Francis@amd.com> Signed-off-by: Mikita Lipski <mikita.lipski@amd.com> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 + .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h index ae36d99d0fb2..b544498d435e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -323,6 +323,7 @@ struct amdgpu_dm_connector { struct drm_dp_mst_port *port; struct amdgpu_dm_connector *mst_port; struct amdgpu_encoder *mst_encoder; + struct drm_dp_aux *dsc_aux; /* TODO see if we can merge with ddc_bus or make a dm_connector */ struct amdgpu_i2c_adapter *i2c; 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 81367c869134..7557edee7db0 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 @@ -25,6 +25,7 @@ #include <linux/version.h> #include <drm/drm_atomic_helper.h> +#include <drm/drm_dp_mst_helper.h> #include "dm_services.h" #include "amdgpu.h" #include "amdgpu_dm.h" @@ -180,6 +181,26 @@ static const struct drm_connector_funcs dm_dp_mst_connector_funcs = { .early_unregister = amdgpu_dm_mst_connector_early_unregister, }; +static bool validate_dsc_caps_on_connector(struct amdgpu_dm_connector *aconnector) +{ + struct dc_sink *dc_sink = aconnector->dc_sink; + struct drm_dp_mst_port *port = aconnector->port; + u8 dsc_caps[16] = { 0 }; + + aconnector->dsc_aux = drm_dp_mst_dsc_aux_for_port(port); + + if (!aconnector->dsc_aux) + return false; + + if (drm_dp_dpcd_read(aconnector->dsc_aux, DP_DSC_SUPPORT, dsc_caps, 16) < 0) + return false; + + if (!dc_dsc_parse_dsc_dpcd(dsc_caps, NULL, &dc_sink->sink_dsc_caps.dsc_dec_caps)) + return false; + + return true; +} + static int dm_dp_mst_get_modes(struct drm_connector *connector) { struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); @@ -222,10 +243,14 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector) /* dc_link_add_remote_sink returns a new reference */ aconnector->dc_sink = dc_sink; - if (aconnector->dc_sink) + if (aconnector->dc_sink) { amdgpu_dm_update_freesync_caps( connector, aconnector->edid); + if (!validate_dsc_caps_on_connector(aconnector)) + memset(&aconnector->dc_sink->sink_dsc_caps, + 0, sizeof(aconnector->dc_sink->sink_dsc_caps)); + } } drm_connector_update_edid_property( -- 2.17.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: <mikita.lipski@amd.com> To: <amd-gfx@lists.freedesktop.org> Cc: David Francis <David.Francis@amd.com>, Mikita Lipski <mikita.lipski@amd.com>, dri-devel@lists.freedesktop.org Subject: [PATCH v8 08/17] drm/amd/display: Validate DSC caps on MST endpoints Date: Tue, 3 Dec 2019 09:35:21 -0500 [thread overview] Message-ID: <20191203143530.27262-9-mikita.lipski@amd.com> (raw) In-Reply-To: <20191203143530.27262-1-mikita.lipski@amd.com> From: David Francis <David.Francis@amd.com> During MST mode enumeration, if a new dc_sink is created, populate it with dsc caps as appropriate. Use drm_dp_mst_dsc_aux_for_port to get the raw caps, then parse them onto dc_sink with dc_dsc_parse_dsc_dpcd. Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com> Signed-off-by: David Francis <David.Francis@amd.com> Signed-off-by: Mikita Lipski <mikita.lipski@amd.com> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 1 + .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 27 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h index ae36d99d0fb2..b544498d435e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -323,6 +323,7 @@ struct amdgpu_dm_connector { struct drm_dp_mst_port *port; struct amdgpu_dm_connector *mst_port; struct amdgpu_encoder *mst_encoder; + struct drm_dp_aux *dsc_aux; /* TODO see if we can merge with ddc_bus or make a dm_connector */ struct amdgpu_i2c_adapter *i2c; 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 81367c869134..7557edee7db0 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 @@ -25,6 +25,7 @@ #include <linux/version.h> #include <drm/drm_atomic_helper.h> +#include <drm/drm_dp_mst_helper.h> #include "dm_services.h" #include "amdgpu.h" #include "amdgpu_dm.h" @@ -180,6 +181,26 @@ static const struct drm_connector_funcs dm_dp_mst_connector_funcs = { .early_unregister = amdgpu_dm_mst_connector_early_unregister, }; +static bool validate_dsc_caps_on_connector(struct amdgpu_dm_connector *aconnector) +{ + struct dc_sink *dc_sink = aconnector->dc_sink; + struct drm_dp_mst_port *port = aconnector->port; + u8 dsc_caps[16] = { 0 }; + + aconnector->dsc_aux = drm_dp_mst_dsc_aux_for_port(port); + + if (!aconnector->dsc_aux) + return false; + + if (drm_dp_dpcd_read(aconnector->dsc_aux, DP_DSC_SUPPORT, dsc_caps, 16) < 0) + return false; + + if (!dc_dsc_parse_dsc_dpcd(dsc_caps, NULL, &dc_sink->sink_dsc_caps.dsc_dec_caps)) + return false; + + return true; +} + static int dm_dp_mst_get_modes(struct drm_connector *connector) { struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector); @@ -222,10 +243,14 @@ static int dm_dp_mst_get_modes(struct drm_connector *connector) /* dc_link_add_remote_sink returns a new reference */ aconnector->dc_sink = dc_sink; - if (aconnector->dc_sink) + if (aconnector->dc_sink) { amdgpu_dm_update_freesync_caps( connector, aconnector->edid); + if (!validate_dsc_caps_on_connector(aconnector)) + memset(&aconnector->dc_sink->sink_dsc_caps, + 0, sizeof(aconnector->dc_sink->sink_dsc_caps)); + } } drm_connector_update_edid_property( -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-12-03 14:36 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-03 14:35 [PATCH v8 00/17] DSC MST support for DRM and AMDGPU mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 01/17] drm/dp_mst: Add PBN calculation for DSC modes mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-06 0:22 ` kbuild test robot 2019-12-06 0:22 ` kbuild test robot 2019-12-06 0:22 ` kbuild test robot 2019-12-07 0:17 ` Lyude Paul 2019-12-07 0:17 ` Lyude Paul 2019-12-07 22:13 ` Lipski, Mikita 2019-12-07 22:13 ` Lipski, Mikita 2019-12-03 14:35 ` [PATCH v8 02/17] drm/dp_mst: Parse FEC capability on MST ports mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 21:09 ` kbuild test robot 2019-12-03 21:09 ` kbuild test robot 2019-12-03 21:09 ` kbuild test robot 2019-12-03 14:35 ` [PATCH v8 03/17] drm/dp_mst: Add MST support to DP DPCD R/W functions mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 04/17] drm/dp_mst: Fill branch->num_ports mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-06 4:30 ` Harry Wentland 2019-12-06 4:30 ` Harry Wentland 2019-12-03 14:35 ` [PATCH v8 05/17] drm/dp_mst: Add helpers for MST DSC and virtual DPCD aux mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 06/17] drm/dp_mst: Add new quirk for Synaptics MST hubs mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 07/17] drm/amd/display: Initialize DSC PPS variables to 0 mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` mikita.lipski [this message] 2019-12-03 14:35 ` [PATCH v8 08/17] drm/amd/display: Validate DSC caps on MST endpoints mikita.lipski 2019-12-03 14:35 ` [PATCH v8 09/17] drm/amd/display: Write DSC enable to MST DPCD mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 10/17] drm/dp_mst: Manually overwrite PBN divider for calculating timeslots mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 11/17] drm/dp_mst: Add DSC enablement helpers to DRM mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 21:52 ` kbuild test robot 2019-12-03 21:52 ` kbuild test robot 2019-12-03 21:52 ` kbuild test robot 2019-12-07 0:24 ` Lyude Paul 2019-12-07 0:24 ` Lyude Paul 2019-12-09 14:07 ` Mikita Lipski 2019-12-09 14:07 ` Mikita Lipski 2019-12-03 14:35 ` [PATCH v8 12/17] drm/dp_mst: Add branch bandwidth validation to MST atomic check mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-05 19:28 ` Harry Wentland 2019-12-05 19:28 ` Harry Wentland 2019-12-07 0:30 ` Lyude Paul 2019-12-07 0:30 ` Lyude Paul 2019-12-03 14:35 ` [PATCH v8 13/17] drm/amd/display: Add PBN per slot calculation for DSC mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 14:35 ` [PATCH v8 14/17] drm/amd/display: MST DSC compute fair share mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-07 0:53 ` Lyude Paul 2019-12-07 0:53 ` Lyude Paul 2019-12-03 14:35 ` [PATCH v8 15/17] drm/amd/display: Recalculate VCPI slots for new DSC connectors mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-07 0:52 ` Lyude Paul 2019-12-07 0:52 ` Lyude Paul 2019-12-03 14:35 ` [PATCH v8 16/17] drm/dp_mst: Add helper to trigger modeset on affected DSC MST CRTCs mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-03 22:40 ` kbuild test robot 2019-12-03 22:40 ` kbuild test robot 2019-12-03 22:40 ` kbuild test robot 2019-12-07 0:51 ` Lyude Paul 2019-12-07 0:51 ` Lyude Paul 2019-12-03 14:35 ` [PATCH v8 17/17] drm/amd/display: Trigger modesets on MST DSC connectors mikita.lipski 2019-12-03 14:35 ` mikita.lipski 2019-12-07 0:53 ` Lyude Paul 2019-12-07 0:53 ` Lyude Paul
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191203143530.27262-9-mikita.lipski@amd.com \ --to=mikita.lipski@amd.com \ --cc=David.Francis@amd.com \ --cc=amd-gfx@lists.freedesktop.org \ --cc=dri-devel@lists.freedesktop.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.