From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C9073C4551 for ; Mon, 29 Jun 2026 14:16:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782742597; cv=none; b=OqO6BZ6IETekjBbfWZY6/+dT0k6CrrPibtGvxu3IxHN3Wei4o6uQIqf0/hWM6AsXvGIXuJ7NxXs3++V22n+y+oy6Oi5AjLhH0XmgSodGc64jCm9vKA2spRlrAkqv9kAayoeVBPHz0xqqSOGyk/45dDiRZJcM2RhXTargIASXjqY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782742597; c=relaxed/simple; bh=RzJquXKOi3YyeF66FrBYDSkGWZjxoRxULVA0FumTtYk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=selqaYtbFaMdjC8TheXWHvA+iKwstswDikT+dnqkEUQmh3pbeSY1Bf2ir8+Yuda+H6FxA0CT8tTvIE+AYopdKzeRQCH/qvR7cWPjCg462HrTf09kppM5enTatDjMGwwSw2Z4srC7Kcb3jBpJFLSQmxePadZNKxehPPaCoIog6E4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=EjtrbSou; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GY5E9AB+; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="EjtrbSou"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GY5E9AB+" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65TATbS62656441 for ; Mon, 29 Jun 2026 14:16:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= jg3KQF7o+VLEpzr4rtd7xV5y0tUXL2CgXc+z/83VRd0=; b=EjtrbSouwwGO2Jbg NlzBqUavK2Y5Y5BbKN6R+OEBh33Wh3m0Nl+fA1UY/I6h6gZJk3QSHzVVC3jRpNbj zyMrqLpj87sNhzD3Qz0/EC234O5rxm+TSYpWZWZuZNDu5dF/NTDWGDQi56psWM3e IV+Uv81lVtX2NMLGi08GSqBitpA3TzKzRyJvhd4c29EgD1WFAFaIKBkPcPdnGC9v 05vwk+lEQ+tNIZsZP2XxxWWI9og393DyJLceuj0tX857sdCPWG//zEHtoms94Py9 TOuBny5jCc0eZG6WMnb8d7HzwYPshy983k7kmhPJF0jAzS/8V6jGjUSKPF+ooxUR VOLWFg== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f3np7h715-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 29 Jun 2026 14:16:35 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8e3ae05d649so76101536d6.0 for ; Mon, 29 Jun 2026 07:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782742594; x=1783347394; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jg3KQF7o+VLEpzr4rtd7xV5y0tUXL2CgXc+z/83VRd0=; b=GY5E9AB+Y7oj7FFC5Pwa9Jsy/bzxm/whLAtB6k9E2ZMIJv7wbNx+lnhCmaKO/3i/2I /dKkyCL9dJauU3z5QUHVJK7D8nYwpJ80Bj6ijGXx+ZPBCbILJCu+hSfgbiKnaxoijTzQ L9z09ehlOJ9OvzvDiX00kMM1f5l7OEyik6wP12mpF0yRjoR43ZwHWI7JFU1aUKC5xZgR 6Usy82vTs4l8e8OhugAfC/Ndk4Y/QA/8X56OftHPo8JKrgUn+iafnXXvfokPIYCfh03P u1D9P+ml4+N0X8sbBP3zZ23Im7MMs52kLXjAqirOfAxbkAADdqMP3ZwQray4kIW/ZdFa IO6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782742594; x=1783347394; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jg3KQF7o+VLEpzr4rtd7xV5y0tUXL2CgXc+z/83VRd0=; b=tO4ZRO+/vZIo9CkFg9ssOezZMztOlRIHF7g0xqVS1hGL92zCtdQmRwgFc7CiVc5qaW AHTQ4OfZ76W0QMukQ2qqeRh+DVIjopx7m+1GXnIx2nPKPOhhdTHY1jyhu6C4PibfPhrY M75hAtkL8pCs4eOj0m5LPK9eGmjifYkE6oetW6bELEcfUgh3Kdq3EoFJJcppq/QsD3R9 e8JJRTeErEOl/kE/QSSklOICDBq/u/HDtI1py2otMXmPfDLTUmlzKnH/JbdAWZ8hUMYd GmC9SYSvzT/X4xabFp0M2dlqJ8MLYDI8aEeC5xjCCgdPEOtTaW+UciAC3EMoC3m/IvVo Qbmg== X-Forwarded-Encrypted: i=1; AFNElJ985xtukdqkRAwPdCavfbJO5BYRz9nhH9Uy+pWCW8yIPEp+K5Xv67ys/Lmby1e0fXpE7hHDVGwylb8J+wY=@vger.kernel.org X-Gm-Message-State: AOJu0YwxzIPoJhliUr+ZeyGMPQ/3QsfM5s0vtiFTjQgrxbs/XJ5Hi3ZG FZtjZY6tx+//fod7YGz62N5wB0CzIUtUVqb14hftEI0/M2COt0iITXijEBroxTCNWjqpAbM11fI tYTSKnPAlmvLp5sw1hnjVNyz2fr/DpRyjMeyw6pjJitZnxEibtADLM8NXpLNo/g8ncQU= X-Gm-Gg: AfdE7cnW8ihD/L5H60Z1kDRDeb1TaoFUA8FrKJ7jmrLWQRbRz+/lXyoOEoGQOzJm0ib kr6Bsy18fsqqM2mIAPTOTNFo+Nn/vxT9lK6v6mHX5/2dgIQicaGCqZIjmxkZiFWkqZhDfkEwreA jKHxhcmRIO0cWkHYJHi6hQpRv/Cawm8pjhWr5R8X130pQPSQTIfB32wTwaATgv9AJAJxPLX4qqz fMVTyqIQp3rKgfDf3L2bxI9zonS16pERY6aL3pEsoWtG8lhWRWN1BR+US2l7EOwVMsiZUw/wgei Q8y646wHIlYjlonponV0SP3r6UCkyTc7i7Bf4AI/wol4I4OC1XZ03XA3N1/lr9Nn01gIPlxJj/1 wkZgfexmOPYEqbeJ0hos/zim9eECYgq9nUL4eTJj1rLQY3gJM/sLSTzZ7/UJTNd35E0q/qw== X-Received: by 2002:a05:620a:628c:b0:92e:46e5:8f12 with SMTP id af79cd13be357-92e5f0cb023mr151359185a.30.1782742594057; Mon, 29 Jun 2026 07:16:34 -0700 (PDT) X-Received: by 2002:a05:620a:628c:b0:92e:46e5:8f12 with SMTP id af79cd13be357-92e5f0cb023mr151353985a.30.1782742593296; Mon, 29 Jun 2026 07:16:33 -0700 (PDT) Received: from yongmou2.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9260079070bsm2143165885a.40.2026.06.29.07.16.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 07:16:32 -0700 (PDT) From: Yongxing Mou To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Abhinav Kumar Subject: [PATCH RESEND v5 17/25] drm/msm/dp: add link_ready to manage link-level operations Date: Mon, 29 Jun 2026 22:14:38 +0800 Message-ID: <20260629-msm-dp-mst-v5-17-2ed6aee1867a@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260629-msm-dp-mst-v5-0-2ed6aee1867a@oss.qualcomm.com> References: <20260629-msm-dp-mst-v5-0-2ed6aee1867a@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1782742144; l=4047; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=RzJquXKOi3YyeF66FrBYDSkGWZjxoRxULVA0FumTtYk=; b=4lTkIB/+mfgRy3oKSPUd6U7GIl6THwmLYLseJgxvSFXaQ6qEwFwXGPJelyLthuOAbw2NhlUzh Vq9yiQD3kmKC2LhTAbmyfvT9B9QrlQCLCx7V/W8FnBM9R2PdExPJO1i X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjI5MDExOCBTYWx0ZWRfX/8MauoMIkhlL Nol3UvmlFlVF8xdRh/z4ou9esmK+np7cYfEsBNeEnBfFraIUhs0vUTGGfH9117ArHWsrIwbd79/ +7Ed3mvWG/y6DFdUSDMR6t9RzVfWm+AUctNEd5ExTQweFq9r5cBgtgXEJPoZU4jDdvF2Vp/eLnd HKHgB+56SNfHyIu5yYhE/7DQNFl8nZBBvPF6wwUpe4w4lkUHnRT2OS2gQujrJ+mduMed2V+L6bo CjrNF4UJ7tVGAQsMTc8WT1kneRy4eUmCZ3OllbttCvCBbkIjOl2oE8Vp8qDIo2Nfm1eFm52faaY YEoZcuQi9010w82Q79WFr1l9NTwD3wA0h84i9oK1eFVAWYNDoY7iLqsfQXqtDsXGkWoGyxQ3rEf ob+BMLrZqrI+MzSqVVBhk4kkhrGGCmWNt1EUKECyCwOk1HmR1G3onuKop10bYzEqPdQHRRjPa+b HmvSapUbr+POVfrmPsA== X-Proofpoint-GUID: XnMnHkAfHvZlfC1N0falx1q6sRLJ3dPf X-Proofpoint-ORIG-GUID: XnMnHkAfHvZlfC1N0falx1q6sRLJ3dPf X-Proofpoint-Spam-Info: AW1haW4tMjYwNjI5MDExOCBTYWx0ZWRfX9rVojmoAHpu/ jHR1bd1PZm7pFOEj0IE7H23wlsEgX0g59G0t4ACPUYpt946kNjqzrUnDZ1qx3APHp3hoV0laR3Q SAd0JZb5Lz2jgdLPI7m0CTd7MlZR+G0= X-Authority-Analysis: v=2.4 cv=OcWoyBTY c=1 sm=1 tr=0 ts=6a427e43 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=r0U9Mmpn2XdHegFmGjAA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-29_03,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 spamscore=0 clxscore=1015 phishscore=0 bulkscore=0 suspectscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606290118 In MST mode, multiple streams share the same DP link. Track a link_ready state so msm_dp_display_prepare_link() runs only once per link and repeated calls are skipped. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou --- drivers/gpu/drm/msm/dp/dp_display.c | 42 ++++++++++++++++++++++++------------- drivers/gpu/drm/msm/dp/dp_display.h | 1 + 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 2a74302bcb7c..d56ee10ee065 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -702,6 +702,9 @@ int msm_dp_display_prepare_link(struct msm_dp *msm_dp_display) if (msm_dp_display->is_edp) msm_dp_hpd_plug_handle(dp); + if (msm_dp_display->link_ready) + return 0; + rc = pm_runtime_resume_and_get(&msm_dp_display->pdev->dev); if (rc) { DRM_ERROR("failed to pm_runtime_resume\n"); @@ -714,14 +717,18 @@ int msm_dp_display_prepare_link(struct msm_dp *msm_dp_display) if (!msm_dp_display->active_stream_cnt) { msm_dp_display_host_phy_init(dp); force_link_train = true; + + rc = msm_dp_ctrl_on_link(dp->ctrl, dp->panel); + if (rc) + DRM_ERROR("Failed link training (rc=%d)\n", rc); + // TODO: schedule drm_connector_set_link_status_property() } - rc = msm_dp_ctrl_on_link(dp->ctrl, dp->panel); - if (rc) - DRM_ERROR("Failed link training (rc=%d)\n", rc); - // TODO: schedule drm_connector_set_link_status_property() + rc = msm_dp_ctrl_prepare_stream_on(dp->ctrl, dp->panel, force_link_train); + if (!rc) + msm_dp_display->link_ready = true; - return msm_dp_ctrl_prepare_stream_on(dp->ctrl, dp->panel, force_link_train); + return rc; } static int msm_dp_display_enable(struct msm_dp_display_private *dp, @@ -1566,16 +1573,16 @@ void msm_dp_display_enable_helper(struct msm_dp *msm_dp_display, struct msm_dp_p dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); - msm_dp_display_set_stream_info(msm_dp_display, msm_dp_panel, 0, 0, 0); - - rc = msm_dp_display_enable(dp, msm_dp_panel); - if (rc) - DRM_ERROR("DP display enable failed, rc=%d\n", rc); + if (msm_dp_display->link_ready) { + rc = msm_dp_display_enable(dp, msm_dp_panel); + if (rc) + DRM_ERROR("DP display enable failed, rc=%d\n", rc); - rc = msm_dp_display_post_enable(msm_dp_display); - if (rc) { - DRM_ERROR("DP display post enable failed, rc=%d\n", rc); - msm_dp_display_disable(dp, msm_dp_panel); + rc = msm_dp_display_post_enable(msm_dp_display); + if (rc) { + DRM_ERROR("DP display post enable failed, rc=%d\n", rc); + msm_dp_display_disable(dp, msm_dp_panel); + } } drm_dbg_dp(msm_dp_display->drm_dev, "type=%d Done\n", msm_dp_display->connector_type); @@ -1624,6 +1631,11 @@ void msm_dp_display_unprepare(struct msm_dp *msm_dp_display) dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); + if (!msm_dp_display->link_ready) { + drm_dbg_dp(dp->drm_dev, "Link already setup, return\n"); + return; + } + if (msm_dp_display->active_stream_cnt) { drm_dbg_dp(dp->drm_dev, "stream still active, return\n"); return; @@ -1642,6 +1654,8 @@ void msm_dp_display_unprepare(struct msm_dp *msm_dp_display) msm_dp_display_host_phy_exit(dp); pm_runtime_put_sync(&msm_dp_display->pdev->dev); + + msm_dp_display->link_ready = false; } void msm_dp_display_atomic_post_disable_helper(struct msm_dp *dp, struct msm_dp_panel *msm_dp_panel) diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h index 676213a48089..0464f8941e8d 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -22,6 +22,7 @@ struct msm_dp { bool mst_active; unsigned int connector_type; bool is_edp; + bool link_ready; struct msm_dp_audio *msm_dp_audio; bool psr_supported; -- 2.43.0