From nobody Wed Jun 10 19:57:53 2026 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 E6606338595 for ; Tue, 9 Jun 2026 09:46:45 +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=1780998407; cv=none; b=GZPjLE+W8qE5iOll4XLpXEYU5z/RdfTz6is5UBbbS3qtF6P41IW7hL1BM7uJn0QS5m7gJ9fMjUN0NBPHuN7FvIzQ7Nww8yIKr6PTJ/oWh1pMKHfErN/nuEmRt8lDYihjfUZn+uObmyralr27T3gwClZN8xlJVGLll0wUJ/0ZdFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998407; c=relaxed/simple; bh=Uq7SV6Ep5ActlglyrkOIZMDwSsOOyS7xf6CtI/ZDDWI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AeUMZhfkOt0XYHwfvp+1NpQCPhcbz/HJBPRK6FEt0JZXEQFcG/T0sCd7ffopYrOFWT54+hI6eHHkFEnik8yQqkCTcBCvpB1zLJD8ZeF6ONBYukV6QfjtrYy8QO9Qn97h2sWAJR2ZKaWkN9rsbjRmtPu2iZdd+SD0olHZ4LALXbw= 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=nNJktFCv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hXYrNHgU; 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="nNJktFCv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hXYrNHgU" 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 6597rbqK2034657 for ; Tue, 9 Jun 2026 09:46:45 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= wRMlDIbqB0uP0ea/ic+hhlybUOF+IemcZoAacOc4Yzg=; b=nNJktFCvTuC5Gylp fZztga+iPz59Zq/777vi1YZ64k3QgUXefRErbKdyJf/G40ifLaxyqSEtlnuYS3ei ltHiRmkMhLFOxJEEIrJR5Dxqp2YCOp3muVIa7UqOJ2D8s/W43M3c1xJPqSj67T/z VA9ErA/0W18pbJ5n6dZ5jIuB3uJq8iVie4WBA2xUjz72ZUaH3wftc0gTd7a6GUAz 4EPtulrpbZVE93hIErtEez7yjKfLxe5Cl7Gz8KSfQUuZ4KCJgEjSvAS0HSPRRX2w MeBiFP9Rk5yeTXd+JEjfYdkop1PiaWzRmr1cqzDwzMixqu+QXv+nZ4x77QdysxaF ZE7f0g== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epeearjhj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:46:44 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-9157f1be083so1073924485a.3 for ; Tue, 09 Jun 2026 02:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998404; x=1781603204; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=wRMlDIbqB0uP0ea/ic+hhlybUOF+IemcZoAacOc4Yzg=; b=hXYrNHgUjQhyDnT08yho9dY3hOCsw30mV96ki24SCMHyzxoWgu86KJIj2qIzWXhVqO d8491zwdQ3/yLxeebKC0QHR+otSA/J0TmiM3leBg8HbbEg2NGwghuN5AHpclqd1WGyKV qYqXh5eVf+HSvOHBzo3s1d6VZueYB4RQXHOeaOGkoBzjjpNFPiycj/dM40p8vXu8JwXN ANO0488Vo/mppXzhkf8SVzftSOs9sCE/jL/HSa3bVBVPLZlbcphBKNMTn11cYop5AC1A Bi2zHMcbhrBZIf6+Y/5GNGXGg21x7ozypTYoC/jgMCC3fer2P1NvCXx04EDSlK2ktNhk /lYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998404; x=1781603204; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wRMlDIbqB0uP0ea/ic+hhlybUOF+IemcZoAacOc4Yzg=; b=GnXHE5QXBfOxUYlrV9CceQlP1QGL48h81Vp3ElFmcmsdGwuAslsNMI7PzH2vcYpQxs ylqQiK00Qnvm0eppdZ30yof3tDDIuGT48/YP8vWQ2mZn/tMX1JaWFYpyAmOLDJdnLcbo IzHDZFXYYpVM+NeskUtiIeNVD8elhXBoeReZoJUJb56hmb+Oo0GL/f3wbSSPQaqIg18F aXhzw4YMR+dYEMmu3g6s4Xr2zdBoIQQSQBbboAi8O90d4x+bgvk3+3A8d8WJxOKtNq2/ 0umaT9mncKCY5eMjaVsvPHqJlcpkx1EXs+kURbVoWZsKYPELnQQhTmWwaExpKNUcUMSg trkg== X-Forwarded-Encrypted: i=1; AFNElJ+ASkTTSnIEVcMb8WIT56efxLufvoyERDQcpSTmu+8Il5cwiulDjXVkw25JOqeWOWW1GilfyJpOBbLUR6M=@vger.kernel.org X-Gm-Message-State: AOJu0YyWUfHbL4jPdSVGjWTLgR29fgIDC5Mn4NY3mMLWKQH75mLkx3t+ tXbs6mPvTpkSHexQYtsJ+WiMWyD95KL0q+9jleWaLWRoamzgNrd+yd0kmYGf3GGkc6rIfOiFMa3 Vm7sKjq7KygyKrd0x5VxdrpJzO8rsr0/KBrC/hvraRmf6CAap6kh6Yx5LLpXcpGlmBrvz3s98cK 4= X-Gm-Gg: Acq92OGdc8UOofh8OXewl12YFbRn6G+8mHII0PEMAcI1/4r0XZceZktkRcEO8pmGsPa Iy+bp2SvLeSx3L3fZBx9ZvlaipomdVSmrGgfO/YaDKn8kh8B2SNN4gIv/eiAAtTfAUvD06BDenA JzvIZS7J8vFsoVebMAxsU/Nr1Bn/OnKEAHoA0S2zzQkEIpHHm7o0h/+PcqHLhiSBM7h6k5VqRoo /cv07X87e6RMdXLj00pt3yLPS5Aiupk10XVnh4m/w/OeFx4ZJ3CC4qaQ8Sk3NqItcfe+30Qv5TS We8TYVZV3ZcEGN+aOtfw9E6NjkbXwu3rw6acxKkR7d0gEeMISloYTzqbU3bUm8q9sN73btSXCFX GNuyqmFCFtb/7VXQTl6ekP06ysPaqwVf3lv6jbzGnI0CudjDP1P8QtdtxZWqlihzVLpSbccsFqf 9GWHYWnuP0tkNcl/aIAw== X-Received: by 2002:a05:620a:2b91:b0:8cf:c106:faca with SMTP id af79cd13be357-915e82e89admr235857785a.36.1780998404062; Tue, 09 Jun 2026 02:46:44 -0700 (PDT) X-Received: by 2002:a05:620a:2b91:b0:8cf:c106:faca with SMTP id af79cd13be357-915e82e89admr235855085a.36.1780998403569; Tue, 09 Jun 2026 02:46:43 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.46.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:46:42 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:23 +0800 Subject: [PATCH v7 01/15] drm/msm/dp: remove cached drm_edid from panel 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-1-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=9216; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=Uq7SV6Ep5ActlglyrkOIZMDwSsOOyS7xf6CtI/ZDDWI=; b=69LQyxz3dl/QpY1klir4GYBqlVpK+aHvVCoBPEM0g7ruDDLTR9m5X8XidcyrhTA+WzRkCjT6e VbUzQ0UM57dDJPodHvtOeoiDEWPlvZwoDtOD3vs1n1liia+RskEJPYG X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: esbDBnirRGz2pSBNakO0vEtvT1Vo02Gq X-Authority-Analysis: v=2.4 cv=Iey3n2qa c=1 sm=1 tr=0 ts=6a27e104 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==: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=EUspDBNiAAAA:8 a=yBxTOPed86Cp7mhl67IA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXw15COaAzLL7q IIb1oqeC33m94z6YF97fqeLhewv2Kv9D6C9bL60ETlyLln9RPheiR+Qd+TtjHwItXOJvghfhgmQ 4H6PdQjzZB/5Z+huaPKRIaJmjs+lPkqkxheGKKgNb9EU6FemnZ/BXBG18lSsdK/2N7PVfdaHqtv S0TjelaVulYkTRxzbkNalJs8v4OrHdezWHK6tRlCFTI0SuvNP6tSG2xvvUBbVKmWYjIF/s1ziKg nfUVGOd5Q3DY7v4L2ox1CizpKZsHBP4tKuQqKPku3tSGfyo5h0bWpiSCbT1V6XcpvGqtvXmcZFF neDIL3X+u0dz+qQD9Dys3HtHv35RTaIkvfFhA1KnacE9kYHz54+5noFJ9YwIWXLZp5MYPUg0w9o GIKgqjAoe+ig/n0otq7qNpwTo9Lvca5GLS03ed0WIWFMDICTZB0mG8/yokue3b8SYTbWNUwx447 jtCQjkDqo8X7Tt3YTZw== X-Proofpoint-GUID: esbDBnirRGz2pSBNakO0vEtvT1Vo02Gq 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 adultscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 The cached drm_edid seems unnecessary here. Use the drm_edid pointer directly in the plug stage instead of caching it. Remove the cached drm_edid and the corresponding oneliner to simplify the code. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 28 +++++++++++------- drivers/gpu/drm/msm/dp/dp_panel.c | 57 ++++-----------------------------= ---- drivers/gpu/drm/msm/dp/dp_panel.h | 13 +++------ 3 files changed, 27 insertions(+), 71 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 6800c628adb4..e3682c4d6077 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -269,6 +269,7 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) const struct drm_display_info *info =3D &connector->display_info; int rc =3D 0; u8 dpcd[DP_RECEIVER_CAP_SIZE]; + const struct drm_edid *drm_edid =3D NULL; =20 rc =3D drm_dp_read_dpcd_caps(dp->aux, dpcd); if (rc) @@ -276,10 +277,20 @@ static int msm_dp_display_process_hpd_high(struct msm= _dp_display_private *dp) =20 dp->link->lttpr_count =3D msm_dp_display_lttpr_init(dp, dpcd); =20 - rc =3D msm_dp_panel_read_sink_caps(dp->panel, connector); + rc =3D msm_dp_panel_read_link_caps(dp->panel, connector); if (rc) goto end; =20 + drm_edid =3D drm_edid_read_ddc(connector, &dp->aux->ddc); + drm_edid_connector_update(connector, drm_edid); + + if (!drm_edid) { + DRM_ERROR("panel edid read failed\n"); + /* check edid read fail is due to unplug */ + if (!msm_dp_aux_is_link_connected(dp->aux)) + return -ETIMEDOUT; + } + msm_dp_link_process_request(dp->link); =20 if (!dp->msm_dp_display.is_edp) @@ -291,7 +302,7 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) dp->msm_dp_display.psr_supported =3D dp->panel->psr_cap.version && psr_en= abled; =20 dp->audio_supported =3D info->has_audio; - msm_dp_panel_handle_sink_request(dp->panel); + msm_dp_panel_handle_sink_request(dp->panel, drm_edid); =20 /* * set sink to normal operation mode -- D0 @@ -302,6 +313,7 @@ static int msm_dp_display_process_hpd_high(struct msm_d= p_display_private *dp) msm_dp_link_reset_phy_params_vx_px(dp->link); =20 end: + drm_edid_free(drm_edid); return rc; } =20 @@ -453,7 +465,7 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_displ= ay_private *dp) =20 /* Don't forget modes for eDP */ if (!dp->msm_dp_display.is_edp) - msm_dp_panel_unplugged(dp->panel, dp->msm_dp_display.connector); + drm_edid_connector_update(dp->msm_dp_display.connector, NULL); =20 /* triggered by irq_hdp with sink_count =3D 0 */ if (dp->link->sink_count =3D=3D 0) @@ -515,7 +527,6 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_display_= private *dp) static void msm_dp_display_deinit_sub_modules(struct msm_dp_display_privat= e *dp) { msm_dp_audio_put(dp->audio); - msm_dp_panel_put(dp->panel); msm_dp_aux_put(dp->aux); } =20 @@ -566,7 +577,7 @@ static int msm_dp_init_sub_modules(struct msm_dp_displa= y_private *dp) rc =3D PTR_ERR(dp->ctrl); DRM_ERROR("failed to initialize ctrl, rc =3D %d\n", rc); dp->ctrl =3D NULL; - goto error_ctrl; + goto error_link; } =20 dp->audio =3D msm_dp_audio_get(dp->msm_dp_display.pdev, dp->link_base); @@ -574,13 +585,11 @@ static int msm_dp_init_sub_modules(struct msm_dp_disp= lay_private *dp) rc =3D PTR_ERR(dp->audio); pr_err("failed to initialize audio, rc =3D %d\n", rc); dp->audio =3D NULL; - goto error_ctrl; + goto error_link; } =20 return rc; =20 -error_ctrl: - msm_dp_panel_put(dp->panel); error_link: msm_dp_aux_put(dp->aux); error: @@ -744,8 +753,7 @@ int msm_dp_display_get_modes(struct msm_dp *dp) =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); =20 - return msm_dp_panel_get_modes(msm_dp_display->panel, - dp->connector); + return drm_edid_connector_add_modes(msm_dp_display->panel->connector); } =20 bool msm_dp_display_check_video_test(struct msm_dp *dp) diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_= panel.c index 6bb021820d7c..bde4a772d22c 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.c +++ b/drivers/gpu/drm/msm/dp/dp_panel.c @@ -232,8 +232,8 @@ static u32 msm_dp_panel_get_supported_bpp(struct msm_dp= _panel *msm_dp_panel, return min_supported_bpp; } =20 -int msm_dp_panel_read_sink_caps(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector) +int msm_dp_panel_read_link_caps(struct msm_dp_panel *msm_dp_panel, + struct drm_connector *connector) { int rc, bw_code; int count; @@ -271,36 +271,9 @@ int msm_dp_panel_read_sink_caps(struct msm_dp_panel *m= sm_dp_panel, =20 rc =3D drm_dp_read_downstream_info(panel->aux, msm_dp_panel->dpcd, msm_dp_panel->downstream_ports); - if (rc) - return rc; - - drm_edid_free(msm_dp_panel->drm_edid); - - msm_dp_panel->drm_edid =3D drm_edid_read_ddc(connector, &panel->aux->ddc); - - drm_edid_connector_update(connector, msm_dp_panel->drm_edid); - - if (!msm_dp_panel->drm_edid) { - DRM_ERROR("panel edid read failed\n"); - /* check edid read fail is due to unplug */ - if (!msm_dp_aux_is_link_connected(panel->aux)) { - rc =3D -ETIMEDOUT; - goto end; - } - } - -end: return rc; } =20 -void msm_dp_panel_unplugged(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector) -{ - drm_edid_connector_update(connector, NULL); - drm_edid_free(msm_dp_panel->drm_edid); - msm_dp_panel->drm_edid =3D NULL; -} - u32 msm_dp_panel_get_mode_bpp(struct msm_dp_panel *msm_dp_panel, u32 mode_edid_bpp, u32 mode_pclk_khz) { @@ -324,20 +297,6 @@ u32 msm_dp_panel_get_mode_bpp(struct msm_dp_panel *msm= _dp_panel, return bpp; } =20 -int msm_dp_panel_get_modes(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector) -{ - if (!msm_dp_panel) { - DRM_ERROR("invalid input\n"); - return -EINVAL; - } - - if (msm_dp_panel->drm_edid) - return drm_edid_connector_add_modes(connector); - - return 0; -} - static u8 msm_dp_panel_get_edid_checksum(const struct edid *edid) { edid +=3D edid->extensions; @@ -345,7 +304,8 @@ static u8 msm_dp_panel_get_edid_checksum(const struct e= did *edid) return edid->checksum; } =20 -void msm_dp_panel_handle_sink_request(struct msm_dp_panel *msm_dp_panel) +void msm_dp_panel_handle_sink_request(struct msm_dp_panel *msm_dp_panel, + const struct drm_edid *drm_edid) { struct msm_dp_panel_private *panel; =20 @@ -358,7 +318,7 @@ void msm_dp_panel_handle_sink_request(struct msm_dp_pan= el *msm_dp_panel) =20 if (panel->link->sink_request & DP_TEST_LINK_EDID_READ) { /* FIXME: get rid of drm_edid_raw() */ - const struct edid *edid =3D drm_edid_raw(msm_dp_panel->drm_edid); + const struct edid *edid =3D drm_edid_raw(drm_edid); u8 checksum; =20 if (edid) @@ -755,10 +715,3 @@ struct msm_dp_panel *msm_dp_panel_get(struct device *d= ev, struct drm_dp_aux *aux return msm_dp_panel; } =20 -void msm_dp_panel_put(struct msm_dp_panel *msm_dp_panel) -{ - if (!msm_dp_panel) - return; - - drm_edid_free(msm_dp_panel->drm_edid); -} diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h b/drivers/gpu/drm/msm/dp/dp_= panel.h index 9173e90a5053..53b7b4463551 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.h +++ b/drivers/gpu/drm/msm/dp/dp_panel.h @@ -33,7 +33,6 @@ struct msm_dp_panel { u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; =20 struct msm_dp_link_info link_info; - const struct drm_edid *drm_edid; struct drm_connector *connector; struct msm_dp_display_mode msm_dp_mode; struct msm_dp_panel_psr psr_cap; @@ -47,15 +46,12 @@ struct msm_dp_panel { int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel); int msm_dp_panel_deinit(struct msm_dp_panel *msm_dp_panel); int msm_dp_panel_timing_cfg(struct msm_dp_panel *msm_dp_panel, bool wide_b= us_en); -int msm_dp_panel_read_sink_caps(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector); -void msm_dp_panel_unplugged(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector); +int msm_dp_panel_read_link_caps(struct msm_dp_panel *msm_dp_panel, + struct drm_connector *connector); u32 msm_dp_panel_get_mode_bpp(struct msm_dp_panel *msm_dp_panel, u32 mode_= max_bpp, u32 mode_pclk_khz); -int msm_dp_panel_get_modes(struct msm_dp_panel *msm_dp_panel, - struct drm_connector *connector); -void msm_dp_panel_handle_sink_request(struct msm_dp_panel *msm_dp_panel); +void msm_dp_panel_handle_sink_request(struct msm_dp_panel *msm_dp_panel, + const struct drm_edid *drm_edid); void msm_dp_panel_tpg_config(struct msm_dp_panel *msm_dp_panel, bool enabl= e); =20 void msm_dp_panel_clear_dsc_dto(struct msm_dp_panel *msm_dp_panel); @@ -94,5 +90,4 @@ struct msm_dp_panel *msm_dp_panel_get(struct device *dev,= struct drm_dp_aux *aux struct msm_dp_link *link, void __iomem *link_base, void __iomem *p0_base); -void msm_dp_panel_put(struct msm_dp_panel *msm_dp_panel); #endif /* _DP_PANEL_H_ */ --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 C78473ED3AA for ; Tue, 9 Jun 2026 09:46:50 +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=1780998412; cv=none; b=Muw0r9TFK9vZvdHGBb0ypSgpHvUSOpXvBf4knOLeYTCDsmLZL8Ya6LQ0QvaDVudFPDReJmZSJsPoYR1Hshy1ccSTzVjd/k5ZoilIoO9pwhC1P7duP3HBTjjZCnKeZKelTZC3N9kpY3eU27Heygo6rx4+0ybOjWtGfOU1EvuzRsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998412; c=relaxed/simple; bh=HuWHEfgETeqeFInaSeDlkVr7MomHzKqKAmZIdQ6wMSs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J4xTF++OqFvHDiF8/9Ff8FFUsKf6dKgySloD8wW4Jr5R0xlC1J5cPxZ/ZFH0rvbJXKuz45TdfoGBxEK8KvkYEnRWRPFXzKLIylzxVxisS/oiLcJJCb2yhN7g3GzLnmEHKwkE4uRUfI/XQKjgxoujV2rvF/zYohfGwDZlHvuepQM= 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=pCLjBI5h; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=f6MgN2xo; 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="pCLjBI5h"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="f6MgN2xo" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6599JkTT2223002 for ; Tue, 9 Jun 2026 09:46:50 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= Duf46m0jTOVOH0fYjqS+1d3N2OndiCBozOdXn5npkR4=; b=pCLjBI5hkhq6KBtI vWcfLPojYgWfuMMA4Wtg8JuXOS72HWWvp/2dnp/sgxiDizUSOoysMqhW9Ccg2NcM LfWGaPkPDH+NUdXFRdGUav6t1K/Y7HjCnhBWTXH5KqVnedNmUzXxuh2+U83x22Bw din0xOxIFskr7PTd5Tfxv0hL72lUy/L40mEMw7FsSK2kNzIFunvCcXUvxYk68PM1 2+6C+UgyQuZLDQzBlgcO3mQcBd0VAl/Wuyn/j9NfsaWZWaHvqEVcSQK2+ynQ0kcb SmavrNJOgX3DL1o6NXubV74wFEwF0V9oM42z4+tPgH2dfYUy6sz+bfl8p8c+Ki6Q WC63NA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epg3v03gf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:46:49 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-915b9dd020cso708676285a.3 for ; Tue, 09 Jun 2026 02:46:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998409; x=1781603209; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Duf46m0jTOVOH0fYjqS+1d3N2OndiCBozOdXn5npkR4=; b=f6MgN2xo9yHULWDeBaAV1ZT7VpVEHP3ru6xBAyMXCXWYHdhdzDXYtwKvqwulAKz92Z h65UU95BcoWg1syCGzIhGZcBOO8A4D69yZKE8MTkoz4FZPqSJ1Yut3RUFTHB8K7OKiTE KfI8z+uyUV4ZbgqH8CLPWr2klPA/HXiIVRl43r5e8BpkxNtc8tFzm5vtqEt+RV4yNSNE IRdusAdB9UTSKA7lIQZvZ/g1C3E6CXt0YIwhYAERfPBmUaQq9uKOFjNeqiwwu2SYt0GG mdAxjt0w+7RFeI/PEuF6NPGrrXpxhD/ewMCSwlf1UnWReQF8vWqG/UuOZMb2K0+YhoHr OjUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998409; x=1781603209; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Duf46m0jTOVOH0fYjqS+1d3N2OndiCBozOdXn5npkR4=; b=CxufSdRcPc1MSfMI3TXoMIH8uGaegln8hGB4ZDhGc25/uZ/wdbWDBHgsGfWej9rCtc QlrEo93FdmpknCW0+83U1AAfn0M8F8XHkRnzLlrK0qaz+h3yENV3GlX9L5/5LSvjj+DR nIhh20LoOqU43FlVCYlbSbqexxjjfK74BdCHhmLZBHND6dEmSjksGnz94Bb4adGBQlPa 1ou/83itg2WzN/TsXcIhmqhFGgXR37cuvE2NaaFD05BtLX/jdgjznKytPd3Ew686VJua S/QKi2ifs+m/5SE8FdDy9u/NKduGE6qVRVWFX1zVTLq/VDUlRSoAygqGxPhzZPi3NTUM xXPA== X-Forwarded-Encrypted: i=1; AFNElJ/Os67DqUpIFGiqWsK7EOA9h7KPeSPNFB9wCN3JDs7enrrLoFDsSnzbrsDgYzhaS7u+xGvyVyMQQK0hxwM=@vger.kernel.org X-Gm-Message-State: AOJu0YxuQlr+JOwSJWmSNvAsXpNuVrYtkz9hKtNhDuw4XSv4LjghcpTD p2GpXik0hzF6eKMz934VNfDl+lHP0Ujog/TQhPXTrN0lE8dXc6t1B/M+AaTmvmPdxOgd4B9qaCP vs/RQKfrwFdLcmiFGdl9ejoVWcLnUwoJMpKFeuW9mPmp7HtwuOXgm3Qq2QuNcvSeeTsw= X-Gm-Gg: Acq92OH/Nn6lOcygewHEjkoABEBCF2WvOMldbElOs6ZSWLIFP3MyV+Fp/V3oxhH3LMl Qf0zPlTw7CUmkjue/CG1+gYGgC0jhcjDO8TS8HY475aealYwxTta4Oxlp43xPFSXcYzqa2joDhi 2k2LiZ/ZHaRkkd2mdZuM/GPTwla/WSTlSYrxS326p3Jhl2r4i4NA0fLxsoz9MN3TC6ZFT3ExZjG u53tQisOw0uCEdQ56Wfb/nq80EP9zI30pIyqU1FfcgeUeJpJIJm8pA3+GfwTrg2tuMNjxJaM6mk aJh3sE91d1hNqQWZSovZUOi5Za3vlWdChv7YT7ECH+GFk/X7Hjel0FX9tpDvtgeeCY5GYedirEC MeIC4C9klt3egopMFiE7kGsN6DTs/5cx50ItvK6CtW2U/AtCYS1VlWreMKtBj63ZEY3yayuaWxd pc0xf8McpCzLv0lgDBgA== X-Received: by 2002:a05:620a:890b:b0:915:bf79:3e0a with SMTP id af79cd13be357-915bf793f58mr1996819285a.26.1780998409198; Tue, 09 Jun 2026 02:46:49 -0700 (PDT) X-Received: by 2002:a05:620a:890b:b0:915:bf79:3e0a with SMTP id af79cd13be357-915bf793f58mr1996815485a.26.1780998408763; Tue, 09 Jun 2026 02:46:48 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.46.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:46:48 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:24 +0800 Subject: [PATCH v7 02/15] drm/msm/dp: drop deprecated .mode_set() and use .atomic_enable 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-2-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=8155; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=HuWHEfgETeqeFInaSeDlkVr7MomHzKqKAmZIdQ6wMSs=; b=eqqQmcCdDakUqdhbSXrOpN1/WF7BewPyGZqz6aGZD0QGnFBTrAGHYzvZ2lhK82zf0+KfggqXR l99214hXU2iBVvGmXdnQdC4Qunor0ajEXF4mIKZcn/WIG6GZCMXok0T X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=St6gLvO0 c=1 sm=1 tr=0 ts=6a27e109 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=ohAeICWEHyx3i1rom8gA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: Feo_bs4aj20UVBHSTaERVwoeuDD1TjHA X-Proofpoint-GUID: Feo_bs4aj20UVBHSTaERVwoeuDD1TjHA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX5Rwm6GzdkfIW EvUFrS7op4Vkn9vKl23PueDCjfc1k/XhcRvMCCQ7rI2Ttbv5tSeNSDxd6kx1snqyPKSJngYp1CE ssvrw60mLD8yakCu7MsK21kw1IFsOq0vGJzp0t00UZufbyiKM4fz19MdiLyzM91fL3Bmp8B4uxG DGGPB7L8SDwdcMGtBNJB0tYOI7lkY/cPEkBZCsfV3LmmbW1bqQ4ZfbeWTHNNp2WcYXgJOwN7fmB cG1C8D9NHwqoAJIxyhRbAd4rNo7LVO68ZooGTp5qvmWw1ryFPByt4PVezBcvBYTY8LD6l7Q0biG 4Muv2lVOIoW5aGnBXT7dJze017NFupAoxNTKdPSyaCaSImfmq50y8IjJNGS+DIfCbrh5NYcoj5w 5iWR05AQwwbedsMIzHxI1wG2Q2R7wKHAyx9T98zDmpbB9x9yXi5gmiJ17ki44nXBzG3HNet70FZ aWTbEwp7+9i2aT6Gq4g== 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 spamscore=0 bulkscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 The bridge .mode_set() callback is deprecated. Remove it and move all mode setup logic to .atomic_enable(), where the adjusted_mode is available from the atomic CRTC state. Drop msm_dp_mode from msm_dp_display_private and store the mode directly in the panel, as it was only used as a temporary cache. Both changes are limited to msm_dp_display_set_mode and are kept in a single patch. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 81 ++++++++++++++-------------------= ---- drivers/gpu/drm/msm/dp/dp_drm.c | 2 - drivers/gpu/drm/msm/dp/dp_drm.h | 3 -- 3 files changed, 31 insertions(+), 55 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index e3682c4d6077..181d238addfc 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -63,7 +63,6 @@ struct msm_dp_display_private { struct msm_dp_panel *panel; struct msm_dp_ctrl *ctrl; =20 - struct msm_dp_display_mode msm_dp_mode; struct msm_dp msm_dp_display; =20 /* wait for audio signaling */ @@ -597,16 +596,33 @@ static int msm_dp_init_sub_modules(struct msm_dp_disp= lay_private *dp) } =20 static int msm_dp_display_set_mode(struct msm_dp *msm_dp_display, - struct msm_dp_display_mode *mode) + const struct drm_display_mode *adjusted_mode, + struct msm_dp_panel *msm_dp_panel) { struct msm_dp_display_private *dp; + u32 bpp; =20 dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 - drm_mode_copy(&dp->panel->msm_dp_mode.drm_mode, &mode->drm_mode); - dp->panel->msm_dp_mode.bpp =3D mode->bpp; - dp->panel->msm_dp_mode.out_fmt_is_yuv_420 =3D mode->out_fmt_is_yuv_420; - msm_dp_panel_init_panel_info(dp->panel); + drm_mode_copy(&msm_dp_panel->msm_dp_mode.drm_mode, adjusted_mode); + if (msm_dp_display_check_video_test(msm_dp_display)) + bpp =3D msm_dp_display_get_test_bpp(msm_dp_display); + else + bpp =3D msm_dp_panel->connector->display_info.bpc * 3; + + msm_dp_panel->msm_dp_mode.bpp =3D bpp ? bpp : 24; /* Default bpp */ + msm_dp_panel->msm_dp_mode.v_active_low =3D + !!(adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC); + msm_dp_panel->msm_dp_mode.h_active_low =3D + !!(adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC); + msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 =3D + drm_mode_is_420_only(&msm_dp_panel->connector->display_info, adjusted_mo= de) && + msm_dp_panel->vsc_sdp_supported; + msm_dp_panel_init_panel_info(msm_dp_panel); + + /* populate wide_bus_support to different layers */ + dp->ctrl->wide_bus_en =3D + msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 ? false : dp->wide_bus_supp= orted; return 0; } =20 @@ -1309,7 +1325,7 @@ bool msm_dp_wide_bus_available(const struct msm_dp *m= sm_dp_display) =20 dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 - if (dp->msm_dp_mode.out_fmt_is_yuv_420) + if (dp->panel->msm_dp_mode.out_fmt_is_yuv_420) return false; =20 return dp->wide_bus_supported; @@ -1365,15 +1381,19 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; + struct drm_crtc *crtc; + struct drm_crtc_state *crtc_state; int rc =3D 0; struct msm_dp_display_private *msm_dp_display; bool force_link_train =3D false; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); - if (!msm_dp_display->msm_dp_mode.drm_mode.clock) { - DRM_ERROR("invalid params\n"); + + crtc =3D drm_atomic_get_new_crtc_for_encoder(state, + drm_bridge->encoder); + if (!crtc) return; - } + crtc_state =3D drm_atomic_get_new_crtc_state(state, crtc); =20 if (dp->is_edp) msm_dp_hpd_plug_handle(msm_dp_display); @@ -1386,7 +1406,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, if (msm_dp_display->link->sink_count =3D=3D 0) return; =20 - rc =3D msm_dp_display_set_mode(dp, &msm_dp_display->msm_dp_mode); + rc =3D msm_dp_display_set_mode(dp, &crtc_state->adjusted_mode, msm_dp_dis= play->panel); if (rc) { DRM_ERROR("Failed to perform a mode set, rc=3D%d\n", rc); return; @@ -1446,45 +1466,6 @@ void msm_dp_bridge_atomic_post_disable(struct drm_br= idge *drm_bridge, pm_runtime_put_sync(&dp->pdev->dev); } =20 -void msm_dp_bridge_mode_set(struct drm_bridge *drm_bridge, - const struct drm_display_mode *mode, - const struct drm_display_mode *adjusted_mode) -{ - struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); - struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; - struct msm_dp_display_private *msm_dp_display; - struct msm_dp_panel *msm_dp_panel; - - msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); - msm_dp_panel =3D msm_dp_display->panel; - - memset(&msm_dp_display->msm_dp_mode, 0x0, sizeof(struct msm_dp_display_mo= de)); - - if (msm_dp_display_check_video_test(dp)) - msm_dp_display->msm_dp_mode.bpp =3D msm_dp_display_get_test_bpp(dp); - else /* Default num_components per pixel =3D 3 */ - msm_dp_display->msm_dp_mode.bpp =3D dp->connector->display_info.bpc * 3; - - if (!msm_dp_display->msm_dp_mode.bpp) - msm_dp_display->msm_dp_mode.bpp =3D 24; /* Default bpp */ - - drm_mode_copy(&msm_dp_display->msm_dp_mode.drm_mode, adjusted_mode); - - msm_dp_display->msm_dp_mode.v_active_low =3D - !!(msm_dp_display->msm_dp_mode.drm_mode.flags & DRM_MODE_FLAG_NVSYNC); - - msm_dp_display->msm_dp_mode.h_active_low =3D - !!(msm_dp_display->msm_dp_mode.drm_mode.flags & DRM_MODE_FLAG_NHSYNC); - - msm_dp_display->msm_dp_mode.out_fmt_is_yuv_420 =3D - drm_mode_is_420_only(&dp->connector->display_info, adjusted_mode) && - msm_dp_panel->vsc_sdp_supported; - - /* populate wide_bus_support to different layers */ - msm_dp_display->ctrl->wide_bus_en =3D - msm_dp_display->msm_dp_mode.out_fmt_is_yuv_420 ? false : msm_dp_display-= >wide_bus_supported; -} - void msm_dp_bridge_hpd_enable(struct drm_bridge *bridge) { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(bridge); diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index b659d22f5f28..6ac5bac903d9 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -56,7 +56,6 @@ static const struct drm_bridge_funcs msm_dp_bridge_ops = =3D { .atomic_enable =3D msm_dp_bridge_atomic_enable, .atomic_disable =3D msm_dp_bridge_atomic_disable, .atomic_post_disable =3D msm_dp_bridge_atomic_post_disable, - .mode_set =3D msm_dp_bridge_mode_set, .mode_valid =3D msm_dp_bridge_mode_valid, .get_modes =3D msm_dp_bridge_get_modes, .detect =3D msm_dp_bridge_detect, @@ -233,7 +232,6 @@ static const struct drm_bridge_funcs msm_edp_bridge_ops= =3D { .atomic_enable =3D msm_edp_bridge_atomic_enable, .atomic_disable =3D msm_edp_bridge_atomic_disable, .atomic_post_disable =3D msm_edp_bridge_atomic_post_disable, - .mode_set =3D msm_dp_bridge_mode_set, .mode_valid =3D msm_edp_bridge_mode_valid, .atomic_reset =3D drm_atomic_helper_bridge_reset, .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index 041aa026ae2e..4bd788ea05d5 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -36,9 +36,6 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bridge = *drm_bridge, enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode); -void msm_dp_bridge_mode_set(struct drm_bridge *drm_bridge, - const struct drm_display_mode *mode, - const struct drm_display_mode *adjusted_mode); void msm_dp_bridge_hpd_enable(struct drm_bridge *bridge); void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge); void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge, --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 4F0BE3E7BC7 for ; Tue, 9 Jun 2026 09:46:55 +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=1780998416; cv=none; b=n9eyq7Pg0WcYrHNvUHOALc9RzgPZ6MNEwTc68sOVb5z3KBa8KRnfjXswWlsVFeZ7uDZHCuPNeQKkeKTRsKx28hPrCaW62Zo184wY5t2wcdSZfT3bd6fpN6w5Mp51hoN1LbaN5zxk39lMEB9pti5qHNuEAQfkFVZypAdR25+QuBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998416; c=relaxed/simple; bh=utX2rWcnEK7sp26OqAqarcDBJ0uE50FzNeV/RPRB27I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fsUWe8J72QXxV79CygOMcBlDyWI0RTmWPqvSwDY5O1YIHahHgXrX0MQPASL4mQUKUFvr3JI82c7vMY7yrEiSPARgmsmVnnoJlTY3s02UeUJJ4Z/MhEVql2NtjIJh/51ASdPtwrSvKQrtk7eJq3x9b/JcvGqXv9tPIE4QU9LENG0= 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=HdKfR2oi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hNAcd8VZ; 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="HdKfR2oi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hNAcd8VZ" 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 6597rbfk2034652 for ; Tue, 9 Jun 2026 09:46:54 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= gsb2m0YYMxi0oazQhslfYqgxjuHbp4QxtyHnC/SdYhY=; b=HdKfR2oiPO5h+fm+ TMqC4xzUt1k//m4c2C3bv6HWlZ90p8eca7S8umejkhW6BvMXuvAAnwTIztvMop7P ykiyBaiTEHbBKBsJ2baKbTAYdNgYvorIc0zQoqyKdSFIN5QKwBxTD+PEB5IiAOZF syJ4vzrdGpjaVoQ5rgnEjZcTMZ0Z/CtoeyPdOHOqhZ4fIP119R9+6ZR3acQ/mLKr WTA5lR3+x/4X66d01ariOMq/5hlLwD5QppiF2Bh3HsElLNkmnaKKIZDGRRZ5zDb/ SZQkt7xuEXrDki/bd/9iPT1Egly+ClSSgVUwU2lS64Urp8BhIzavOt9LUyZ8JJ+C K7CPbw== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epeearjjp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:46:54 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-91578c374easo1125827285a.1 for ; Tue, 09 Jun 2026 02:46:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998414; x=1781603214; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gsb2m0YYMxi0oazQhslfYqgxjuHbp4QxtyHnC/SdYhY=; b=hNAcd8VZReficCSW1tdEj65uXtB67LLFMRunm1QlU2OEv/BBABzzzqaZPSZiguPGco eUPHaHrZlsZvd8RaCJsBtuPKNGIBtf/h2JhgscYn+TmR1pmVxC9RIQE8EKfSIbfJYWIO 8lXMHJexa5fCXNkVFF2vCxLgrayjHoHv++gECmeV3MNbsORwuM7duwFNs1cimoQDnRpx bpsDq0MLUoncS9Hh4vTaBM6sBhlJaJqzI3BtSYhRAbAdt1SnGpMmZwaRUX9U9IqWKxnG o5o9svgELbo+BWd1aKAwuonlzSTS2jBDdbuKVh6amanBLm4R1Vs6ryicC37ppNRCkgcK viAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998414; x=1781603214; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gsb2m0YYMxi0oazQhslfYqgxjuHbp4QxtyHnC/SdYhY=; b=p5r5Tky5hQJbkgOL7O65iQw1vnAjmn4XEL2D2mlS5gMaee/KLi+fFBwoJm20jDLXso CHWn8BOPm0k7YAY8fIe2BTQOId9GlzI8UjforkRhdGDOM4I0QwTadAZWNVnQRzZm/zi4 jzSK1v5xNEfWQ56HS7x5rjP7kYTNqbQyIC+vR70JG3bSNjK6gXoi7+OSFK/wpyz3TIAc CJEQ6MG77e1drbQ1uPVqbK/S4Ct20Sb5je4Ab1EwdhhdeDLUk4EdKZ8OUTMTXVRN9O0V YtaG8mlpT0VzUaEWLrG1qwNI35lXmsq6CY1CbG7ImFh5PkZrpK+z9w3gyJxqqOehX4pf hl1w== X-Forwarded-Encrypted: i=1; AFNElJ9pD6lOrREcqVpwux7CztCLs/QrdTAda96h7yiFQ8OeYl5cNUnIEKOVRnqnpEQLl8Iehwighe/9EMHDJnU=@vger.kernel.org X-Gm-Message-State: AOJu0Yydhl9KZWv8XcHh/De/xyKXDsXWJoCRAtfkBP+jsOWOhqkvHflv gJ9H6XabzN91OJui/9mR4m14jPaCkGlRNwEk9fcXuVNx9Hz+2mZ/tySwZcJzVxY9SzMxBWqMgw5 iZ1YJKWl/MhDwWAz6mdqlyAGgklnnSBqtXmzkqB85UDRz+FnWG6Ir46C13q7S5XShtzQ= X-Gm-Gg: Acq92OHvJ/41xDNqegOkZVraTGnTeqgqy6rlznJ3BOFX69b9HKXFB74j+ll8FafCIEX 8f8eL/rmXe4rDSSG5Vbl/MuYuxkT4Ask7+EqEWXSggg28mposlihKee/Hv0HtcZSHbUZ5ptnOY0 LwzJeK+hAbIbNe6x91Mf935cUEqhCV5QCifpWz03+ywG0Cj4SAnoNPrDGNII++SJ1zABrLAGAmw 2HnLAGlhTl/GuXIDwjLaD7sFeVtOxJZZ/ZB9ZJIsVPvK0qd2SE78QfM43oMNT8hvaxfkguEDw4J 5jdyuvkq9tkWxWnS2SbRGKstC63k66d8t1X0UY2DEYwXRA5u5hd9KvGqcWKqGrDFvzlOc1tBwal qV2Q6ijaPm31bGCACB5MZ81yUrqDFFtV66R6hDGbQjBONW8xSIYlDrDvFHUjzwPP1IXGO4HSLVo 5bcyz56RcKvcJytBKQTw== X-Received: by 2002:a05:620a:1988:b0:915:7f6f:c8c0 with SMTP id af79cd13be357-915a9cadf7cmr3172256085a.15.1780998413777; Tue, 09 Jun 2026 02:46:53 -0700 (PDT) X-Received: by 2002:a05:620a:1988:b0:915:7f6f:c8c0 with SMTP id af79cd13be357-915a9cadf7cmr3172251785a.15.1780998413402; Tue, 09 Jun 2026 02:46:53 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.46.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:46:53 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:25 +0800 Subject: [PATCH v7 03/15] drm/msm/dp: move mode setup into msm_dp_panel_init_panel_info() 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-3-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=4086; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=utX2rWcnEK7sp26OqAqarcDBJ0uE50FzNeV/RPRB27I=; b=A2HR27xzrxB/wtBy9J4YOlebtXmWevEbShlDriMz70kcp3Sdwz1vvlnqBVe4axQgYqNt3cYm5 YkDp/8ZE8ASC74VUieDHxuPw3McqqpcuhhX8FM0bcqRR7QD40GtxQAD X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: ZwXHd4k1I8tvMLad7tX2V78wMLaDMOSs X-Authority-Analysis: v=2.4 cv=Iey3n2qa c=1 sm=1 tr=0 ts=6a27e10e cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==: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=EUspDBNiAAAA:8 a=RRF978PcF5p4qF5CYGQA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXyc4v7JXMwCYa Q7QtlLXR1Itrtqp3N1CoAHa7iHuZ6km//DDgioIfuz19N6ws6xx6iSb/gWvs36IaDH4JRNoeTZ+ rVbOs3y7jbPXCX69krp4ltVK+iY/71i1Br39h3LTRpuSY+JHLPgeJ8osEpE4vHEbjfTLVd5tM2f bZxHzT8QivJ+uHcJTwWQNJVfANmbuZvwZoVzKCubFNxzhr/JICdoYmclh//iNwKeD/vmJ8qlTqq Zgf2g59TJL4jKL1sN/8HKHdyeZnl43vLDcgm3PLoeD8vJbDXfZFt9PUikq4zozom14fvqLyj2oB N+HU+AmDevSL6HFxzmAFAIfu5t+qC6nVlMa1ddIRIo5oc97Qtc+MmNLfYn54g0wEPa1L9PqKv2i iRYWbmv5kJr8DNdFBGSyXp+lmo04cD6s2qTItMA1PC7JwHswZEbKn5LvQ9voNOOE1C1Fcxyw6RA vUp2rGoFE4fY+t9H4sQ== X-Proofpoint-GUID: ZwXHd4k1I8tvMLad7tX2V78wMLaDMOSs 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 adultscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 The display layer directly assigns msm_dp_panel mode fields (bpp, sync polarity, yuv420 flag) instead of letting the panel manage its own state. Pass adjusted_mode and bpp as parameters to msm_dp_panel_init_panel_info() and move the assignments inside it. Suggested-by: Dmitry Baryshkov Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 11 +---------- drivers/gpu/drm/msm/dp/dp_panel.c | 18 +++++++++++++++--- drivers/gpu/drm/msm/dp/dp_panel.h | 4 +++- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 181d238addfc..f33c754b83c3 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -604,21 +604,12 @@ static int msm_dp_display_set_mode(struct msm_dp *msm= _dp_display, =20 dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 - drm_mode_copy(&msm_dp_panel->msm_dp_mode.drm_mode, adjusted_mode); if (msm_dp_display_check_video_test(msm_dp_display)) bpp =3D msm_dp_display_get_test_bpp(msm_dp_display); else bpp =3D msm_dp_panel->connector->display_info.bpc * 3; =20 - msm_dp_panel->msm_dp_mode.bpp =3D bpp ? bpp : 24; /* Default bpp */ - msm_dp_panel->msm_dp_mode.v_active_low =3D - !!(adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC); - msm_dp_panel->msm_dp_mode.h_active_low =3D - !!(adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC); - msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 =3D - drm_mode_is_420_only(&msm_dp_panel->connector->display_info, adjusted_mo= de) && - msm_dp_panel->vsc_sdp_supported; - msm_dp_panel_init_panel_info(msm_dp_panel); + msm_dp_panel_init_panel_info(msm_dp_panel, adjusted_mode, bpp ? bpp : 24); =20 /* populate wide_bus_support to different layers */ dp->ctrl->wide_bus_en =3D diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c b/drivers/gpu/drm/msm/dp/dp_= panel.c index bde4a772d22c..e76dad0f6663 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.c +++ b/drivers/gpu/drm/msm/dp/dp_panel.c @@ -647,15 +647,27 @@ int msm_dp_panel_timing_cfg(struct msm_dp_panel *msm_= dp_panel, bool wide_bus_en) return 0; } =20 -int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel) +int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel, + const struct drm_display_mode *adjusted_mode, + u32 bpp) { struct drm_display_mode *drm_mode; struct msm_dp_panel_private *panel; =20 - drm_mode =3D &msm_dp_panel->msm_dp_mode.drm_mode; - panel =3D container_of(msm_dp_panel, struct msm_dp_panel_private, msm_dp_= panel); =20 + drm_mode_copy(&msm_dp_panel->msm_dp_mode.drm_mode, adjusted_mode); + msm_dp_panel->msm_dp_mode.bpp =3D bpp; + msm_dp_panel->msm_dp_mode.v_active_low =3D + !!(adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC); + msm_dp_panel->msm_dp_mode.h_active_low =3D + !!(adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC); + msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420 =3D + drm_mode_is_420_only(&msm_dp_panel->connector->display_info, adjusted_mo= de) && + msm_dp_panel->vsc_sdp_supported; + + drm_mode =3D &msm_dp_panel->msm_dp_mode.drm_mode; + /* * print resolution info as this is a result * of user initiated action of cable connection diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h b/drivers/gpu/drm/msm/dp/dp_= panel.h index 53b7b4463551..4519ac374220 100644 --- a/drivers/gpu/drm/msm/dp/dp_panel.h +++ b/drivers/gpu/drm/msm/dp/dp_panel.h @@ -43,7 +43,9 @@ struct msm_dp_panel { u32 max_bw_code; }; =20 -int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel); +int msm_dp_panel_init_panel_info(struct msm_dp_panel *msm_dp_panel, + const struct drm_display_mode *adjusted_mode, + u32 bpp); int msm_dp_panel_deinit(struct msm_dp_panel *msm_dp_panel); int msm_dp_panel_timing_cfg(struct msm_dp_panel *msm_dp_panel, bool wide_b= us_en); int msm_dp_panel_read_link_caps(struct msm_dp_panel *msm_dp_panel, --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 4F0DE3F0A85 for ; Tue, 9 Jun 2026 09:47:00 +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=1780998421; cv=none; b=Va/Oa7UnTC++D9kUM2+tTgatj8HsXbJIDHPs+omiDL8L1pes5tVLuHsCAyF1lBZlq3SThNub9EAewXJP31Simja7eNe9GyOHO3K2/LLEzC8NVbCi/KVOn5oM+omZwZB+VcaB/ih0WuwbRMi7WbMERhnCYwL5JJfwn0feBBdTMOg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998421; c=relaxed/simple; bh=iMxmvh12Ai7OvQmfN+ngrN462Gqpte4TcdsH7pCGquA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FqgQuy1BqfXDKxk0m7VNanVYJ+1rrZbRXwozspdi+XjIt+p8znMyhT8wjw1UZk8CN5IdJMKDJ0zE4uiB6K0u0HEnHaqGxSfejnV113XlduMCQhBxlw+wctryqAoMxU/2EC/7GR78iVQDHf9YtubW4Jywdp262YxHkJifiBNU4hw= 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=bS8dsvnG; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IihvD/TQ; 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="bS8dsvnG"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IihvD/TQ" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597ruLr2001674 for ; Tue, 9 Jun 2026 09:46:59 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= CP5bG4WCek6MUN3KRDCTosp+Uu7SRi1xM31/3kH0myc=; b=bS8dsvnGYp8BTe+Y hIbR9TZ3sauMMQDPvIwEYiYYGw+1D0M2q6jHZnkFdhSC1hPMytsRU+mHtGNVVFpG 9hzuwYysa8kfpMwcrwATCg14S0xKrW7QKaRZJv21JwEr+kjY0TY0XTkTiv2IKnu+ k/l1Og4Qg3IDeTFlPOXWLDJoC+sLPV6DOCWq2OGhbICF0Q6rZyVOIth+rVYvhVL5 ZfWgmCOQnVx2IjP3GQKUD3knqTPfJBG5JjmqIVVEE5ZusxWdXkF51N35esd5eJNh yQhjA4/PsugeeweSQQkBCS8rQi0zJCM8ubu0G7d/5XcN3S87wd77LqSjUyXgdVOd +aKkPQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epe25rp7a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:46:59 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-91579011fd1so809322185a.1 for ; Tue, 09 Jun 2026 02:46:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998418; x=1781603218; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CP5bG4WCek6MUN3KRDCTosp+Uu7SRi1xM31/3kH0myc=; b=IihvD/TQMew/XBLx22NKv0ymfXxG82r2Y7mry6ooe/bBJk6fYg5R2cQNB8S9IQQGsv DgsSVMe285gRxZ84nNn8JJRNUn087+ojp0554031bcvOnxXPyLiNV3x08TxlOOPrUAPj 6QbZuuwoMqK2VAVzLVMRHksdKj+ew5ua8mHsA9nsAc8kzxOyYz42utrASG9jO6IFvUtX 3qnnokgxKCtkPfXjAcGb1LLGs+VY5nRH2hCRMadiwb5Qp/d3/4ZpQlGz3DhIYPjpNN48 iX56qqulLDetQAnMkt5fTwk3oxifD/O9jLz+R7s2vkdU9u4cXmUi+uSG1ADrbqSTmQgG EOqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998418; x=1781603218; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CP5bG4WCek6MUN3KRDCTosp+Uu7SRi1xM31/3kH0myc=; b=qZu5i8+vE5a3HQNhwcncLKZmG2ylXKkB5eLcUf3DvNyaXRWanNOjwoD0Ap9QHCjs8w oPF4c4S08qOsXzf1k0SLbk4H9/vH6wFwRxifvJVhxoWsMyBUO0pQrTb4+wBzg1SG8SUt Fv393MnNAI+cw/1uDAkSohCuEe8JWVYwTUEOhl9cj6EPUZtgqkIJ99PlrqaQCkzMXbzk PacqJjGXLoIXjuzE36KFk39fGjnCQzuzS5SzEYy3OdOGLQK+b76pPpm4btNSrUVdIQlF DrACudvXSSG7unPkKwXyUJ42Zvyw+ZDPvCoyn2c4efHZb4lD47WyPPlLWR74fIt1e2xU gSIA== X-Forwarded-Encrypted: i=1; AFNElJ+4F2vQNp1lcjC1VLlji4gmLMekEaUuvBiWh8P+NOUr9RrF+BhOUINIsi32MTFcdHsmzN2qtI89HdBx73o=@vger.kernel.org X-Gm-Message-State: AOJu0YySv4YS4hquBJXDNFivhCO4ugGw+fHQYxFNPzEOdlSWv3CLOPY2 B2NcflClxfF+MGJt4+dqSgC9vqRvON5lMmQrSOcoXxqaheFirZBekFMBxVH9EkCGrwdFxHvpVy5 5muzccB8ihNH0ya20NrXXSQjr8a4Ae4Vb5JQhvLiDGtHvipkeFQMcLMtWygNAzH8e5gk= X-Gm-Gg: Acq92OHkcJM+7uuBGgmaP0+awZxTbkIfyDhoS+ZY/g45rASOxLKsj8O6H9lijJWU5Tf +adXNksZFCadLxXRg0wCwIE6ec/w4hkCyvCfovYky5LI4P+sYlJjSO+4UdhkNdYgWR3cc0HcagV v4dq0smlLTHdNTFcYxgEGq4AztUa6n2THVz4lVYNgy9VJsVS1urEp+0FFhDD+imjmhQKh8MBYmU P8zdRpLnzRAPTIJG13X90eAjertcPWoXCzMSQErY+Zhk+qu3xB8ewjqfdC0CCSAwSbcBbwvkpLB yM6M79V4OyZSxcoL1JXAKJSCPQFiVMjVYtEvbUAFOMQ2BMFH+ZTpZj8CLsBwdjRsTarx9mIXE11 7hNxLOz/FFWLEY1VkoTsnUow+9sAyi4BeS+ryUZPHVT8kBkKdbiWbi2l2MXjPUHn/YjhcWINi/3 /54d1pWebciy7Hz1qDJA== X-Received: by 2002:a05:620a:4508:b0:915:d10e:8c4f with SMTP id af79cd13be357-915d10e8f57mr1444067185a.53.1780998418569; Tue, 09 Jun 2026 02:46:58 -0700 (PDT) X-Received: by 2002:a05:620a:4508:b0:915:d10e:8c4f with SMTP id af79cd13be357-915d10e8f57mr1444063585a.53.1780998418082; Tue, 09 Jun 2026 02:46:58 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.46.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:46:57 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:26 +0800 Subject: [PATCH v7 04/15] drm/msm/dp: split msm_dp_ctrl_config_ctrl() into link parts and stream parts 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-4-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=3833; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=iMxmvh12Ai7OvQmfN+ngrN462Gqpte4TcdsH7pCGquA=; b=P4YjPxAtov+3XhLaRO1sHEGTtCxAfU1L5ZurDw0/+zRJss+yCB2WdkxIHiQTrc0fW7J919oJ9 v/1yQ8riTLxDek0sJx68eogrhNhBOkA6a8Uph4142mXJ1iOIy7E6TeC X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: _e63zfvahF8_xiGWKm62ngf7S7-gJ9aF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXykA7IydTcs55 FWMmEFmAwVVzJkdA/ybE5J8YRJWWwYd1QI+fWlBmsOb3sfRJPjRQ9Fa5vGaWo2CgE06Ba9szn3A T4a15i62RPTztJ0KBC/k0d38ZokdPBXyMdpKYoCcQIgiT636PaCCaeQgsv5ZmIKU8Fb/wFqIYYN +dyCz2XWzYJeSWSc+EGs5JzabVJrMooAH4Xq3x6uor68B73nl3HTs/YJse8Fxg7yn32ueuvImY3 NXex//xFI2j23LEu5cV9PUT87l9kqTU36rNAsKQAF8KtIya9WQFv3qLTy6MvR//dieopxYY3xtu fhunk35HwenNtc+Ur59P/WFBNV6/i4nhb1pgIST68GhYEGrBqgl1isJskW/C0Zt/g1DylKEe8cs 6IryEdlmHZybgzotjlT/B4r/7fuaclQAC5cNt25206G+fpdV16II0B8+nYPy49UlO2JIQ7v5TnD H4MZV5oZ92nAsChY0hQ== X-Proofpoint-GUID: _e63zfvahF8_xiGWKm62ngf7S7-gJ9aF X-Authority-Analysis: v=2.4 cv=LoqiDHdc c=1 sm=1 tr=0 ts=6a27e113 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=N4WGanfLxQUAwF0MUGsA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O: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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 impostorscore=0 adultscore=0 suspectscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 The DP_CONFIGURATION_CTRL register contains both link-level and stream-specific fields. Currently, msm_dp_ctrl_config_ctrl() configures all of them together. Separate the configuration into link parts and stream parts to support MST. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 46 +++++++++++++++++++++++++++---------= ---- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 86ef8c89ad44..ed2ba47881fd 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -388,26 +388,44 @@ void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp= _ctrl) drm_dbg_dp(ctrl->drm_dev, "mainlink off\n"); } =20 -static void msm_dp_ctrl_config_ctrl(struct msm_dp_ctrl_private *ctrl) +static void msm_dp_ctrl_config_ctrl_streams(struct msm_dp_ctrl_private *ct= rl, + struct msm_dp_panel *msm_dp_panel) { u32 config =3D 0, tbd; + + /* + * RMW: Called from atomic_enable(). Serialized by the DRM atomic framewo= rk. + */ + config =3D msm_dp_read_link(ctrl, REG_DP_CONFIGURATION_CTRL); + + if (msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420) + config |=3D DP_CONFIGURATION_CTRL_RGB_YUV; /* YUV420 */ + + tbd =3D msm_dp_link_get_test_bits_depth(ctrl->link, + msm_dp_panel->msm_dp_mode.bpp); + + config |=3D tbd << DP_CONFIGURATION_CTRL_BPC_SHIFT; + + if (msm_dp_panel->psr_cap.version) + config |=3D DP_CONFIGURATION_CTRL_SEND_VSC; + + drm_dbg_dp(ctrl->drm_dev, "stream DP_CONFIGURATION_CTRL=3D0x%x\n", config= ); + + msm_dp_write_link(ctrl, REG_DP_CONFIGURATION_CTRL, config); +} + +static void msm_dp_ctrl_config_ctrl_link(struct msm_dp_ctrl_private *ctrl) +{ + u32 config =3D 0; const u8 *dpcd =3D ctrl->panel->dpcd; =20 /* Default-> LSCLK DIV: 1/4 LCLK */ config |=3D (2 << DP_CONFIGURATION_CTRL_LSCLK_DIV_SHIFT); =20 - if (ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420) - config |=3D DP_CONFIGURATION_CTRL_RGB_YUV; /* YUV420 */ - /* Scrambler reset enable */ if (drm_dp_alternate_scrambler_reset_cap(dpcd)) config |=3D DP_CONFIGURATION_CTRL_ASSR; =20 - tbd =3D msm_dp_link_get_test_bits_depth(ctrl->link, - ctrl->panel->msm_dp_mode.bpp); - - config |=3D tbd << DP_CONFIGURATION_CTRL_BPC_SHIFT; - /* Num of Lanes */ config |=3D ((ctrl->link->link_params.num_lanes - 1) << DP_CONFIGURATION_CTRL_NUM_OF_LANES_SHIFT); @@ -421,10 +439,7 @@ static void msm_dp_ctrl_config_ctrl(struct msm_dp_ctrl= _private *ctrl) config |=3D DP_CONFIGURATION_CTRL_STATIC_DYNAMIC_CN; config |=3D DP_CONFIGURATION_CTRL_SYNC_ASYNC_CLK; =20 - if (ctrl->panel->psr_cap.version) - config |=3D DP_CONFIGURATION_CTRL_SEND_VSC; - - drm_dbg_dp(ctrl->drm_dev, "DP_CONFIGURATION_CTRL=3D0x%x\n", config); + drm_dbg_dp(ctrl->drm_dev, "link DP_CONFIGURATION_CTRL=3D0x%x\n", config); =20 msm_dp_write_link(ctrl, REG_DP_CONFIGURATION_CTRL, config); } @@ -450,7 +465,8 @@ static void msm_dp_ctrl_configure_source_params(struct = msm_dp_ctrl_private *ctrl msm_dp_ctrl_lane_mapping(ctrl); msm_dp_setup_peripheral_flush(ctrl); =20 - msm_dp_ctrl_config_ctrl(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); =20 test_bits_depth =3D msm_dp_link_get_test_bits_depth(ctrl->link, ctrl->pan= el->msm_dp_mode.bpp); colorimetry_cfg =3D msm_dp_link_get_colorimetry_config(ctrl->link); @@ -1628,7 +1644,7 @@ static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_= private *ctrl, u8 assr; struct msm_dp_link_info link_info =3D {0}; =20 - msm_dp_ctrl_config_ctrl(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl); =20 link_info.num_lanes =3D ctrl->link->link_params.num_lanes; link_info.rate =3D ctrl->link->link_params.rate; --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 05FA73EFFC9 for ; Tue, 9 Jun 2026 09:47:04 +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=1780998427; cv=none; b=kJsU2+OfP4dP9P48OZegHZweP7OZVuKob6k03QJ89waXeTLz5kqAXRekcQLXGk6iQRPhpSCu9msOjDC3p1gjrwXMHrWKJwNgNapSYlwhG9O8Qoue1gi4mkFBkcu5eg+PCMjyewr09Dm0EiArIOMoYBoZ99YK6XuCiSph1zKiOMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998427; c=relaxed/simple; bh=k2Fff3upCougTurRhx1qk32jaQDI5eLSE+rUossKmgQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=saW8xIVjT8jW4IgWZQSELSoy5u59SYvT8L5fyNmAbJpXRhhZEUVzryNmQjuyr2HK7CP7Rw2lBINdkZ0WSOxRjOYAmBE8xKRqGcItancNEnTkInmMLfHO38jH+iGwE2fhGXoIHebPdLm0Zfwc960fdBpfxrIlMSE9oo01Flm5SdU= 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=D+hW7hmP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=K6TPNElN; 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="D+hW7hmP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="K6TPNElN" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rdtm1958616 for ; Tue, 9 Jun 2026 09:47:04 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= w64aJR4GsiijIIC+qw1V7Ljp4DhfTK7YqGC8ys2CQuk=; b=D+hW7hmPAwJOQP5X s5zO3sRRK6NmN5OGElUEjgIjgGVFMQoPO4+NTNn6Zr2LlKq4CxY9mfrQMqUtk0cL RBl1TbNsvsxYghlru9i8Qo3CIx8Zmqaqj6my1M261U7P5gdH3AbwTFTnePsX2RqL w2X3GtyAiRUlHZ6zLLkiXlh962PyVeJ6IjviCngCLYMndrqpasg25GXo0svumuCz 0gSy7uX5sNOi8LJfWuMiluGYr3Uia+SBF/GUUnNzQVyMQlAwOPyCIE8Q5Gpv90Z7 tjokGk6aGNnkwMYaMGZSpJYVQIv0ZQlVBuD3/zDQ/ZOYvE/TxH28qZGSj2bHfc9M 9nUb3Q== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epdds8vh4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:03 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-9157f1be083so1073967185a.3 for ; Tue, 09 Jun 2026 02:47:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998423; x=1781603223; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=w64aJR4GsiijIIC+qw1V7Ljp4DhfTK7YqGC8ys2CQuk=; b=K6TPNElN8ZWAar1lZv3YQKIh+d+iKLQzdx1pMPKuNQRJLXpL97+xvm4nW1oUe6mZ5A CtvqgSewX2ZiVdG0z8JEQ4Fy/sKHLXYM/vx7ZCVbbPFYJiISQgTZV0CNvRmcYzKAUSdr 2UHa3/bdCnD0Ir18D7YQ0gO+wkPn4Gt02ujIY20ufM/a+Aik9cuce9Q24cOPLOLqyRP+ CcYO8i06OseqHOXKWPmDA3HrIFJojXEI+grdg8+Q6MYtFqrJ2G8KpRXVFRhkf48rQmoi f/Uc65mNmUFrgN/X/HY87r/D+QPWFXrpHJcGENDJ5zvZfVpAgYv1DtDfYdgQaqqqCdCC k0NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998423; x=1781603223; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=w64aJR4GsiijIIC+qw1V7Ljp4DhfTK7YqGC8ys2CQuk=; b=gONu5RoaoJXULGl6pzuQAasafpfn/5fdwD08hF6ZBNWH9SRImkY/Ni+S/YDadtJ4tn pHJW6lV5SUifHYdcfQQVNAasQkRAj2mLeDyT9ltA9ApD8ysaZn7cN4uuMXEZNzU4hnBF /6QyAXN3y2zYuzvlPwekVaLispC+cSK8htpY9yJmsNZmcdpbvEIeVc6NRhZePg3K+Us/ wuQ11zrJrCzJH896eQFfeJ4EDuqrtZuB6BTh6YEuAI03/IY4JC0Jy8GlBrauFkepujyV xlmQS1FLmNlK7OICjxUSmKKus0CXdBfBSlFJTi/wPdUz8C7UxB6aa3hz1bvugFaoew0o dfCA== X-Forwarded-Encrypted: i=1; AFNElJ8Bvl57j3zB2kiiM8jeJv1+SUYqYf6ATCmUsfm/lxPVLuHeNRqJWBelY75iDx+ziZCEmPzSufOP9C6U6O8=@vger.kernel.org X-Gm-Message-State: AOJu0YwSZ+O8y9z8J0uklIUdl5v0GAHlAWv72FTWc6pIEOUHw/vFT+JJ wQCSkmSED30b7JG2qb9j9vW17nbC6/LcJJONzkppvKoq3iiEPsHubqhITUQnaFy6R+IskruWn8Z U4Fh0vWVMz9cUlLIOffIvcT5HPlx51a7jpA4AHdq1tBdMFl7WFiNIru2+f6S04cSFedO0YMFH00 k= X-Gm-Gg: Acq92OHaNWN43d1GemRRFvmP6vNfm9Vivfl3P0GBI4VoasDdbC5tDKNfum0jkKYzF+h X4WpyC9hWkaw9mOY64OoPgke/jilmCe9RkdYyiL7jL1uzOPDZuGOdC797vM+qHfrJImyMUCkIac FWbcYpBNAUxvcMuBjK/Xe4ygtz8simUzBwezwdKNoQHMGgh2mONTI+8LTNWmusSudCHxafVV9hP zsKsBasBoOqwo7t752qTEloAJEzNTZHN5SbhAJVPKYCvt46rKJ6307Fmdbh9bpU5pZ8Op4mwTd8 /saGKOzA0RH550aCZ7mt7eBNhtyk1KEjy2uyIIAksWD/0l/Dhi9zBLYNP8KX4/ooJmshUsilNgS KVQEQUapXVXO0yKfiQFOIdPwQ7j7LpaLMW6Jy46cCpQqx/m8XInFkCKACMoNHIwbQpNJZrhS/AO HetLWJq5w4J80PglbQzA== X-Received: by 2002:a05:620a:6507:b0:915:9d08:94e1 with SMTP id af79cd13be357-915e831bbbbmr245011885a.46.1780998423361; Tue, 09 Jun 2026 02:47:03 -0700 (PDT) X-Received: by 2002:a05:620a:6507:b0:915:9d08:94e1 with SMTP id af79cd13be357-915e831bbbbmr245009585a.46.1780998422916; Tue, 09 Jun 2026 02:47:02 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.46.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:02 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:27 +0800 Subject: [PATCH v7 05/15] drm/msm/dp: extract MISC1_MISC0 configuration into a separate function 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-5-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=2097; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=k2Fff3upCougTurRhx1qk32jaQDI5eLSE+rUossKmgQ=; b=xb11ZGlCXDEh1bxcp6TS59hAhz44+4Cx8Agb9A0zHrLtoMrZCIw9sWK1MQJilzjEp8GYmTx9D VTzcFfrPaTwBpb/CCAgH0oiIOEmPL0DUERHxacmp5TPFNbBMQLcOdIu X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: So9bXuH8INWlZUDafI7ftd_fjnpI35Wq X-Authority-Analysis: v=2.4 cv=EI42FVZC c=1 sm=1 tr=0 ts=6a27e117 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=TC1OlXllJ9dbkp4NpB8A:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: So9bXuH8INWlZUDafI7ftd_fjnpI35Wq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXx9kKPUd0s53+ zZ+atSjUunrbPx+lAX+dkumIzkydpFt88p9rWrY9bcWstrU1Y3j57QN0sI9/8vDwMweKAx2EPDS G7jM3DlJxdLwsUJqHSnIPZdoi6NzCZNK/fhcNjTqphzscIzCHDwo1lbZ73xr7FdCRHyHIk4fYw7 G5nKK3406tHAYppqX6FVWP0cpMLsobQRaCkKrkGq4dUodEXbEuDngvtuqHzMe3WkFTOX8+6DCX6 7asVOwWYCLeCe42YMPmexhhu5LtPgJSlKUywJvjzTJ5cX1vzxr5+ZlIBVKWkcVsPcRYfy52z66J +jc8hx8/u4J3/ubztcJRdd96HhS20s9hmDuWiSeU+USuYtey+tvG8vIxC03sfnxaAw+SUC+mnJE AinKnorchQWMKalNhe8QGHlVK5ESd+3OINAuwGE9Yd+dsveia6h+u3+XmvZ2oaKgnOBSnN2uKwv Xt6wgD7pCZjguhJ78zw== 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 Refactor the MISC1_MISC0 register configuration into a standalone helper function to support MST. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index ed2ba47881fd..71d45b2c4daf 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -458,17 +458,13 @@ static void msm_dp_ctrl_lane_mapping(struct msm_dp_ct= rl_private *ctrl) ln_mapping); } =20 -static void msm_dp_ctrl_configure_source_params(struct msm_dp_ctrl_private= *ctrl) +static void msm_dp_ctrl_config_misc1_misc0(struct msm_dp_ctrl_private *ctr= l, + struct msm_dp_panel *msm_dp_panel) { u32 colorimetry_cfg, test_bits_depth, misc_val; =20 - msm_dp_ctrl_lane_mapping(ctrl); - msm_dp_setup_peripheral_flush(ctrl); - - msm_dp_ctrl_config_ctrl_link(ctrl); - msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); - - test_bits_depth =3D msm_dp_link_get_test_bits_depth(ctrl->link, ctrl->pan= el->msm_dp_mode.bpp); + test_bits_depth =3D msm_dp_link_get_test_bits_depth(ctrl->link, + msm_dp_panel->msm_dp_mode.bpp); colorimetry_cfg =3D msm_dp_link_get_colorimetry_config(ctrl->link); =20 misc_val =3D msm_dp_read_link(ctrl, REG_DP_MISC1_MISC0); @@ -482,6 +478,17 @@ static void msm_dp_ctrl_configure_source_params(struct= msm_dp_ctrl_private *ctrl =20 drm_dbg_dp(ctrl->drm_dev, "misc settings =3D 0x%x\n", misc_val); msm_dp_write_link(ctrl, REG_DP_MISC1_MISC0, misc_val); +} + +static void msm_dp_ctrl_configure_source_params(struct msm_dp_ctrl_private= *ctrl) +{ + msm_dp_ctrl_lane_mapping(ctrl); + msm_dp_setup_peripheral_flush(ctrl); + + msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); + + msm_dp_ctrl_config_misc1_misc0(ctrl, ctrl->panel); =20 msm_dp_panel_timing_cfg(ctrl->panel, ctrl->msm_dp_ctrl.wide_bus_en); } --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 8F6433F1ABF for ; Tue, 9 Jun 2026 09:47:09 +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=1780998430; cv=none; b=gNL4jfOtHgqJqOeQkCaoh4V62u0G5uB+HBZNKOZY9Rm+pHwZlnuNI3n2EI+cLXSndP5C9+jDjtLw7OUopFOxE6ZeuoNbMKZjkyPj1ONnH7/jkV9YyOjavzuKYCOPQlzSeYr+HycbN3rYGewS9Q0s+eMfgZltfmwZnAMUHmVcpWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998430; c=relaxed/simple; bh=ixgmYJIVCgIesw8IPUX+/UcnW6cdOBjM+XPZmes1+Eo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uX3SWU1BRSmvKTMBDfoZMsDegvusIM5eR9SOX7lxE5Kdoo9pRUkLjfCDHDNv8f9uAXXRCrCYcR4CXt6RH5/LqMx2TjuHqHVrlWed5bWFUkqkBAD7qeFp5xif/7r8pIwaUNdbUJ2qZ7fvTDt2TZ0UXIeVX+bYt9i9BlJ+0cOPWn8= 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=BjptCqzm; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MNuBV7+b; 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="BjptCqzm"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MNuBV7+b" 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 6597rh8c2034898 for ; Tue, 9 Jun 2026 09:47:08 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= IovUpKpDFwGWZaF4DLWER239PrNpT7oEBKFqXm1bx5A=; b=BjptCqzm590Fu46S SjV8Z874hVOI+rjjekLFtOZXE+FSxibiZiuAXMkC17tU4aFExizK3ZTYazEtcJZm 6SwzytzkilEe5Keoea2/p06+1/aeI4NSX+Uf32stiHlMPAR9zbDTNU1QSa8H7RYE e0xvFhAc45JRq9zEeTWzJKj5YIVeyDfrSY2fPM0c3Xn9xjo8r2Xqgjrv1hmwTKRA DikfIdaAnQJ/pho12WAh3nPuKTnh3voeaLw2AFxwUeIfMjXVORurRvUfcVQ1Sh7U nn6EdL7a873RSbXiljHrlWu3N4ZqAxJ3gkLFkxJCJEefSWWfilCFVnJQeSXvQypt J/woNg== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epeearjkq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:08 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-9157de5360fso1343286885a.0 for ; Tue, 09 Jun 2026 02:47:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998428; x=1781603228; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IovUpKpDFwGWZaF4DLWER239PrNpT7oEBKFqXm1bx5A=; b=MNuBV7+bwW4gg9aoGCl3Y3fGOc9IpCZVHI28aXzNDUVG0RjTFkvRKCj4tjWj+kBzBq mV+U8wSRKdmMtmxm7hY+WCRWoSfiTEE0qqmimLNMp7nauIEkBmgDJG+FzvDTvn96UJDr HO3F0Y/aJmNbPb2U97KxMrsXHq6Yd2PZjdK/GuObB5Yxu4aaBnKJCz+EIot8Wyt/j9dj igNijsxaGMmkBkRTd/QzNFUTS8ludWwlue/GIIQ9x0YkKdPqvGPZZy3bIhz3LTsbTlRb cJ+3zzYr7pk1sPaGrOwiR22xLvOmM0MM8iDj8k9lGeuDYYPRJOf3auioHiZxiwftan9P 6O/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998428; x=1781603228; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IovUpKpDFwGWZaF4DLWER239PrNpT7oEBKFqXm1bx5A=; b=AlI/4tsYHJqyU3ZVpiNLRLQbxDB1v/NdRT0A4HUPQSjfqrp+lM7gfGqsJL1i757EJo 5F/ZKeSa/xTWp7SlWDF3Ote26uon1ZWJRiM96ttNbS2ioFTVn7yYxHe1EyGhfeG6yJl0 5hjh98xT6BKBVvgdCoVtaUvbKvLoxOA9ZNjYew3pfXMKVcTgmzX6/lqlJYH5fVRaocqK HAdDyaK7Bq+xw4otU+EVzLBhM2ucpF8CCFTedlWIfsWPy253pCEZZ+S3c7eDvdjILhwG 8MFl51Iy9T1PgCB25n+PzhNgCFirT2ZT1ppNrxvOqRYU/OZgAUKyxG0V+KGYLvRh0uzf R38A== X-Forwarded-Encrypted: i=1; AFNElJ/WiUx9QKK9pSCSp7stF0nrY69gb5tmAJ/Fk57RMohWcgLxaA125e7p6gX6+V2263Y7fruUyGg0O2bXAYI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2pyFHrXIg7fPHMu0q50k0PFomQF85V2WAxUHyHVK7me9xQ9je nB6NCpvL8MfQ9asEbmVLda95S7UwM2jY5wjvyJqA6gLxQVd5faoTz2Kr9C6p088IhoG+RJOo+NS TmAKfPMGPnGv5qjI2pOvkfPwTsjcSDylWH1hrdXJ0B6ubQvESSkheoKabtHlEQLsYZNg= X-Gm-Gg: Acq92OHSodFHRLv35zltO5/gUha0UC88oGU7EoBfU+RrCY3KPlNVIot8ZaHuNdk9rSF tXldLvGp/M/9LMRwYRJTg4cpeoirXF2jxAPkJoUF4yqkWln0/7HEFaPbzkc3ynaSMTbCmh0yZOO v8botHTkyeoS5zm8r6sQtRu5prOInDg2/YH3AYf4lAXzgM9ttbGk+sUdvrx0TAPmVlYyXNwuFZu KVmFgrmG1ujB6Hm3mLbkAfdMwD0xm2ePxyg6aZWecArqa7QBpLH9JD4Ra1+ijeMouDrtYMsJAAc N/7Yx5pqJv4QtTBihenJtevGkv2SQItFwJfxTO2wxwqEAJoNhYKDF6sBF+oNlRUuv0e3D2W/M2q AESL8iIKs7oIGiTE12KUqA1M6w8qezHBZeLchDIDIeRjtxuHVxoqo1PLbBsEdtdbL9plmcv/y+O bQZOM2CcXhJL5NedV4TA== X-Received: by 2002:a05:620a:4150:b0:911:fba0:6d09 with SMTP id af79cd13be357-915ad1d400amr2109080085a.20.1780998428116; Tue, 09 Jun 2026 02:47:08 -0700 (PDT) X-Received: by 2002:a05:620a:4150:b0:911:fba0:6d09 with SMTP id af79cd13be357-915ad1d400amr2109077185a.20.1780998427706; Tue, 09 Jun 2026 02:47:07 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:07 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:28 +0800 Subject: [PATCH v7 06/15] drm/msm/dp: split link setup from source params 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-6-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998392; l=1402; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=ixgmYJIVCgIesw8IPUX+/UcnW6cdOBjM+XPZmes1+Eo=; b=cwLlDtMB+tR/WNLTbcbaBPeGshrJL5YHvytxQA6nVZvm9k5TpQRKKVCK7YY6UwRqok38qz1YJ Oelf+qdAe20DObx4b+EmSxo3RijvO0qKxdXDmMwP5DNx/Pd45ZvEhSa X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: PktIyEIqrGVzwtO0EIyIMvyy8gDXBtRC X-Authority-Analysis: v=2.4 cv=Iey3n2qa c=1 sm=1 tr=0 ts=6a27e11c cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==: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=EUspDBNiAAAA:8 a=saXSvH3Ee-fMY4W8qR0A:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX+hMrS7nyKz+T RkVCl9L78bBti5xnqMYlw7rhZzQRhtP6SdnUasvrkPbAAOV2xhxV25B5V6LCIq5VguMfbVAAegd I4PBVd4wc5GEyVRZHMbhNRDZyVNglfcfTak5rWW+jztNJ/ZWcaCF3ZVRm/PstUec77DEYvtQflj wb+XBYm7Zmoa7tQ1eNFY33rvqcA3eDN8fZ7fnI9S7m9EuQtdVSBvTYoFP01tHd8jbnDjGxpH1np JFYFn8BctRrR6JmB5BReEztL6UZFQQXkeLcyfwuIDOdkDP1jKTHscPk7zO6Xd2hgG9Ph6qClMxz oDVnIRVC+FTcGiClatBENzkWjQJXC4DkiWT6xGp0W28sjtS1/Kvj7Ry36vwCalAtMLOOizwLcrw CSUUotQgrQj4H8rNWRTUBT+TdKVUO0I3+bQ9uhbBHgbfJe/EBLTOKD7GaT5ZTCHMWWlDYf0L5Hk Ae4zvQJB38nDGVGa7kg== X-Proofpoint-GUID: PktIyEIqrGVzwtO0EIyIMvyy8gDXBtRC 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 adultscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 msm_dp_ctrl_configure_source_params() should only handle stream-related configuration. Move the link setup out of it so MST can program link and stream settings separately. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 71d45b2c4daf..1c2eccec6ec6 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -482,10 +482,6 @@ static void msm_dp_ctrl_config_misc1_misc0(struct msm_= dp_ctrl_private *ctrl, =20 static void msm_dp_ctrl_configure_source_params(struct msm_dp_ctrl_private= *ctrl) { - msm_dp_ctrl_lane_mapping(ctrl); - msm_dp_setup_peripheral_flush(ctrl); - - msm_dp_ctrl_config_ctrl_link(ctrl); msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); =20 msm_dp_ctrl_config_misc1_misc0(ctrl, ctrl->panel); @@ -2551,6 +2547,10 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp= _ctrl, bool force_link_train */ reinit_completion(&ctrl->video_comp); =20 + msm_dp_ctrl_lane_mapping(ctrl); + msm_dp_setup_peripheral_flush(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_configure_source_params(ctrl); =20 msm_dp_ctrl_config_msa(ctrl, --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 D3F783F23BE for ; Tue, 9 Jun 2026 09:47:14 +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=1780998436; cv=none; b=DLT/ydJzM/ojHvy02oZjE4+uZX1EFQb8iTkvSNYjhrIhXya8pGZLWlgIatbiXohkbh3p95fy55uIvlvLfXDlVra6MQeeLTJoK35XR/0hbHVwCHsa+vdPTC4SdPeR5vY+Koj64aEsRriMm4qeT/j9oL9Dwi3OJBaSmXeVIG9bfRM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998436; c=relaxed/simple; bh=hFDmZxXei1KTLcixeb+NUk/Wwdocsh1JcTngaZx0hsQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LIdxj7dsjD9pBPsZdcMaMS47TIPL3HXYIdOQBqGrxkpEjGRhx2+9PAPcMR2P7FmdBMIVEto4sKptdTsaKPK7n/XATmMVVc6IaH8tq8VBnbRln4SpIS6+cTkWWwAoAAdEcnIR9gEX5dZKVUmOhU03ETpN4IHikJC8cttRnW4VBZ4= 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=ZgzeQM3H; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hNAuLY3T; 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="ZgzeQM3H"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hNAuLY3T" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rbn61923227 for ; Tue, 9 Jun 2026 09:47:14 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= Sdy8wI2RH27j4YG85JCTBXzxHed9vdoH71Sb++hFk1Y=; b=ZgzeQM3HzTsjqyOd rOqOaMNP6DXU4a1f6C9+goRRq5bBacscyiuspgzTkvyCukq1LUOjPcmhbYLn7U5I kGw2uWpgT3BF/T9wvHuMicbOXNgfFtiMPoWDNSHFiY8gxvvQg8Q8F7UZ05Ljouku igAS9K8opG5DD07YJ49/5MoqPH3Ufih64usvdyJIg2fKnU06dgASQSiDzjmiM1yX rrGfTx+4ojjbZpOggYPkisd0jUJkOl/UVwDRvv1ZWPrc41JLoBU9sbkA5BZL8WVU 2Bb88lqtVeFNDhrapIYqKo54EW9vmAUtvgxanSlzFPKmmihWKBc7JwcfF5pyQkYD BlfDrA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epee4gjth-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:13 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-91565f8c589so897042085a.0 for ; Tue, 09 Jun 2026 02:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998433; x=1781603233; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Sdy8wI2RH27j4YG85JCTBXzxHed9vdoH71Sb++hFk1Y=; b=hNAuLY3TvgH0AubaoUJpYhXSuAryD4gnwBCuk3Sq3aOFUFez28tBxrbb6GqPrbtS4g jtF1RfUaW7a/S8DrZSdecfs+cJStWRggagnZvTJGqzJDSGOg/Qd/A7WpApc0xU58ik7O R+iZ2nKRNbbG5vuSBDgBZWnDoerLP5JFZD+9kkDyv61rYh8/BKX2EwSGF0AvdqsummrL h4bBDvcZ91caXLy4PlXc+c+IbED8Ox9pz2y8lzBrC5Eb1Pu8nxIsTN1ZZ5u/C4kk1AHk apnm7SXP67cvAUQOBNQzC3PNxMFbtoAxpbVWJiUwAV8WtipCWpgW+N5JGjmxWxkHZ+Fe jBrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998433; x=1781603233; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Sdy8wI2RH27j4YG85JCTBXzxHed9vdoH71Sb++hFk1Y=; b=MiOrtavXiqrcVAoI+U5YlTpBm8UFHFJnQMJCRRyeN2IY8+HHqZy4t6xf+PbXT+vXDZ OodfNVgNMDBVOSUAzwruKgYbVw+c5KGPkhGUkSpmGYhL1Ksa9y8MwhWvd1uZVbY//f88 ZHTyW4+Y7ttON5B36i3jmaoBqPaELoOir3/Ry01twSfsdlIqFWivJdvGmjOj17HyWaxq FWXzFlc7w/6IEg9QAVryriwVHXASG4HNdsjQNChGbaJiOpvppl39sKzP6g30b6hRls4u lP1d4g62r5i4u4Oiw1qiDWeBT1sncioFEitEEp6SBiD/W4pk5buVi3vpYplcG0XvjoSB DNng== X-Forwarded-Encrypted: i=1; AFNElJ+/hoSVZVnPg4EvGO4zDpy6dw853EcTfZmjFlkpzJerMFdAvwbkY4QDyFrw2R0vDa6+7KlK1g3m7G6lVBE=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4py9ul4yp2IIrxIwnII3aXgpk/RhJmmKkKAGv/0xWRTx8snET BUbapX99ZVbhqdE0GoKvJTEL5oawDLDjgPT4LytqvbNFB/6/YlbQ0372zNjNR9XxVmXGG5ntDRx WnY5px6uudSknzFAXc+WkCBRCc14+GgZa7BtlYeGVAufujXjt1jh7xIOHlI0sU4APzV4= X-Gm-Gg: Acq92OGEeRcL9fdELSGX05Nh+RaNXTxsb3qBvJmcYHdcFLBx5aTb5f00TGcXtN4LOWR gi2Nykfe8pYOyDHXu+Mtxdqkp7QHRfa3E2KIKX0i0+P19ZOwAjNkoIHi65mSer8KS6u1ehh1yus 84ZLiap9ot5gANYAuxSI/zFUPitUUi1uIrltHylrhKY2RqAtogVcvOi6h49M4mEOhaJKlqO09bB g23q094rZPfavCsL1+IQ+4cMss0Y4uLVMONa3hp1IIzYbLZwHMk8rPrjgV69b1noUH61xGolbWR JBcLCTGEPaA8AxSkFDrkOuOES02whyjEuUszNk+ahK1EOdV6Q1oDsQJUxomyG8gosHgrGtCFlFP 5EKpH5FvRFwpqnoV4qAXq4GhP2gI5zD6q3Tlkcsodig80XAzp/RZ4K+ZBpfejAhfvqGKl13xZ0W g7zEucxzIzI72/vhe7Zw== X-Received: by 2002:a05:620a:199b:b0:8d7:c82f:ff7b with SMTP id af79cd13be357-915ad31433amr2072749685a.35.1780998433126; Tue, 09 Jun 2026 02:47:13 -0700 (PDT) X-Received: by 2002:a05:620a:199b:b0:8d7:c82f:ff7b with SMTP id af79cd13be357-915ad31433amr2072746985a.35.1780998432672; Tue, 09 Jun 2026 02:47:12 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:12 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:29 +0800 Subject: [PATCH v7 07/15] drm/msm/dp: move the pixel clock control to its own API 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-7-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=4059; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=hFDmZxXei1KTLcixeb+NUk/Wwdocsh1JcTngaZx0hsQ=; b=JF48Z/GJSbnZ7/9+9I+TvqmWJrqHdn5mcqHwbMOXjLHOFIsqSag9uEeFiV5Mcq1y32OnonaE3 XFvYmgDpZ5vC2HwI3jlo6NflCi50HfmIDN3dAw2GdOph3ifQF1DsfH3 X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=PIs/P/qC c=1 sm=1 tr=0 ts=6a27e121 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=FjMX0bmgnFGAle5WrLgA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: B134LG7Lpotr1jD-Pm7wta8xvnfG9-kc X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXxMa1lzh/Aqmr 3L2ozrOPYZOu83wACxmW+7DOTtZy2zU2GVeAlwDhVTio5VipZhmeFIQUv9pNt1JkEEGNBBpdkvX Jfvhxh+CV9cW04lcUVHp0gbkGvJ4ziTGUsFPYOboX8nMtVexT8Z+daJLuIzUZXyknmpSKKSPOKZ 9TG0EcjbxHZes77qVeXSdtm10QE1VS0mmpoRytkhVyMz6juHDtsus440kdxRBrqAjU7b1C0Jf5M GgMFqNxiliW8ajtTLCUrC/X1U6CBIJXsSbt9JA946o8hI+TU9RVOwkD4Re9y3LhP+n+J4wKekaY 3cB49mS5OhOAYDmceLFe1tqY+tzqbFR/wpfX2W6qBIoCV42NnGVsqcQWSJBS+zkBqkVIB5ioPx1 omibUNGPftpXBDZhmDkYT315FCwybCdMsrj2RpNAEfNtZLIZq3IQkKIDWxEK7d7vdcDzJbgGoU7 fyG640aHRktXwK5TMpw== X-Proofpoint-ORIG-GUID: B134LG7Lpotr1jD-Pm7wta8xvnfG9-kc 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 suspectscore=0 adultscore=0 spamscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 Enable/Disable of DP pixel clock happens in multiple code paths leading to code duplication. Move it into individual helpers so that the helpers can be called wherever necessary. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 80 ++++++++++++++++++++----------------= ---- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 1c2eccec6ec6..a2c44088e6a6 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2171,6 +2171,41 @@ static bool msm_dp_ctrl_send_phy_test_pattern(struct= msm_dp_ctrl_private *ctrl) return success; } =20 +static int msm_dp_ctrl_on_pixel_clk(struct msm_dp_ctrl_private *ctrl, unsi= gned long pixel_rate) +{ + int ret; + + ret =3D clk_set_rate(ctrl->pixel_clk, pixel_rate * 1000); + if (ret) { + DRM_ERROR("Failed to set pixel clock rate. ret=3D%d\n", ret); + return ret; + } + + if (WARN_ON_ONCE(ctrl->stream_clks_on)) + return 0; + + ret =3D clk_prepare_enable(ctrl->pixel_clk); + if (ret) { + DRM_ERROR("Failed to start pixel clocks. ret=3D%d\n", ret); + return ret; + } + ctrl->stream_clks_on =3D true; + + return ret; +} + +static void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl) +{ + struct msm_dp_ctrl_private *ctrl; + + ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); + + if (ctrl->stream_clks_on) { + clk_disable_unprepare(ctrl->pixel_clk); + ctrl->stream_clks_on =3D false; + } +} + static int msm_dp_ctrl_process_phy_test_request(struct msm_dp_ctrl_private= *ctrl) { int ret; @@ -2196,22 +2231,7 @@ static int msm_dp_ctrl_process_phy_test_request(stru= ct msm_dp_ctrl_private *ctrl } =20 pixel_rate =3D ctrl->panel->msm_dp_mode.drm_mode.clock; - ret =3D clk_set_rate(ctrl->pixel_clk, pixel_rate * 1000); - if (ret) { - DRM_ERROR("Failed to set pixel clock rate. ret=3D%d\n", ret); - return ret; - } - - if (ctrl->stream_clks_on) { - drm_dbg_dp(ctrl->drm_dev, "pixel clks already enabled\n"); - } else { - ret =3D clk_prepare_enable(ctrl->pixel_clk); - if (ret) { - DRM_ERROR("Failed to start pixel clocks. ret=3D%d\n", ret); - return ret; - } - ctrl->stream_clks_on =3D true; - } + ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); =20 msm_dp_ctrl_send_phy_test_pattern(ctrl); =20 @@ -2514,26 +2534,13 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_d= p_ctrl, bool force_link_train ret =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl); if (ret) { DRM_ERROR("Failed to start link clocks. ret=3D%d\n", ret); - goto end; + return ret; } } =20 - ret =3D clk_set_rate(ctrl->pixel_clk, pixel_rate * 1000); - if (ret) { - DRM_ERROR("Failed to set pixel clock rate. ret=3D%d\n", ret); - goto end; - } - - if (ctrl->stream_clks_on) { - drm_dbg_dp(ctrl->drm_dev, "pixel clks already enabled\n"); - } else { - ret =3D clk_prepare_enable(ctrl->pixel_clk); - if (ret) { - DRM_ERROR("Failed to start pixel clocks. ret=3D%d\n", ret); - goto end; - } - ctrl->stream_clks_on =3D true; - } + ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); + if (ret) + return ret; =20 if (force_link_train || !msm_dp_ctrl_channel_eq_ok(ctrl)) msm_dp_ctrl_link_retrain(ctrl); @@ -2572,7 +2579,6 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_= ctrl, bool force_link_train drm_dbg_dp(ctrl->drm_dev, "mainlink %s\n", mainlink_ready ? "READY" : "NOT READY"); =20 -end: return ret; } =20 @@ -2620,11 +2626,7 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl) =20 msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl); =20 - if (ctrl->stream_clks_on) { - clk_disable_unprepare(ctrl->pixel_clk); - ctrl->stream_clks_on =3D false; - } - + msm_dp_ctrl_off_pixel_clk(msm_dp_ctrl); dev_pm_opp_set_rate(ctrl->dev, 0); msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl); =20 --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 1D8AF3F39C1 for ; Tue, 9 Jun 2026 09:47:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998442; cv=none; b=oPMAiByGYOBJpYGwZ5uYmVCgWVvkPb4AokPkwqr2L+pGntINNPNwXxCzxFhePhEBrJwBiEgZ54nAcKYVS13EorDFZGLDQ3C4JR7JqRxTStzeZoHD8LpsqFGwEr+bp8ry2evij8AUw0aR86eRrTVycN2DKhUdsbj33WXSMNZEy3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998442; c=relaxed/simple; bh=nsxpDuEh3BPOby/T4JLKDFkCAgy01GGO3coql0Ii7zI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mqVIdZVvT/F2JxbFIoX3eR1RfszjQmBvY8UfvWufnSv3JFII7SNda6Oj+QzwiJmhS//oJyFY2V9vtuJj2TPfnlbqoKTbGesAj7zDbMwXUjhSRMD2weiwGTbxS5hVGMnyI0wtWGC7UeximxviOaipiKyBykwQ4wPwejbhOi5U+oM= 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=pAqJPiA9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RpP116VS; arc=none smtp.client-ip=205.220.168.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="pAqJPiA9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RpP116VS" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65985Ra3006849 for ; Tue, 9 Jun 2026 09:47:19 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= rtMA2A5WIRoakOQ5T9ciaP09PN7JQEQ5LI8HRm/eXJI=; b=pAqJPiA9FoqD+ar5 QdSMwxZZetGOTYecEhIBsPE3j0s2166o7r3UU852moM19Pb1Mb9H8xeF2zi414J8 Og5nyeQVwLYVovL+vG6r49ObWDDUlXdNuI2DS3p3I4JriU1zE5YOdtwX276O6XXX irKTLeIOHk0g0168vC1l/dnJ64eH9DUkD2bB3IAZnlI7GBmBzDPazTp0XNoFhjUG 07Y4/Fo0+8Phrw6BP0Z9aYUsqnvOHrB56nO/eWZKboGPcKJQwAok2dWn327IBovd N7Hc5rWBMdIzsiAuqDEWX+d4sYpdv3LHaCx6vBRIqEBAzKqqRCZk5PtDdrptRFIb ayos5A== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epf0srdk2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:19 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-915c8347cd5so532539985a.0 for ; Tue, 09 Jun 2026 02:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998438; x=1781603238; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rtMA2A5WIRoakOQ5T9ciaP09PN7JQEQ5LI8HRm/eXJI=; b=RpP116VSSn8AsXtjxY+jNFl0K13N4tLlqilfibO40Q2XEnf8hUbFYqD5bMz8vL6SF8 mjkX7vrb7wsrylbgLNileQaxCoGexs4UPIKpHeXzUza4cToW897xB9LujlB8NxI0PZpL 5p2/1BG8+6SuM5slD/U7Wdi1oEsTTG0LtmiI3x154P0Z9/yEpP8yTcJy3fcIOt5r7959 yw0KMUNr8QqMc4benkTCNCdTyEhQdlnAmUTSR7TKzxsvcxRJ3HO6NvBDB0A1HAU/+DEc E5RIzot41466UPhvBarvjF4ejpwQ09o6lq+ISgd0FBbkIyGduGnKWXIkomv5TdVJemvB BZIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998438; x=1781603238; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rtMA2A5WIRoakOQ5T9ciaP09PN7JQEQ5LI8HRm/eXJI=; b=jxvAaKwuivV6f8hT/kZJ8d/gH87JDTTGVJU329EmajKhpKxB4sEaMMe+6MvSQGYF8v xNXZ9WGpN3Q3zDh9FsQWXNyddqePjSqkKXWheWCjNgTRYmxzqRqgFrJcWYXYasd7GJ7/ iNKisMCyBcZaLAVoyyB4iPEamwzqIKPLqzbZ0YSMT6L+hwumpvl8lk7Jb5O6iHNvLoKE SJ1/+HP26/f2g81qskMPBHZ8zYPq2ai4QJpDzgCIIkS+GnLbL81YC6oQuyr3ES7iYO5k YtCygTFmAWMzPyW0ioKHP/mOr1JpBcU2fl78yo2h107Ezs3W1S8AvMcxtjbWM34ce1Ll 4zvg== X-Forwarded-Encrypted: i=1; AFNElJ8XrHkQ4A6nw6eltfkmtfw5aTV+An3Gal08zNktN98/4SGydqdSQVCjDpqUw7DlRx1KZdPFtGM8cDIEbVI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzh6/ifk+5vBDNAjKt3YS9xc4H5h2ROVKZzdpUNhvUo1iDuZ2Ee OrajVlhHs23A4LW4Lot7Z1l5e/5WAbVN81wkdcc25EphNp8Y6vwGDzyZ0smaDgmJ+Pt5bm0Sz+d xttYRGHW48oPN4pbMAyGJHWxSkRkOQzHfmzkpEbDUZE+o0hEGrBzS1Qx1CBwwVhMc6WU= X-Gm-Gg: Acq92OHjK4UMyofO4RHqvjRsfbUtNYPK+jtxapbfV/ow8HjLJ1cIxhGfUUCRLKiGyNk jMRI3IODIX5eNbTLz0niilk4g/HuAg++idAwBtGt+/ewdcQipCTzUdVKzRusUMuuL3Cjbsv7jl7 KLRM2aaTsfScboki8Qs++ImI2GiBKpBdgzuhT4t694gteG9MiZaXmcfhAgXRPJHSF37tyD4I+sM vPGF/FiwOh8Qy1YW4KXfHdgq2zEbuZMaLSf0gkrSFvYYTjx7CLlQIjfhtQuJsYvEtru4GjyE4tH t4PjGoDjL4GEHpYXyvwBLASShuxf9xUXq6jEziLouC7t7qPG5r2KQ0Z90+NQeKTO2wCPhNfJCbT Hsb9PiuUcL2tkxd81+iro1fAd0A4wtpnNnx5/lz/tpCd6YE50iBYAlx09+FNBXJww51yHteT9HU p6s5LjqadAUaN1PwiTdA== X-Received: by 2002:a05:620a:7083:b0:910:c0ba:bd11 with SMTP id af79cd13be357-915a9dc24c0mr3116704485a.47.1780998438084; Tue, 09 Jun 2026 02:47:18 -0700 (PDT) X-Received: by 2002:a05:620a:7083:b0:910:c0ba:bd11 with SMTP id af79cd13be357-915a9dc24c0mr3116700285a.47.1780998437597; Tue, 09 Jun 2026 02:47:17 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:17 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:30 +0800 Subject: [PATCH v7 08/15] drm/msm/dp: break up dp_display_enable into two parts 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-8-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=10300; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=CpBrNqXzo3BhLeYdRDcKpBD6ftfI8pItlkr6b2uWov0=; b=jAo9onkhvjlIm2PYAEtwk4Ysqj7Sj0cMf1ymJnAvimSh6V7hI7M09t7pftY8pQ2Cb+cO1p00C QEY3TKye1s3CpY5fU3RFPxkdYMiQxczrIIogPpYVLaANVYxvVSbhhwW X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX87699TH6AM0L igIGqTWh1mKJ8rlE7dYshBlrualg7ftbuLLNuzCcG7EToILz5r9H8KNq/YbqKZVQczklW11o8zd 0aEKHzlM5qZmRgy6YE3gjBI1zdZJVwF1c1NamGDCErP4efVxdJU9KDRvzb/UMQ0ilDAeGvu6NO9 FyeNORG+5LTU+EVs+kFKQzcZ+cx0or+JzfVtgIFM9tCPycN49gvVZTLiw4NcRRhDNSDk3bzhxqw 3upz4fRL8wGsx1rN6V/mgQ7hDdlFTgbrvUZdjVJpFItpBVI912T7NRdg6hlxBgshmrtGn3WueL7 6MrFXFVEF2gEY4nSxLgMee8AfdfXGvcEYQhVtHrFf+C5zyiO7mhmvrb5vZYtnSxa5231ziEXN2P SiSLi38RsI7O8WZ52MUiDL7mrlSc9kn/EUgu+j1Rhh02YDEyGtyHnA151PUwaNDCS1YpPg04LR6 Zlj3yt5+988l2tJyzjg== X-Proofpoint-ORIG-GUID: bN0wRugBe1UZhh9T8lET5--UFOGIlUKe X-Proofpoint-GUID: bN0wRugBe1UZhh9T8lET5--UFOGIlUKe X-Authority-Analysis: v=2.4 cv=GeonWwXL c=1 sm=1 tr=0 ts=6a27e127 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=yY1IV_0HXbUsaRqM5MUA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO: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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar dp_display_enable() currently re-trains the link if needed and then enables the pixel clock, programs the controller to start sending the pixel stream. Split these two parts into prepare/enable APIs, to support MST bridges_enable insert the MST payloads funcs between enable stream_clks and program register. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 48 +++++++++++------ drivers/gpu/drm/msm/dp/dp_ctrl.h | 3 +- drivers/gpu/drm/msm/dp/dp_display.c | 105 +++++++++++++++++++++++---------= ---- 3 files changed, 102 insertions(+), 54 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index a2c44088e6a6..546d899dde23 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2504,27 +2504,19 @@ static void msm_dp_ctrl_config_msa(struct msm_dp_ct= rl_private *ctrl, msm_dp_write_link(ctrl, REG_DP_SOFTWARE_NVID, nvid); } =20 -int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link= _train) +int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool fo= rce_link_train) { int ret =3D 0; - bool mainlink_ready =3D false; struct msm_dp_ctrl_private *ctrl; - unsigned long pixel_rate; - unsigned long pixel_rate_orig; =20 if (!msm_dp_ctrl) return -EINVAL; =20 ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); =20 - pixel_rate =3D pixel_rate_orig =3D ctrl->panel->msm_dp_mode.drm_mode.cloc= k; - - if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_4= 20) - pixel_rate >>=3D 1; - - drm_dbg_dp(ctrl->drm_dev, "rate=3D%d, num_lanes=3D%d, pixel_rate=3D%lu\n", - ctrl->link->link_params.rate, - ctrl->link->link_params.num_lanes, pixel_rate); + drm_dbg_dp(ctrl->drm_dev, "rate=3D%d, num_lanes=3D%d\n", + ctrl->link->link_params.rate, + ctrl->link->link_params.num_lanes); =20 drm_dbg_dp(ctrl->drm_dev, "core_clk_on=3D%d link_clk_on=3D%d stream_clk_on=3D%d\n", @@ -2538,16 +2530,40 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_d= p_ctrl, bool force_link_train } } =20 - ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); - if (ret) - return ret; - if (force_link_train || !msm_dp_ctrl_channel_eq_ok(ctrl)) msm_dp_ctrl_link_retrain(ctrl); =20 /* stop txing train pattern to end link training */ msm_dp_ctrl_clear_training_pattern(ctrl, DP_PHY_DPRX); =20 + return ret; +} + +int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl) +{ + int ret =3D 0; + bool mainlink_ready =3D false; + struct msm_dp_ctrl_private *ctrl; + unsigned long pixel_rate; + unsigned long pixel_rate_orig; + + if (!msm_dp_ctrl) + return -EINVAL; + + ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); + + pixel_rate_orig =3D ctrl->panel->msm_dp_mode.drm_mode.clock; + pixel_rate =3D pixel_rate_orig; + + if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_4= 20) + pixel_rate >>=3D 1; + + drm_dbg_dp(ctrl->drm_dev, "pixel_rate=3D%lu\n", pixel_rate); + + ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); + if (ret) + return ret; + /* * Set up transfer unit values and set controller state to send * video. diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_c= trl.h index f68bee62713f..1497f1a8fc2f 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -17,7 +17,8 @@ struct msm_dp_ctrl { struct phy; =20 int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl); -int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link= _train); +int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl); +int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool fo= rce_link_train); void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl); diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index f33c754b83c3..cf859f880943 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -617,7 +617,40 @@ static int msm_dp_display_set_mode(struct msm_dp *msm_= dp_display, return 0; } =20 -static int msm_dp_display_enable(struct msm_dp_display_private *dp, bool f= orce_link_train) +static int msm_dp_display_prepare_link(struct msm_dp_display_private *dp) +{ + struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; + int rc =3D 0; + bool force_link_train =3D false; + + drm_dbg_dp(dp->drm_dev, "sink_count=3D%d\n", dp->link->sink_count); + + if (msm_dp_display->is_edp) + msm_dp_hpd_plug_handle(dp); + + rc =3D pm_runtime_resume_and_get(&msm_dp_display->pdev->dev); + if (rc) { + DRM_ERROR("failed to pm_runtime_resume\n"); + return rc; + } + + if (dp->link->sink_count =3D=3D 0) + return rc; + + if (!msm_dp_display->power_on) { + msm_dp_display_host_phy_init(dp); + force_link_train =3D true; + } + + rc =3D msm_dp_ctrl_on_link(dp->ctrl); + if (rc) + DRM_ERROR("Failed link training (rc=3D%d)\n", rc); + // TODO: schedule drm_connector_set_link_status_property() + + return msm_dp_ctrl_prepare_stream_on(dp->ctrl, force_link_train); +} + +static int msm_dp_display_enable(struct msm_dp_display_private *dp) { int rc =3D 0; struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; @@ -628,7 +661,7 @@ static int msm_dp_display_enable(struct msm_dp_display_= private *dp, bool force_l return 0; } =20 - rc =3D msm_dp_ctrl_on_stream(dp->ctrl, force_link_train); + rc =3D msm_dp_ctrl_on_stream(dp->ctrl); if (!rc) msm_dp_display->power_on =3D true; =20 @@ -658,13 +691,10 @@ static int msm_dp_display_post_enable(struct msm_dp *= msm_dp_display) return 0; } =20 -static int msm_dp_display_disable(struct msm_dp_display_private *dp) +static void msm_dp_display_audio_notify_disable(struct msm_dp_display_priv= ate *dp) { struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; =20 - if (!msm_dp_display->power_on) - return 0; - /* wait only if audio was enabled */ if (msm_dp_display->audio_enabled) { /* signal the disconnect event */ @@ -675,6 +705,14 @@ static int msm_dp_display_disable(struct msm_dp_displa= y_private *dp) } =20 msm_dp_display->audio_enabled =3D false; +} + +static int msm_dp_display_disable(struct msm_dp_display_private *dp) +{ + struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; + + if (!msm_dp_display->power_on) + return 0; =20 if (dp->link->sink_count =3D=3D 0) { /* @@ -1371,14 +1409,13 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, struct drm_atomic_commit *state) { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); - struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; + struct msm_dp *msm_dp_display =3D msm_dp_bridge->msm_dp_display; struct drm_crtc *crtc; struct drm_crtc_state *crtc_state; int rc =3D 0; - struct msm_dp_display_private *msm_dp_display; - bool force_link_train =3D false; + struct msm_dp_display_private *dp; =20 - msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); + dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 crtc =3D drm_atomic_get_new_crtc_for_encoder(state, drm_bridge->encoder); @@ -1386,44 +1423,29 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, return; crtc_state =3D drm_atomic_get_new_crtc_state(state, crtc); =20 - if (dp->is_edp) - msm_dp_hpd_plug_handle(msm_dp_display); - - if (pm_runtime_resume_and_get(&dp->pdev->dev)) { - DRM_ERROR("failed to pm_runtime_resume\n"); - return; - } - - if (msm_dp_display->link->sink_count =3D=3D 0) - return; - - rc =3D msm_dp_display_set_mode(dp, &crtc_state->adjusted_mode, msm_dp_dis= play->panel); + rc =3D msm_dp_display_set_mode(msm_dp_display, &crtc_state->adjusted_mode= , dp->panel); if (rc) { DRM_ERROR("Failed to perform a mode set, rc=3D%d\n", rc); return; } =20 - if (!dp->power_on) { - msm_dp_display_host_phy_init(msm_dp_display); - force_link_train =3D true; - } - - rc =3D msm_dp_ctrl_on_link(msm_dp_display->ctrl); + rc =3D msm_dp_display_prepare_link(dp); if (rc) { - DRM_ERROR("Failed link training (rc=3D%d)\n", rc); - // TODO: schedule drm_connector_set_link_status_property() + DRM_ERROR("DP display prepare failed, rc=3D%d\n", rc); return; } =20 - msm_dp_display_enable(msm_dp_display, force_link_train); + rc =3D msm_dp_display_enable(dp); + if (rc) + DRM_ERROR("DP display enable failed, rc=3D%d\n", rc); =20 - rc =3D msm_dp_display_post_enable(dp); + rc =3D msm_dp_display_post_enable(msm_dp_display); if (rc) { DRM_ERROR("DP display post enable failed, rc=3D%d\n", rc); - msm_dp_display_disable(msm_dp_display); + msm_dp_display_disable(dp); } =20 - drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", dp->connector_type); + drm_dbg_dp(msm_dp_display->drm_dev, "type=3D%d Done\n", msm_dp_display->c= onnector_type); } =20 void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, @@ -1438,6 +1460,15 @@ void msm_dp_bridge_atomic_disable(struct drm_bridge = *drm_bridge, msm_dp_ctrl_push_idle(msm_dp_display->ctrl); } =20 +static void msm_dp_display_unprepare(struct msm_dp_display_private *dp) +{ + struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; + + pm_runtime_put_sync(&msm_dp_display->pdev->dev); + + drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", msm_dp_display->connector_typ= e); +} + void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, struct drm_atomic_commit *state) { @@ -1450,11 +1481,11 @@ void msm_dp_bridge_atomic_post_disable(struct drm_b= ridge *drm_bridge, if (dp->is_edp) msm_dp_hpd_unplug_handle(msm_dp_display); =20 - msm_dp_display_disable(msm_dp_display); + msm_dp_display_audio_notify_disable(msm_dp_display); =20 - drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", dp->connector_type); + msm_dp_display_disable(msm_dp_display); =20 - pm_runtime_put_sync(&dp->pdev->dev); + msm_dp_display_unprepare(msm_dp_display); } =20 void msm_dp_bridge_hpd_enable(struct drm_bridge *bridge) --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 DBBE63F4859 for ; Tue, 9 Jun 2026 09:47:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998446; cv=none; b=KVJ6U7s91I1NR9JzPlJXaOiho+I2e1K4kDUuVS0qiY4Rx2L+Aq52pfCgQACpimLICrheIQvF8OM6ChqxyJOyQjIfHRR+aLiTTYroRFHJKITOngjX97S9nafhr2BO4J5981XfcPQIPjNnBzI6Mlh5jyhrf/Mx8p+rGZPpWL/yQO8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998446; c=relaxed/simple; bh=69/u+u0bMmkeRYaYJHJOVRrxbMKLVJ/mmagPx2f0q9c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GAfWfsAuCTgelskw16WsBZzi/gVA0RXC4QTNG1UfDWTiCLosvaNiaSajO6K5COcYzsIiMo+BovcMkQMbtJdjuuWorjZOk3CKdPmHKegUDBSdV2lB8n+Mgy5+bPFO811Oz7eYvh3Dl4SzGmFnc0ggdW1Tl0xdIgrlXGg4GKG3eZk= 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=bcMbUK+F; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AJiFGsrp; arc=none smtp.client-ip=205.220.168.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="bcMbUK+F"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AJiFGsrp" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65985T4a006887 for ; Tue, 9 Jun 2026 09:47:24 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= gKV7eY6x0GdZCgdZALVmHOg4bVdpjbHHZgfJ+wEnO1c=; b=bcMbUK+FG6jhBOPc NdtnDvNFtKdCu3wqtOBvbd5FpdivZQsF8qJ5KpD6RY1ituoVJqt3/CCksejQjjue SNjeNtNKYc2viccLaMFp5fAADE9uH4SEQWoGnMxPMUDMnuTaAibDwNOZSIIVksLA fZnw4PkEo+Aqa9E8ZeuZKcacvx7xukeFUxShB5G/EW0YVa8PBMLE0b51PTC3IEdA 93fIPmB4K7ZIra2DTrbQUPp2otQdgNENkjr/ToljuC49gf/SqOrR3dGENJfuo+8A xDqBdu9CHOjOCfh7o0UFvlvVrvHm20HQWrNUz8KXZr9x9p45PjEPX09PRpjgvT6w Basvlw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epf0srdkh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:24 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-915b9dd020cso708807785a.3 for ; Tue, 09 Jun 2026 02:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998443; x=1781603243; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gKV7eY6x0GdZCgdZALVmHOg4bVdpjbHHZgfJ+wEnO1c=; b=AJiFGsrpwh3MYJjr7Wx35XQUDKYib4NsWqQdvw71Fi3lVyMYB1U28QQbkTlm6OOK4H t/lXDtPTU2zwgF7ZRq3h5X5oU/L6PQ32HZHEYaGSq8tqPCm7eF/A6ZLzn2KWM2D9ESv9 3C566R3qTCYiiyXV3Xnqb8nLdxg5XDJsRYiK/hslTqyhJpLYdcdEAVsnzXkJimv5RFyr 1/UYb4q43LUtnVQ18BKesjzrNAt3j1KRts46iwHAx3HbrfOystI70F5R+Jmlf20pVKk3 QmCPjGbUvcT9G09nEzgRVjc+aG5Fb6tuc04ZLkSj9oku4TucTVVCn0lL8mhe9PbevbOj 7Y4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998443; x=1781603243; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gKV7eY6x0GdZCgdZALVmHOg4bVdpjbHHZgfJ+wEnO1c=; b=HZ3IEQWJihuU1XK0cL0o3IPIIe1Dr6i84gG0435EqGeHPn36SgFPpBQ+lOafUKq5x4 cci9RNLisQUfNYveD0ufp7fTqWmrMjnSBO9zCT6/an3ElXjA6eam7sgiOYopbkEzCsNX vGBkJcJ5HBpCXmgs8zTsS3qL3IA4KnNqZSTu1KPdnqrqntt905AaIgJGIN/5UlU5fSSe s8tYtEO6OXXifB3LEq/h54kt03NPMfDYPoeuhPi1SxbTSuGSn75U7Hfqk6OEOfTo0lff gvffpzcCyx0jIX7XwiFpIdy1PEFZxvmL+07IzZBJkAy1UIqIrpYUvllH3oqhQulzdBQQ TFTg== X-Forwarded-Encrypted: i=1; AFNElJ+y+4poRJfgHqwCVD7GiUrHvf3ixvXxzFLEbZInEblhNoWKFsu/BcMgIVwmBtL0CdOUkBp0m0G8vO9qOIA=@vger.kernel.org X-Gm-Message-State: AOJu0Yygvo+C6HvNOIO6tMLOcM94B6M1UOwG+KSYOD2MekWnKeUPh4St ft5t2wIWkYMHbUbk9Ji02W0ZN1y3CVb6NXelybAIIX6fB0MNRehZMuR6E+yvRqZ2zf88MIBxpUN jB4cZZGBLeBV5el45L7vC2t1vtPi2YhHBbwWCWYRUKh4cwI18MyhLgOtk5b3DU6xCN+I= X-Gm-Gg: Acq92OEVl0OyC9BEPhw41a1XOmIROEFrIii42DM6iG4cnAOKueJHmyS9du7AuZhFd1w pPRUqTlwc8RHhLHB/qIVbWCGTUdWzoaaljmx7HDfP6eoheOSvklpimV6mNR6SxOpYFzpmzcZQJM k+4iVy9iymECLj3aQPo60pEJpML/3sPpEgiv4Gn/XE/aH/dBmeftBOONdJ2fOWVVmph556bbx5i /ccqxnhkty1GWyf4YRX6qCdkIhITpX4RbO2OMLn59rL+wfPDc61J+9Xnrchhm4zh5DerxbnKi4w IE3Wm4xkNIU5nxoAScJpt9VQsX/atg339JuTI4SVc078jBgBPDVrc8v97ZiZVM9azLVGI2NlM5V SLjDv5waAKDi9jFaGb51+/G/ukQ4FKBNHTO+zJmdmwwjjD9l1+jmQDUTu1V2NzhP9i30dLQs5VO Q4h2H+GNKKRsXDdPppKg== X-Received: by 2002:a05:620a:3181:b0:915:e8fb:acc0 with SMTP id af79cd13be357-915e8fbbd51mr258056785a.23.1780998443074; Tue, 09 Jun 2026 02:47:23 -0700 (PDT) X-Received: by 2002:a05:620a:3181:b0:915:e8fb:acc0 with SMTP id af79cd13be357-915e8fbbd51mr258052985a.23.1780998442532; Tue, 09 Jun 2026 02:47:22 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:22 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:31 +0800 Subject: [PATCH v7 09/15] drm/msm/dp: re-arrange dp_display_disable() into functional parts 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-9-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=3890; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=IBykKglaoFNzwzYIynAYX/xNxF8GBX7vWe0UDGG9/JE=; b=3H9FfXTCb4VoYZS/ebi0VLBBMD2YLcwDaShY5OWsGKF3aQ574dbqjntxQT6BwaQ4rDhGuMf36 lh/3dFbZgM3Cml1zghEi4KrjuEX9heKx1rv9IqZtP1a77C9lbSuN5Nh X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX4X6h6/szaN7O IH4j6J7HEONHkAUB2f/YWp22XDwSCQQ2NBi6+p2gp14wA1nnNzHOTAWcT11T/ZOVYT9WQIwTqvR 8AOo165lzCwOJdAN3bi/JoEUylB14ETJ+HY3k0xNTzMAInlLgHvPPGxtXdKiT14oL03LJuIYYhA nW62mpBv6H9026V22c82iCa1bn247yV5gle1EwXFhqPws58l+wKoCEBIDPOakV8pFADL74d5SDm Qxr5e0//HO+ilSXAU3E7E3gTpPZiwiG1AdjiRQX8ITZCIYlVvRtVowoxxV4FYGbtCBZMC2Wkw/v 9GSXB5B8+W54lok8QlTeD1pi4e+UT5HyWcZbBSrbdSb6OBqv64YFGSv9Mn4B6DyJDKHrFfUtLoC WhIolwiNjeLwGWMhRXSgPcp4sWBsp8aQJ8lT9kc2xnHURs4uNew+zC3i5VTXhArqzxKfd2k6rpK IAlszLnXb1qxUsiokew== X-Proofpoint-ORIG-GUID: 6kSTzpzFhNUO1COzyXSnx3N-E4NiPDZj X-Proofpoint-GUID: 6kSTzpzFhNUO1COzyXSnx3N-E4NiPDZj X-Authority-Analysis: v=2.4 cv=GeonWwXL c=1 sm=1 tr=0 ts=6a27e12c cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=7LH33tsxRIP6uNRhSrAA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO: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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar dp_display_disable() handles special case of when monitor is disconnected from the dongle while the dongle stays connected thereby needing a separate function dp_ctrl_off_link_stream() for this. However with a slight rework this can still be handled by keeping common paths same for regular and special case. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 19 +------------------ drivers/gpu/drm/msm/dp/dp_ctrl.h | 2 +- drivers/gpu/drm/msm/dp/dp_display.c | 10 +++++++++- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 546d899dde23..626b95d4d015 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2598,7 +2598,7 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_= ctrl) return ret; } =20 -void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl *msm_dp_ctrl) { struct msm_dp_ctrl_private *ctrl; struct phy *phy; @@ -2606,23 +2606,6 @@ void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl = *msm_dp_ctrl) ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); phy =3D ctrl->phy; =20 - msm_dp_panel_disable_vsc_sdp(ctrl->panel); - - /* set dongle to D3 (power off) mode */ - msm_dp_link_psm_config(ctrl->link, &ctrl->panel->link_info, true); - - msm_dp_ctrl_mainlink_disable(ctrl); - - if (ctrl->stream_clks_on) { - clk_disable_unprepare(ctrl->pixel_clk); - ctrl->stream_clks_on =3D false; - } - - dev_pm_opp_set_rate(ctrl->dev, 0); - msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl); - - phy_power_off(phy); - /* aux channel down, reinit phy */ phy_exit(phy); phy_init(phy); diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_c= trl.h index 1497f1a8fc2f..5d615f50d13b 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -19,7 +19,6 @@ struct phy; int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl); int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl); int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool fo= rce_link_train); -void msm_dp_ctrl_off_link_stream(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl); irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl); @@ -46,4 +45,5 @@ void msm_dp_ctrl_core_clk_disable(struct msm_dp_ctrl *msm= _dp_ctrl); void msm_dp_ctrl_enable_irq(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_disable_irq(struct msm_dp_ctrl *msm_dp_ctrl); =20 +void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl *msm_dp_ctrl); #endif /* _DP_CTRL_H_ */ diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index cf859f880943..b8dab3f8a7c2 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -714,12 +714,20 @@ static int msm_dp_display_disable(struct msm_dp_displ= ay_private *dp) if (!msm_dp_display->power_on) return 0; =20 + msm_dp_panel_disable_vsc_sdp(dp->panel); + + /* dongle is still connected but sinks are disconnected */ if (dp->link->sink_count =3D=3D 0) { /* * irq_hpd with sink_count =3D 0 * hdmi unplugged out of dongle */ - msm_dp_ctrl_off_link_stream(dp->ctrl); + + /* set dongle to D3 (power off) mode */ + msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true); + msm_dp_ctrl_off(dp->ctrl); + /* re-init the PHY so that we can listen to Dongle disconnect */ + msm_dp_ctrl_reinit_phy(dp->ctrl); } else { /* * unplugged interrupt --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 9B6F43F4859 for ; Tue, 9 Jun 2026 09:47:30 +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=1780998453; cv=none; b=GPJm9uEv3clPcoTbXBKjzFt3mygDGyz82kbfFM7YIHL5YMYFGZ0up6IVYe8+ckdoHQF8jC4pVfjfoVSau7oOlA7wu+55d/HcC6f6P9beQ4GdzPahFEPTKwpfiWjwrv1VYEdphaWdci9V1vGjk29e9lfTGhdXD0eRAjRmEFuOWyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998453; c=relaxed/simple; bh=ZRFBR56BzQUz+pR0m2yjwRVvezzmqgrYLgNu6IxtVtw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y/9FJ7VY57HYzqwiDVuvWK9oSWIQF9OKqCqrUGuo7fLlcFbAoxbXV3dcb62Gt+CMIs2jXkntguGcIZu50H/3sxgWLXDFRh6IY8jYWUUHJnLgU63mHkFnk95o1flNOnld9WkFmLB3P0Lw8E3MEz6Z4Ag9uapWeT3fOhLr9aA9Fsw= 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=JxuhRlmr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OSPIX8W2; 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="JxuhRlmr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OSPIX8W2" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rsOO2001605 for ; Tue, 9 Jun 2026 09:47:29 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= 7hb/FfVnd7PMoaRS4u6TXp4l3uKqHy74XnbEX6RG4Go=; b=JxuhRlmrIaRuaN/8 DeRP1p2EA+7Me7PsYI4xrZqMUO95HVn9KuahVGvjgaz7GWWjCKUHcjO9WvvTuuDG 0d/oosBrQ2nfSzZ0gEQ0EO4W7Cq+5mwwKEaK9WOW4n6uBgkB5djT7dKXjiFm6Zmn sOYwCEAft1lat9zgJYHjnSuiPn4Xsf76G0NeLRllCkoUvLZaWLmavHtQaXTzF+l8 AtpGoaD7BhKcYveN7xJ4iJj9SsgroyepnEf0H2y940FlyfxXazFktAJeSjejjZW6 KdQ8m5f2IIb8GScC8IziEA0VYNF4T+VdxyEqsclLON9tGp4ZqbbiWfElblPnCeQQ Wk/3HQ== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epe25rp97-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:29 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-915ba226a9bso664842685a.2 for ; Tue, 09 Jun 2026 02:47:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998449; x=1781603249; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7hb/FfVnd7PMoaRS4u6TXp4l3uKqHy74XnbEX6RG4Go=; b=OSPIX8W2yB9KO7RSDHNtvLTF9+awNBVPBTuD8i22mtb14s3o0flvEEoQ8jqzAdng+E Ti5RHYzRPE059/Qqj6Rs7uE7WTTzUfaXBT3uqKTKymsZmgT3LkXP/KTF8qJGfJgfsaC7 HR15vq64UdUAGQnjbBHncP2K+FCoucpChGNCApV1RW1/4VoaiHQOFsFkNMYkYhWuKDct GAf4oMeFTO7N9RDzLfPyvFRRyrx9j9+oHzxx9Atwr3TsvHUMEVfM6ZFP4A9Ly3Nz+gOU VTVcJIfHbFJIzXhkYY1SSTpYxoccIdNBUAOvDrInQR6wzQYKn+o785K8WSOs20cEMt9z ocGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998449; x=1781603249; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7hb/FfVnd7PMoaRS4u6TXp4l3uKqHy74XnbEX6RG4Go=; b=bi1AZ83htDtMAafFj25wE7FTWzr1KCNBduOPwozJ45LZ8+lIGyhxfTUusAqDbZoCGh f1V+U8XWXWFgLkkDjIjbN89WnCpfc4xtiv63E7MHv0BLBRtPWycDO7vJe/Ie4BKkhiCI 8Xs1Aff5sQG5OkdwlLWx1FhU83AEq13WVCDJ1svG40bRd+bP7m7QfNzmeV73UCehuip/ VFOMbUFa22FrmecnBtjt66uxcve7aI27zolSqa9sm1dWYDhFufMgCuMszsbrKqmxCe+a CaVZXi9uFTjZMmwNFfwAAbjmTdnRVnjA0eVAiXQndZ/avjJtrBG7c2EH1/iIac4IXZFY vmgg== X-Forwarded-Encrypted: i=1; AFNElJ/3G7sKqp3LBttBAjRH1/g8//03tAL42xKSVJX7kHb+57zlu6OHN4B6txhlx0xRGYljt1yRq28BNSog10s=@vger.kernel.org X-Gm-Message-State: AOJu0Yzvi5ZEagMUCB9c/FnN7Io6MAkU3rwGQ++VKrmDuV0zdF2rMlDb 8QWs6nQRRLfTPRbZ7fmNwVyOA1X5bjxC+8jmmPjdlKrkcNCeuObgUzzSERlxk4vY7h4KS6RARmF vF6+RaeuE9jfit3bhaqknxqSVbjlXIBo2FC7ZURF4LQbEkJbg3dz4kNSWethuxBje9Uw= X-Gm-Gg: Acq92OGt3/+t1ShMEXR0Yz2TGveKVcFQFAgCo8elJ+bxhOoERBrlJtk8k6K+ekVcn8a otVZA3UVb2tIxAgg7oNWS1w6sEb1I2r89lCOPj2jBSvfcHvEyO20UfoM0Gmq+MQd6pJSYipC1J8 Tvxv0N0VP7myZqF+bUm9BIesjP4LmPGzDXUNoAOktsDAZUW5wc/ePpGZn7s36FL55tKyIYkeqk4 GhZX825T9k8QCpdS78lqO6Ms+eeiy6VU5SNPlhFFbtivXlkcx7mYCeD1FmN2BDWxiV4vxPSBIUJ E4EB0y1OrUCZt9xSvLMinp3e34i7h4xZ063jKKGB58zCfv3PiIrHNbDq/MHrJKBTQXttYh/UnJU vm/KY+ZSobdFWwqTyuw5wAcHX94/Hww6tA1OA0Ua/+QB2tx90BjtlU+PyvEaZ/NRMp3xclMySvj 6fUvP65bZBlxVreMYc+w== X-Received: by 2002:a05:620a:f12:b0:915:89d4:df17 with SMTP id af79cd13be357-915a9d76032mr3188247985a.33.1780998448460; Tue, 09 Jun 2026 02:47:28 -0700 (PDT) X-Received: by 2002:a05:620a:f12:b0:915:89d4:df17 with SMTP id af79cd13be357-915a9d76032mr3188243285a.33.1780998447934; Tue, 09 Jun 2026 02:47:27 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:27 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:32 +0800 Subject: [PATCH v7 10/15] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-10-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=32357; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=fBTI5DSJUakJQJtBZ9iXtP+zjtz0ryhulbsAIEWR9ZU=; b=slZwAD5uoACxcXgw8ABYdS9Z4blEWQLT0IHPCTIX+1A5D5oTJzFPkqQMRT8iBIrLy9WNuW9n8 LVGHgOwCvrIBYxNpvsNg9duOUyvrudwAs60ciL/zsMI4AvN64CnVnea X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: 6PE3Emx7VDgkVt_HRK2wCRApAn3GULFQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfXzovNUCqoQwLL FxloQSBmp0ngw0H1CzlkUkdiozet5vPXAGRGMdfmcH9J1z9H0FxPrPpGXCltf7RkDx076aVVYJF nrIfLxawAfnqWO+l6ool6XKbYHoJJ9T4MD5ZhYfjWy07Mz9wCadKgMYgOaYnqnZis/DXgtynzht NzitEYj7TZ70DCwB/QYxbgFXoqBlEXwaNFKsgHmWJ/FbJyR4G7yIV3NNeq5e3KLYc2D7GVANw3c 72mCtt9lDPTqtnVi0nBlEDIpjG6pj8XCjL621ZAfZx0//ldk1Sa0kKWOzO4BqyPc1uIO7rtcxqd MjJWJnXkEdnqVXuhR9+l7XDlniyVz9qcQr4SBhUMtteNMpYHDGWsMBocCl3cX7uLxnNcPSmn12S x8bKWZ8W+2wOinzAURYaROtf9DWu6TaZODmqo8Upk4Sco5GfCyFewr8nezRi6cbSAKgX70n0EUY L/idqK7j4eg0H6+WMrQ== X-Proofpoint-GUID: 6PE3Emx7VDgkVt_HRK2wCRApAn3GULFQ X-Authority-Analysis: v=2.4 cv=LoqiDHdc c=1 sm=1 tr=0 ts=6a27e131 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=531mWe0hPKX_9nM1v_MA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB: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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 impostorscore=0 adultscore=0 suspectscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar With MST, multiple sinks share a single DP controller, so a cached panel in msm_dp_ctrl_private can no longer represent the per-stream sink. Drop the cache and pass panel explicitly to all stream-related dp_ctrl APIs. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 196 ++++++++++++++++++++------------= ---- drivers/gpu/drm/msm/dp/dp_ctrl.h | 28 ++++-- drivers/gpu/drm/msm/dp/dp_display.c | 24 ++--- 3 files changed, 140 insertions(+), 108 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 626b95d4d015..87c3a5517911 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -114,7 +114,6 @@ struct msm_dp_ctrl_private { struct drm_device *drm_dev; struct device *dev; struct drm_dp_aux *aux; - struct msm_dp_panel *panel; struct msm_dp_link *link; void __iomem *ahb_base; void __iomem *link_base; @@ -202,7 +201,8 @@ static int msm_dp_aux_link_configure(struct drm_dp_aux = *aux, /* * NOTE: resetting DP controller will also clear any pending HPD related i= nterrupts */ -void msm_dp_ctrl_reset(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_reset(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl); @@ -219,7 +219,7 @@ void msm_dp_ctrl_reset(struct msm_dp_ctrl *msm_dp_ctrl) =20 if (!ctrl->hw_revision) { ctrl->hw_revision =3D msm_dp_read_ahb(ctrl, REG_DP_HW_VERSION); - ctrl->panel->hw_revision =3D ctrl->hw_revision; + panel->hw_revision =3D ctrl->hw_revision; } } =20 @@ -414,10 +414,11 @@ static void msm_dp_ctrl_config_ctrl_streams(struct ms= m_dp_ctrl_private *ctrl, msm_dp_write_link(ctrl, REG_DP_CONFIGURATION_CTRL, config); } =20 -static void msm_dp_ctrl_config_ctrl_link(struct msm_dp_ctrl_private *ctrl) +static void msm_dp_ctrl_config_ctrl_link(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel) { u32 config =3D 0; - const u8 *dpcd =3D ctrl->panel->dpcd; + const u8 *dpcd =3D panel->dpcd; =20 /* Default-> LSCLK DIV: 1/4 LCLK */ config |=3D (2 << DP_CONFIGURATION_CTRL_LSCLK_DIV_SHIFT); @@ -480,13 +481,14 @@ static void msm_dp_ctrl_config_misc1_misc0(struct msm= _dp_ctrl_private *ctrl, msm_dp_write_link(ctrl, REG_DP_MISC1_MISC0, misc_val); } =20 -static void msm_dp_ctrl_configure_source_params(struct msm_dp_ctrl_private= *ctrl) +static void msm_dp_ctrl_configure_source_params(struct msm_dp_ctrl_private= *ctrl, + struct msm_dp_panel *panel) { - msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); + msm_dp_ctrl_config_ctrl_streams(ctrl, panel); =20 - msm_dp_ctrl_config_misc1_misc0(ctrl, ctrl->panel); + msm_dp_ctrl_config_misc1_misc0(ctrl, panel); =20 - msm_dp_panel_timing_cfg(ctrl->panel, ctrl->msm_dp_ctrl.wide_bus_en); + msm_dp_panel_timing_cfg(panel, ctrl->msm_dp_ctrl.wide_bus_en); } =20 /* @@ -1256,20 +1258,21 @@ static void _dp_ctrl_calc_tu(struct msm_dp_ctrl_pri= vate *ctrl, } =20 static void msm_dp_ctrl_calc_tu_parameters(struct msm_dp_ctrl_private *ctr= l, + struct msm_dp_panel *panel, struct msm_dp_vc_tu_mapping_table *tu_table) { struct msm_dp_tu_calc_input in; - struct drm_display_mode *drm_mode; + const struct drm_display_mode *drm_mode; =20 - drm_mode =3D &ctrl->panel->msm_dp_mode.drm_mode; + drm_mode =3D &panel->msm_dp_mode.drm_mode; =20 in.lclk =3D ctrl->link->link_params.rate / 1000; in.pclk_khz =3D drm_mode->clock; in.hactive =3D drm_mode->hdisplay; in.hporch =3D drm_mode->htotal - drm_mode->hdisplay; in.nlanes =3D ctrl->link->link_params.num_lanes; - in.bpp =3D ctrl->panel->msm_dp_mode.bpp; - in.pixel_enc =3D ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420 ? 420 : 444; + in.bpp =3D panel->msm_dp_mode.bpp; + in.pixel_enc =3D panel->msm_dp_mode.out_fmt_is_yuv_420 ? 420 : 444; in.dsc_en =3D 0; in.async_en =3D 0; in.fec_en =3D 0; @@ -1279,14 +1282,15 @@ static void msm_dp_ctrl_calc_tu_parameters(struct m= sm_dp_ctrl_private *ctrl, _dp_ctrl_calc_tu(ctrl, &in, tu_table); } =20 -static void msm_dp_ctrl_setup_tr_unit(struct msm_dp_ctrl_private *ctrl) +static void msm_dp_ctrl_setup_tr_unit(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel) { u32 msm_dp_tu =3D 0x0; u32 valid_boundary =3D 0x0; u32 valid_boundary2 =3D 0x0; struct msm_dp_vc_tu_mapping_table tu_calc_table; =20 - msm_dp_ctrl_calc_tu_parameters(ctrl, &tu_calc_table); + msm_dp_ctrl_calc_tu_parameters(ctrl, panel, &tu_calc_table); =20 msm_dp_tu |=3D tu_calc_table.tu_size_minus1; valid_boundary |=3D tu_calc_table.valid_boundary_link; @@ -1438,6 +1442,7 @@ static int msm_dp_ctrl_set_pattern_state_bit(struct m= sm_dp_ctrl_private *ctrl, } =20 static int msm_dp_ctrl_link_train_1(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel, int *training_step, enum drm_dp_phy dp_phy) { int delay_us; @@ -1446,7 +1451,7 @@ static int msm_dp_ctrl_link_train_1(struct msm_dp_ctr= l_private *ctrl, int const maximum_retries =3D 4; =20 delay_us =3D drm_dp_read_clock_recovery_delay(ctrl->aux, - ctrl->panel->dpcd, dp_phy, false); + panel->dpcd, dp_phy, false); =20 msm_dp_write_link(ctrl, REG_DP_STATE_CTRL, 0); =20 @@ -1532,14 +1537,15 @@ static int msm_dp_ctrl_link_rate_down_shift(struct = msm_dp_ctrl_private *ctrl) return ret; } =20 -static int msm_dp_ctrl_link_lane_down_shift(struct msm_dp_ctrl_private *ct= rl) +static int msm_dp_ctrl_link_lane_down_shift(struct msm_dp_ctrl_private *ct= rl, + struct msm_dp_panel *panel) { =20 if (ctrl->link->link_params.num_lanes =3D=3D 1) return -1; =20 ctrl->link->link_params.num_lanes /=3D 2; - ctrl->link->link_params.rate =3D ctrl->panel->link_info.rate; + ctrl->link->link_params.rate =3D panel->link_info.rate; =20 ctrl->link->phy_params.p_level =3D 0; ctrl->link->phy_params.v_level =3D 0; @@ -1548,6 +1554,7 @@ static int msm_dp_ctrl_link_lane_down_shift(struct ms= m_dp_ctrl_private *ctrl) } =20 static void msm_dp_ctrl_clear_training_pattern(struct msm_dp_ctrl_private = *ctrl, + struct msm_dp_panel *panel, enum drm_dp_phy dp_phy) { int delay_us; @@ -1555,11 +1562,12 @@ static void msm_dp_ctrl_clear_training_pattern(stru= ct msm_dp_ctrl_private *ctrl, msm_dp_ctrl_train_pattern_set(ctrl, DP_TRAINING_PATTERN_DISABLE, dp_phy); =20 delay_us =3D drm_dp_read_channel_eq_delay(ctrl->aux, - ctrl->panel->dpcd, dp_phy, false); + panel->dpcd, dp_phy, false); fsleep(delay_us); } =20 static int msm_dp_ctrl_link_train_2(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel, int *training_step, enum drm_dp_phy dp_phy) { int delay_us; @@ -1570,16 +1578,16 @@ static int msm_dp_ctrl_link_train_2(struct msm_dp_c= trl_private *ctrl, u8 link_status[DP_LINK_STATUS_SIZE]; =20 delay_us =3D drm_dp_read_channel_eq_delay(ctrl->aux, - ctrl->panel->dpcd, dp_phy, false); + panel->dpcd, dp_phy, false); =20 msm_dp_write_link(ctrl, REG_DP_STATE_CTRL, 0); =20 *training_step =3D DP_TRAINING_2; =20 - if (drm_dp_tps4_supported(ctrl->panel->dpcd)) { + if (drm_dp_tps4_supported(panel->dpcd)) { pattern =3D DP_TRAINING_PATTERN_4; state_ctrl_bit =3D 4; - } else if (drm_dp_tps3_supported(ctrl->panel->dpcd)) { + } else if (drm_dp_tps3_supported(panel->dpcd)) { pattern =3D DP_TRAINING_PATTERN_3; state_ctrl_bit =3D 3; } else { @@ -1616,18 +1624,19 @@ static int msm_dp_ctrl_link_train_2(struct msm_dp_c= trl_private *ctrl, } =20 static int msm_dp_ctrl_link_train_1_2(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel, int *training_step, enum drm_dp_phy dp_phy) { int ret; =20 - ret =3D msm_dp_ctrl_link_train_1(ctrl, training_step, dp_phy); + ret =3D msm_dp_ctrl_link_train_1(ctrl, panel, training_step, dp_phy); if (ret) { DRM_ERROR("link training #1 on phy %d failed. ret=3D%d\n", dp_phy, ret); return ret; } drm_dbg_dp(ctrl->drm_dev, "link training #1 on phy %d successful\n", dp_p= hy); =20 - ret =3D msm_dp_ctrl_link_train_2(ctrl, training_step, dp_phy); + ret =3D msm_dp_ctrl_link_train_2(ctrl, panel, training_step, dp_phy); if (ret) { DRM_ERROR("link training #2 on phy %d failed. ret=3D%d\n", dp_phy, ret); return ret; @@ -1638,16 +1647,17 @@ static int msm_dp_ctrl_link_train_1_2(struct msm_dp= _ctrl_private *ctrl, } =20 static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel, int *training_step) { int i; int ret =3D 0; - const u8 *dpcd =3D ctrl->panel->dpcd; + const u8 *dpcd =3D panel->dpcd; u8 encoding[] =3D { 0, DP_SET_ANSI_8B10B }; u8 assr; struct msm_dp_link_info link_info =3D {0}; =20 - msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl, panel); =20 link_info.num_lanes =3D ctrl->link->link_params.num_lanes; link_info.rate =3D ctrl->link->link_params.rate; @@ -1670,8 +1680,8 @@ static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_= private *ctrl, for (i =3D ctrl->link->lttpr_count - 1; i >=3D 0; i--) { enum drm_dp_phy dp_phy =3D DP_PHY_LTTPR(i); =20 - ret =3D msm_dp_ctrl_link_train_1_2(ctrl, training_step, dp_phy); - msm_dp_ctrl_clear_training_pattern(ctrl, dp_phy); + ret =3D msm_dp_ctrl_link_train_1_2(ctrl, panel, training_step, dp_phy); + msm_dp_ctrl_clear_training_pattern(ctrl, panel, dp_phy); =20 if (ret) break; @@ -1682,7 +1692,7 @@ static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_= private *ctrl, goto end; } =20 - ret =3D msm_dp_ctrl_link_train_1_2(ctrl, training_step, DP_PHY_DPRX); + ret =3D msm_dp_ctrl_link_train_1_2(ctrl, panel, training_step, DP_PHY_DPR= X); if (ret) { DRM_ERROR("link training on sink failed. ret=3D%d\n", ret); goto end; @@ -1695,6 +1705,7 @@ static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_= private *ctrl, } =20 static int msm_dp_ctrl_setup_main_link(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel, int *training_step) { int ret =3D 0; @@ -1710,7 +1721,7 @@ static int msm_dp_ctrl_setup_main_link(struct msm_dp_= ctrl_private *ctrl, * a link training pattern, we have to first do soft reset. */ =20 - ret =3D msm_dp_ctrl_link_train(ctrl, training_step); + ret =3D msm_dp_ctrl_link_train(ctrl, panel, training_step); =20 return ret; } @@ -1809,11 +1820,12 @@ static void msm_dp_ctrl_link_clk_disable(struct msm= _dp_ctrl *msm_dp_ctrl) str_on_off(ctrl->core_clks_on)); } =20 -static int msm_dp_ctrl_enable_mainlink_clocks(struct msm_dp_ctrl_private *= ctrl) +static int msm_dp_ctrl_enable_mainlink_clocks(struct msm_dp_ctrl_private *= ctrl, + struct msm_dp_panel *panel) { int ret =3D 0; struct phy *phy =3D ctrl->phy; - const u8 *dpcd =3D ctrl->panel->dpcd; + const u8 *dpcd =3D panel->dpcd; =20 ctrl->phy_opts.dp.lanes =3D ctrl->link->link_params.num_lanes; ctrl->phy_opts.dp.link_rate =3D ctrl->link->link_params.rate / 100; @@ -1865,13 +1877,14 @@ static void msm_dp_ctrl_psr_exit(struct msm_dp_ctrl= _private *ctrl) msm_dp_write_link(ctrl, REG_PSR_CMD, cmd); } =20 -void msm_dp_ctrl_config_psr(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_config_psr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl); u32 cfg; =20 - if (!ctrl->panel->psr_cap.version) + if (!panel->psr_cap.version) return; =20 /* enable PSR1 function */ @@ -1886,12 +1899,13 @@ void msm_dp_ctrl_config_psr(struct msm_dp_ctrl *msm= _dp_ctrl) drm_dp_dpcd_write(ctrl->aux, DP_PSR_EN_CFG, &cfg, 1); } =20 -void msm_dp_ctrl_set_psr(struct msm_dp_ctrl *msm_dp_ctrl, bool enter) +void msm_dp_ctrl_set_psr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel, bool enter) { struct msm_dp_ctrl_private *ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl); =20 - if (!ctrl->panel->psr_cap.version) + if (!panel->psr_cap.version) return; =20 /* @@ -1961,7 +1975,8 @@ void msm_dp_ctrl_phy_exit(struct msm_dp_ctrl *msm_dp_= ctrl) phy_exit(phy); } =20 -static int msm_dp_ctrl_reinitialize_mainlink(struct msm_dp_ctrl_private *c= trl) +static int msm_dp_ctrl_reinitialize_mainlink(struct msm_dp_ctrl_private *c= trl, + struct msm_dp_panel *panel) { struct phy *phy =3D ctrl->phy; int ret =3D 0; @@ -1982,7 +1997,7 @@ static int msm_dp_ctrl_reinitialize_mainlink(struct m= sm_dp_ctrl_private *ctrl) /* hw recommended delay before re-enabling clocks */ msleep(20); =20 - ret =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl); + ret =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl, panel); if (ret) { DRM_ERROR("Failed to enable mainlink clks. ret=3D%d\n", ret); return ret; @@ -1991,7 +2006,8 @@ static int msm_dp_ctrl_reinitialize_mainlink(struct m= sm_dp_ctrl_private *ctrl) return ret; } =20 -static int msm_dp_ctrl_deinitialize_mainlink(struct msm_dp_ctrl_private *c= trl) +static int msm_dp_ctrl_deinitialize_mainlink(struct msm_dp_ctrl_private *c= trl, + struct msm_dp_panel *panel) { struct phy *phy; =20 @@ -1999,7 +2015,7 @@ static int msm_dp_ctrl_deinitialize_mainlink(struct m= sm_dp_ctrl_private *ctrl) =20 msm_dp_ctrl_mainlink_disable(ctrl); =20 - msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl); + msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl, panel); =20 dev_pm_opp_set_rate(ctrl->dev, 0); msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl); @@ -2013,7 +2029,8 @@ static int msm_dp_ctrl_deinitialize_mainlink(struct m= sm_dp_ctrl_private *ctrl) return 0; } =20 -static int msm_dp_ctrl_link_maintenance(struct msm_dp_ctrl_private *ctrl) +static int msm_dp_ctrl_link_maintenance(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel) { int ret =3D 0; int training_step =3D DP_TRAINING_NONE; @@ -2023,11 +2040,11 @@ static int msm_dp_ctrl_link_maintenance(struct msm_= dp_ctrl_private *ctrl) ctrl->link->phy_params.p_level =3D 0; ctrl->link->phy_params.v_level =3D 0; =20 - ret =3D msm_dp_ctrl_setup_main_link(ctrl, &training_step); + ret =3D msm_dp_ctrl_setup_main_link(ctrl, panel, &training_step); if (ret) goto end; =20 - msm_dp_ctrl_clear_training_pattern(ctrl, DP_PHY_DPRX); + msm_dp_ctrl_clear_training_pattern(ctrl, panel, DP_PHY_DPRX); =20 msm_dp_write_link(ctrl, REG_DP_STATE_CTRL, DP_STATE_CTRL_SEND_VIDEO); =20 @@ -2206,7 +2223,8 @@ static void msm_dp_ctrl_off_pixel_clk(struct msm_dp_c= trl *msm_dp_ctrl) } } =20 -static int msm_dp_ctrl_process_phy_test_request(struct msm_dp_ctrl_private= *ctrl) +static int msm_dp_ctrl_process_phy_test_request(struct msm_dp_ctrl_private= *ctrl, + struct msm_dp_panel *panel) { int ret; unsigned long pixel_rate; @@ -2222,15 +2240,15 @@ static int msm_dp_ctrl_process_phy_test_request(str= uct msm_dp_ctrl_private *ctrl * running. Add the global reset just before disabling the * link clocks and core clocks. */ - msm_dp_ctrl_off(&ctrl->msm_dp_ctrl); + msm_dp_ctrl_off(&ctrl->msm_dp_ctrl, panel); =20 - ret =3D msm_dp_ctrl_on_link(&ctrl->msm_dp_ctrl); + ret =3D msm_dp_ctrl_on_link(&ctrl->msm_dp_ctrl, panel); if (ret) { DRM_ERROR("failed to enable DP link controller\n"); return ret; } =20 - pixel_rate =3D ctrl->panel->msm_dp_mode.drm_mode.clock; + pixel_rate =3D panel->msm_dp_mode.drm_mode.clock; ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); =20 msm_dp_ctrl_send_phy_test_pattern(ctrl); @@ -2238,7 +2256,8 @@ static int msm_dp_ctrl_process_phy_test_request(struc= t msm_dp_ctrl_private *ctrl return 0; } =20 -void msm_dp_ctrl_handle_sink_request(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_handle_sink_request(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl; u32 sink_request =3D 0x0; @@ -2253,14 +2272,14 @@ void msm_dp_ctrl_handle_sink_request(struct msm_dp_= ctrl *msm_dp_ctrl) =20 if (sink_request & DP_TEST_LINK_PHY_TEST_PATTERN) { drm_dbg_dp(ctrl->drm_dev, "PHY_TEST_PATTERN request\n"); - if (msm_dp_ctrl_process_phy_test_request(ctrl)) { + if (msm_dp_ctrl_process_phy_test_request(ctrl, panel)) { DRM_ERROR("process phy_test_req failed\n"); return; } } =20 if (sink_request & DP_LINK_STATUS_UPDATED) { - if (msm_dp_ctrl_link_maintenance(ctrl)) { + if (msm_dp_ctrl_link_maintenance(ctrl, panel)) { DRM_ERROR("LM failed: TEST_LINK_TRAINING\n"); return; } @@ -2268,7 +2287,7 @@ void msm_dp_ctrl_handle_sink_request(struct msm_dp_ct= rl *msm_dp_ctrl) =20 if (sink_request & DP_TEST_LINK_TRAINING) { msm_dp_link_send_test_response(ctrl->link); - if (msm_dp_ctrl_link_maintenance(ctrl)) { + if (msm_dp_ctrl_link_maintenance(ctrl, panel)) { DRM_ERROR("LM failed: TEST_LINK_TRAINING\n"); return; } @@ -2304,7 +2323,8 @@ static bool msm_dp_ctrl_channel_eq_ok(struct msm_dp_c= trl_private *ctrl) return drm_dp_channel_eq_ok(link_status, num_lanes); } =20 -int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl) +int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { int rc =3D 0; struct msm_dp_ctrl_private *ctrl; @@ -2320,8 +2340,8 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) =20 ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); =20 - rate =3D ctrl->panel->link_info.rate; - pixel_rate =3D ctrl->panel->msm_dp_mode.drm_mode.clock; + rate =3D panel->link_info.rate; + pixel_rate =3D panel->msm_dp_mode.drm_mode.clock; =20 msm_dp_ctrl_core_clk_enable(&ctrl->msm_dp_ctrl); =20 @@ -2333,8 +2353,8 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) } else { ctrl->link->link_params.rate =3D rate; ctrl->link->link_params.num_lanes =3D - ctrl->panel->link_info.num_lanes; - if (ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420) + panel->link_info.num_lanes; + if (panel->msm_dp_mode.out_fmt_is_yuv_420) pixel_rate >>=3D 1; } =20 @@ -2342,13 +2362,13 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_= ctrl) ctrl->link->link_params.rate, ctrl->link->link_params.num_lanes, pixel_rate); =20 - rc =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl); + rc =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl, panel); if (rc) return rc; =20 while (--link_train_max_retries) { training_step =3D DP_TRAINING_NONE; - rc =3D msm_dp_ctrl_setup_main_link(ctrl, &training_step); + rc =3D msm_dp_ctrl_setup_main_link(ctrl, panel, &training_step); if (rc =3D=3D 0) { /* training completed successfully */ break; @@ -2367,7 +2387,7 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) * some lanes are ready, * reduce lane number */ - rc =3D msm_dp_ctrl_link_lane_down_shift(ctrl); + rc =3D msm_dp_ctrl_link_lane_down_shift(ctrl, panel); if (rc < 0) { /* lane =3D=3D 1 already */ /* end with failure */ break; @@ -2388,7 +2408,7 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ct= rl) ctrl->link->link_params.num_lanes)) rc =3D msm_dp_ctrl_link_rate_down_shift(ctrl); else - rc =3D msm_dp_ctrl_link_lane_down_shift(ctrl); + rc =3D msm_dp_ctrl_link_lane_down_shift(ctrl, panel); =20 if (rc < 0) { /* end with failure */ @@ -2396,10 +2416,10 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_= ctrl) } =20 /* stop link training before start re training */ - msm_dp_ctrl_clear_training_pattern(ctrl, DP_PHY_DPRX); + msm_dp_ctrl_clear_training_pattern(ctrl, panel, DP_PHY_DPRX); } =20 - rc =3D msm_dp_ctrl_reinitialize_mainlink(ctrl); + rc =3D msm_dp_ctrl_reinitialize_mainlink(ctrl, panel); if (rc) { DRM_ERROR("Failed to reinitialize mainlink. rc=3D%d\n", rc); break; @@ -2420,20 +2440,21 @@ int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_= ctrl) * link training failed * end txing train pattern here */ - msm_dp_ctrl_clear_training_pattern(ctrl, DP_PHY_DPRX); + msm_dp_ctrl_clear_training_pattern(ctrl, panel, DP_PHY_DPRX); =20 - msm_dp_ctrl_deinitialize_mainlink(ctrl); + msm_dp_ctrl_deinitialize_mainlink(ctrl, panel); rc =3D -ECONNRESET; } =20 return rc; } =20 -static int msm_dp_ctrl_link_retrain(struct msm_dp_ctrl_private *ctrl) +static int msm_dp_ctrl_link_retrain(struct msm_dp_ctrl_private *ctrl, + struct msm_dp_panel *panel) { int training_step =3D DP_TRAINING_NONE; =20 - return msm_dp_ctrl_setup_main_link(ctrl, &training_step); + return msm_dp_ctrl_setup_main_link(ctrl, panel, &training_step); } =20 static void msm_dp_ctrl_config_msa(struct msm_dp_ctrl_private *ctrl, @@ -2504,7 +2525,9 @@ static void msm_dp_ctrl_config_msa(struct msm_dp_ctrl= _private *ctrl, msm_dp_write_link(ctrl, REG_DP_SOFTWARE_NVID, nvid); } =20 -int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool fo= rce_link_train) +int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel, + bool force_link_train) { int ret =3D 0; struct msm_dp_ctrl_private *ctrl; @@ -2523,7 +2546,7 @@ int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl = *msm_dp_ctrl, bool force_li ctrl->core_clks_on, ctrl->link_clks_on, ctrl->stream_clks_on); =20 if (!ctrl->link_clks_on) { /* link clk is off */ - ret =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl); + ret =3D msm_dp_ctrl_enable_mainlink_clocks(ctrl, panel); if (ret) { DRM_ERROR("Failed to start link clocks. ret=3D%d\n", ret); return ret; @@ -2531,15 +2554,15 @@ int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctr= l *msm_dp_ctrl, bool force_li } =20 if (force_link_train || !msm_dp_ctrl_channel_eq_ok(ctrl)) - msm_dp_ctrl_link_retrain(ctrl); + msm_dp_ctrl_link_retrain(ctrl, panel); =20 /* stop txing train pattern to end link training */ - msm_dp_ctrl_clear_training_pattern(ctrl, DP_PHY_DPRX); + msm_dp_ctrl_clear_training_pattern(ctrl, panel, DP_PHY_DPRX); =20 return ret; } =20 -int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl) +int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, struct msm_dp_p= anel *panel) { int ret =3D 0; bool mainlink_ready =3D false; @@ -2552,10 +2575,10 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_d= p_ctrl) =20 ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); =20 - pixel_rate_orig =3D ctrl->panel->msm_dp_mode.drm_mode.clock; + pixel_rate_orig =3D panel->msm_dp_mode.drm_mode.clock; pixel_rate =3D pixel_rate_orig; =20 - if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_4= 20) + if (msm_dp_ctrl->wide_bus_en || panel->msm_dp_mode.out_fmt_is_yuv_420) pixel_rate >>=3D 1; =20 drm_dbg_dp(ctrl->drm_dev, "pixel_rate=3D%lu\n", pixel_rate); @@ -2572,18 +2595,18 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_d= p_ctrl) =20 msm_dp_ctrl_lane_mapping(ctrl); msm_dp_setup_peripheral_flush(ctrl); - msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl, panel); =20 - msm_dp_ctrl_configure_source_params(ctrl); + msm_dp_ctrl_configure_source_params(ctrl, panel); =20 msm_dp_ctrl_config_msa(ctrl, ctrl->link->link_params.rate, pixel_rate_orig, - ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420); + panel->msm_dp_mode.out_fmt_is_yuv_420); =20 - msm_dp_panel_clear_dsc_dto(ctrl->panel); + msm_dp_panel_clear_dsc_dto(panel); =20 - msm_dp_ctrl_setup_tr_unit(ctrl); + msm_dp_ctrl_setup_tr_unit(ctrl, panel); =20 msm_dp_write_link(ctrl, REG_DP_STATE_CTRL, DP_STATE_CTRL_SEND_VIDEO); =20 @@ -2611,7 +2634,8 @@ void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl *msm_d= p_ctrl) phy_init(phy); } =20 -void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl; struct phy *phy; @@ -2619,11 +2643,11 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctr= l) ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); phy =3D ctrl->phy; =20 - msm_dp_panel_disable_vsc_sdp(ctrl->panel); + msm_dp_panel_disable_vsc_sdp(panel); =20 msm_dp_ctrl_mainlink_disable(ctrl); =20 - msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl); + msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl, panel); =20 msm_dp_ctrl_off_pixel_clk(msm_dp_ctrl); dev_pm_opp_set_rate(ctrl->dev, 0); @@ -2632,7 +2656,8 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl) phy_power_off(phy); } =20 -irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl) +irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl; u32 isr; @@ -2643,7 +2668,7 @@ irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_d= p_ctrl) =20 ctrl =3D container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctr= l); =20 - if (ctrl->panel->psr_cap.version) { + if (panel->psr_cap.version) { isr =3D msm_dp_ctrl_get_psr_interrupt(ctrl); =20 if (isr) @@ -2732,7 +2757,7 @@ static int msm_dp_ctrl_clk_init(struct msm_dp_ctrl *m= sm_dp_ctrl) } =20 struct msm_dp_ctrl *msm_dp_ctrl_get(struct device *dev, struct msm_dp_link= *link, - struct msm_dp_panel *panel, struct drm_dp_aux *aux, + struct drm_dp_aux *aux, struct phy *phy, void __iomem *ahb_base, void __iomem *link_base) @@ -2740,7 +2765,7 @@ struct msm_dp_ctrl *msm_dp_ctrl_get(struct device *de= v, struct msm_dp_link *link struct msm_dp_ctrl_private *ctrl; int ret; =20 - if (!dev || !panel || !aux || !link) { + if (!dev || !aux || !link) { DRM_ERROR("invalid input\n"); return ERR_PTR(-EINVAL); } @@ -2768,7 +2793,6 @@ struct msm_dp_ctrl *msm_dp_ctrl_get(struct device *de= v, struct msm_dp_link *link init_completion(&ctrl->video_comp); =20 /* in parameters */ - ctrl->panel =3D panel; ctrl->aux =3D aux; ctrl->link =3D link; ctrl->dev =3D dev; diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_c= trl.h index 5d615f50d13b..00b430392a52 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -16,28 +16,36 @@ struct msm_dp_ctrl { =20 struct phy; =20 -int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl); -int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl); -int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool fo= rce_link_train); -void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl); +int msm_dp_ctrl_on_link(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); +int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, struct msm_dp_p= anel *panel); +int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel, + bool force_link_train); +void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl); -irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl); -void msm_dp_ctrl_handle_sink_request(struct msm_dp_ctrl *msm_dp_ctrl); +irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); +void msm_dp_ctrl_handle_sink_request(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); struct msm_dp_ctrl *msm_dp_ctrl_get(struct device *dev, struct msm_dp_link *link, - struct msm_dp_panel *panel, struct drm_dp_aux *aux, struct phy *phy, void __iomem *ahb_base, void __iomem *link_base); =20 -void msm_dp_ctrl_reset(struct msm_dp_ctrl *msm_dp_ctrl); +void msm_dp_ctrl_reset(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); void msm_dp_ctrl_phy_init(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_phy_exit(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_irq_phy_exit(struct msm_dp_ctrl *msm_dp_ctrl); =20 -void msm_dp_ctrl_set_psr(struct msm_dp_ctrl *msm_dp_ctrl, bool enable); -void msm_dp_ctrl_config_psr(struct msm_dp_ctrl *msm_dp_ctrl); +void msm_dp_ctrl_set_psr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel, bool enable); +void msm_dp_ctrl_config_psr(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); =20 int msm_dp_ctrl_core_clk_enable(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_core_clk_disable(struct msm_dp_ctrl *msm_dp_ctrl); diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index b8dab3f8a7c2..230e14615a23 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -359,7 +359,7 @@ static void msm_dp_display_host_init(struct msm_dp_disp= lay_private *dp) dp->phy_initialized); =20 msm_dp_ctrl_core_clk_enable(dp->ctrl); - msm_dp_ctrl_reset(dp->ctrl); + msm_dp_ctrl_reset(dp->ctrl, dp->panel); msm_dp_ctrl_enable_irq(dp->ctrl); msm_dp_aux_init(dp->aux); dp->core_initialized =3D true; @@ -371,7 +371,7 @@ static void msm_dp_display_host_deinit(struct msm_dp_di= splay_private *dp) dp->msm_dp_display.connector_type, dp->core_initialized, dp->phy_initialized); =20 - msm_dp_ctrl_reset(dp->ctrl); + msm_dp_ctrl_reset(dp->ctrl, dp->panel); msm_dp_ctrl_disable_irq(dp->ctrl); msm_dp_aux_deinit(dp->aux); msm_dp_ctrl_core_clk_disable(dp->ctrl); @@ -392,7 +392,7 @@ static int msm_dp_display_handle_irq_hpd(struct msm_dp_= display_private *dp) =20 drm_dbg_dp(dp->drm_dev, "%d\n", sink_request); =20 - msm_dp_ctrl_handle_sink_request(dp->ctrl); + msm_dp_ctrl_handle_sink_request(dp->ctrl, dp->panel); =20 if (sink_request & DP_TEST_LINK_VIDEO_PATTERN) msm_dp_display_handle_video_request(dp); @@ -570,7 +570,7 @@ static int msm_dp_init_sub_modules(struct msm_dp_displa= y_private *dp) goto error_link; } =20 - dp->ctrl =3D msm_dp_ctrl_get(dev, dp->link, dp->panel, dp->aux, + dp->ctrl =3D msm_dp_ctrl_get(dev, dp->link, dp->aux, phy, dp->ahb_base, dp->link_base); if (IS_ERR(dp->ctrl)) { rc =3D PTR_ERR(dp->ctrl); @@ -642,12 +642,12 @@ static int msm_dp_display_prepare_link(struct msm_dp_= display_private *dp) force_link_train =3D true; } =20 - rc =3D msm_dp_ctrl_on_link(dp->ctrl); + rc =3D msm_dp_ctrl_on_link(dp->ctrl, dp->panel); if (rc) DRM_ERROR("Failed link training (rc=3D%d)\n", rc); // TODO: schedule drm_connector_set_link_status_property() =20 - return msm_dp_ctrl_prepare_stream_on(dp->ctrl, force_link_train); + return msm_dp_ctrl_prepare_stream_on(dp->ctrl, dp->panel, force_link_trai= n); } =20 static int msm_dp_display_enable(struct msm_dp_display_private *dp) @@ -661,7 +661,7 @@ static int msm_dp_display_enable(struct msm_dp_display_= private *dp) return 0; } =20 - rc =3D msm_dp_ctrl_on_stream(dp->ctrl); + rc =3D msm_dp_ctrl_on_stream(dp->ctrl, dp->panel); if (!rc) msm_dp_display->power_on =3D true; =20 @@ -686,7 +686,7 @@ static int msm_dp_display_post_enable(struct msm_dp *ms= m_dp_display) msm_dp_display_handle_plugged_change(msm_dp_display, true); =20 if (msm_dp_display->psr_supported) - msm_dp_ctrl_config_psr(dp->ctrl); + msm_dp_ctrl_config_psr(dp->ctrl, dp->panel); =20 return 0; } @@ -725,7 +725,7 @@ static int msm_dp_display_disable(struct msm_dp_display= _private *dp) =20 /* set dongle to D3 (power off) mode */ msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true); - msm_dp_ctrl_off(dp->ctrl); + msm_dp_ctrl_off(dp->ctrl, dp->panel); /* re-init the PHY so that we can listen to Dongle disconnect */ msm_dp_ctrl_reinit_phy(dp->ctrl); } else { @@ -733,7 +733,7 @@ static int msm_dp_display_disable(struct msm_dp_display= _private *dp) * unplugged interrupt * dongle unplugged out of DUT */ - msm_dp_ctrl_off(dp->ctrl); + msm_dp_ctrl_off(dp->ctrl, dp->panel); msm_dp_display_host_phy_exit(dp); } =20 @@ -869,7 +869,7 @@ void msm_dp_display_set_psr(struct msm_dp *msm_dp_displ= ay, bool enter) } =20 dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); - msm_dp_ctrl_set_psr(dp->ctrl, enter); + msm_dp_ctrl_set_psr(dp->ctrl, dp->panel, enter); } =20 /** @@ -979,7 +979,7 @@ static irqreturn_t msm_dp_display_irq_handler(int irq, = void *dev_id) } =20 /* DP controller isr */ - ret |=3D msm_dp_ctrl_isr(dp->ctrl); + ret |=3D msm_dp_ctrl_isr(dp->ctrl, dp->panel); =20 return ret; } --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 EFE283F5BE5 for ; Tue, 9 Jun 2026 09:47:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998456; cv=none; b=ff+bZf0iaSqKh5nTlwBYXvIa+aoixuY9HlA7l8xtO4ERdGzg8h3IEAsUXqbOH8ZrIlyA3IsByAeWJ6lMAI1ptSUZC6zzZSanz522QzdTQYCDMNCxjyGk/aKH72i2CjI78GCO4q6P0WK7V86WI5ZuixEZatsvvQZcaQUc/AC4z1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998456; c=relaxed/simple; bh=gBQT/Y5ZNW+Ey9wkKWiGORr1X84QSCGzRIOGvoBugf4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nCaZWY0pxnb0+HOxwS98akNoKTxJvBiQkuQ8YuUNPV19LsdKGde8tWqOM0T+mMVA9mFNNxMkm5++URKMxwNUntDzSzNS1t0FOHO5snP2YP9p/ETTfBxIHohawCEngveqhR4t4aZQ64wnPw6/wh1/Yza4+CPpwVNjeIsaYjRGYMk= 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=dzxs3kCY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ciQjKS8n; arc=none smtp.client-ip=205.220.168.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="dzxs3kCY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ciQjKS8n" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65985U2K006890 for ; Tue, 9 Jun 2026 09:47:34 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= oLgp/E7dZZ3XA3/5TWWpxvhDXhHZaG1LDXI6Ib9fI60=; b=dzxs3kCYfS5+IF8o 6Jmpdl01PaM95u5tVC1n2Putc3k7DS4ZnRBQQKUaXJaG3ghxmlBx+DnZK9PBB6tP jDVVyF/eyALmXfIGQbfOmK69DA4+UKS1Y9BKuTsIUB9Te87ozAAPBYoLcgRzhPF9 vGQsakE8fPUlMk1gZVDLLZQL5yyKxfb7MEvAYTXD+mXpRx9RxjLUVSKz83+E1sdh RGrBvZLtZiPNJYmFNSnkAYDoB0U0aaPpZXRdEr27dTDXFDhvYMKCbgvPrI85DFyA 6sri2AaRxaLMEA/Mi1KTtYmgstkZoIMnQ/AZKpj3NXU3cE9WEhfZknb7x2xRN9iv ynzwXA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epf0srdmc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:34 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-9157116b988so1323317185a.0 for ; Tue, 09 Jun 2026 02:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998453; x=1781603253; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=oLgp/E7dZZ3XA3/5TWWpxvhDXhHZaG1LDXI6Ib9fI60=; b=ciQjKS8nyzlo6lwM4lWNHi/xHGJcv3DiWViclnxnyoVJx1KjkbVeHj/eXCzcVrUYHF WeJGPYWMsYrRgR/Y0B4NmKiD8MZzHY/RATQ1OxE/IFq/OdWE5h00hOdGyOAK2yRSPctr FK4Kx1TLjSsPttGUCppjXuhjP9exnyjKOtOBPCPyPlfegAYNydi3ipnxpYZgLjQxH30v Nt5qK8LC/CBihcKlpCj8TscnT5hk9CazBNC56IPqgdisqHF/UoLAdi1WgAwmYJBeSzjw uEIIZvrYN7/vvraASFCr8XVdKjuMvg7I81TpEMK/KPnLWYJam1MfpI2yNVKExNUfyXnz NJGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998453; x=1781603253; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oLgp/E7dZZ3XA3/5TWWpxvhDXhHZaG1LDXI6Ib9fI60=; b=IhbxEQSz3NYBarJNq9rLCKFQifMMs0g5NvREjLPteE8rZWGT6lxlblNNsH0/BmbgZi ATf7hRWqj61tBaEqdOp0Gicx7F+47B1I9Y24BaGQdwsB1u4tH8OisYHTuLtLZEnuiNna MyfWuhiUTtamBJuVvUn2xqb5sGGVFl9jvS+t1xCko7UYBKXA6lWa7Pr6S/RfjbRImfIb WlXyiqHWPC7P/ygqnhX39uC6CUXSnlU1pBsLzpZYxEsp3pMQJMRpacTykMIjeFyUUM1K QTMiTTGZBcjGRpM8W6EbJ4VkUcbFgN6QOBdmXZrmG0oLo8t19XX5Jvp2oFnSO1DESK2Q v/LA== X-Forwarded-Encrypted: i=1; AFNElJ8GcP5cC8yYrVkRFz9+TBi72E4oNkCqYcsNl9+sFGsPtMIY0+06+Gw5ORUhYrb/x5DDphLWyjvueBZ8VGM=@vger.kernel.org X-Gm-Message-State: AOJu0YyoQZS/kKl90JnRXoAU8bUx38JeDXJQ8xqT2Bq3xnaUtjxdqA1x rZvqHZ8eDQC8D4zO0VeyGll9VFlDztOWdPTYiSEWUrcKfJ5yoYYL4RWfPCogbL8ky4YgeHC4aJ/ Yx8CJcU7UyE84k7+VahA8k0OPhSKIcTLdzl3QWCFyzbPlz0Y89amS6Vlt7/uv6wbF5yc= X-Gm-Gg: Acq92OEuOYRLhYyecf8OpiqC8biXw+mejn5z+Zjuvmp6DVQaslmXwCW7Fixx7Yj5Vqt dqRUw7miGPEHAGpmh8Uxh7HOJ5pwjQwumNr808AQfUBn0BVu076fn1Lp8/O6EuON3HUI1H2zgm3 oC+kG2JgFFKpZpsitJesMKK5jze/QvYSe29ceWXjinlCir9dGDDOk6KqMdVuuTTg++BOULXq05Q L4rZGmK9RXaZM52EzdnVpkzMBXSGb14qFxBmNmSf6m2IuoCHIlX7TAm8sLGuXmrpd1JnFhDhV4s TIFHyazhugKy43wZtDhIAEsZC1jc94V9XF24GBJbLql+ADg6sU0QoqlntMLftt5QX80XGm/Zo9j 72QY4qDzE+QRhAWn+pl6FhKZjk9TB5WWRgYRdaNUXPB13psAtRj7/PE3kExh38jwOLWxLyYOS5n rTEilWf20KM8cJlCusGQ== X-Received: by 2002:a05:620a:439f:b0:915:94f7:55df with SMTP id af79cd13be357-915a9cb224fmr2865691785a.20.1780998453299; Tue, 09 Jun 2026 02:47:33 -0700 (PDT) X-Received: by 2002:a05:620a:439f:b0:915:94f7:55df with SMTP id af79cd13be357-915a9cb224fmr2865688985a.20.1780998452904; Tue, 09 Jun 2026 02:47:32 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:32 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:33 +0800 Subject: [PATCH v7 11/15] drm/msm/dp: split dp_ctrl_off() into stream and link parts 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-11-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=3896; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=V50+Rq87Zu55c599ZG/HVdfIbWqRw5QteR34CLOzRzw=; b=8JtMKVjwvmt+e2ppGSAUvJQoPjq3T1WtagBOkM/lfK/BuBRO77wxwYY/FIO5Pab9ahzN7h6gP LMLAdP9NbyyB/maC8ARI2xEfYlKpWMkyhoso441SKCsASyP2Aetvwnj X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX+KnegAyYO/18 Vw56stWdwJBAStUE5ATYEbubM8+dxs2kHzSYP9sjEjsjZ/eRT1ZRuwux9gRssU8H75I2ERM8FB6 P9JcGXlTos2oWCShreimv6yOkyY9tpt/jR+1RXSeYEbHBVzW4VV72BqZ7aEzSTbWUJX4BU2+bLS fHXRV6a4bkn42zWcW0vrPYvmEmworCrQm2Cxq4e93HZbVushbj5oGhcehwbPdztCf6xA4KxXP6o 98NwS7aeiiP2ZYtxanWYtXPrbA+8TB1hVcENQe0+iHp1aOnK+zjFnV8r3fv1dEejwutyxWaQjBy bsD8ti18Z3TcFnWRAqfEXII2fgH4pKD2eKYv58gLOtx1yuycYQ9FqpFNCEfaldZesocOVt3Ne5z oqwi6+SN8RMKT0Kr79BPVJBpqEM6OXDukDkJZqjm7xljY2dgUgP8TmE2xueLSsBCEFfF3FFlrEK dRZbs+r5kNOt+qruRxw== X-Proofpoint-ORIG-GUID: 8joD7T_r6kGf7gFU21Oij7neH2azbBrz X-Proofpoint-GUID: 8joD7T_r6kGf7gFU21Oij7neH2azbBrz X-Authority-Analysis: v=2.4 cv=GeonWwXL c=1 sm=1 tr=0 ts=6a27e136 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=2kxiPxfbkJi5fZIrDGYA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW: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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar Split dp_ctrl_off() into stream and link parts so that for MST cases we can control the link and pixel parts separately. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 10 +++++----- drivers/gpu/drm/msm/dp/dp_ctrl.h | 5 +++-- drivers/gpu/drm/msm/dp/dp_display.c | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 87c3a5517911..90fba03de7f0 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2211,7 +2211,7 @@ static int msm_dp_ctrl_on_pixel_clk(struct msm_dp_ctr= l_private *ctrl, unsigned l return ret; } =20 -static void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl) +void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl) { struct msm_dp_ctrl_private *ctrl; =20 @@ -2240,7 +2240,8 @@ static int msm_dp_ctrl_process_phy_test_request(struc= t msm_dp_ctrl_private *ctrl * running. Add the global reset just before disabling the * link clocks and core clocks. */ - msm_dp_ctrl_off(&ctrl->msm_dp_ctrl, panel); + msm_dp_ctrl_off_pixel_clk(&ctrl->msm_dp_ctrl); + msm_dp_ctrl_off_link(&ctrl->msm_dp_ctrl, panel); =20 ret =3D msm_dp_ctrl_on_link(&ctrl->msm_dp_ctrl, panel); if (ret) { @@ -2634,8 +2635,8 @@ void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl *msm_d= p_ctrl) phy_init(phy); } =20 -void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl, - struct msm_dp_panel *panel) +void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel) { struct msm_dp_ctrl_private *ctrl; struct phy *phy; @@ -2649,7 +2650,6 @@ void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl, =20 msm_dp_ctrl_reset(&ctrl->msm_dp_ctrl, panel); =20 - msm_dp_ctrl_off_pixel_clk(msm_dp_ctrl); dev_pm_opp_set_rate(ctrl->dev, 0); msm_dp_ctrl_link_clk_disable(&ctrl->msm_dp_ctrl); =20 diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_c= trl.h index 00b430392a52..5902cf7e746a 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -22,8 +22,9 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl= , struct msm_dp_panel * int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, struct msm_dp_panel *panel, bool force_link_train); -void msm_dp_ctrl_off(struct msm_dp_ctrl *msm_dp_ctrl, - struct msm_dp_panel *panel); +void msm_dp_ctrl_off_link(struct msm_dp_ctrl *msm_dp_ctrl, + struct msm_dp_panel *panel); +void msm_dp_ctrl_off_pixel_clk(struct msm_dp_ctrl *msm_dp_ctrl); void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl); irqreturn_t msm_dp_ctrl_isr(struct msm_dp_ctrl *msm_dp_ctrl, struct msm_dp_panel *panel); diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 230e14615a23..8f472633da82 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -725,15 +725,16 @@ static int msm_dp_display_disable(struct msm_dp_displ= ay_private *dp) =20 /* set dongle to D3 (power off) mode */ msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true); - msm_dp_ctrl_off(dp->ctrl, dp->panel); - /* re-init the PHY so that we can listen to Dongle disconnect */ + msm_dp_ctrl_off_pixel_clk(dp->ctrl); + msm_dp_ctrl_off_link(dp->ctrl, dp->panel); msm_dp_ctrl_reinit_phy(dp->ctrl); } else { /* * unplugged interrupt * dongle unplugged out of DUT */ - msm_dp_ctrl_off(dp->ctrl, dp->panel); + msm_dp_ctrl_off_pixel_clk(dp->ctrl); + msm_dp_ctrl_off_link(dp->ctrl, dp->panel); msm_dp_display_host_phy_exit(dp); } =20 --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 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 C11373F6C33 for ; Tue, 9 Jun 2026 09:47:39 +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=1780998461; cv=none; b=dmTWNZCNSLrzw20/KBNyC9Pz03ThHQhFhgploUS2AYlfJffJQ++/jz4RhibTGZ/9JLU3aiwG1FxZYE2ASMOyPVAjd+2M10k2UflCbHWPbMwOQQgdWqfx2kT6SoIuAg/kPF+5MXnrW8xqKhhcOGp92SZ4UOyG8TNCFcr8SL/Ni3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998461; c=relaxed/simple; bh=4TJKG8RTz4R+dv3UNXgRl/mjeEf45SUuZJzked/IkbU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J8itmUFvSFDFzApe7JkplaHQhx0Y4QZ0Dkuq7NCcgD5DYDe7ehXIaCZfpgr1nH4L/miRDTNnDmin9CBDvyWybLG/t4zhS2n7LgOy/mXzU9fj6d4aFSpKnApP/47p/kSvKo3wURWHO7mXDUHtIFbrPL4UvB27BB+GLlitQkwR98Y= 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=OBv5PezH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AuCucTr8; 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="OBv5PezH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AuCucTr8" 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 6597rbWb2034662 for ; Tue, 9 Jun 2026 09:47:38 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= sRjgMQtRt4M0KMMF63fnqZRXOOmmbwogwYrfMYQ8brA=; b=OBv5PezHWAs57cz1 XWIp5N/xDSpiOHk7MJe1QJ4I4YJFx6ESrzTDWcofMItbt8yA8GQCAaRD2OllUsmJ NweKn2wbg/MEhMz/PD8Q0lLNGti2RDjGHdim6YXP3jQeMa9Zp3gvZwIxJX4fH7Xh IEIWGdi0u3MpOrvhi4/qVqkS2JII+CSuT9XSvnkxscFEBREfrwhXIBnRAQLaTr0w xIms7xyUu+imkg68mWNn8bAeo7M9DvW0/wqpaHRBDxxDtmcqV9YHpooclJcdXtZ1 jQMBzcQRbJWMPWZbpPbc8zhze2VEBT1e6edjLQvIawnUyM27u92D9FW8UHSycK03 F/Yfrw== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epeearjp1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:38 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-9157a31ac37so605222385a.2 for ; Tue, 09 Jun 2026 02:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998458; x=1781603258; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=sRjgMQtRt4M0KMMF63fnqZRXOOmmbwogwYrfMYQ8brA=; b=AuCucTr83B2scdkIVwVvx6IXqvvfRqwBROFTbvmFCrgi4DGgBHa1zkEF45oRCyXldB WRFti6KInUzhPWA0QI5YYzUfIiKsSsHjWbTmyiFqnRz9nVaukJpd6baCHlGbQvsp+R+y Mn4F/cgYiAA7uqtHQBUD9buILyQKT5cJ4EHFmyH/xlTuwM2HgnqFcuDp+If9/QU8fKHx cZGOmA0t0KWojX6wCcCRUaoTepNJzhISZ8WpCVmeCtC0nIb+S8nlyp/U019RRxcjlo3N ZMRvORom9qSEe/15Wvovd6oHuvS0oYY2X1OhuJ/bxXpwTb6ML/IozkVtePdL4gzfsssD IwoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998458; x=1781603258; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=sRjgMQtRt4M0KMMF63fnqZRXOOmmbwogwYrfMYQ8brA=; b=URW6EouQV2fKl/Uf0dGMNDaBIBMni8VMZF+/72lJ3MVDZxLM0pej2KatoyFp8HlQqt 0E6WyQErkiFU8CXqc4xrRdYCqlUWwftdq9y+JuI4EHsOU9+L+1h/7nD80mEOlGSblhym 8hgU2R8ZgmO1xnVffK9zHTK7yPOBGQ0x3Jq+rRApWNAIFLxud6vdmG9b/RL1eU54Vt5w 3wR/+r5D0BXDmxTvss4bQYk235zjvmJxhOq6Qiwxn2LB3WXBLdW0JvILNIUVc5/rABbA TS5L9Yl0ar/J65YOi84kRYijSL9ynrfOTsR4nuwM9OtkrKbN2W4OmIkZ1BpMup4lo1If Dm8Q== X-Forwarded-Encrypted: i=1; AFNElJ9INVDrpW6OvJdFVOTjUxDelAKvTwHSIRzNfs4ce1f4/Qg9VPR5sMfpMPHhpHTH8mQY6bihO9c6vakXGnI=@vger.kernel.org X-Gm-Message-State: AOJu0Ywou9+d18ZGWhA5ESe+y+rn508KzwvhIMYU//nbwtECHYsI0SN9 tP2zHcgxqewUApKiJkdFysxDvXprdvv08X1n2pheMV5IAMyW+qUAJGq6jnKr4m7vEpo7GtlrsGp s38spGX9KbVivO2150F5rePpSuW6XxdaHuquiwkpegrb4Ne5xA81xXJFabSc6CkUEUoc= X-Gm-Gg: Acq92OFDI6mY250jqpI3wAFPXw0zS0xSXBnuUy0M0p/8NwD/+vb5h0jzMEbpsxdL+Im Q1cgqBm53IpviMU2gCbAoJDxgJQLdO4XzKMOkqBJYSEVxzWkQ1J0ifby752sjt4uOJPjiRxEnDA JUdqg5cbyIos+N2981vB1B87+tvyGCoNql4UG/oM1Q6MUruh33C4JgFW5UyX2e9oFLyBHlvR5L1 3/909PTb1f25DcQUx1uKgOpIT78KkfEE48lKK3clYBKtVxyF34WsZuaLpK/G3UIAUZFeT6cLA3+ E1F9eldu6anHBqSh6vtzBI/UlURXYejGcKUlGlHWV78WVoZNfd2plSl9EI0lqzbCp7nNu/a2ITw +hZLA7g6ZMO/tfnTXKpC7lmhmCy5AjmsYXPpSI3kumc2P6Y8M/iNmBBaPXvv2zYZQ1op7B/eo1E +kdfairNjA/yvYxMffYQ== X-Received: by 2002:a05:620a:410d:b0:915:5930:94f1 with SMTP id af79cd13be357-915a9df2c2bmr3231751485a.47.1780998458175; Tue, 09 Jun 2026 02:47:38 -0700 (PDT) X-Received: by 2002:a05:620a:410d:b0:915:5930:94f1 with SMTP id af79cd13be357-915a9df2c2bmr3231748085a.47.1780998457753; Tue, 09 Jun 2026 02:47:37 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:37 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:34 +0800 Subject: [PATCH v7 12/15] drm/msm/dp: simplify link and clock disable sequence 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-12-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=1745; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=4TJKG8RTz4R+dv3UNXgRl/mjeEf45SUuZJzked/IkbU=; b=67mFLZcs9VBQqLt7xo15/S6j1IHHHZ3K34SenEqCrc5lvTHl07V13t6VKL+1o2FuYFBz0V8t7 2Dn5yBchox7BFFHn6ITXS4bw1TUlLoC5CURYvnEyvl8tl4vePoZanFU X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: VHIu6SpI0zj0RUzN1OXUCHL5IjfQVZdF X-Authority-Analysis: v=2.4 cv=Iey3n2qa c=1 sm=1 tr=0 ts=6a27e13a cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==: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=EUspDBNiAAAA:8 a=W1j8KJVysGQzs9t885kA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX5DyoOOVqZ/LE rA0ow2HciRWCLZvCQhqyicDN0wEmiYwpIuFEWVM2dXLLdeBk7rngk5d930ewpBQ7sDqllwsKg25 lBtTVl7WjyowikccQVbcIdoyhXlSWGq6ffO8QiP23ECdND1tsLiRW1oCU/GoKaFgBvdG+TvYVWW pbxo64wfyTnBqp3R671k0xMTtPazmNpk82WTBcaE2+ztlpo7ORrm8Qbi7ZL1hIza+1IGYM6MIKw l8tq0cmLs9/yw6u0ndMs0ySboulJW/B/GCvQtbawRtp2g59virTwjXv8cIc+GDxB6xRutz2Rm9a TkoRDTuOK5el0IEgDD1ATNZPisBooOEFQSW+nRwj10in8koiaBHqU2GtsXQpm5uh3XIrg1Fjx5A wtOXCk0yihHoPywRbOk+Ts2gczN1nNBR1M/DeoaRaov+1JD/vy9pVSrk/uSIFSXqatpOoA9uYKq i2lTiFVDcWioz/iU5RQ== X-Proofpoint-GUID: VHIu6SpI0zj0RUzN1OXUCHL5IjfQVZdF 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 clxscore=1015 priorityscore=1501 adultscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 Move the common disable steps out of the sink_count check to make the flow easier to follow. No functional change intended. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 8f472633da82..63e5b191f95c 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -716,27 +716,19 @@ static int msm_dp_display_disable(struct msm_dp_displ= ay_private *dp) =20 msm_dp_panel_disable_vsc_sdp(dp->panel); =20 - /* dongle is still connected but sinks are disconnected */ - if (dp->link->sink_count =3D=3D 0) { - /* - * irq_hpd with sink_count =3D 0 - * hdmi unplugged out of dongle - */ + msm_dp_ctrl_off_pixel_clk(dp->ctrl); =20 - /* set dongle to D3 (power off) mode */ + /* dongle is still connected but sinks are disconnected */ + if (dp->link->sink_count =3D=3D 0) msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true); - msm_dp_ctrl_off_pixel_clk(dp->ctrl); - msm_dp_ctrl_off_link(dp->ctrl, dp->panel); + + msm_dp_ctrl_off_link(dp->ctrl, dp->panel); + + if (dp->link->sink_count =3D=3D 0) + /* re-init the PHY so that we can listen to Dongle disconnect */ msm_dp_ctrl_reinit_phy(dp->ctrl); - } else { - /* - * unplugged interrupt - * dongle unplugged out of DUT - */ - msm_dp_ctrl_off_pixel_clk(dp->ctrl); - msm_dp_ctrl_off_link(dp->ctrl, dp->panel); + else msm_dp_display_host_phy_exit(dp); - } =20 msm_dp_display->power_on =3D false; =20 --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 946803E2750 for ; Tue, 9 Jun 2026 09:47:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998466; cv=none; b=H8xl670DGeZDdUUWyZPJm+gylKUkLMqBVtefNAH+wLoepzi3divUum1YgMrQ8ApCsEM3lbAQu8sfLJyAwapytaAEzb8UsntWxen2T7ahs0Vf8RDX+D4S5m/R1A+stFtY2DuOoZA5UiIthYFfXs1L/pNG/Va27WP4DLPrCL+KxcU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998466; c=relaxed/simple; bh=rHOJ/Tfly+p+zzltozyn9wJCqcj0lLLdlbTm8fgeIJ0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eUOHBO9zAg1w5xDzeCHlz21n0ejhkjmES/3XhdTn5CIHTEV6dwNyXGf71+i3p9CxIlP408V+FnZ+Q3J1BDB9qa5mxJlK/ibMAJIBsaPFX4w/z2qdccKBcvVbS617KIbjjLaq9HnkueiDwx4Q+ZC0HplcY+7KUjp8otzLyWHy8hg= 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=NJqMtT75; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=VjvdivEz; arc=none smtp.client-ip=205.220.168.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="NJqMtT75"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="VjvdivEz" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rN8k1584125 for ; Tue, 9 Jun 2026 09:47:45 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= PrpKel4Av768jUzNR25shjZmFALdbmxo17UJsOuCq8E=; b=NJqMtT75CfewzpSe GkjST2Uo2e8JFg7Fwk5bQoiokdkHsYD+Zstszo9xSSn0TvUaxUcENsOnq5VsylnV Yk4M48j+4j/ygs0wAXDTIfz+Cg6UX8lNacnpk3AVkVy4BW40Anl45D7npsmfdacg NIZRcYcM31nIhT8FovxqnKgOgQzP2KwTrxQkt4OULjoulgvZIp/wi8syEK5faY1Y N+zZTbWOTlTXnZpzhIefdru6OINjMI4jZQxDNeGZk6gs0hTi1e7SIwJwVRN1z4bc xnDaGnlVYaTn7+geknw8q8QkdHMVph2/QHJsqD6enidNYc8d6bb1VHGXcQXHieos vbGA6w== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epdeeruty-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:45 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-9157d38ab37so618557385a.1 for ; Tue, 09 Jun 2026 02:47:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998464; x=1781603264; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=PrpKel4Av768jUzNR25shjZmFALdbmxo17UJsOuCq8E=; b=VjvdivEzK/5JioI6rPoTqjoQ4KrLMzwWXoeTqcELRfn8aVYgzw1+r0qBJCPLWlYL8h zVJLfuthTz6uJMYCmam6i7N7tSzDGZogPdUq4tqx7UVCDOnLiVRmzJ9g01QJQG/u0eD7 s/mJvTJOOaB5JAkoTvEYj/7QqowOdvQU8BADHDIxXDh6DPlYRxo1vV/hPTO4s7fNeSG4 H4gOwsO8NvWpG+wXt+IKbEzEkhDk0zKRCdmFX+9tmPDMFDDUFudToZQbxD5N7sD3U7BE pX+0LuSU5SVOYobEI6reTd17RzGN2ulvgKCuTbrVUFwKzHydqaIdPiE1JRytfnruNA/X Sz+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998464; x=1781603264; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PrpKel4Av768jUzNR25shjZmFALdbmxo17UJsOuCq8E=; b=PIyfVWMQdCeTGog/JFggGsOTx2cz7G2NTmPuKbjg1svt03bLvEeq4ZiBf/qRQ/FojR 2f9ZgnwJriPnvCgbV+Ce1n/N9unYw3mXmvAGi/WvtJ72hZ/MdyxHagg/+AioLD0/kPW/ SQdqVmD3uf8MN2Y3hDD4NwYZ/LLekKox5rI+3xmYDA074oWvmxfLCJXuB0dn3bT6kTVC 3YDPABQe3bLDfc24gJ6bB95r0QJpmj6ACt7Ed9Hgg7wdCi4YbNYwxyInLho/b7sJd5Gk xUtg3o3CZxUBYeMmOk8Ml6jmQSxHEMtASm/T1qPL2Df9SNYxdFZlcKdb0vxtyRfP6oB3 R2/A== X-Forwarded-Encrypted: i=1; AFNElJ+1cOWxr8/wtEVnI38D3XMF8BMkD+OLWY4diEZZ/F1tVERib4LHpi6pJZOMvit1pKnUcKL6b1fyRETKhSI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4PRsOTLf8uMXHTb8lyvVCNZU3YGJUdfFu1bIUEay2KXBtg5Hl 0aSy1K4ZVlM8zgiSwgHw/zdZoxsbsj4zRPhp8f3D5HX+u8jlovsB0hq9D/37TaOHKSE35ruvL95 oRm/NkZV/fpgoQLQUjDefFvAgXOdi0ERbNLB2lN2gYg0If8KPwalfII1Prblubg2eBXc= X-Gm-Gg: Acq92OEBs3HcGebaxLrufYp8SnZ80sJGc05K9qhjavOVtl3iFz6D/o/qI8jeFLh/18C A28JSONyZUTGJ13qCEgwtyFmKlhJvLNAAKeTU8O+D3jvQfQHomNpI2gSHsopKq5kVpsgCZs/cEa E96jQbnU1bAZGTw/21mJiopiANcfyHhoNa86dPfpi6mGyV/AaZPAmUHk0k0UIB9DMjHLxvpKCqe ar+5I6I4b0/KlFH1lw594gdDMAxKyms8hMPpj/fx+h8aa/IJ8zsspOMf1IxmHcqR+5ASAIctFkU n9oPO4vX6r/O+L75Z+6g2SBWX04OtbF0NaGVoq/OOVQeu0P1Yt719Y0NxafmVz6BmRxHTu3meMA vSp6mSwgcnmbm9d/FoaTCq8Ay7v1S0EW1finumh0AFiRssNm+OFliLZ00r+mDGV+ULpG2kHtPkQ s/NX/v3+f1XswIqypEJQ== X-Received: by 2002:a05:620a:27c6:b0:915:e1db:7ab0 with SMTP id af79cd13be357-915e1db7b3dmr665714485a.45.1780998463815; Tue, 09 Jun 2026 02:47:43 -0700 (PDT) X-Received: by 2002:a05:620a:27c6:b0:915:e1db:7ab0 with SMTP id af79cd13be357-915e1db7b3dmr665710985a.45.1780998463358; Tue, 09 Jun 2026 02:47:43 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:42 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:35 +0800 Subject: [PATCH v7 13/15] drm/msm/dp: make bridge helpers use dp_display to allow re-use 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-13-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=8509; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=js7Ds0kDP3MA2PA3qJwTal/QoxqVBRyKdoKt/vuLT7c=; b=Q4czln2aTELSd+w2rD8AgSyWb3LyrU78Eghjd2ofwZFeJbLLneUz2atRy4Cjm9oWvrO1Wj6b2 GrlLOwEH2UhDazeOvuVqmvAYJY88S1AscjmkCpv0fopNm5eM2j617YA X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=H+DrBeYi c=1 sm=1 tr=0 ts=6a27e141 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=LmD7BKvqrCyCckpIDn8A:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX1iODNTfgu/qb D1i1NmJPnpLi2vtfgxGVkd0C3mFeWSOFHzG+CYE9ERhPYh3Y/fuqJbDw2l42xDQM0foUKwjV4vS LuVzNyLuYIm9ByuQ4Tu7xNaWPgT1UBYBRtkIbFby56HUgU9ZV3F/8xSyd+JvvLZcqjYQLAdkAUE jB2GZsL+bY7uWAV11cdmmqm/V6B0GVLvawqIJv+aNZK/prxyiDnfTLPkDhUw5t1zuRbyxnidaZ5 YZEo8Po3FYgyMz1/SZTRNFAUP1a4hePEE7G0RzyIWBC4YmkDJ/RcyysERVt4y3cgcImRoWuYtJL AHz/Qaqb8nmdwk+d8BtXufgXxge6TxSKyINTjv4TqZnIaLnwL8RVoEsQMm8tmk3909XgK6SZ/rN 89sgs9/Fujl45lTedokwlHs+Be2nCbYWXpAkBEgQobTOTCLGgKolty3H1Bx8gMO8/pbCoOp+X6M b+PrVmpHB1JWt/p6nrw== X-Proofpoint-ORIG-GUID: WO_hH6cST_4lOeBLwRTWH6Jf1UzpuwNs X-Proofpoint-GUID: WO_hH6cST_4lOeBLwRTWH6Jf1UzpuwNs 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 clxscore=1015 adultscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar dp_bridge helpers take drm_bridge as an input and extract the dp_display object to be used in the dp_display module. Rather than doing it in a roundabout way, directly pass the dp_display object to these helpers so that the MST bridge can also re-use the same helpers. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 29 +++++++++------------------ drivers/gpu/drm/msm/dp/dp_display.h | 7 +++++++ drivers/gpu/drm/msm/dp/dp_drm.c | 39 +++++++++++++++++++++++++++++++++= +++- drivers/gpu/drm/msm/dp/dp_drm.h | 9 --------- 4 files changed, 54 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 63e5b191f95c..2d5ef087648c 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -738,24 +738,21 @@ static int msm_dp_display_disable(struct msm_dp_displ= ay_private *dp) =20 /** * msm_dp_bridge_mode_valid - callback to determine if specified mode is v= alid - * @bridge: Pointer to drm bridge structure + * @dp: Pointer to dp display structure * @info: display info * @mode: Pointer to drm mode structure * Returns: Validity status for specified mode */ -enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, - const struct drm_display_info *info, - const struct drm_display_mode *mode) +enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp, + const struct drm_display_info *info, + const struct drm_display_mode *mode) { const u32 num_components =3D 3, default_bpp =3D 24; struct msm_dp_display_private *msm_dp_display; struct msm_dp_link_info *link_info; u32 mode_rate_khz =3D 0, supported_rate_khz =3D 0, mode_bpp =3D 0; - struct msm_dp *dp; int mode_pclk_khz =3D mode->clock; =20 - dp =3D to_dp_bridge(bridge)->msm_dp_display; - if (!dp || !mode_pclk_khz || !dp->connector) { DRM_ERROR("invalid params\n"); return -EINVAL; @@ -1406,11 +1403,9 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_displa= y, struct drm_device *dev, return 0; } =20 -void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state) +void msm_dp_display_atomic_enable(struct msm_dp *msm_dp_display, + struct drm_atomic_commit *state) { - struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); - struct msm_dp *msm_dp_display =3D msm_dp_bridge->msm_dp_display; struct drm_crtc *crtc; struct drm_crtc_state *crtc_state; int rc =3D 0; @@ -1419,7 +1414,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *d= rm_bridge, dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 crtc =3D drm_atomic_get_new_crtc_for_encoder(state, - drm_bridge->encoder); + msm_dp_display->bridge->encoder); if (!crtc) return; crtc_state =3D drm_atomic_get_new_crtc_state(state, crtc); @@ -1449,11 +1444,8 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *= drm_bridge, drm_dbg_dp(msm_dp_display->drm_dev, "type=3D%d Done\n", msm_dp_display->c= onnector_type); } =20 -void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state) +void msm_dp_display_atomic_disable(struct msm_dp *dp) { - struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); - struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *msm_dp_display; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); @@ -1470,11 +1462,8 @@ static void msm_dp_display_unprepare(struct msm_dp_d= isplay_private *dp) drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", msm_dp_display->connector_typ= e); } =20 -void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state) +void msm_dp_display_atomic_post_disable(struct msm_dp *dp) { - struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); - struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *msm_dp_display; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/d= p_display.h index 0b65e16c790d..5116f7bbbd02 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -33,5 +33,12 @@ void msm_dp_display_signal_audio_start(struct msm_dp *ms= m_dp_display); void msm_dp_display_signal_audio_complete(struct msm_dp *msm_dp_display); void msm_dp_display_set_psr(struct msm_dp *dp, bool enter); void msm_dp_display_debugfs_init(struct msm_dp *msm_dp_display, struct den= try *dentry, bool is_edp); +void msm_dp_display_atomic_post_disable(struct msm_dp *dp_display); +void msm_dp_display_atomic_disable(struct msm_dp *dp_display); +void msm_dp_display_atomic_enable(struct msm_dp *dp_display, + struct drm_atomic_commit *state); +enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp, + const struct drm_display_info *info, + const struct drm_display_mode *mode); =20 #endif /* _DP_DISPLAY_H_ */ diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index 6ac5bac903d9..6b8923d9dff4 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -49,6 +49,43 @@ static void msm_dp_bridge_debugfs_init(struct drm_bridge= *bridge, struct dentry msm_dp_display_debugfs_init(dp, root, false); } =20 +static void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, + struct drm_atomic_commit *state) +{ + struct msm_dp_bridge *dp_bridge =3D to_dp_bridge(drm_bridge); + struct msm_dp *dp =3D dp_bridge->msm_dp_display; + + msm_dp_display_atomic_enable(dp, state); +} + +static void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, + struct drm_atomic_commit *state) +{ + struct msm_dp_bridge *dp_bridge =3D to_dp_bridge(drm_bridge); + struct msm_dp *dp =3D dp_bridge->msm_dp_display; + + msm_dp_display_atomic_disable(dp); +} + +static void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridg= e, + struct drm_atomic_commit *state) +{ + struct msm_dp_bridge *dp_bridge =3D to_dp_bridge(drm_bridge); + struct msm_dp *dp =3D dp_bridge->msm_dp_display; + + msm_dp_display_atomic_post_disable(dp); +} + +static enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *dr= m_bridge, + const struct drm_display_info *info, + const struct drm_display_mode *mode) +{ + struct msm_dp_bridge *dp_bridge =3D to_dp_bridge(drm_bridge); + struct msm_dp *dp =3D dp_bridge->msm_dp_display; + + return msm_dp_display_mode_valid(dp, info, mode); +} + static const struct drm_bridge_funcs msm_dp_bridge_ops =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, @@ -115,7 +152,7 @@ static void msm_edp_bridge_atomic_enable(struct drm_bri= dge *drm_bridge, return; } =20 - msm_dp_bridge_atomic_enable(drm_bridge, state); + msm_dp_display_atomic_enable(dp, state); } =20 static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge, diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index 4bd788ea05d5..da412c788503 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -27,15 +27,6 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, st= ruct drm_device *dev, =20 enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector); -void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state); -void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state); -void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, - struct drm_atomic_commit *state); -enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, - const struct drm_display_info *info, - const struct drm_display_mode *mode); void msm_dp_bridge_hpd_enable(struct drm_bridge *bridge); void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge); void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge, --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 A5CDD3F7A9E for ; Tue, 9 Jun 2026 09:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998471; cv=none; b=Bl01wJSLnIG84Y0lhbLVuOr+n7iQKl7ff8PdxeC3IazF3wA1qWTAbh/clgnta8Cluv/xZEPUxSI/kKev6Ijm0VECM7M4b38TAEc9IX0SA1aJyCQ3vn7ZHrEfLBrLEYopMLZazzFesrGJkMwfVPJV8m/La6u+r/f8bJxg4ukqNXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998471; c=relaxed/simple; bh=da4DiLmkH54vMKs4+UHrFXYyvX9aCG9OfWIw37ym+Ew=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ibOSBGxrS7JZx3a727oUGbK5GKKC9Za9Tc1b/iFZ82xmiD4cXAc9LroHOdKF6z1asQEczeZffXnYnHX5FkhUGkzDol3wiDoa2BAUq1UgJxt++QiikJLGO7QKygU6HSmXLxOH6XOlB67nxsrec3dVudPEMH2FaG9TIDT0lXTJGgY= 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=jwbWXG4Q; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DFcqSNg8; arc=none smtp.client-ip=205.220.168.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="jwbWXG4Q"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DFcqSNg8" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rMbh1584100 for ; Tue, 9 Jun 2026 09:47:50 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= 4GLG60vKqqPhXSK9u7LFSK5eRlVCZiWpAvGD6R5I4zI=; b=jwbWXG4QsCbakz1T QRLIlyesxqjVyud+B6kdO3KTVGd2Mq7yA5+UGl2mW/8DWMSXeA+s0fbD7oMBIET5 +BIPMv8iMosABtSfnTGVIkEsmSpMXUpj1/sPN2uQ/zlsK1D1Ht64x2Sn74ri6aqy +S2aluypkX3MUWGc851kcx62+wdrmiCZBEY6n2i2pbvI3vYqmpDQDl4qid6T8hmT E5WklZp7rrat3Wa+h1Wotow9I2Fx4YEO64WwtDmD6rjKkQMnxrmtK3Emj1Jhm/zi frMJMRofXiQbas17ZcMtNUG88c1JBR1tA3hEE/ZZ3rmUJch1WqtcczJPWuvMX/Us McnjLw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epdeeruua-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:49 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-914c8954923so372531085a.1 for ; Tue, 09 Jun 2026 02:47:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998469; x=1781603269; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4GLG60vKqqPhXSK9u7LFSK5eRlVCZiWpAvGD6R5I4zI=; b=DFcqSNg8xOmhXLeJ6Pvt1eBDOURDa+2pxS2Zhsgeqs0jBpOWdD3OdDBMmP4WWz/xOh 2FGcT8O9BQo1ezvo7u/NHh8pzdVFejHaYItLsGsuilu3F28TuvbFkqCobmupTMh0+o8X K42YVbWthGyDuLjTcXV+AHBM9AVjKPDAlYchTf90URo6P4A1zqHgGxD3QvC9Yv8+5M3V QB4lMgx3D/War9x/0VfDskuyp/CVFPOnh0n2Yrkyp4M8yWvXQhCTF991PL1F00Crknyd PJt66kXkN2aoF1wnp/1TsxnfnI/TaYtROZ+6XvRJID71Zhuq4VlWfzFHToKPX9yovCDb qTOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998469; x=1781603269; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4GLG60vKqqPhXSK9u7LFSK5eRlVCZiWpAvGD6R5I4zI=; b=tWEQJqLawxNjjN4IdUSFfinol+K+i8nt1rzdvYMLv/4X3AmEN9BDsPv9JYXydxRThf hgJ8mfROflc/1ftN6tZ8EV6LTFTMqqpjCo6Czg0A3YwPS7or2gciMnjCBpWfIXdrZQHZ /z6jgmMn31VMMWt3Yr1gKUYYd7x3bJTw7/m5DKJdL/boZkcS185P0FuAJn4PzjKk+Svz sMIhDoqbQ5CEkYSC5ezfoe0vtXI/P1mKiZGL0+96JXxdO8lN6h3ACGP64ClltTv7R6ce l3ttIZ3sKAQBcNL1Pn2QiV1xcDLr55TKuPY371PcH0lSvaFUAgv4LmsMeNsSn0xaejm3 alVg== X-Forwarded-Encrypted: i=1; AFNElJ+m29L/f8Pcv+6WShZdE76uvPkvOjQjKcDT/NV0GzhfCFspzNnl0bQ84J80vWSxB4yi0gxghpVbACEaCKs=@vger.kernel.org X-Gm-Message-State: AOJu0YxUzFvYCM98l/g64HP7hom1MnrFt7mIwFVJ0JiaD+fnP0m/Cv19 k4SILXzK+ILrRq1F3Le0XEB/+cyEnyhti2NMreH6z5woe9Ixvj5RBBpcGUWxLt+9JzzrHsiEM5Y ihBHrwnSQ39xNTcxnkGFRFa7JwFZ2CwaaCaGpszRyzwgSm6NZlKk2/xTjsy2Zdm9ACEs= X-Gm-Gg: Acq92OFSeFrvNd1w+3jMAuuvkd1mQdJHPshNefkF6g7MQXYc3vUflZ2cgL7FNJnmIDF hOFdcRPGyuM1b6b5JzKCq5hMnOoaJqlwktTrZgwTqzxnpiCpnCKGKtiSQ3guZeZ426rYrbhsv3r GwLHdAnn3Rj7GyDlbMcl9xd6Z1COA+xUpdSCqZa8tGvGIlKrShCi9PXGxTGtVVgRWA2e6v7yqEk jiLWXSDgeT6suFn1+Tj5La3UM4601UvOAh1cIq5Gza1NiHRni62qBi9SGwqJ/d4AjiaGLrSzFrt FsZED9SfnvpUow5Oo9rgoMP3327pdzGLLhyt1ueyfeDgfXiH1arl8Z6volMxyp4noVQY9aPCLIX i5fp2s6jCaGQqzo31aPw6/TT8PG+KUHDpSjalBgimHhgS0YCQM4l1uVcjZNeWTbLMjYWVVyF4mF 1+/codHE6ARGT8RbnV2A== X-Received: by 2002:a05:620a:3186:b0:915:81ba:4071 with SMTP id af79cd13be357-915a9e098f5mr3148078685a.58.1780998469053; Tue, 09 Jun 2026 02:47:49 -0700 (PDT) X-Received: by 2002:a05:620a:3186:b0:915:81ba:4071 with SMTP id af79cd13be357-915a9e098f5mr3148074385a.58.1780998468486; Tue, 09 Jun 2026 02:47:48 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:48 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:36 +0800 Subject: [PATCH v7 14/15] drm/msm/dp: separate dp_display_prepare() into its own API 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-14-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Abhinav Kumar , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=3743; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=PejPis5lPUmTa0t10X2rGcGnHfGkWszn1oUEuwhLLv0=; b=WijUeIalYja5wc6YJaju+YjwJ6B6aB82NXj1CgEZFrCY8AbHyt+izfR8DIFRPfig0Bqoys3x4 y7AHTm4eyHgBXEL7+fh93uvaWTePL7GNPjc4Kv4y/u3RSoTm67i1j9W X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=H+DrBeYi c=1 sm=1 tr=0 ts=6a27e146 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=rHTcTV9uYuKpyGuOXCsA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX6UylGRmxpnqt lDm4RRfNfY08pLA//pvF5flUpyIYYhdos0X4MT6M5L7QLT5t+WLvErKmfK7BvRkJwnM/3Kiu9ow QPmNN2Rx4fDNibFqzI0mUSB8mLU9Xqf17ieJh18rai88E7yBoImm/NcAmaF+I2TFuNQhe9tGGXN DAwOiXNbMMyPBQVvfxMY/H1nqtcfomzCYqpDffjHPQfOD6YM9UCIeqzu0HVtsBKHi/4w80eHgK5 wUzNLig1x7r9pRCQxmn7urB4HsEuussugjcrJmDaCmS5gK+6IEZfwIY0y7naGPEzORO5Y4ZkjnN 6STGZTg0wpTCFxnbEEI73m0oGZr9rmNeMfkDAzz5oqm5ThXKwrSZTkOzF76wdGf2VG2x9YR1fm0 3+TXaYDHBGaeHWT//YIsPd4G3M4DhKSQIi0mIaG6dx8yQ13EY5xp0N+y0GnyOH+jxXjnwTiYw3E HpLaEV680Hyd0PWHc/g== X-Proofpoint-ORIG-GUID: A9IQpNnN_nCecOyorLS7kU4b5OpjiILT X-Proofpoint-GUID: A9IQpNnN_nCecOyorLS7kU4b5OpjiILT 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 clxscore=1015 adultscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 From: Abhinav Kumar For MST, the link setup should only be done once when multiple sinks are enabled, while stream setup may run multiple times for each sink. Split the link-related preparation out of msm_dp_display_atomic_enable() so it can be called separately before the per-stream enable path. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 16 +++++++++++----- drivers/gpu/drm/msm/dp/dp_display.h | 5 +++-- drivers/gpu/drm/msm/dp/dp_drm.c | 6 ++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 2d5ef087648c..cd1f2899b733 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1403,8 +1403,8 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_display= , struct drm_device *dev, return 0; } =20 -void msm_dp_display_atomic_enable(struct msm_dp *msm_dp_display, - struct drm_atomic_commit *state) +void msm_dp_display_atomic_prepare(struct msm_dp *msm_dp_display, + struct drm_atomic_commit *state) { struct drm_crtc *crtc; struct drm_crtc_state *crtc_state; @@ -1426,10 +1426,16 @@ void msm_dp_display_atomic_enable(struct msm_dp *ms= m_dp_display, } =20 rc =3D msm_dp_display_prepare_link(dp); - if (rc) { + if (rc) DRM_ERROR("DP display prepare failed, rc=3D%d\n", rc); - return; - } +} + +void msm_dp_display_atomic_enable(struct msm_dp *msm_dp_display) +{ + struct msm_dp_display_private *dp; + int rc =3D 0; + + dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 rc =3D msm_dp_display_enable(dp); if (rc) diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/d= p_display.h index 5116f7bbbd02..43ed79093e24 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -35,8 +35,9 @@ void msm_dp_display_set_psr(struct msm_dp *dp, bool enter= ); void msm_dp_display_debugfs_init(struct msm_dp *msm_dp_display, struct den= try *dentry, bool is_edp); void msm_dp_display_atomic_post_disable(struct msm_dp *dp_display); void msm_dp_display_atomic_disable(struct msm_dp *dp_display); -void msm_dp_display_atomic_enable(struct msm_dp *dp_display, - struct drm_atomic_commit *state); +void msm_dp_display_atomic_prepare(struct msm_dp *dp_display, + struct drm_atomic_commit *state); +void msm_dp_display_atomic_enable(struct msm_dp *dp_display); enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp, const struct drm_display_info *info, const struct drm_display_mode *mode); diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index 6b8923d9dff4..4bf1a5b7c3f9 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -55,7 +55,8 @@ static void msm_dp_bridge_atomic_enable(struct drm_bridge= *drm_bridge, struct msm_dp_bridge *dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D dp_bridge->msm_dp_display; =20 - msm_dp_display_atomic_enable(dp, state); + msm_dp_display_atomic_prepare(dp, state); + msm_dp_display_atomic_enable(dp); } =20 static void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, @@ -152,7 +153,8 @@ static void msm_edp_bridge_atomic_enable(struct drm_bri= dge *drm_bridge, return; } =20 - msm_dp_display_atomic_enable(dp, state); + msm_dp_display_atomic_prepare(dp, state); + msm_dp_display_atomic_enable(dp); } =20 static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge, --=20 2.43.0 From nobody Wed Jun 10 19:57:53 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 77F423F8250 for ; Tue, 9 Jun 2026 09:47:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998476; cv=none; b=VNd/187JnSN0SuMbYP/gOTSBzUdDGBIS/3clelslPTONWB+DC4nY9J0DmehPisiwt3Ez/d0r1JZLL7vSmzvIcRMX9Wr507Q/vF8Mo7raPOgzWQ2FYeUXNFEeIpbf/Z6KAH9LTYzlR8rawFWVvrtJAM2jVpOVew4Ho2aiCQVb714= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780998476; c=relaxed/simple; bh=VMCb+gh78a5tyRp4ocOtlXR3WU+MH0tKL5IrymVyK/Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iqI7Jfc3vvWG6pNk9EKBwnZIYXq5afWJ91bkJS3bXZ1pLCk2du7SAj6NRvF/nqGvel1+7SQZV/REVoHSEOECXHlCyxGWuy0rqVnD2+tcEweCsIJxRQZflIMiy1GBHbEFZ6fJeilARAnTnIgJRktD3875tFfd0qDLR6LdOCK8l8g= 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=o3YRE2cH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZcLKDW1O; arc=none smtp.client-ip=205.220.168.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="o3YRE2cH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZcLKDW1O" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6597rOs01585731 for ; Tue, 9 Jun 2026 09:47:55 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= CnGOml6KRNLCf8LNyNsT22xgMpxrnwiDol3PAO0B0Jw=; b=o3YRE2cHhsh/ltE9 50OL9hBRBuBBVS1pnxeManKhzKUZLAh/iEPA571FCXXrzImF89yRpIs7GVt/VMBE 5QhAJd1uBUE5hAvvF7bnwCLxYtYfHnvx9mkM62WkmqrfkPdvmcz+6EPJ2apSyuOq TmTHE32n+9dwNg7xRCfhM4LETbFHaK4voZPv5hdZG11QOIYXCrSc0b8Zz9sROe67 59peK1FkodcsSVOJGH+8vwAUBWAPvq55DQ8m0xfNafwPjvKe9fpS3sW5ouOCpf8b dApkV3j80UFZ2ftbTgAQp1fLmfcwb1p9YQRlm4YnbcxIUzhk6wF0bz6K6grzF2Vo a1scXg== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epeqgggtx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 09:47:54 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-915c1997732so586406385a.3 for ; Tue, 09 Jun 2026 02:47:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780998474; x=1781603274; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CnGOml6KRNLCf8LNyNsT22xgMpxrnwiDol3PAO0B0Jw=; b=ZcLKDW1O2Uqkigru/BtqAVB6Wc9Up+Y41jBogaGLS4ELVkX9VsoVltBP/vTll6EGDi zvKDkaMSpzG6tGtFErxgmqWShc5f9+WW7by6RQd9exdDy3ki3ZTaNxBbGwvSLIusqR/w IlQYEWXhmIguzdT+EJ31TxC43R7XA8438cgnDx6o0Ul+7BIb3LpXR6OLNFpX5zXiQATf iFatZ18YeuGoHgOs3orogolaZXwL6I5VFvCyyX1f6VQJ8sRI+VT1vD7nlCAc9g5MJFF0 tGXo4MuBI8rAy4dylctNKxXUcOc1VgkVgST8qjw3D7po03w8RCAgcTC+fVji8fAuM1go AseQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780998474; x=1781603274; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CnGOml6KRNLCf8LNyNsT22xgMpxrnwiDol3PAO0B0Jw=; b=hdDg5J6vJQJplSwpdOeXd9EjpkDpxM5rCywFQFdiU4zmMygV5OVbrL7TZB85gW2KY3 LxxtKPgKweoNf+Lf1AifviUMvrW2JfxspfVkATi7bFr9+ynZ5ztMwmZ4WN0xfRrLSJtC EOARN8qF8046/5SNfCbcM8O1DZnwKHv8+4oUubjYzJ7iRbPYc5gwPkBC5bJ18m1EECxT NvkIhAcgmOvm6yKa0nEirPG2GmYKbb1ub1M0MlmzioKNSxKIIiBux7InyM0Z373PqOT+ 3R5o10WItqzcx7qkXPzcGxu78Wfv9xmG9jhRizUUDuH18bgZJXj1qJpgNszsB4CKHvz3 rOuA== X-Forwarded-Encrypted: i=1; AFNElJ90hdwaxkYo2sZ3/KtqNlLrWEXoxCTHelKun+bxIKoJK6/pFt9nPiz1fNG4TPyuqrS7TDsgVs/LVecemWc=@vger.kernel.org X-Gm-Message-State: AOJu0YyTwkuMz2EjZjGMddz9yc7tNtOOObzFAzHjSEK9Y1AgAj2E2Lse a1iMxLXIvoCwKExAYbVHH9iqOZf7wBIi7SNUSzTPoH0L835I6aL0+juNN1Et6rn5YVkCfmUsZD+ DcDKiw5J+c9TlKfJpCvzoVgH6AY9FiNInjcFSZ7JjScAKr7IVWg8h0rzTTFKU115Ae1s= X-Gm-Gg: Acq92OEszR/EHeEp6oAZKPXVxD4CKjLSQ+OQLHRG0Hl6hFhbCtoSnk6gPhGH+CUH9or K9VVwTH8g/vANkAxS6b/YEBiSF6wFxX3uzss24gM585rjTzvDdkiw/8wkeSvFXum2ZsdXbxUgy8 5L+wIfJ24g3OnAqy+VhElKTcnGaEcNB4nn0nAFhUJlXMIM3q2USdA4KHlqc+Fxv2z/Yz1GxIEo2 RHbwAnimpu71dB8qNFL+MYi71DrqmgnnKBqft0UzKHj9LOkPFHkAF6MMauQ1Bs3dwr4oT300YZs ENf/4wS4Q2T0qPregg7i+K62Np/tk0YTSP1t/l2boqHZOW2qcad5zy972dN9QsMsDbBaspB6HwZ FrFUChIIDN5gI8WUwhQh0D6Jt/3v+bg97NxO0kjAFYY3VVb45XHdqB6yPNGfqRNldKhwZWBuz8w L3S8lvkJRLeH1gSL+skg== X-Received: by 2002:a05:620a:40cf:b0:915:79c8:ec9c with SMTP id af79cd13be357-915a9da96ecmr3113622585a.35.1780998473895; Tue, 09 Jun 2026 02:47:53 -0700 (PDT) X-Received: by 2002:a05:620a:40cf:b0:915:79c8:ec9c with SMTP id af79cd13be357-915a9da96ecmr3113617985a.35.1780998473462; Tue, 09 Jun 2026 02:47:53 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9158a00afafsm2047489485a.2.2026.06.09.02.47.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 02:47:53 -0700 (PDT) From: Yongxing Mou Date: Tue, 09 Jun 2026 17:46:37 +0800 Subject: [PATCH v7 15/15] drm/msm/dp: pass panel to display enable/disable helpers 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" Content-Transfer-Encoding: quoted-printable Message-Id: <20260609-dp_mstclean-v7-15-ea04113e8233@oss.qualcomm.com> References: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> In-Reply-To: <20260609-dp_mstclean-v7-0-ea04113e8233@oss.qualcomm.com> To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yongxing Mou , Dmitry Baryshkov X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780998393; l=3118; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=VMCb+gh78a5tyRp4ocOtlXR3WU+MH0tKL5IrymVyK/Y=; b=/bqYPwe+BT8wRDn37HT0g7sYFYdExLZp0AYNmLazK1zbmjMz62sd7TCVmyuOCWbG2FJSdIBCi nv2MEP7UAp4AK3aejuq8vXcpP63dyQNtdlsQFAfYzSKoPTnz4Xi703l X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDA5MCBTYWx0ZWRfX0WmEz/oIqk/q 9poXgPVH6Kj3exOFyNHC/Rt4Uz+08KWpp6Mz9M/esf2Fz9eH1/0JZLa7O3ShL9qvTwRovvcvomi VtAwvfT0QWdpiOm8/xm3157pt3oQmqronsJxuKzRwttSGmwan0cA0Ya8nKzxo+4lyeQz+QI1Ufp G01k/Ti2m9oUkbf25hCEijHv4CcrKIjSh51rUDYzWTY9Z/Tuxx46UZ2KseW2n7cqvsb5EF1YPQb JHy0J57+HjCGW9cL4HPrDUeIV4FuXag7eAr5Bq9aHmfAoDMBb+pYbg8anuCMUT3w5jUFWN0uy0d WdYG+GI+Kdk9VfOoiaxcxgmVF16IjComH9IhOBho0JT1aW54MC/3pUQzMVDt6J5Pa/POvt7C/dp DzHGB868VjZr8LepXeUCD3c3wzpGI1oJDxUXMd3Csu5plt6YbPiNIMUhS2VK0UGeWuzHBtEUlp+ ACDrPgl134hdESkS+RQ== X-Proofpoint-ORIG-GUID: q_dVkqjWhONzWT9tImUnUT7o66dB7SNU X-Authority-Analysis: v=2.4 cv=KdHidwYD c=1 sm=1 tr=0 ts=6a27e14a cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=wgkWW237A_BUGFCT6doA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-GUID: q_dVkqjWhONzWT9tImUnUT7o66dB7SNU 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-09_02,2026-06-09_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090090 Pass struct msm_dp_panel to the display enable/disable helpers to make them easier to reuse for MST stream handling. Signed-off-by: Yongxing Mou Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index cd1f2899b733..bea5bfb22967 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -650,7 +650,8 @@ static int msm_dp_display_prepare_link(struct msm_dp_di= splay_private *dp) return msm_dp_ctrl_prepare_stream_on(dp->ctrl, dp->panel, force_link_trai= n); } =20 -static int msm_dp_display_enable(struct msm_dp_display_private *dp) +static int msm_dp_display_enable(struct msm_dp_display_private *dp, + struct msm_dp_panel *msm_dp_panel) { int rc =3D 0; struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; @@ -661,7 +662,7 @@ static int msm_dp_display_enable(struct msm_dp_display_= private *dp) return 0; } =20 - rc =3D msm_dp_ctrl_on_stream(dp->ctrl, dp->panel); + rc =3D msm_dp_ctrl_on_stream(dp->ctrl, msm_dp_panel); if (!rc) msm_dp_display->power_on =3D true; =20 @@ -707,20 +708,21 @@ static void msm_dp_display_audio_notify_disable(struc= t msm_dp_display_private *d msm_dp_display->audio_enabled =3D false; } =20 -static int msm_dp_display_disable(struct msm_dp_display_private *dp) +static int msm_dp_display_disable(struct msm_dp_display_private *dp, + struct msm_dp_panel *msm_dp_panel) { struct msm_dp *msm_dp_display =3D &dp->msm_dp_display; =20 if (!msm_dp_display->power_on) return 0; =20 - msm_dp_panel_disable_vsc_sdp(dp->panel); + msm_dp_panel_disable_vsc_sdp(msm_dp_panel); =20 msm_dp_ctrl_off_pixel_clk(dp->ctrl); =20 /* dongle is still connected but sinks are disconnected */ if (dp->link->sink_count =3D=3D 0) - msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true); + msm_dp_link_psm_config(dp->link, &msm_dp_panel->link_info, true); =20 msm_dp_ctrl_off_link(dp->ctrl, dp->panel); =20 @@ -1437,14 +1439,14 @@ void msm_dp_display_atomic_enable(struct msm_dp *ms= m_dp_display) =20 dp =3D container_of(msm_dp_display, struct msm_dp_display_private, msm_dp= _display); =20 - rc =3D msm_dp_display_enable(dp); + rc =3D msm_dp_display_enable(dp, dp->panel); if (rc) DRM_ERROR("DP display enable failed, rc=3D%d\n", rc); =20 rc =3D msm_dp_display_post_enable(msm_dp_display); if (rc) { DRM_ERROR("DP display post enable failed, rc=3D%d\n", rc); - msm_dp_display_disable(dp); + msm_dp_display_disable(dp, dp->panel); } =20 drm_dbg_dp(msm_dp_display->drm_dev, "type=3D%d Done\n", msm_dp_display->c= onnector_type); @@ -1479,7 +1481,7 @@ void msm_dp_display_atomic_post_disable(struct msm_dp= *dp) =20 msm_dp_display_audio_notify_disable(msm_dp_display); =20 - msm_dp_display_disable(msm_dp_display); + msm_dp_display_disable(msm_dp_display, msm_dp_display->panel); =20 msm_dp_display_unprepare(msm_dp_display); } --=20 2.43.0