Received: by 2002:a05:6a10:c7c6:0:0:0:0 with SMTP id h6csp2629837pxy; Tue, 3 Aug 2021 10:56:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyK+FHzmyQta1f81Lh3i6Eo9PU+tN6b2AV1GbpfKdq8HanZnrldX7aBeVwe/Fx0QioAD3ar X-Received: by 2002:a92:d848:: with SMTP id h8mr421367ilq.282.1628013377762; Tue, 03 Aug 2021 10:56:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628013377; cv=none; d=google.com; s=arc-20160816; b=v4Obh1z1oNygoptfIHcnY8v7BxTbTreDmKEqpjQ0G9Vurd6d8Z9O0LDiarW39+6swH ejGNVxbkLjXI2ipKzdknyWNLfChW7KK9W7T93qCZn9fXRW8nvuoxHAbz9EcorJZK2dHR KqYhkj2/GOjpfVRRkfb6F3sCVR7pNitAHjr04a45qGqPouEhxYjLHp4190DkvOCjGUBw EkSU8XmIi+xR6dSZ34xRme5FvKbDjhSI0ZE8z4rvXjqyUrIOWwSWN03kOjS/Aev6t42t ixPxo1j+ORYuSag/oGcPPRCIpkyT5cdFGTD4KHpf3fblN9XL//y7jAVWpcfOifQnDaJU mugA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from:dmarc-filter :sender:dkim-signature; bh=lUeOCPrR13OHTaYKCt/w/DFsAJkjHb7mUobM2Op+tQE=; b=KYJNsqlJtUrhDVcUWzW60FX6j8nem3XsD8XkoXfyRKX3c0iwbDbZY0jr594vCoIzP5 jkCCqgcKccGtbNsu4n0UK1C7ycLS4iueoiOTv6tVPeEBynM37x7wg7CX6S/yPUc3PQ+z WHFuHc/DMrRSNFWo0nTZaZIF+Zpr/7vxCRdT/rPFUM/A5hx+jdGdnFjbJ+I4hXzZ1jzy KgYiVzgiCVElVlsYhi1RJ9nYxxBv2R5MmU6D8A+SEfOdRxz41nKAjM64kStN6Nlha7Mv IBsd/WI6h17SwHw/TZNsTrP8loU7JItRciLAe6JOpby4EwbaGpBdLgTdew0T3gX7g7fo AmcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=KCM2hHf8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y13si16564561ioq.14.2021.08.03.10.56.06; Tue, 03 Aug 2021 10:56:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=KCM2hHf8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233362AbhHCQZr (ORCPT + 99 others); Tue, 3 Aug 2021 12:25:47 -0400 Received: from m43-7.mailgun.net ([69.72.43.7]:44665 "EHLO m43-7.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233319AbhHCQZr (ORCPT ); Tue, 3 Aug 2021 12:25:47 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1628007936; h=Message-Id: Date: Subject: Cc: To: From: Sender; bh=lUeOCPrR13OHTaYKCt/w/DFsAJkjHb7mUobM2Op+tQE=; b=KCM2hHf8+fLebokymdj4gh0ZsEMsqPWStJ2KFqdDpaN/iATe318CvO2sqhPjZkKF/+OZBTeT mxRdNn1d1C2jVp16mqsrqI5bXHEoB1y5KD0h5OgkMTM71UUfzYBhGN+jnVJM5fL2gYV96Hqr mH+GyU4OhJtnY6bzyPqrtUmQjnI= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n01.prod.us-west-2.postgun.com with SMTP id 61096df2dc54451a533dd650 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 03 Aug 2021 16:25:22 GMT Sender: khsieh=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 3BBA6C43144; Tue, 3 Aug 2021 16:25:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL autolearn=no autolearn_force=no version=3.4.0 Received: from khsieh-linux1.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: khsieh) by smtp.codeaurora.org (Postfix) with ESMTPSA id 73DBBC433F1; Tue, 3 Aug 2021 16:25:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 73DBBC433F1 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=khsieh@codeaurora.org From: Kuogee Hsieh To: robdclark@gmail.com, sean@poorly.run, swboyd@chromium.org, vkoul@kernel.org, agross@kernel.org, bjorn.andersson@linaro.org Cc: abhinavk@codeaurora.org, aravindh@codeaurora.org, khsieh@codeaurora.org, freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3] drm/msm/dp: update is_connected status base on sink count at dp_pm_resume() Date: Tue, 3 Aug 2021 09:25:13 -0700 Message-Id: <1628007913-29892-1-git-send-email-khsieh@codeaurora.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently at dp_pm_resume() is_connected state is decided base on hpd connection status only. This will put is_connected in wrongly "true" state at the scenario that dongle attached to DUT but without hmdi cable connecting to it. Fix this problem by adding read sink count from dongle and decided is_connected state base on both sink count and hpd connection status. Changes in v2: -- remove dp_get_sink_count() cand call drm_dp_read_sink_count() Changes in v3: -- delete status local variable from dp_pm_resume() Fixes: d9aa6571b28ba ("drm/msm/dp: check sink_count before update is_connected status") Signed-off-by: Kuogee Hsieh --- drivers/gpu/drm/msm/dp/dp_display.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 78c5301..0f39256 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1313,7 +1313,7 @@ static int dp_pm_resume(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct msm_dp *dp_display = platform_get_drvdata(pdev); struct dp_display_private *dp; - u32 status; + int sink_count = 0; dp = container_of(dp_display, struct dp_display_private, dp_display); @@ -1327,14 +1327,26 @@ static int dp_pm_resume(struct device *dev) dp_catalog_ctrl_hpd_config(dp->catalog); - status = dp_catalog_link_is_connected(dp->catalog); + /* + * set sink to normal operation mode -- D0 + * before dpcd read + */ + dp_link_psm_config(dp->link, &dp->panel->link_info, false); + + /* if sink conencted, do dpcd read sink count */ + if (dp_catalog_link_is_connected(dp->catalog)) { + sink_count = drm_dp_read_sink_count(dp->aux); + if (sink_count < 0) + sink_count = 0; + } + dp->link->sink_count = sink_count; /* * can not declared display is connected unless * HDMI cable is plugged in and sink_count of * dongle become 1 */ - if (status && dp->link->sink_count) + if (dp->link->sink_count) dp->dp_display.is_connected = true; else dp->dp_display.is_connected = false; -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project