[PATCH 07/28] drm/amd/display: USB-C to HDMI dongle not light
Dave Airlie
airlied at gmail.com
Mon Sep 11 20:20:01 UTC 2017
This seems to lack a commit msg
Dave.
On 12 Sep. 2017 4:15 am, "Harry Wentland" <harry.wentland at amd.com> wrote:
> From: Hersen Wu <hersenxs.wu at amd.com>
>
> Signed-off-by: Hersen Wu <hersenxs.wu at amd.com>
> Reviewed-by: Tony Cheng <Tony.Cheng at amd.com>
> Acked-by: Harry Wentland <Harry.Wentland at amd.com>
> ---
> drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 ++++---
> drivers/gpu/drm/amd/display/dc/core/dc_link.c | 32
> +++++++++++++++--------
> drivers/gpu/drm/amd/display/dc/dc.h | 8 +++++-
> 3 files changed, 33 insertions(+), 16 deletions(-)
>
> 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 7a408d753be8..9b5158cceece 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -639,7 +639,7 @@ int amdgpu_dm_display_resume(struct amdgpu_device
> *adev )
> continue;
>
> mutex_lock(&aconnector->hpd_lock);
> - dc_link_detect(aconnector->dc_link, false);
> + dc_link_detect(aconnector->dc_link, DETECT_REASON_HPD);
> aconnector->dc_sink = NULL;
> amdgpu_dm_update_connector_after_detect(aconnector);
> mutex_unlock(&aconnector->hpd_lock);
> @@ -870,7 +870,7 @@ static void handle_hpd_irq(void *param)
> * since (for MST case) MST does this in it's own context.
> */
> mutex_lock(&aconnector->hpd_lock);
> - if (dc_link_detect(aconnector->dc_link, false)) {
> + if (dc_link_detect(aconnector->dc_link, DETECT_REASON_HPD)) {
> amdgpu_dm_update_connector_after_detect(aconnector);
>
>
> @@ -980,7 +980,7 @@ static void handle_hpd_rx_irq(void *param)
> if (dc_link_handle_hpd_rx_irq(aconnector->dc_link, NULL) &&
> !is_mst_root_connector) {
> /* Downstream Port status changed. */
> - if (dc_link_detect(aconnector->dc_link, false)) {
> + if (dc_link_detect(aconnector->dc_link,
> DETECT_REASON_HPDRX)) {
> amdgpu_dm_update_connector_
> after_detect(aconnector);
>
>
> @@ -1368,7 +1368,8 @@ int amdgpu_dm_initialize_drm_device(struct
> amdgpu_device *adev)
> goto fail_free_encoder;
> }
>
> - if (dc_link_detect(dc_get_link_at_index(dm->dc, i), true))
> + if (dc_link_detect(dc_get_link_at_index(dm->dc, i),
> + DETECT_REASON_BOOT))
> amdgpu_dm_update_connector_
> after_detect(aconnector);
> }
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> index cea8dafd2edc..845ec421d861 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> @@ -355,7 +355,9 @@ static bool is_dp_sink_present(struct dc_link *link)
> * @brief
> * Detect output sink type
> */
> -static enum signal_type link_detect_sink(struct dc_link *link)
> +static enum signal_type link_detect_sink(
> + struct dc_link *link,
> + enum dc_detect_reason reason)
> {
> enum signal_type result = get_basic_signal_type(
> link->link_enc->id, link->link_id);
> @@ -388,12 +390,17 @@ static enum signal_type link_detect_sink(struct
> dc_link *link)
> }
> break;
> case CONNECTOR_ID_DISPLAY_PORT: {
> -
> - /* Check whether DP signal detected: if not -
> - * we assume signal is DVI; it could be corrected
> - * to HDMI after dongle detection */
> - if (!is_dp_sink_present(link))
> - result = SIGNAL_TYPE_DVI_SINGLE_LINK;
> + /* DP HPD short pulse. Passive DP dongle will not
> + * have short pulse
> + */
> + if (reason != DETECT_REASON_HPDRX) {
> + /* Check whether DP signal detected: if not -
> + * we assume signal is DVI; it could be corrected
> + * to HDMI after dongle detection
> + */
> + if (!is_dp_sink_present(link))
> + result = SIGNAL_TYPE_DVI_SINGLE_LINK;
> + }
> }
> break;
> default:
> @@ -460,9 +467,10 @@ static void detect_dp(
> struct display_sink_capability *sink_caps,
> bool *converter_disable_audio,
> struct audio_support *audio_support,
> - bool boot)
> + enum dc_detect_reason reason)
> {
> - sink_caps->signal = link_detect_sink(link);
> + bool boot = false;
> + sink_caps->signal = link_detect_sink(link, reason);
> sink_caps->transaction_type =
> get_ddc_transaction_type(sink_caps->signal);
>
> @@ -513,6 +521,8 @@ static void detect_dp(
> * Need check ->sink usages in case ->sink = NULL
> * TODO: s3 resume check
> */
> + if (reason == DETECT_REASON_BOOT)
> + boot = true;
>
> if (dm_helpers_dp_mst_start_top_mgr(
> link->ctx,
> @@ -531,7 +541,7 @@ static void detect_dp(
> }
> }
>
> -bool dc_link_detect(struct dc_link *link, bool boot)
> +bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
> {
> struct dc_sink_init_data sink_init_data = { 0 };
> struct display_sink_capability sink_caps = { 0 };
> @@ -596,7 +606,7 @@ bool dc_link_detect(struct dc_link *link, bool boot)
> link,
> &sink_caps,
> &converter_disable_audio,
> - aud_support, boot);
> + aud_support, reason);
>
> /* Active dongle downstream unplug */
> if (link->type == dc_connection_active_dongle
> diff --git a/drivers/gpu/drm/amd/display/dc/dc.h
> b/drivers/gpu/drm/amd/display/dc/dc.h
> index f005add1aba3..bf2d42561362 100644
> --- a/drivers/gpu/drm/amd/display/dc/dc.h
> +++ b/drivers/gpu/drm/amd/display/dc/dc.h
> @@ -884,7 +884,13 @@ bool dc_link_setup_psr(struct dc_link *dc_link,
> * true otherwise. True meaning further action is required (status update
> * and OS notification).
> */
> -bool dc_link_detect(struct dc_link *dc_link, bool boot);
> +enum dc_detect_reason {
> + DETECT_REASON_BOOT,
> + DETECT_REASON_HPD,
> + DETECT_REASON_HPDRX,
> +};
> +
> +bool dc_link_detect(struct dc_link *dc_link, enum dc_detect_reason
> reason);
>
> /* Notify DC about DP RX Interrupt (aka Short Pulse Interrupt).
> * Return:
> --
> 2.11.0
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20170912/04696eb9/attachment-0001.html>
More information about the amd-gfx
mailing list