From nobody Sat Jul 25 03:20:31 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 31ED13AC0F8 for ; Mon, 20 Jul 2026 06:10:54 +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=1784527861; cv=none; b=gU+SptIB8lVUy99UDJYqwD6KcjThygO7//tDQB5CqwiPsGNf5zZHh20JNlXkoUiXtDeqTdy5ipbu4pr7usUAPVSpy8khbKi71hbCjcUw1ul8Q30k2Ho7wUgfCuwhVGgD3NkvYG11XGCG5EAx7nEU7slXHKpNVg+RXwekr57wNKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527861; c=relaxed/simple; bh=LP1bBf0Vb6ZnUlayEv9S2XfnnOCE62sCsJ2zjFS/NEU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xpbksxhnhj6lJkh4eiMvSz5WSQ4Ve6CwsJ9fIVYsK7iY+S1XPs16nXm8D8nDqD/O1cjSnXqK2sotkRJPxWLlIMaCfL3/OdstDq+JeWVUILsw7NDWyPAB+fLYf2GnSUSxubpM27N+0xVbLAeV7e1KSzjpaKJrdvgXam0kZ8Lkgts= 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=otzPeTWg; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UQellTn2; 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="otzPeTWg"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UQellTn2" 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 66JNst6t565445 for ; Mon, 20 Jul 2026 06:10:52 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= 6RVYwkb4H54FkQQb0ZYMBEcWB3pTj6pVlXuH6Bm32ok=; b=otzPeTWgE/U3cyK7 s52yq6jMdoNyOGjp1uvcVGxrdMQtr4+2riWykNmf/qvi1cQLmMTu3j777XpSHcwu UtaSaR6tO+04H5wi+kJ5HBgwGgEBNQVmEKoV+RfHnuwcRPmBHPlk4aGcXY85cGmX MPwRMUzFoEQ28yBYQ8oJMZYIcSC0IR6aziLzNcRpdjdDH9gQbRhCAyFkjYDVSdSF CPdbTvtzTqqJrM8UvCoqxrKUD+i2jXqP6X0vxyX7/7S/S0+6ue+cQ3ARElZDBTHT +Dq+RQ8hzVjp/MxO5RKIPc85buc6JZk88lDl69Y5favmzky3pBLKC641ZRbH3YMz 7hf21g== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2s7vk36-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:10:51 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8ef18406878so190708296d6.2 for ; Sun, 19 Jul 2026 23:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527851; x=1785132651; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6RVYwkb4H54FkQQb0ZYMBEcWB3pTj6pVlXuH6Bm32ok=; b=UQellTn247SAWWhnMG/VQSnQHbhl0FC+sj8eUT6UfU2lc6yrnqO+PQKuUAnPjO81tY 9Ibk/UOa1xKgnCu19Q4aTCKBohUDD4fug8gBLQq0JI7Sv43O9fTvdtEcizFr+YPu2i40 5/1ABvPAk6Yui4esMKtpgRD65F9pRKDXTmDZICuaDlpL+Lp7bg/tg3x5oAlSFRLCptO2 7RucqHTSiOZxoQuMyElTNau8LPD7nmFd11IDI7IELBnJ2auycF6REq20lq+n+lVcIqwk NRDj9Aw3fnAjoRTrpDDnoNp9etMINQopseGY8FJnuSMQI7WO1PoYxW1QIcVCqBjKkb09 mDmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527851; x=1785132651; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6RVYwkb4H54FkQQb0ZYMBEcWB3pTj6pVlXuH6Bm32ok=; b=bgey6OYf/XnguYkJOZ2gdTnU6OeoFOIs2KePc0eEPNNqycLYkDFefh0X1L9P+q5aWe xpJz83/1plxoE7JuEspE4mku31PwY8+u8yCE5yeEYVA32XSzL2VXRktFTrPbu7LS7D8g KzAT2QTao+6UxMjuIaibw5s0EHHIVkwm11RVNMHEntzMoY8OE1X1Rcgt0aZFYmVzQRro 5LIZD2RK71xDknVT07DOV3N9SCkhNVegjfOujBdficG3g10te/3Tuu6ofeIcrNUdFuO0 4uFgb1zIwWF0sKyaJxUqsS43an3elpgzKyhBZZQiy5ol3mxItzrOp4fH3X2NOozczKtb bJNg== X-Forwarded-Encrypted: i=1; AHgh+RoSz7N9/u48XVVYuxXXNJakzTxVgqA01P8mMakLNcHI1icFGtFVHVD0n/W0mqBAmO8mmcGksc61ftRG8j4=@vger.kernel.org X-Gm-Message-State: AOJu0YwWeXowW/Chwc5fwxBBmm8OIQdj5dJxQDl48uUMRoy/pl/y2HXS pSu3eV8H4I64SjNuqIJkt1lf7RNpub0Cn899idl2CoPQkckyBKu68wOMvr3bw+9hPwH7yxW6K6O /S1YP6SrCNYILWQVitvnEEQ9woW7sBXBLsIkZLLLMALneP8Ck+m5K1op/cNpzoru5fZ78Q+ig1N M= X-Gm-Gg: AfdE7cl4JcuuljXQIDmPtD0FO3ju/bwMvewUXAc2Y5I0+2h4IcGpn679u0ktxltu2pC 3V3WiSm4nyLuSudgQGV8J03pWLAFFYnPSL4OcDKAc1zaXoxQAUrvaOPBycNaK0s1GReDLOugj43 zMhlrbfKzZJp2ptEKsAGf0lbvaBR/pVbyZXd+Of+yVozfVQapp4ybnCv/iRMSBfXp0sjm/e909x /n+8HDUW8iB3+fsILdhrmhpK5SzwjloqEnrBRpfOGMJpwiHngmjStTOPdh39UGuVjO038gJjRIf MA7HkKEDUHz30hqr79jjGCMFADXppoWV/8LSiKnf5ro7cG7ftqau0BgtxG7sUgLs5d0HarWgBb2 7/tVgFDU8lJPUVDk8c/IglP+lrx59nQlAZso4icF4XP9NWY5zZRN1H8d21AHjtTI= X-Received: by 2002:a0c:f107:0:b0:907:83d1:e819 with SMTP id 6a1803df08f44-90783d1eb6bmr74782966d6.41.1784527850716; Sun, 19 Jul 2026 23:10:50 -0700 (PDT) X-Received: by 2002:a0c:f107:0:b0:907:83d1:e819 with SMTP id 6a1803df08f44-90783d1eb6bmr74782786d6.41.1784527850261; Sun, 19 Jul 2026 23:10:50 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.10.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:10:49 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:08 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-1-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=9288; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=LP1bBf0Vb6ZnUlayEv9S2XfnnOCE62sCsJ2zjFS/NEU=; b=2tpWPTo75rPsOpwU/EEWSvH/jNEwz68u/ggOO1aNiVtvcHNGss44JgTlhV4J4DOzQqbUHPAyY 8njByBoQ/nmAxan9z6KPHcb7MYY2ArglmZIjPL1279PBo1oo+3zRY/1 X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfXwbBN3BnU8QRx dD5DLJWa3NXmL2y61GptI2JtIoUQexJuRCH6b/Nvvg+jgnlSH6COZsFFO6pTaj6ZQAO6JXk3GkJ 1DIo6n02G0z/XjMu60F3MmrjTJIk+3WgUMGs1CZaHhWz6XYh3K8FycCFZ+Vb06n7xC/mBtkFeS5 ECX053p0dx2br+u1fibVd1+zo4I3voBF/xQRVLvn02+w5RAHkanvBJu0WRSAqDLlIV3K7tUxN8u GiOvW1t3SqBt9lr/YAJLC0A0U2/d9GZ/ru2uD23cKPlAdFrr6ecYByUDHhVO8/d/6/NGY5WgXD4 KhKQVJ1LlU1kKvXrvRM7rqbrHE3jFlp8rLWQm2IwZManHYVdpu55vLgO5X8Vk1Kkmt+fXii0FOS Ezcr8/FxgeUlpPtijEXwcGkQ4cAo0YcDW4kIOE3r26nS6mokZVW9ZBssYHzFHJY0hrwR0Kgb8XX 2c+HvssLc+IkxAyTZkQ== X-Authority-Analysis: v=2.4 cv=eKsjSnp1 c=1 sm=1 tr=0 ts=6a5dbbeb cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=nMQ0Ez7JKoBJ6qvYvS4A:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-ORIG-GUID: 1adHg-GPLtZHuXpyS2YHZuaFkrsQ7c0e X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfXzff53RwLCv8s 3FezNYPCzwDF1oG4aOuHSzk9Nfecz/sIhpEQiYd+whEQ3ys/qWGE52tyk4HX2K2+KwvDVPo3TVx uIHn3QOVjA5tuiLsKs/vrpNAhYlJGlQ= X-Proofpoint-GUID: 1adHg-GPLtZHuXpyS2YHZuaFkrsQ7c0e X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 | 59 ++++-----------------------------= ---- drivers/gpu/drm/msm/dp/dp_panel.h | 13 +++----- 3 files changed, 27 insertions(+), 73 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index dc6f33809ca5..bce165bac106 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 5b4954e7cb74..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,22 +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) { - drm_edid_connector_update(connector, 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; @@ -347,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 @@ -360,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) @@ -757,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 Sat Jul 25 03:20:31 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 AFD3F27FD74 for ; Mon, 20 Jul 2026 06:11:01 +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=1784527866; cv=none; b=FIeLUj73q71IfEYP5dqQaufzi5b8k1/HhGalPTcBB/XBPKWRdZht1TYQVtbT6TjCojipCoJYRSdCBCXVkGbybVksIBq9aQqowoW8viPlpPGtm8EuZpHllW4ceJ1YrHELsg6dbWOUlU6ow3jBh8sAGfh5/cXSZFwVN9GXp3fTqdE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527866; c=relaxed/simple; bh=bXCs0B3wCMmVrp2psb0eRbW/KTh+x7SoM0fSFzWvpgU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k6cjEoQSFKewHvFSMz1NRtc3ybHYnHN2lNlG6WffbVQAKtetZtxWF76Ke3cjuqyn0p0wdKYLCCtOL23mNPu4bMCbfC4qiee+NlofldCE87OAH41VijTpoBktpcoq/2wzaxgZHisGcZYGaQFv/9iadbhYr6ZJPwVreAPOT5ciznc= 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=eHhp+Mr2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=at7M9ZHN; 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="eHhp+Mr2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="at7M9ZHN" 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 66JNsrGx1020881 for ; Mon, 20 Jul 2026 06:10:57 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= U8LT3QiOAV+ZCZbLeAFzKbb4Za8uMZYbHFZE752ZTKk=; b=eHhp+Mr2ZnaOBbYx 2QhvIeGUosew2oa9S2o7jQJLVyOMZJCexHvDblgoUTQE7vDvP8inf+R1VA8ptraI c7Gw8vyCkGJohllc/KhgkY0tIwm1wDJKdd473ISGuMtSbpdj40gNYguuZHUrJba+ 2lUr7FJiY3r+t4XYp9cneMQMTa5LcMige9BoXI50b1OQmO+39mYIAJgZ+9v0ERAt 2mNhuDziU/bEogalMKQUDD5YMrPI/IXCuelULi6bu54W8JzMzyapmgLWK89Yy4QL BXpTE6s4iTTXBE/LicK/KgevoRkv2OejWa2I7eWgWHyxvJTwtpfgH+vACAiBJtcS powaxg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2d94mr7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:10:56 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-520a00c7a03so93641371cf.1 for ; Sun, 19 Jul 2026 23:10:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527856; x=1785132656; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=U8LT3QiOAV+ZCZbLeAFzKbb4Za8uMZYbHFZE752ZTKk=; b=at7M9ZHNdbgvPbvUQVi84Yvay+vVNLGfZzVuLiy4jIVcKCMPIeChuUn0bT12wEVHYz VKSz2ck9Nfp+1FGLbgIEYIh7UnM8hXkAnUr0pVMQwiwm8DAWBcL6M0y16hvVusnBUP9t F4W91EeKLuuKXTO+A2lyKKGEpKU4jwMj1TPPDPoOpOD2zBKhtNKQy6IaI1VpyJrku3AE DKdWG+BCFJ9qUvKbmQVd+G5Zmp4sP8dqIX15a0hx+RTU4jrqyhUrRLJO0vYWCittPV/r 3NVpvgHgQHw4yRHt1+jnwPHK+I3Kmed3p9+qhRXYvGKfOcrX/nsz+Q0wOjjl/2yMY42K HLAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527856; x=1785132656; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=U8LT3QiOAV+ZCZbLeAFzKbb4Za8uMZYbHFZE752ZTKk=; b=Iz1ekeObdNCRYgBQWjNbjqECWqYW/jeOH4PmUuRLran3xxZM63r7Xyen8GM30dzDDf xE1/vv3QZz2HzsnRlgSqX/Pv5CuRxwa1oHFKgvyfj4epgjlwoHDt+7+w3JI5w+2P1/7O 99X8SKQxReaDd1vExCOelBa48nE4WJ5sjkTqVWrnYz55XF5tkokKbMb7Cctf8jGiLL73 RIJ/I0HI+2VqhuQNpXEJxCoVIFuN5Skl5nSyGpcra/YC+TwBgzdlf4TBS5drG+0rNGhP G0uqN7A4rJnhVLH9hG3xxIWCdskgKsSHe/5a4AhAXpaGGIBRME8OR/DRQiE+fcLvjghX koyw== X-Forwarded-Encrypted: i=1; AHgh+Ropp3jTK5uboNTirbrQtvqWb0TZUggWGKEyRXt5lTIQVMy3+yoq5hpqkoBzT52Cnz5UI6kqnpYhtXGNMN0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7NJf0SkdEd60vbmDnwDKIMrBMCVgCG5BvjAJCDiTHVrvqJMS9 xBDdfuxyBqChxxatUuvSt+948JfnqI/sqNVphpYIGHgR6sYCy7sQgpTUoRtJBl2MgQfOmvT9rAo 8E2FO8JshtgOa36dY/4axyZaUbVwi+0JZ7okGq0jpO7sEdiqqax0HCqJYfxxoX2v2tbQ= X-Gm-Gg: AfdE7cmCd9DpSqhmPaWOypdYQyz6lD9ZlAgYtMSBlESe2dkbJgk25fGyqyZuNnL7NNP qrqHEN1mJQBvCiBSWC5lw4XK4mOm2F9aFg4Td8Zu2w8PAmGI/aDXX5aPZ7hf54Ln/Pfr8os5s35 UEU8hPKN8/mWLafeIz9eQGGWJv6QkX8GDbeBYTAG/zzSA8459XCvkpZr0hnEnu2WDNNH17i/N/a MIrGWO0bDy7tKBWQ3DTxdg18wGzf+tv5g9WbuTWUeYIuCEEidehBaHMc3z9Pyb90j+zp+X6sfES /hSgyITen2qbnGgjyor5fDAJBKvUkPhZ/UScns5lhwkMjMFYQif9zUhnCuJ+Y1SP3UeyMMD5sIR QJm2OAU9GSCZ9pcfuWHfsyCitFnbuddhK2Eg9e/hR0iM0tIu9/2LHdQ/Da8gsWGg= X-Received: by 2002:a05:622a:7:b0:51c:d52:6049 with SMTP id d75a77b69052e-5213ced0406mr128449831cf.28.1784527855756; Sun, 19 Jul 2026 23:10:55 -0700 (PDT) X-Received: by 2002:a05:622a:7:b0:51c:d52:6049 with SMTP id d75a77b69052e-5213ced0406mr128449561cf.28.1784527855290; Sun, 19 Jul 2026 23:10:55 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.10.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:10:55 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:09 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-2-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=8169; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=bXCs0B3wCMmVrp2psb0eRbW/KTh+x7SoM0fSFzWvpgU=; b=8Iw0Rrfc0hmPYxDAMst3zkdWUXmfhUCwI97+b5/m1z62D52v7/V1mmrEfxiz5ZNk1+pdRcKhS h/591dvAvnaBrGtq8O+iZFCb8HL18+tXEQIi63QjJQ5TgDOdUHkcd/T X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=HpxG3UTS c=1 sm=1 tr=0 ts=6a5dbbf0 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=ohAeICWEHyx3i1rom8gA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: H1X9HFRZdKP0yTF5IhBAnGBAmOUSvyQO X-Proofpoint-ORIG-GUID: H1X9HFRZdKP0yTF5IhBAnGBAmOUSvyQO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfXz7sPhVgIKSE6 BI+L8vQ4A+W1QAQepCi2Evihs7ckf7+5JloIChxHuX68GpS4AzBagD8YgJBPfU1cY0D9txZ4Iij NwrhfhV5mJgBgtmASwhH/D2RpVknP2Zp2kbm0Aebiu6zP7jq65lrFd1bAbOdOoxo3EaT6W72UQT KhEALEo3bZOHqrp1OchNtYszVIolo1bp34qOyy3FJogPyYHNFZdB0BR+a3OluHhb+brphgX7ert ijBqbn4+dCykdn5LUjJWNY7uyH1RGPDa9LCp3ildS7Pa8npThXLCkfLKLS+3DspXi6R1XkPmezm swlWCqIcJUm/LvL8c6559iNQv+RpUfVLPAVnyk6+yObZ1fnh3pCl7XDhsPaTJSyNNCsY1r+VLmc 0nugat6e+4/ukp8+WOschp2Wyd6klPOW4OYzw6b6QzqRUCNA+FbDs8oE/gOku2026ZDEMsqTb9O i+b6uIzRs3h1hgDqbVg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX515/qim4xmj6 T0jucD7uqYoCmwhwcJORLw6M6fuUAEmnsZazLJYY/B/TNNbKtkHAJ7GcQ1wC4CPq7RSa0w5o1m6 nlIMFBuexjNXe9yq/a/8VRsCGtasPRM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 adultscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 bce165bac106..57eafd472462 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 06881bfd6181..763ae4239bd3 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_create_state =3D drm_atomic_helper_bridge_create_state, .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 Sat Jul 25 03:20:31 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 AEBE73ACEED for ; Mon, 20 Jul 2026 06:11:06 +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=1784527872; cv=none; b=F0LGHamrAHgLWgbR8W/q8npnv9FLKjepU+jIHOvth+1ft3oHWvjizfmc06Bt94DS1dLLjGNmONx+ktWECIPbBCFpy4vR+1Kocxs+zXHEtI1ZzzwyEZxQqKP0ATonuemdtiJ50uN6gBme4GyDR/D7R/JWaNH29wf9QoDim57z6go= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527872; c=relaxed/simple; bh=fjfAwVLsdfXG3E29OVHK9sjfJONiXlZlAdNcpfnkhYY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eV3y0fIjyu9kP9AArgxykSPFz1yZPQaw6dqjYqaOr36hJKGBjBhPhnLrYcAgyHHT7ddMunsvnfiGWzuWlYSqK+N1cZq9BQUfK/4jCYLYWrNrdeg4lru/Q//DrGoAdR1uMEkiO3Lk8VYPWVlB8NhS07eJEKRc9h+FdqWCC/hQC08= 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=dXQCIhXU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=D6F89mC5; 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="dXQCIhXU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="D6F89mC5" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNtLGa903009 for ; Mon, 20 Jul 2026 06:11:01 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= IF3qUvx1/jD02Z3xEjWvYCh3QU/bPLh9lfZzorOGlGs=; b=dXQCIhXUG3EFYJ2K cQlfDIYdM11C3xeIWATqJ2mrrkhSvm6hGbrK6e5Zg7qNz2cqDYFe3jjesVdmDevB tFusiqpbIX9Fj6UTYAb0TuB/lzJ5VoDBbW7JwHrrx4/9WJFrwbulERI6AcCIO2Yg DMjzrfIgoqgBIuC8UoK9Ho2nmv9KO85khiJZWQo+hUdS37n+kuuq8bCO9fp26jKq DmO6aTnGAWUrnF1I+fvmPbqDlfxZghvJ+gh1GFrJ6Wvkq6X/qxk93BKjztMvOblm nt/k2f7cm2DpJytSGgzo/A7Duh3di9lSpq3O8NNk5VNUqNJ2AwkF2oo04WiWwdAU giy9yA== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bnmncf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:01 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8ec235c7c66so87115676d6.0 for ; Sun, 19 Jul 2026 23:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527860; x=1785132660; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=IF3qUvx1/jD02Z3xEjWvYCh3QU/bPLh9lfZzorOGlGs=; b=D6F89mC5BvqfY2YciQYlgAwilhwOoEjKkBSXG9LW+G9I64hQz0cRu9KZofH/xrT5pB yqgCY6DlDi+VHowMK3CRVILKb6+sVA7F5rG4OZsFHc0QMCoT7r6+wTPUabIN6mmt4Rjd 2ObreFUClkRXXZ1Ow0JdKSUoMxlNdXvJwn+flKRPKj+Cs3jI/werWyk8pKrIeHnTfi2r z3vtiDZ0GcYUcRccaHeih7RqvXpDUGVdvQ0YR/jbxWp0mrstP9/1M58kjbEUJdYk5zTt OxbWmub9hYc5N2TJ2NLu+VxEzhFssWwltNd6VJu1JIOIDD3KIbEcJkgv4uk6Mlw5Sy71 gh5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527860; x=1785132660; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=IF3qUvx1/jD02Z3xEjWvYCh3QU/bPLh9lfZzorOGlGs=; b=ZorcnsJG2BB0m0BiSJYQ0yTpnBE4iU48dUG5IybsPVym5aUTeqQLN6gtDBLwKGC8NF edM8E6aOpfGnoZZkuc2ZQjvOSIndGuC6aaZkbXBJa2E9DKqCbPkgvWufCh2B3/r3vlwG E+Zp1iPPZLxdmC2Aita2J+oFdLp63gjQ4DWUImMQ0jUVhU/h981VbLh0nZ2ZsWOO1/v7 oC16AM452fGE74bQR8Icj/1tn8FXcjYTIlqUw/mkNsRf9oo2tbTPHtVZHIMm1raiTgmI pPNOwFdPakOpa5BsRuqHwFKIKq8DeZMKswMDnTjAQb/izFsKMhP2esIDhDuAXJA1g75M hNAw== X-Forwarded-Encrypted: i=1; AHgh+Rp/PYDv/Mc7cePMam8d+hw8GOWuA+mvzJcpgM4rXU01a9CEjnn6foEc8e0hc1ecFhBvg6ekfXeuKryVmiU=@vger.kernel.org X-Gm-Message-State: AOJu0Yzx0vASwqXELD16ji2CwmAnNIVc+47iN5rp08t5XZpIJGrJqA6k wAkk9V3j+FxD78SaO7YcJIRy1EAZR26SjvA1EaOXUvF20Yh7e0v6gHnJbrKV1wMqbCePrP1hQkX X9VDteTNHPYZIHHI7gUd0iacRyCE4nYDmj/t+EGNdrZkUk4rdfGAlNahbYfZEAwysffQ= X-Gm-Gg: AfdE7ckY1ysSfd7va6mcoJHfn3qKT+NtbiKYfgAR/4FDcdAGS3rOayRP5nbUWkZPus6 y4cHj85SUaGR7U1syuph6OACrGw2UvoYinFzC3P5EU0p17LuZCfI4ZBOkz9RC2twp+pBhM334MG Bama5wSxEL2eilDalTXU0CmCnxu7/ls7tVt8mDHdLT8qJkHvvVDDElKRp5qYFH5mjhdzaeoTdCv RcuIw26yGLtBwt/hpNSkCxfQfh5ph5FFKyn+pDSW1HKdNkiwTvihPn7g2bfhCEjFxBsLHs7BlUp jH6tdUkEhg0txWWZfwMjk2ESthyqRy45qFoPsKZGWRM1iNMUa8AeG9xvE4aGU8xWKUjnELLWtnC puGwK3nTI5nXvNKq7c8r09ZSa22TddIkCEzIkinAg6EIWcGoQg+nbhSnv3rzNJ4I= X-Received: by 2002:a05:6214:5001:b0:8f3:6c2:222 with SMTP id 6a1803df08f44-907783317b0mr130905256d6.14.1784527860427; Sun, 19 Jul 2026 23:11:00 -0700 (PDT) X-Received: by 2002:a05:6214:5001:b0:8f3:6c2:222 with SMTP id 6a1803df08f44-907783317b0mr130905056d6.14.1784527860032; Sun, 19 Jul 2026 23:11:00 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.10.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:10:59 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:10 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-3-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=4086; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=fjfAwVLsdfXG3E29OVHK9sjfJONiXlZlAdNcpfnkhYY=; b=+IpbxiGAPbEa5G7QwCsrybPKxF3rVBed2emWYd4YGTPKSRh7Sh9ZaJmiW/wl6FVXGiTHxgGje 9QRG/40n1KvC48AdQ2FbTnyAPmQTmRrs2uFhZlp0Yhu9TjmTFgfylea X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX5ifUu+ZmIfI7 oXdxCh8AZtusYR0fyXN/lg2dXnocdp3ht8EcaXPBAhKkLyLcZnkmac1l5PZj812PCr0Z3evkb60 bQ/VV8IJQ53wszUF+EqjHcNeevFlUyX9hrV7VNGyfBHbhZVCDJzDPiB00tAqbkV+xLWKRW6lQ0/ OWiy4acRBVqMCpYMJkxpipsjzaJqZgX/SN9hLuCx++M46QKY817B/truLjEZjTxmto69l9G1efk QaGN5QgwmuXB0kMpJRRs29q3h6gPQX04bQ89ipne/Gu6740iyRIk4d10exL7zk49O34gRT3JgcC KKyKkwaPN0RSityQz/5XAxTSMnQunLIEFFgwULOfCeDRohMZauDkvDR0xVweoemwQZskVuIjnPh D1Er9+IPv22JekHDvaFsqSf08KWYJE6XUb/H6YJh20Gd1Taeb2TYoXbZYvnl5xQEtvn5N+ebCqo 5J4EbiEjypqgi0VtS3g== X-Proofpoint-ORIG-GUID: hTeZxZ9VYElvU6s67CfcA3uV1_D50S1c X-Proofpoint-GUID: hTeZxZ9VYElvU6s67CfcA3uV1_D50S1c X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX4cvzl7WPPi3S gMBW+5e820J+Bcj6BCwYrifnk2J6Sj1DELbAirIaLhYTZX/1aIlHRPyeYJ6HNQIV3ZvWH4nZt9Y QsO9WHZnTNpVl31+l6JuCyfcfky30UQ= X-Authority-Analysis: v=2.4 cv=deOwG3Xe c=1 sm=1 tr=0 ts=6a5dbbf5 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=RRF978PcF5p4qF5CYGQA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 57eafd472462..155beefdfdef 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 Sat Jul 25 03:20:31 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 3B4CC3AC0E6 for ; Mon, 20 Jul 2026 06:11: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=1784527878; cv=none; b=PaoX5OmbZjQ3OwTLrXTGuMo5iXvfwhSAEScQE40JsI6S934XfkjKxDrc/3obGfgvmWbN9FnCF+1hldjW/681ZLeg7/X9qCYVYK+DMoj9bVCfWI08TcBBuv00lMlxatFMV9O1t17uXLJPKqwRs5UuFf8tvYkHxnp46IeXa2EiHTA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527878; c=relaxed/simple; bh=SrK8XPLCsmlyTunIHhCIODHVtqwW8w2A+TJGN2u59pA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=syp3WDxLpNmH7vyDJnmmF3EdTXtts+VrOBZJDdZmFglqCrSbf6wdBRbxAPw6ud+A9eY0rBDCwIrrZ2EPhCVa9HV3b+4oyl+myvH76Kc7SLWvW34GjEq73eLa2GHpaT0Cr9wLc4WML1DZpk7lP8Ux32neTKSDAksaN9LpjrcAOFU= 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=WndxS/QP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=M5hFPf6b; 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="WndxS/QP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="M5hFPf6b" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNt6Yx850541 for ; Mon, 20 Jul 2026 06:11:06 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= O3MczQC0wTWVeQ3mq3nzNIjw2qe0TzQXQZvphNTOvUY=; b=WndxS/QPPX3O3W7h apgN/FzlGp5My5diaKTMW+q8HE43PsOII0jCocYj9iD76BByg5qOZrFCHYm1Z+Wp QZBF4VTTYGuq28W8Xyqdji1efYiOB6Mb6enbeDJAWlp4cwbpJFoy3OhwJ783p1hC EoiMB6ncHVkWzj/GtNGabN+qX9LJPpiNLxiqsAFPzFKQLCxBzGOLQe9IcNfv+F6P S9G1F5wkZ+eIR0g8n4X5OJ/p4C6R8lMzvMAWZFvoM3o2MrcJNca9MwrXdPS2H7qJ KFAs6H4/9LGJENfFs0ddCKX4SP+JbASSeF+Em32EZiJyik7/RYxy6CzTS6vv5Wn5 uDznFQ== Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2dc4p10-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:05 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-8e934385db1so204216606d6.0 for ; Sun, 19 Jul 2026 23:11:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527865; x=1785132665; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=O3MczQC0wTWVeQ3mq3nzNIjw2qe0TzQXQZvphNTOvUY=; b=M5hFPf6bIq2+wl2oJ9o26lpksdrZrwPQdOQcjD/BiTFTHtjoBMrzRnesYH9B+1NHGL umHH3geWnwUsjThL7dKsLFhiYnypdArUKmuaibmfShFKAtCGo6yCTqavT3l7462iPdtH ubrHf9Q1lHfd9dMqjTAABAnaeqgt5abHXEX0o71WWQKVRkeVgfN1HnlRjayZMfpzx7RV 2WlxmFvUzdfhyggpf+smT9SltJAVEPVu/T1HXuUcWVQ1GWIJaugPr/tT8A3S6VJWhBSk rpzcaEgID2xW/gkqz5VNkJxJogIErBYJU/dtW6iqbdN0Eg34D7HMXc5LbGdENgmce1L/ hc9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527865; x=1785132665; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=O3MczQC0wTWVeQ3mq3nzNIjw2qe0TzQXQZvphNTOvUY=; b=ZLuiii9gmTTiF+cS/5jFQpFJFF/yNaIK/TEKCRIV+5sSIIe5rAXoyTUgBD9gTrE6vq AKM7irD4/cKdu5rahwMYig1NN8piZBRbym3z70+/Y56bBg2D596N/RgdLqp/iiqle3LO acaEnTF8sffX1+WURBqZ+UN9xeVqEV/ZpNSztulhMhj0tl8eBI/T6vZErEpOrTU3wpGO Sj/U3mmK9J5mawT4/oQ1YJt/z6Sgj3pbpvbPdQEGJmJ7t9U6DEZH7NHCEwzAoFmFeZJK WaINXvXuJWmoBNu/oXtCDY0s2jJxybK1G77yprYujChByDxHEhnKE2+HZq+E2czsQ+F3 TJww== X-Forwarded-Encrypted: i=1; AHgh+RpX2mLartQ5N5kDh9Plr8s3C7RpimpSFiC8+XOj3Qwi/Mh8evAijJqfSNWAcLHEhO2caZyI+i7/xwHmv5I=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9TFU5VoD5iUIdd7XHH6SIy079dLi1SDYz2ZrEsmLCEv5IDpyA O5D1NE2ejpoQjtUk9B1O1NJrk8426CJ1b0bsx54PUT3cHqnMX6k9k37EJB1qJjaSCTDWGwYAINA RY/pePw9gGrk/4Wccjsel60Kx3j/yVw3qgeaLx2298R4r2aN0J7BUrBCevBAIKctNQsI= X-Gm-Gg: AfdE7cl8FGfXp1bcdAjrz/2nGjYGdH/71E2lK7Sl0BThOPJp1NJWW891EFZMJhsxjKW bccuA2b0/p45rYRQIPnsUSYkuhn1R1zTy+UhiMBT2V4FqdSUtG0D58Zx47zPh9enGfkZRAWDzJ0 NY6JOVoXlwyq8DpPDloER3B/TtiEBBoaXv3nbqLgZy9W+HfPD8nJvl5QXk0kMC0424s4DOcsPsk gTWKpD+9ixlnBKRYxI7PFT9fpaJdxQfdMfEcYOYKg3PuRA7dbPhXS5IxUAnBCZDK7vJrU4Mv+gL gL30kiHCFLr+PR3YBX4e1mtklvWQKchg7926mRapDrdz0Z+NfABeczfAmZalxNl4TwJK+xGlnE4 GSXmNCj3GBOuOKBQcu9Z1uNfQAqRjRtEjn9HyVGBoB3bzaeKyxo3CvEqIm6vj5lU= X-Received: by 2002:a05:6214:2f8f:b0:904:2a2a:d3 with SMTP id 6a1803df08f44-907783d1c8bmr154829106d6.47.1784527865241; Sun, 19 Jul 2026 23:11:05 -0700 (PDT) X-Received: by 2002:a05:6214:2f8f:b0:904:2a2a:d3 with SMTP id 6a1803df08f44-907783d1c8bmr154828896d6.47.1784527864761; Sun, 19 Jul 2026 23:11:04 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:04 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:11 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-4-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=3888; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=SrK8XPLCsmlyTunIHhCIODHVtqwW8w2A+TJGN2u59pA=; b=+rSu5mCBvXZ9+4i/Vd/ZLhxxgCDl3t+6LMh2BqGQgJLSYpIalrMWK4zRJDcxpdiiRs+QGLRm7 JEJxoB1+oB2DOxsDP9OB3TeSTfAAsuzi+84+GOPm1ubNGjgEt4XGX1a X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX56YI+bibflXF +EokF6bsuhUO3VxJfOtQGAItT77QKd4hjCM+hCAswAptqU/+rao/VQUEi7z7VWLKlS5YsqDZJMw G6Gic5k1mSGiNTxNNhhVn3Tl645zJQQ= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX405QlrQbV78l LdgtY+LWgJySDMJANUsSC6V+fp48yVkbQh5wBlCOUPbn7v5Vh2jYfwlIwrccnnxeHPYyDgbgJM1 vP8lgTDzpAmxHkb2h0kvnRwce2r72uRK3iWdxpJxOSYvDHftoryVfyhhI0all4h33wYULyS56mJ hRqYhGCqoAgMl7FsQwqxOzb2EURJzGEpRvyeVZUIfT1+z0ce72PuHMe8zwnGV5szlsMjuCYo2Tx y7wgr0cHRtQeu+37TdnqTQXBMfzD22dRLAn9kx74ifdOmMuDiyksI2Xfi8+OKikVOhYY8WK8t7m v6eroWyfvOX9alt5dUwcyFoMl7jXw/SH+9TE+tmJ0TwlK1zY+wfRdJmeP5jIXh2x5e794rlqx8t shYkzFs8nq5x/2WAWy8RpZoe4BIDffQ36yTPAaunecb3MjUnx6F2a5rjTWarJ5zySt5bDM61T8c yW2cS7on9ZJicUjO5tA== X-Proofpoint-ORIG-GUID: lp2s1V2AtIU0taANTpVxJ7uUJigIg4L1 X-Proofpoint-GUID: lp2s1V2AtIU0taANTpVxJ7uUJigIg4L1 X-Authority-Analysis: v=2.4 cv=FOQrAeos c=1 sm=1 tr=0 ts=6a5dbbf9 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=N4WGanfLxQUAwF0MUGsA:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 | 47 +++++++++++++++++++++++++++---------= ---- 1 file changed, 32 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..4c62b0e137c3 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,8 @@ 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); + msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); =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 Sat Jul 25 03:20:31 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 E46EF3ABD88 for ; Mon, 20 Jul 2026 06:11:14 +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=1784527884; cv=none; b=cXXKIdFaRH9eSdz4gnPaQuy47X6LDGOJzJ/1HbKSBNDMsDdH8ZR9CZnbD5pc9jg1boaP+tNX7CyP9yn6pK+KlM2BypuZorlBxA2Mtvos39EoPV4mmW2e3mWVqkQSqVlpSM2/2lTuby9BEpIQDJZyvJL5Anv53PBdGftq90Mxjd8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527884; c=relaxed/simple; bh=R/GB05yyZIVJSF623F+XRMd/F5oMOH1NofUwHQWiW7Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MxxrGrbhwAHsI942xs6FKgSlhoutVDFxtC9qSVeMifmjRsOKjE35w8Iju+4ohbGabCJBZ+dAzGyeIr5uOiWe2EpMJoaM7li6PQjsD/SUSuhFuelRCRlv429s8o3mP2LW9KRqDZY+oUgTago+s5jCz3hUwijGS8cbDhhAoMP5+mo= 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=AD43UzGj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gDJJ663r; 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="AD43UzGj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gDJJ663r" 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 66JNsP2A1911515 for ; Mon, 20 Jul 2026 06:11:11 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= 3OofKccDOfFyW3ueerbx6UEZtUXR33ycNT1Iao2glmA=; b=AD43UzGj69Gs39pH Q/4R1a3CFwZV1I4Q7l1wrTZVgGGLUGrca3C3rCH3z/RLrFm5gQMrs90Q8L6ocVYH XenjEjbeoSHgacL+UR9pUN7G6/uOWSFr+MqKX7yZMQtOEnull7KeqPE/9bSLbo4/ zBqi5QoM8TQuEUht66yKt6C0W2Y81oUhFVirvut7eapUvYUn9iYIJ1HkdnSYJVnj P1qyeMRdi04q1mDm0+JYxRmElW4/1s92U9AuAAsUKkLvo8O5gyvVpy7if1N0H4LS 5bgl+fhXCB4aSHRM4Yl3V1y1B57/BTyP8WcUIyACWKRuFVdhoG7JoHpSEF6oycx4 cO36mA== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2aavmj2-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:10 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-8eec6acbe21so255494416d6.3 for ; Sun, 19 Jul 2026 23:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527870; x=1785132670; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3OofKccDOfFyW3ueerbx6UEZtUXR33ycNT1Iao2glmA=; b=gDJJ663rBsM/GBcnuWUU1Jcjsdn9a1AhDG2SAZXzZSVr5mfjtY/DNuMkndJ8tDyT10 eXJdQh+L/D7voqySxOvuUZcwn2Nxe2J0dc6og4H19XJ5b50Gw7phub1zeWt1L0PyKfsK BwpRRUb6reBMPjyq5L9m+CDNdP1Jy3TwJWvUcm11bp32lOyjiTn1y9T1l3IXYaatyDOm ru7gm6SIkVlvz4LjQPY4HCRQQTEp/QkZQPMPKJ2ReWQRa0+ymg1rO+C2NbBmESUyIJcy miyE2TbFglvVeIblw6DaRWWymScrhPbxPvigTCsp8CPTzjrmPkd0UdxqWjK9iwh2uOip CMRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527870; x=1785132670; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=3OofKccDOfFyW3ueerbx6UEZtUXR33ycNT1Iao2glmA=; b=bEYUu+OBWAEKclYjJkNTTXnpibaIErMD0HhMP32o6OOSYtdJHLvtJ4c/HclnYLQtZ/ vYTZmRFvHnwU5ZGKceIVeWOkYa8CIpfnFgt73r6e6tymohcCY/473Ph8TKpHGEyG4tCR Um9B5y2t3t+yFITA73QbDJr/v9xgK7Zf+F5QMqEDZJaFb4fn2sVuscLS9/3c0zM0a4O4 UvzxKCHWtAdGv8oDYN3Fta9V2V7Ikg2XdfFxTuG3g8753N07FDvOAsKoDTOgfjf17HJF BEBFVHjCQiguFhgFDuUDJlNFf/7T+nozyeQ4ThclCUu25URNXRPUQaxbYUJmW4+Dlsqs +2ng== X-Forwarded-Encrypted: i=1; AHgh+RoG9cyEsjEaoc5ouCuzZFqFSZySOWI2dab5V1gnV1j5O4dHs3LPZdirVlPQVFHWizewrYKz4M2HW2aXAqk=@vger.kernel.org X-Gm-Message-State: AOJu0YxzHz4M2zre7ak25+lkYSyiueyyXpwrJFMw8awj8pWe7rHkNDhs MRg2iK6ErBtqzsx28oxJMCbB9c6nZz8V17wpK41bi6dzp+S/wl8hiq7XP4tyd/blWzmgZvumVed MI0SP/6/CkEOsIMBdu96mS0g3FXSS9PvySvDVK2dyjbRvT5w4dXxRD/2SZx3rss7pBQo= X-Gm-Gg: AfdE7cmH09wbxPsodlKQ2fGKWSeWY6shiGPiZLW8+PEzf1pY9St33oABDnjZLc/pTU3 eNUIpFIs1GAA0Y3T9c3MT04DrYsSggfqQwO2xmn0JeyVd2yRbHeINgbaZwOmLpRMFg8k5pwGHaE 0IrE/qTY8g6iReH/pYvhPu+ZhHHOiquHcVPgSwFF9gNWoTKHz9mBkBZ4EaVWCzAGzhoXuEbT6hM mF7h0Vn7csy9+IHyJaJAxh+ODF/3cFFymDR9Xao0OuiVuX4YwWOmoNLXhKDjPMm2WqkS023epM5 pCPEqB6qBxBymZg9809Ioy9TrUZyj9HNrMI69TEw/rSKwc9n2oU+pqbnIK98N7r70gH1NNX4ENH FsBaAWUGRHfrr4u0zirgvBFNaJAiaSjndMzT75bjav9Je4sS084sxWt4qFhZc0sc= X-Received: by 2002:a05:6214:3187:b0:8f2:940e:2406 with SMTP id 6a1803df08f44-907783158c5mr138345626d6.2.1784527870025; Sun, 19 Jul 2026 23:11:10 -0700 (PDT) X-Received: by 2002:a05:6214:3187:b0:8f2:940e:2406 with SMTP id 6a1803df08f44-907783158c5mr138345466d6.2.1784527869582; Sun, 19 Jul 2026 23:11:09 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:09 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:12 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-5-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=2097; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=R/GB05yyZIVJSF623F+XRMd/F5oMOH1NofUwHQWiW7Y=; b=5REHOKLxPl4zuFV38phXa38fjt5YIzJk25ngOao5sGx791Ok9TUfnUaf/Qpx2KufujiAnvucT sExTXxSTfbiBxt4Z2Am6vbPRXSIg48KuzXhoGEs2jkWR3qvzS3x0rxl X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-GUID: zvmuOJPh3QuJo7wEi62YFaYl7_Wyefq- X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX2WE2beiGJnTd dgv5OqeEPO3RFeRUx+El4E5S8rUQi+C2lWB5TsyA8uJc/yGJ6qXWlUHb0nVsZTBhkzkHfDYvaaB Uy6sg1YZRsnq0eLVwTGOa7yDlMEg56I= X-Authority-Analysis: v=2.4 cv=b9aCJNGx c=1 sm=1 tr=0 ts=6a5dbbfe cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=TC1OlXllJ9dbkp4NpB8A:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-ORIG-GUID: zvmuOJPh3QuJo7wEi62YFaYl7_Wyefq- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfXwylXsTzz1aSm diF4B+rUWN+p3Oz0NuzjhKrK/ZjUnYeQBE/JBs+wrSzt+4D3SrdvbSV3HaQfgEqlKb5OxBnPBgu T41fLOLg6SZ5mFqEL4zoBnU3AKznc7gfhePrdg2/fkDyMvlne37XLQA6mtXb95Ai0/KBkIbO4IB R8h8FQo9rgyxgUUc9hZeEWjp45j0eK0t0mKLZt4l7TbGX9dMnXnLxeYqhFPjk8n1eQDv1vO+u5C 4qilP8LyTlyURZGe3wsMyQ/uQrtveQr/z/eZllRFoa2gk9b18lfO1/K+7HCviUDKF5w58hoNNjJ nyj06u/F5CbAYOqUYMdWWxNqasxRTKmJMGqtV+XEJax1huXxDSNa2Ujt9ky6vtpGWx3a2nqjn35 Tm2dRXRUxnc5FLYqJyHUguAOcFPxHpFQ+Vg5rBW7pccdA3TrMQ3OAmAbS1gqEl/0qaJDH+MdYkW 11UIUwCyqP3EXTgryxg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 phishscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 4c62b0e137c3..ac24c958852b 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 Sat Jul 25 03:20:31 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 6DDC31531E8 for ; Mon, 20 Jul 2026 06:11:18 +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=1784527885; cv=none; b=Gc5B/xncJXUTrHQJQJzX7m40rLCpsXY+0yWo6VHC9p9YRiw17gpWwwfMY8YC9g8REFMdMs8HXKwis5FXjqBgFWHszK6mjEvv3mnx4z1n1juiZXqHgGRYGuqrESKk22Ft1IfhIEpKlRTDqqR5FbKdycpsxW/ZtlU1n9HyE625OAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527885; c=relaxed/simple; bh=m7a3fzYm8nfwxq2seY3v0u+Fo5r/mlnnqjBe8DmQUGM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PVOOEKjMb19fvdsoFWADD4HPMO45fBzKsskU5N+xaBU9YbI4gbJLcIN12ghqwPR3VZYMVxeqckXrOwVvNwOrL/Q0xMtiSxFMk7XDp+izbEwRWLfLrdkKpGXCTYELU5PZmjASrILmHnKTF1AwwOwDnY4RievmI45AnBKU/ZS/lyU= 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=hxzOkCCv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BdVPn9wt; 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="hxzOkCCv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BdVPn9wt" 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 66JNtJuh566306 for ; Mon, 20 Jul 2026 06:11:15 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= AeQrXGNfB+XoNNbsXI6SD4zb0QBkoDAOP9R0ui3Y6iw=; b=hxzOkCCvUH8nJgan mDLIODhEqR4RNCAFqHPk0Ldo0jDF2fJ16AcLVAb6MwN4kLXZTR538QfS0w87RNK9 oQjrh4MYPtJqGPnpi2naYpQyzQl1+ejj9LPbJZBTmhT2/cJISXHRDzew6RWQf1kx h1xt6BUvZKrXAiiLfF4ki5L9VFNqh9s9ZN+MQEr4vbn6UxrGnLFKn/yIHmBlUyV3 Mut5sRajfqQJWAKxw6lklIcx/XixJ+UcO4KZ4RCc5Tk5L0RNAYq59oTTA8Pg37uC ycoHvczWGcu4V4DkpztqP25ObDuJrh9hRQXtbsXj/x1+J3kjFbWteD3dXN8I44Vg XsEv9A== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2s7vk58-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:15 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8f0c46bfb6dso249780006d6.1 for ; Sun, 19 Jul 2026 23:11:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527875; x=1785132675; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=AeQrXGNfB+XoNNbsXI6SD4zb0QBkoDAOP9R0ui3Y6iw=; b=BdVPn9wt4Umin3OkAdq7TaUn6D+ldMCPM+7RiRzNvi7/EDl8yD9fUPV1dAoqQb5jwu zxL/7Sq0cd0M6p7++JMs88oaDU44Qq3B/d7JrELAfRhzRO3aAgwP4TL/oRR0FcXSxHLK V6MHBTcxDFkmHkmkVm02IsBkm082AeiyYnw6HxEOrpm4yTPxKgfscZgs5bMPJneYNbdT T/QnX349x7Qn5ZZystdy+tDbUJq52xsDmVBeSwx4GiNt3ZVr99UJTRzuqBh5Y1t4e1sa lQdV7MbUAYkpq0F2MEvjqmwDwa1TXxDQ2kCrnll3QzV5pOtddlJ8pa+6Qolb9v/czRUK XHnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527875; x=1785132675; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AeQrXGNfB+XoNNbsXI6SD4zb0QBkoDAOP9R0ui3Y6iw=; b=hklTLE1DBJfypbIWxEXSLlPJYxBroHR3pKJxYnh8MQ1XFC7/PQt5DThho33nMLB3bJ Ux04AwzmfvNgFEhSGXrhCq48apVMvExAzF0pf4Y3z/lFERRu07dyyWxHMFbNN88EVDec sruCGu7RSTWopXfmuITXqju7EJ+PqMMn+Wu3XqVDTKWumJgQb+lNvul/DmZ7PTJvD3gk iX256cz0vm33BU7bzAePgIB23pd/1s3Sry+8yXcJPNWXLS4sGl5w1qqA+FISg+hnV3Ps Vzwaaqxm8uvu0l3STWmXYYobocLpbbwWliRFNTmoHkwoVNMaDHBcjXH/kY1SKoJ7BpLe tCMw== X-Forwarded-Encrypted: i=1; AHgh+RpTzqt7IBG/YA3kEhMO6pniQGG/Dt/1LnWEIl4qxiosB8t0zsqQRSBryDfCnMP0W1BCF+K/m1nNpByMDA4=@vger.kernel.org X-Gm-Message-State: AOJu0YykQjQCzPVgS4NYSi2YjY5h/1sVrTYDsmFUzoCIQOzjpqoLkiQ8 Kfbs7NLkRDrnw0xJd3GpH9Vh7cXDFfetPHhtYQ/VvV6u4XgtmaLx5Z7p3pWsFhmDMP9rFXBu1NY MiD0NAZB0e1HfkB6GxxbwhT3PgQEZaFoKTDwEyLyBGGOljxHxXOX21+crPJ7/WYpxxO0= X-Gm-Gg: AfdE7cmjlbl9tp3JZR8BAx9Yr6wniLzWpcAzpe7pnMeK7+KX+SgN6TgKNIVxnOPurXx VPWKikv8os2fZM+sbeCFtvmyWS1xgxrdf50qnzaxeua5ElMbmi+XDUQFkk/OF8gBdVcClsN7Fnb El1U7astSemnEp99UosAQxJUW2LzETSAJNydAJD4MRmwlH/rY94/7bU4KFg9Unply3tHdZmL793 /D9qNlpRSshmSymaHiIOPLIpJaJgnvHOVb/5Sz2IQt9Mh13Ti2pTP4oNBqT/aJ21vSTetFmLSCi 6dML2T2FWT8c2+uYZI7/XYGgOEMM/XUDdfUiIobP4ehlqjxt59/wmGjaZUYA/IgpE0ZCPedrUTy jlkOYzNm2KWHCRBBZhkeAE5CiRzlJGB9BotWPsrfn1p2bqMosTUjXgVWWN/8Etww= X-Received: by 2002:a05:6214:500f:b0:8fd:6e32:2bff with SMTP id 6a1803df08f44-90778509f1dmr133304566d6.64.1784527874703; Sun, 19 Jul 2026 23:11:14 -0700 (PDT) X-Received: by 2002:a05:6214:500f:b0:8fd:6e32:2bff with SMTP id 6a1803df08f44-90778509f1dmr133304326d6.64.1784527874341; Sun, 19 Jul 2026 23:11:14 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:14 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:13 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-6-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=1402; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=m7a3fzYm8nfwxq2seY3v0u+Fo5r/mlnnqjBe8DmQUGM=; b=chonLmhqOwTIGtD1JV5pLq0RH7vxKrwc6AaLVvZN9VAm0hBQzkHmET72yQfwCT/8o1QrgVGOW KA495hrb99MDlXUktgehooV/JA99dRBLpSk0Yl8rCaSBTzna5tPBaQc X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfXw0eLfulSQiNb v+xnW+K8k3xLMBjBiHQ7izLSImDyRuoLU4Xqz2M4JuQ2BKlkpTPHq62HfqjKHLL22O25CyFMvrs qPYF0GGnlxI3hko6glb74EKIpqK321kwzFnHiqgGWq22b8Cnez/TYnUtiFkbz9Pcj+yDawoZ6b0 raVcpKhuTvIehzLqagurAU0IhuLd89RFdenFjLsMLqr9K2fdgWxPbwNiCHjQCoQUdZMG2YWrszQ mT1K8aRaBs12FfSXJ0Sk7bX6Ypum8v4iEVuv6OgHC2KgUzrBpwaNEK9zJk3ObV5LXXfRFJ15XMG FCv/jmiNZEjspYH5SeEe+ld+iozy3s8WmZ/wKs7A7fFc1tZFCG9zRhh92BoFW3HdwcTrFIweu6C 1yvMKe4v+Qb7EAd5ZcF/rWyAkKoic6+mg170BcuKCd6mnslFMrpsDRHv4L6bshTeMtECWj7bMbz nNnrv9arQdmudOkbbqQ== X-Authority-Analysis: v=2.4 cv=eKsjSnp1 c=1 sm=1 tr=0 ts=6a5dbc03 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=saXSvH3Ee-fMY4W8qR0A:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-ORIG-GUID: qESAm83B9q5EtC9Ca7vuXD4qkcj60O0b X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NiBTYWx0ZWRfX3sYu4nw3z9q1 56NMpYxyeEIS052xqh5X+c3rf5v4GRz7aFptPyEJvs+RIfLGcRbsKFFE59xecOlO4xAiBvvvnfH ziJmv94rYPvGFIdDn+itffKD1Pclx5E= X-Proofpoint-GUID: qESAm83B9q5EtC9Ca7vuXD4qkcj60O0b X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 suspectscore=0 impostorscore=0 malwarescore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200066 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 ac24c958852b..711579de899d 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); @@ -2552,6 +2548,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 Sat Jul 25 03:20:31 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 E1CA63932C5 for ; Mon, 20 Jul 2026 06:11:27 +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=1784527893; cv=none; b=aiBUiij9WQhjLYXdbHhapLsQ3VI0mIJCPi3pf+SLpvEJ8zUKrNFV30nnAE8+OI9utxMC4EXSU558iBL+lrkHbtds1fwvL8q3UyeJ0mhmagQzLwFEKmiI0GeGaWKLCL0QaZ/KedI53AEAJlmctGfEwMPUvK+eJJuyZJ47/NCCMaI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527893; c=relaxed/simple; bh=u42nKidDiGf3s4uqGsqfLPYmVyOqtiq6FmPfz83VIe0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k36/GZc0lJmnI8rfQCy9n43TM4aAOqj9kTfeNgJnpGnXIdjuFEoXrHwHSoo8A+NVeDySXel0s1Zem0cdArDhYEAPZXPPl51sgB8IZdpBStbUp3rethUqisQnfTl4jQnBgzGz6fGZ20DteuC00GEd42bnwl6ANuOBK8hnBBzR8kM= 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=Ky9TbRx8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Shktv5J5; 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="Ky9TbRx8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Shktv5J5" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNstk8901469 for ; Mon, 20 Jul 2026 06:11:21 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= bEWZpd5Gqhtf8XBYTYHEDseLEqITUq5QSnbj3RUGq/w=; b=Ky9TbRx8knauOddX Pk7hl3W85uFyBtKMCwfWklxUngDv5r9eH5guLeJ/IRNYtGg5AGYvFqelijs+VhMb 9nh5NNyYzKZDF6ccFS58Tb9ZtPuZIjugOUL3uO2uHUViHJpIh+5GZAXx6EtoyBRb Uw5y80Fkszmu5j1skXbY11E1tXYBTAT+U+UNIG7avYrO7bfA8sjh41PfNPGOunGs H0JtVYz/kyCkme29aAATmpxDUO4q2Zo3ZwfiQHjJ+kcFshA514/664ndyqI31iGe PsK3fcwBf0KEz2HCsUVLKswTNcChdmTQOvqFDA9ys9B1J++E4rDPXpllz5TXntan gOdQ9A== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bnmne8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:20 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8e9489f62bfso216586046d6.2 for ; Sun, 19 Jul 2026 23:11:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527880; x=1785132680; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=bEWZpd5Gqhtf8XBYTYHEDseLEqITUq5QSnbj3RUGq/w=; b=Shktv5J5xXNGB4G7CMD5alnzeeZXLGo0dn+kptqot2W2+RqBIlnfPTB7YMwkNloJOO SUnEabfKWePpJdGypggX7jWOVr+N4oOON2sAUCjqkSHoaAaQIFMQf23OsUtkLmsBf7Vx LssO8+VbHjw72mpOgs1Hr2CuVmvILEztD20YN+dTs89e81gqVjRoOFd0OvS5vPEnk/vH hrRHBl0ucT+BrFTv5FEDzw7V76FLp1SwDNMlOdAAg6gPwapUWnXkMgFWloIpDzTmuHEU 4t376dacQAwBG6Nu5hydvl+ulPR2r0SXvqrQ5EoJ0QNOWcM5ka1PzS3G19qX9InSytmG q7dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527880; x=1785132680; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=bEWZpd5Gqhtf8XBYTYHEDseLEqITUq5QSnbj3RUGq/w=; b=dceK16n0W8PDwgknocTpi+NQgfK8hmclIfP3NhKKb6WK557QhmonDJi9gJ5n87ERwN Rby3+/a1K4mM8XzrloUPRKnXkL4Iz+i5qnx8mjRQB61nnIrtc5Z+n92c/Kt77SaxUKVD KyWqDX0mFcMzRlZGBXJOrtr6yg+FATFXfXqQWKSwbIeDgJWIqlAZHIBxGOhfa/pb5XWn 2TBdKr4Hl50/d2mcC/lkfnX4iPDpiqoaAvh40IzN2Ska4fX+3biW3yIdOkLhQNXDauSJ YKgveM3ntvVxD6JKIZWUCQ4XAQmkfgqRwKb1UPQifdNMNSDS3S7kNfqq3SZodFbW3wkp f7LA== X-Forwarded-Encrypted: i=1; AHgh+RoVNDSTpulaQHJuB/H8HOHJXz36S0QP4o/mol+7a1ZrgH3vz843aG3CljSAqvQccsh1IVNU/TkiDZ2uCJI=@vger.kernel.org X-Gm-Message-State: AOJu0YxsZ7klknsRJw6ke/12nwbZQAU4aVExjUlWwiYfBJwojUu8+QQ7 NinOEnDwKNdyhuDQodE9977noKEKLKZolM9mpOo/gPRDPumYS5Ku/c28BRZwu6a+od5/RIcGsH+ lJRwr2GI6MWOrLPKx1LdyjQg1UWJ6iQ8AWwPXYqZFZ/TSK+mnLu9c95LmW44YKSG2KNk= X-Gm-Gg: AfdE7cnfEoU4C/5RhmT4ojKQsXtKK35w4axbJlE3S/3osNDJefUfuvpXLitLUuGFw99 4lcwVbuUnmLAaigAF6i60jMikVunn1MndOkZIRdRzhhLQlyRGfEQqIZx53vSM9L4evd3epy4dFc mwS+ZsieS19Y0x1UpF1uPUPpRHlIz69oQSIMieROtxSen3pot13VfIi0WDIjTvUSWYsTReW0REK fA+HNr1NHooUYtSvqt5OjowkKl6Ok5WDt+ppKdgdmysTD7deZ+m41GeDVA20yhpiPdbmuFfsoaG V5++Tjrquh8jYP/I9JsbObZiTLsEsL6NYhSds8lRLUITJTRuF32afxd7y+9g8YE57DtIzt33p9B ROy1dsOYX8CWQltDCBT4VCg7c5SOO6tqVVm0KbtHCUI+vb2XxDQblOS9DNptfq1o= X-Received: by 2002:ad4:5f06:0:b0:8ea:658b:aff9 with SMTP id 6a1803df08f44-9077852a123mr127421996d6.50.1784527879850; Sun, 19 Jul 2026 23:11:19 -0700 (PDT) X-Received: by 2002:ad4:5f06:0:b0:8ea:658b:aff9 with SMTP id 6a1803df08f44-9077852a123mr127421816d6.50.1784527879383; Sun, 19 Jul 2026 23:11:19 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:19 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:14 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-7-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=4071; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=u42nKidDiGf3s4uqGsqfLPYmVyOqtiq6FmPfz83VIe0=; b=yxSxLVwOK6nvrS5n2lp55EMGW4AYExevs0LChoKa0lxxQOChL76cEzV+X5VeX11o+v2IFzJ9Q SgbtxVlUmJaBfOqlE7QT6IpVtYGWDAWh2ye1xW4fszxkQHeCnmgC+z/ X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX8f90v4JrgLvo hUB6YimkIt1oKSSX1XSyQSwPJdVH4U/R/on4sUwZdiwOVzhCEvhWXsCkvxtKUIS8GOWCMI2q+2L hxlS6k/yTcS++WjW9vxbBoJ8XNYgQyr+n8MnEh9WkuRDt7D1r5CWyJ28HUQDWuzJgThJUt584OT FHkN2MSDKF2warFjX+EO3NPXaomzOKBgTObWPMYH2bddWOYs6GMHLtLcXYtBNiy8TUXu00PStXm i5aFjAkqEqTpntUcStiZ/MH/2jpbzBCzY95bvtzFqzeOh1ad4z49F/wyXus+wp47XZQy530ymKl PDeqAvD4wkh6tsOh5rG4oLxd2nE0hAnMwJaSZoQHSvQ4fJejAWsfnOc89fct7VvpZ4hgvlM55HO /XOLbdCckDYlhFb7Tm+iMQEFo7aswToKPdVLQUGh5mXL95DrYtlme3kxSBEeYgo283TPP1Frpxn 1fBzOziX7f0OY9V079A== X-Proofpoint-ORIG-GUID: XJtkGT5QUEgh4R9XFOTyjBFcHX2McqSj X-Proofpoint-GUID: XJtkGT5QUEgh4R9XFOTyjBFcHX2McqSj X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX7xzchXnI36gx AjE2ZpVrvkrsLqTwXwA2UUpC89b2BN2dkzUKsNjdKAx9mhODOLhrrKlmkqYf5FyXuguSBN2hLir xIA0uNnhKz2WVYgm6tlhJ8PFuBySZkk= X-Authority-Analysis: v=2.4 cv=deOwG3Xe c=1 sm=1 tr=0 ts=6a5dbc08 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=FjMX0bmgnFGAle5WrLgA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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, 42 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index 711579de899d..a79d9bb93cd0 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2172,6 +2172,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; @@ -2197,22 +2232,9 @@ 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); + ret =3D msm_dp_ctrl_on_pixel_clk(ctrl, pixel_rate); + if (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; - } =20 msm_dp_ctrl_send_phy_test_pattern(ctrl); =20 @@ -2515,26 +2537,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); @@ -2573,7 +2582,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 @@ -2621,11 +2629,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 Sat Jul 25 03:20:31 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 9CC252641C6 for ; Mon, 20 Jul 2026 06:11:31 +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=1784527901; cv=none; b=NmDCKpgvR3givEMaRxbS28TRF8ZsUb2k6qNV1oZ+C++ZGyzmtKz0ZqD99f/UZc4vZ2BLJJDf2CxbmJo7OBUb72T/aN8l43qmhybvO5iS7swEM0XynGTOCRMD6akkthvkILuQIRIsFWCzhBurVNQyxo/TBGh8at1OV4V9I2ZEbjw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527901; c=relaxed/simple; bh=1+oXVdbGkUHZIMHtrmBtpebpoUulV0k7vcbiUM7OL30=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i1hOEytgbdlL+po3dOWUk9ZiUpk3hRYm4D+mvtwfn9oGn/CUeWQ0vntl6OPXByR6IOsYJMkKNNYOtVeySJo3F65mlAfiBII2xBR5jLe8EG3MEbi2RNjoB5PGsKF8un2/2ykn4ZDJIDI6bLqZQ53anOfSHcLTMNBRh1vj32d48c8= 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=ppmFMSkl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=P9ZGTuz2; 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="ppmFMSkl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="P9ZGTuz2" 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 66JNs8wo939047 for ; Mon, 20 Jul 2026 06:11:25 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= sAWajNDsmDdfgw72NoAHcvCR3e7RdbDxsK9dwsX38+k=; b=ppmFMSklB3436Zxy 9PqEsxzuYjTG28612NtTCjhLxX13bY7JI13nWGJaLEvyY7iHGiycLUpeBbyultxR bMWEud/Cf/cQj/U0Mk2KF4XK5Lm+JSNLI/cE6UfFXmVu4rebDnRUve7hcsfXkcRc gxWAzritBaWM3ztG0eI/Ii4L3CvyAHq2zuT/WUYF1yzwI5R9RjukbASPNcF49wFm iuseN8aMW4RAcWo53X4qP+/B4BUQX/kb2TimobdIu0k33D7EhjcDLWlYF5WWq5hB Zuh++wrsQDQhYlslQLcxshQ3/ztBTNV5XKIdQIoEkizZFKt2MxUnBbUzxuIHM+rd F9UhGA== 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 4fg2c6cn9e-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:25 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e62e3459fso1703344085a.0 for ; Sun, 19 Jul 2026 23:11:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527885; x=1785132685; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sAWajNDsmDdfgw72NoAHcvCR3e7RdbDxsK9dwsX38+k=; b=P9ZGTuz29a4iXR04/XY3icYwLh4NS1K7iVFpb9nJMDvGgUeAdcs+kKOaft5L554E4F 9wjG664dyL65tkx8iDnodU69vuNcrijq8ferpjp+C/lgyTWfNd5q/ypd+DlnW5v7fTt7 qW6UbkWrmnVELPajssgsorD6byIPh/hU8GGEqngl4TS0zMnuGQea7XwzSihec7mzpce8 Crfv2QeLfZUPihRMmu812P7dPRnic5qGdmOy5vcCnP4WJozTnk/ECJLp4BSFeBqJ2vbW eI/niia+TQBWw7i4phM7zK5ZD/4LTx1qqhkJjZeMG5wO4W8q2INU3RvIG48uG/UqwoyD pdpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527885; x=1785132685; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=sAWajNDsmDdfgw72NoAHcvCR3e7RdbDxsK9dwsX38+k=; b=H2Lgu7EGNMZ6D14SDF4TQjsZlau+9z4dDXeQc30yJjIX4wfU6deQAmJrKYfzii0L5g znHiCGmoKxUyCcvUzUyI8Rgl2W+jWYPeqwdOdc+AEWSptqfO85ryHjwtrItmh56jplGP 5p52HGz90glMa/YzBa3v9fhaoi85FqNZRDZD73/PXbZNzWYc4RuzHSxXODEkbubgBb0C QCltPZmaSQNQ0FTbxQ46vz27Xc9IlOAIJGjXMJLFv9rI319LpnwwwmjeAQDKUal3wIKg E2F4qtl8qDzfzXrIrXVyPLBQ/8fJ9lHUlCqbBpjnWjtQYcvvpz1Iy21rSRD9n57gt00y 5aIg== X-Forwarded-Encrypted: i=1; AHgh+RrQJw5K6kE4k1ErgMQk5q4BNtuveJiwaBoHHN+iwcbVBFALHi9u/Aj7GGNx0shHK3DfdBZvlBuCbsobDgQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8q/yAOemo+D7146k2JvFIUJcoYErkv4IBMzJzY9GTCFW/5d8E K0ba5hDXdAtCCexwxlZGkhfnxVacX974sAEKu75XEZSWmNizEwRUeCFyHMuX/A+zpARbzsjyeX3 EyjawL0Wlcd+NvqsuPKXqnEReHZdC3B9ZHuwfllxbaALrL+lSYkQD9a/izbq+fl3qfaI= X-Gm-Gg: AfdE7clxB/N/TodZf895BJiQGJAJ9UQjJ1yFICJQBI7ZfR5XMPF9tQdokvXGBMD8DM1 w3zU17CFotjTtaCiB6+tFBpICcJDEPU38CAmIKfbwXnSNs/3N9+NviG7q3dQyjZGOV7NRu56npH 5fIzugWW1Gb1eLjexrwoFUotXnHkk5//+txEY5Un2nR6xJtaA+MXbNlTFTF5wDYSIuEyPkw2Zou n1ZSaSZWWM+qY3IgFRxRADHl5yTn5UiHETIsFD6/ou2hQ2GX6gfQKmepoRyeVy5mchlyPp6XUai hvV5q6BXHe0eyqP4jdTaSRC5Wo/bbjdLj+4DPQRp1ZhN+6ewYylECQ/F6hVzVArLRPXN+cdoap+ Phov6Pca+NV4RYX5P5yhRbeQs4ARNmTsLTnCQlOxJ3o2EQ/2HvwnqE4Rx106PW14= X-Received: by 2002:a05:620a:d8d:b0:92e:db54:a2bb with SMTP id af79cd13be357-930b430817emr1250670085a.64.1784527884862; Sun, 19 Jul 2026 23:11:24 -0700 (PDT) X-Received: by 2002:a05:620a:d8d:b0:92e:db54:a2bb with SMTP id af79cd13be357-930b430817emr1250667685a.64.1784527884421; Sun, 19 Jul 2026 23:11:24 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:24 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:15 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-8-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=10329; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=hRpmG1O4u0ItaVOBRpgfp0VdhTJDT1a7d1EXr1Y1NZQ=; b=pYJS2Ny10rtwnjhmq5+hOOZYBvFl2tXORlmGDlWwZaUrH/D3jEOxHKrIF8fEipzabRv47T/YN g/ppEs/yBH5DAyA6WdW3qtPoBGjXNDIpbriJL8T3Czn4DoWGRRN+Og0 X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-GUID: 5_DuVBtckb9k1D58cMYeRXqx-8sxnTrY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX444Evx+IPrhG sMtVDbJovqab0NKWbUTRf+A1N4p+b37PaLW2iqN0pfWTkmV6gypTdXWzQBv+O46mSD7DDvTNO8P l2WwgDzYVRlvCacW65zhzPFhsYF/d9ILuLenqhZGOS1CIN9oji/dH9ye9GkFSOPLfFrGCMoKD8y cgjvy1GqJ3IMLzVLKsdokttxZb9IlVIU4x5cdwNPCdY7FqJ6rrOHfSst0RZiaWt3v+/ngw7VlhG d1TgAlTy8VcJcBiXmGeUEAHlYlz0wyD4rwh252o5zmtNa6jBTsqKCXkyobZs4YVDWa+zHsV4mnY e1wiI1HcvfhEDNx04SDfYniOFduPwi49RFKb9zfb1hgZ7zPgxOTNYoL5xRW0YONMNjx75ey79+Y vJ0uU/W8Ib8tN20oI2syJKzQSPiotBa7Sw7qLmcLYasoevcqyIRb18fVOAd1keWH+dQc1dwDOln UwsldCT0ecRIT+W0Rhg== X-Proofpoint-ORIG-GUID: 5_DuVBtckb9k1D58cMYeRXqx-8sxnTrY X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX9yR1niykur1L G88i1X/StQwDcYYnmAltvE2QxehyPcqiDRFkBb/3FJoPrCs8UzTsXoQDtJgEoFHOuhehGlRomm6 1PZzK9/3//XWJJTd95iRpdkLNIe7pfU= X-Authority-Analysis: v=2.4 cv=CJQamxrD c=1 sm=1 tr=0 ts=6a5dbc0d cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=yY1IV_0HXbUsaRqM5MUA: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.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 phishscore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 | 107 +++++++++++++++++++++++---------= ---- 3 files changed, 104 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 a79d9bb93cd0..32607eb678a0 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2507,27 +2507,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", @@ -2541,16 +2533,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 155beefdfdef..ced299cad831 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -617,7 +617,42 @@ 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 -ENOTCONN; + + 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 rc; + } + + 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 +663,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 +693,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 +707,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 +1411,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 +1425,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 +1462,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 +1483,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 Sat Jul 25 03:20:31 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 9BC113AF660 for ; Mon, 20 Jul 2026 06:11:33 +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=1784527900; cv=none; b=jJcpN6l7Vu6ltflMd+XAWEgFNhb1EZ6Lp1f8vwushQs+BpH+R5dvmPqxK5/Tm4XJQ5pWuJyV0La1yhjkwOOiWorerFJv6TwBdY0Vm1GoDcYlDzdyvtxrdbZkwEi8uZ3+OospWnRkqQzfwfP03ypSyaFr2gB1Pt5qbD+6M3PoOrg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527900; c=relaxed/simple; bh=dgaSeilKnCq5wSn3TAsuBpoL85ew+5L7uAl+smsCX/Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=knUenSaO8jHYsq3ampz+FbMN4KQIg1oTFRJV1Kdj1dNk6aNokUTje2tyA9bnYRyojR9TtU158WQuWU+Z/Ofl863EcT3d4j2Nii5lNpjSJRk5exj6pCI8O0aRIh2ZfbTE5sgPXF3voEg8OSU5o5uIHCe6Hk/wIT1E7nT3vqxYFFQ= 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=LnPAuyED; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jFg+SiEx; 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="LnPAuyED"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jFg+SiEx" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNtTIp903096 for ; Mon, 20 Jul 2026 06:11:30 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= D03QOeyPxDyyec5WvQKHewnRJ0KQmMoPVroW949BZ9s=; b=LnPAuyEDWbfk7F9v T5cExMuJBFo97QkVaqCbmyT9TDHVTFsJjR9xCkY2n9SYe5gTOMZaJ6uc7/Eaa1rn +sB7Dx6b0xUbcitaRL8HnnmhMNAlm+JBWNBnxVX6wFa6SXEdGqpd2GpsBWDt5YUm +lKYMbkczN7fhEPqbFPJDSO4+nnhuFWXI5il380wKg+fPVBDoSiCi/jG3qc0W3IT wuaJRBYH5x5zyZAaKFpHBOrztiRubIYIX1cJiu3naItBOf+Mn5nHYrPJXCaO3SSf av+KMB0IY70X6AVKUthyt1HTtiMXRJ8qATdQvVKNvNKFq1ztqjvSvSadix6v3aH3 MRyDbQ== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bnmnf1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:30 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-8f0867a75ecso82568306d6.3 for ; Sun, 19 Jul 2026 23:11:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527890; x=1785132690; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=D03QOeyPxDyyec5WvQKHewnRJ0KQmMoPVroW949BZ9s=; b=jFg+SiExuDnrYoTzqnqmO7hWDcxmnfSEzkNX6nDG/AHQI1jjeYEuJR+DNiwPF2b3vm LGEMi5qDRDrcJX531ySXtDBfBmcouqVIsL4fbLrjYDlrRemDBJCBICoC044fWBSYErQV zQRoas5fWxDZfKl+6zvzj3qT9DrYp1k4QAwoxF/+BwQTQm58KmjiLbsbBYF3AdD5XSBR QpMdmMvCZglqbIylQX863XADgrKYQpr5g7KJ5nTQRoD1cTsJduALK0y+xyaWXuvtiiok Vywp1dz59u4k8PAtWpkRUML0ltaHBVcEs2/lNmZYrWOEd9PgVMi6VVA1T3oCbvbHZMLb XOgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527890; x=1785132690; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=D03QOeyPxDyyec5WvQKHewnRJ0KQmMoPVroW949BZ9s=; b=oRpvyCXVrOP7IDLl3KARLr3CoSaLObM2qGnHD/tqtVaW0Se+XX00bGJBTU9FbbUfF4 ao4RW4BM22MQp++KXZ4lXPye6u8fH3k7aTap84JDiVxUq0lW0/DQT/UBbDwxH1hm4LkB RnSP+8umhVMFvCrsNRJrC8RHsY5vDqvNN2dwoexxpscAd6n+R38EIaY2rSFsdSlT6ICS jmXTjVQv6IRDEkL22xLRcxAmhyKh9G+r8kot/OmtJ2kGSRqQW58XNK4TilgLl9d4zwD9 KZdwX4xnyUSrOfIR6fwT8gI+bstYhs7P2cJ2qneDamgIZOr1du8ddjs7AgGibw5EqeYz JDHA== X-Forwarded-Encrypted: i=1; AHgh+RpE8OjJCzFqjRQPnB2dlxKW+WqR8xW5OMrNaPX41l7jklTu21c9RlF/rR4yGY9ncZ+VsOKFWgVNAXfdmrM=@vger.kernel.org X-Gm-Message-State: AOJu0Ywk2GbFZ62ZqPfWp7mEPFu3QUiPJgKkz+LSVCC58At1+KeQzxZV PIUKVg+U0eOBVyi7WK0vbOy1tjzblToMjkfjmdkeZ5QH9OSUpqcFhmOPmnMLT7yIM6QK6R7ySbR mukrdMSkkioK3MqximFFLlNxhPGCeVRN01xbJhTGRauksnJeoGNNfy17rRs10AjMu7Gk= X-Gm-Gg: AfdE7cmyxvVEzuxYyHIE4qP/t9vddngHBds/FmA0nb3N3BW/WQiMri4IybeseTVYxJB TKpDi57xLzD1sE72ucTbL7kpad+lJPyoF9uyFxI3KCjvuqmlJwW5zEziLBcEPflVY62nAZsrZjI fJlLyiUhWpAB4Kr7rh2p7V/Y2CtogdSdgmvXn196HWystA1EdPYyPiBRhb7LBGGWj1PeEGdUGTv /rj8lBmq3bZAxM5+Y2UmjnYcfJhq8tI4kzDPt6oFFrWjIcu8Q8jAR0/so859Cjtd2qlksmHjSwN wa++lf85bsz2hhJg9evhJueTekMLFa3fZxYRHMpGSwz8pMu+z3wu1BiuiW7hCBiELP8xC33jgaR liauASL0Gs6VfL3/UABcQPWv9sTH+WhFzJlY2+R1EmMf9pJTHhpb9+XFMRzs91zU= X-Received: by 2002:a05:6214:2303:b0:907:5b47:b875 with SMTP id 6a1803df08f44-907783a06aemr125648846d6.35.1784527889796; Sun, 19 Jul 2026 23:11:29 -0700 (PDT) X-Received: by 2002:a05:6214:2303:b0:907:5b47:b875 with SMTP id 6a1803df08f44-907783a06aemr125648726d6.35.1784527889386; Sun, 19 Jul 2026 23:11:29 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:29 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:16 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-9-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=3890; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=cC8v2WuisuVaw0cBf4g3L0Y6jW9Y1zprJ/LBzfDlZvU=; b=V7hE7hyNsEQYHZHCC9TbZojrbarQgINs6s//Ii+LSbpYzSERG6objSv6/4GknaWiRB/rHJzY6 n/PX53bDddVCpzuM4Bsm1bBYLwoi1r9Gy8jm99LQjtkp2frQIG/2e+0 X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX/Lf4rHqMK4vV bW92Qxe1nEAsrl8rLBLWoejq8jH9VB8d1UMc0plVxdZxXC9v9aOjDdrg7BgIvewd84K2KimxvH1 Gu8fpTIHSj+itsbAZL71yukepFPcE2R7+dJ8gf4GGLz0rXAj1deSlugMCjZ/U9Ae/G8y5mccZRI F2llSYKGTbc358MPV9UBkmggZN/DNgew/WY+aFaOWrToY32Je9eBAgsIcFzINyYvIYfmPKbtXMW FVjcO6HZsGyEOR/bbXg/sw3RpV+YZWsLzHAz+eDp5qmwH+rZV7MYeX8osKJJ2rfbkQ9ddD/CpSv G6RolFcjLXZKW6MZ1HA+Ex0AGjD0GkT6bnt0ohLKVIClFHQH8Oq78kps8ZeAUzbsJUHvP1Wh9f2 H/zTOZP04htWYA9dxcBgP70iQULsHG3G/ay/1iS/QxNIRmcc7CvXT5tZr4bDlr667RixITmBVF/ QbddIacNIKH9BlzpckA== X-Proofpoint-ORIG-GUID: jDbCLvtZ77WuIOIQiDQfwOE7m7L--_37 X-Proofpoint-GUID: jDbCLvtZ77WuIOIQiDQfwOE7m7L--_37 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfXz7MfkYd9sMfr RNi1Wug27uRz6A9bJXEWEJZYbFTdg6sJe9hly2Sm2vJFCvMOIRynNuTBHnChGaYgLXDdEt+Zh9+ 6OHWhbpSP2FwdW4iEDvkOHImwng8ObY= X-Authority-Analysis: v=2.4 cv=deOwG3Xe c=1 sm=1 tr=0 ts=6a5dbc12 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=3ttbkIfPOWFMAE6HwJMA:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 clxscore=1015 phishscore=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 32607eb678a0..ae79cbec26d1 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2601,7 +2601,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; @@ -2609,23 +2609,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 ced299cad831..9df094340f0b 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -716,12 +716,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 Sat Jul 25 03:20:31 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 5589A3AC0EF for ; Mon, 20 Jul 2026 06:11:39 +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=1784527909; cv=none; b=Z/2ZKsuTT4WypyIt+qyE2kdejEqm0QhVCxfsr444rXWlVPVD/4dV9oC55EQRGMX8C6kro4zAKTyWQTRlRlPFj0AEH/wkHy6nyL8l5/A38uoxh5rynRp/W4eM3PUtYfIU2GJWGKuiD13kO+ZUBeVYGkovbWrkVhmz0Oox2GW2OOs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527909; c=relaxed/simple; bh=cgYzMDcwVxGUvHrPBpAb46rEwsxUJyrjLrqQrwLj6xM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sU9FQi5pbi4R/pmpFSzercKWgp+8H3p4CeuVT70DAomJOo011DJg3xPjuN2lRsZbV0/b/XSybWuGqrl/D+wceO8uCqGNB95UVxn1nj+/7+Y7mXvVA95yc83Xasl9skbkI2L8AtODvBc3nzbtJ4/Esx6xuXvGskVwslDHfziPVhg= 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=G+47JyE2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IZa1m621; 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="G+47JyE2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IZa1m621" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNsEaW644580 for ; Mon, 20 Jul 2026 06:11:37 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= vpHHP29whbdx5cs2gLezZzHUwiHHHxuEcH2BBOfuJdY=; b=G+47JyE2e9DXgIbt KUPHDrZ24Y6zX2wjSmlar2f/Y2RZftdhUvodJ6OdU2QfTxd6jpdRn6v5UqofgBcb 3Eo3VVvASWzm4aBKiDp7z2aBuy7LBA4LxXCcwAIBWPP7hkLij2Xz95QAyaF8J/VE wcX+7IH3kwYLBZ+e/2xc++20ti09eab+aIfcWLq19S78DAk6Xuqqlcw5OPBIaeL1 l7ayOmJhuz5QNkQTmc8gORX6eqt8lqJS1fmvN2Uydfmc7tCGOU95vsuLk0pUsVjB vGQxgdQk13lErvKngdgasyAWST9vNkidJWnmC8Ewy3qBVhuNgmfL9+ESnbAxwjGx Q1sZVA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bvvn3a-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:36 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c0f0a0760so233610341cf.2 for ; Sun, 19 Jul 2026 23:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527895; x=1785132695; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=vpHHP29whbdx5cs2gLezZzHUwiHHHxuEcH2BBOfuJdY=; b=IZa1m621+ZP0vLoOWwesAjbHeAJn4Glr3ymdmNAMfatrc2NjA3s+AQHb/8902CSDlX CRv8d6iCMkdWepcWCr28zzjfPkxfgaDs6biuL0JB5HP1kHmEH1pVQDnzK30KLW720ogK X4mYtZEwSOPa7Wf4ooj+eN/ClCrMA/G5BvqStI3CSirDJu4zIcBL+F+2ettfN2i2RxQd 97lgumbjvZrm8shZWATvmKXmaews44iKcK7JGH6312nTnBRH5z+ROQFEyT3qj6rsXHcR ZjXij3UmAFkva78fABEV2rCBRvgSvsNyiCjlHLPvsQ9/r1DGxYpz1FiP2/69NStMFBsu Zi4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527895; x=1785132695; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vpHHP29whbdx5cs2gLezZzHUwiHHHxuEcH2BBOfuJdY=; b=oJYvhsjXew7N6stk7ANhTOZurbiHYkiW8TcadBWMMAr0i6xsv5mCxOc/N6P4ZLgowL e9rzldotXAJ7AaHy1WjkDivynjlJgAK+PHzFr+VTCjJcgZPp4o3mI7oukHfmALWlT4V5 BAffSIXaTyTXUHbj7DRQdxjSqPhfT/mlFbE2plbs9QPCmUc6zJjaCgFp7gLw1szh6To9 ouolNZ0Zha5lvX/hurLrJlCdPYLW+eorUn+QIsvvZo6tGFzN9E+6l75MbEFOHeH9XxLa zXmB297i3obnUwuvHtz1CEKtk9jxVjorFTmF3xSuMM0EkCB6+5tEoWgg+PtRp16NBkt1 wjKQ== X-Forwarded-Encrypted: i=1; AHgh+RouNU+ZPabpWJyQH+rfjnW6+8XnjDZbbNoQYwmksr1pTamqseZR/Vsm8PrWeo87npVW7WsEm66sAJgbbdI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5DZO+T1rTqWc/TQ5ATR+hlZcC1MxiFl3qieWDQCio+efdH6jX M8NjwBuCzoH6nIXjYPGzhSfcSBeP7HNXtIfUGsUOHlzqFATgFKQvD3QDdQM3FHe0EtEjpHbblxu 0EDNkitObEoX9i5C4VzHWbcRaKSnPxOm/oN2MjX1odxHQcPBX+rb+aQD0X9/EreQCHQY= X-Gm-Gg: AfdE7ckQoQEnU2VZ3ekfr9xXzjPAfG1/rZJlH1nwle7FzsF8GjP9jVbsZr2VYttFfUj wjiKyfS5KDyBeR2e1w5/zlvqFWXwokKqvkdGZwQSzOPW92vH7inNAG0QXAfMtVBDvmhQxI5L0KU rB4a1v3d1qcD54+EzmNO+9GyC/My/EHL3l77M622mWKwwZSIAocUERoy5V5G/f+0j1x7deLlcuF rtFypW+pRGI81CUrUmlpXlmluEc0WJ8snkXS7cQzlo2Jor/WeXze/qRPTtjQU/EgoxrbfAVqD9G wShqzx2V+jrVjv0WQVWbb1T4Plyu8fsSpkU8OagwzbpWvjN09cbVjCNlcLmQJfKDnUSpwDH2KM2 BhxVoheYFuwWLJMjDGmAbBoqTVNYGwq2ZcE3amY6GLbDwgIG0a5lKmmFG73nM6bg= X-Received: by 2002:a05:622a:510:b0:51c:7b11:41a6 with SMTP id d75a77b69052e-5213f66b7a2mr116069121cf.83.1784527895186; Sun, 19 Jul 2026 23:11:35 -0700 (PDT) X-Received: by 2002:a05:622a:510:b0:51c:7b11:41a6 with SMTP id d75a77b69052e-5213f66b7a2mr116068911cf.83.1784527894633; Sun, 19 Jul 2026 23:11:34 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:34 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:17 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-10-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=32464; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=M/3qBSnURiAfSpf7imZmGSCcN7M0akFHDhqfcWmyCV4=; b=ais4gFXg4Wo3IslO+9hZJPIYSYyhEkxAARFiNNg/y1bW11KZ3gsqlG2zO8ZEAAoq76Ve30ycz u1mDsDw4J9HCEoGNPnWMieuL/EiJ4xujTTntJsUl1kCeH7+pmbcwUf3 X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-GUID: GhE01fMHXZMtZU3Tg-ggydctdc9Z0aV_ X-Authority-Analysis: v=2.4 cv=EcH4hvmC c=1 sm=1 tr=0 ts=6a5dbc18 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=531mWe0hPKX_9nM1v_MA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX9g/15ZFSRYzH BpAilXvLC0XzCZaSpk+Y2+MR+U3QfWLwnp5rDM37r4KI3EQVD8me9vqn8G2EOxlFczgavocrRnI 3qhZvpKcM9A3Ws6UdV6tYINmdnbrCB6my8XNZxHXYJdg/Ij0zGicjfV8BeLHouvGjy6HlnJgC7U r+9ouLo4jQCEuV6PvZn7DxZUwxdqCKBW2J6ZYViGc9GnA9CdQ2JQcDWHBuDdbfv92/gQ7FCq6s8 O5TulhCyXWvN45r4bgwKLU4h5rbmrtp4IBTDNgoULPOXARNGRtwbaJxXtF8w8RgD6rtvMgzKKYL 8DzhJrNyEbcb+ejRA42aG7qqYy3aCXEDEBa1Qvk+4RL2nZ+wTADm3qNSyM3sN3IuEeFknjW8qd+ Y3ygR4GGYaF51o1qwObxwx9csM6GgmVgg429riEqL+N8pkXzxgCl47Z+r+2lej2nNiiuhmNkGst t6/Z2TncNma3Ahwq6hw== X-Proofpoint-ORIG-GUID: GhE01fMHXZMtZU3Tg-ggydctdc9Z0aV_ X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfXxdBrI+mK5dud TOCQsJKpIIzfHIuH+CLJE/Am6R5/rJOFmnE5JYe2ju6d7i92surQi2DEcK9XgwLaVVNA25WzfnD hGyteiDq52WAuUvBKxsA1rEhtg81hfk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 | 198 ++++++++++++++++++++------------= ---- drivers/gpu/drm/msm/dp/dp_ctrl.h | 28 +++-- drivers/gpu/drm/msm/dp/dp_display.c | 24 ++--- 3 files changed, 141 insertions(+), 109 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_c= trl.c index ae79cbec26d1..207643fa7306 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,17 +1647,18 @@ 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_streams(ctrl, ctrl->panel); + msm_dp_ctrl_config_ctrl_link(ctrl, panel); + msm_dp_ctrl_config_ctrl_streams(ctrl, panel); =20 link_info.num_lanes =3D ctrl->link->link_params.num_lanes; link_info.rate =3D ctrl->link->link_params.rate; @@ -1671,8 +1681,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; @@ -1683,7 +1693,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; @@ -1696,6 +1706,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; @@ -1711,7 +1722,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; } @@ -1810,11 +1821,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; @@ -1866,13 +1878,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 */ @@ -1887,12 +1900,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 /* @@ -1962,7 +1976,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; @@ -1983,7 +1998,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; @@ -1992,7 +2007,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 @@ -2000,7 +2016,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); @@ -2014,7 +2030,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; @@ -2024,11 +2041,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 @@ -2207,7 +2224,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; @@ -2223,15 +2241,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); if (ret) return ret; @@ -2241,7 +2259,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; @@ -2256,14 +2275,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; } @@ -2271,7 +2290,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; } @@ -2307,7 +2326,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; @@ -2323,8 +2343,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 @@ -2336,8 +2356,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 @@ -2345,13 +2365,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; @@ -2370,7 +2390,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; @@ -2391,7 +2411,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 */ @@ -2399,10 +2419,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; @@ -2423,20 +2443,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, @@ -2507,7 +2528,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; @@ -2526,7 +2549,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; @@ -2534,15 +2557,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; @@ -2555,10 +2578,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); @@ -2575,18 +2598,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 @@ -2614,7 +2637,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; @@ -2622,11 +2646,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); @@ -2635,7 +2659,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; @@ -2646,7 +2671,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) @@ -2735,7 +2760,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) @@ -2743,7 +2768,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); } @@ -2771,7 +2796,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 9df094340f0b..8694f366623d 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,14 +642,14 @@ 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() return rc; } =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) @@ -663,7 +663,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 @@ -688,7 +688,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; } @@ -727,7 +727,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 { @@ -735,7 +735,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 @@ -871,7 +871,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 /** @@ -981,7 +981,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 Sat Jul 25 03:20:31 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 28AED3AFD15 for ; Mon, 20 Jul 2026 06:11:43 +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=1784527915; cv=none; b=nzY+YdR+mwyB0cLh/S2uOrMhVv4kd7ySkPYe6XH+br72YBeB6kKyjL4CeIuoZmoxkb6NYzNFsow6zgBCsDuhnoC+FggWSP/0SA7X7ncsVwKjwHX2CILVZ9mqPqIWTK/4KkwqI84kLGkgips7ax1ywhx7W/+U8JUYfWtbuVrJ3iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527915; c=relaxed/simple; bh=g8jJQRxEVRToO3ME6wioKJPVD8Wx6NKpH1Y6rxv1juM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q5Gsu6iv+bfdVjvAP5ryiv6AbWiBcEkf5VGvQly043SxjjEeA0y6K+08eMS7S1lcIgwonf44hhtMlV2+GzfgKyhxG3jimj0gS1JfPosEIYEs68rA9GDXPTd9hjIWitJQoUxraFcqrMSW7xxP3XvPM5uGWms6zjeq+fploNJVYds= 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=T0BaR6Wt; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MG8lS3T/; 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="T0BaR6Wt"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MG8lS3T/" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNt5Bm410583 for ; Mon, 20 Jul 2026 06:11:41 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= 6ElnWA0oWQD3Q2jSTrrP2J1EEOEKI1Sa6JObzupzNEE=; b=T0BaR6WtlyxIiA6F CCsJRbJXsB/55wSHJiZQRWoI2+3kIghp+IIyF4V0Z9j3xAW5l6L4Smb76bRAkW7a ERajE6Gdq6LGHeCdYyZZ1F6HLG9ofAgIwpiADkIJUlccvDnZgJo4RfHgE0D2m1xM IS3MCFKJpmFq+dNtoH5kmmqlaSLGRtT4eDWfIaJwJGhd8dW9we/R7SynXaLfhqqG UoTSTINxcp/l3GqAlf+DCKjaZ1+R4xYNsgfpRHvzmqDKiVey5CppgtDGoExw81Vl COdnPfy181thoq3fgb2ms94HJAlkYVyJmi7b8brVT0LlgIZj3QCRt3XxhJytlfhE OXdcTw== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2nhmmwk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:41 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8e97889ac8aso159216576d6.3 for ; Sun, 19 Jul 2026 23:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527900; x=1785132700; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6ElnWA0oWQD3Q2jSTrrP2J1EEOEKI1Sa6JObzupzNEE=; b=MG8lS3T/624159toTYnlb881P3rUq6bQHBJPKJ90mlnHVwcqeAzA04Wkx0PY3FR7Qh +45TAZIp0PII6zzvzpcpJ1wLbmaxt0ER+cbdnO30j3RZbR7SqtwQSt4EWRt0oZy8nGpN llzIs0scJjMHFqjWGsUhpK9gejq40eJkntkixZW6JZJlIerSBFTP5Xzyu2wTsF+O0mYR 2ZeaB4UBBs+wiIdEJOssVCD39mAl2ogi5954RIorYGLUSK18qsxmQyk1UQY689IXX+TL e6K1oYOYCrWWYTWoHlRYUdIK55aQ625NDkSwZDUqsR6OMX339tN2rnyNi54UfCkUWkrI SlVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527900; x=1785132700; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6ElnWA0oWQD3Q2jSTrrP2J1EEOEKI1Sa6JObzupzNEE=; b=kDT4OhF7v+nhev/isu6OInSfNS5/X5NoWjm/lF3DIjhI/8YmgNVbiUPg1tU5yMB3yg bYUK0QNQP2X5t4iEHWP4bknPM+yIA2I7A6HInYBJEw3nGf4jQ4Hs++cs+r6KitAH8gWA sv0oaZ4GL3lXnDL4SIXu3jvOdjIYhADCMTjMkCSwa+QHUJULWur5bKHTTicRlrTsUj8E UdCf11efmI4GAahJ5FcV3qM3XfCA40a7G3E9NDGC/kt+ceal/TOLX13ny++8cENAb04A 7d99A9f/17Nf8Ijg/otHhh/foQwyP/L3FKypWDeTWtA/klJDmnOhhfxMxfmYgrS+3qoz XFKw== X-Forwarded-Encrypted: i=1; AHgh+RpbN7XBQxPIxd4Z7wy9nfQcfg3WWRCyg+rxuV0WhDImbBCirIyS+VAFra9X682hven0QXWMsI5eKpXsuyQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwA+ElrorrvpmWMzD+mpsWMOOzmNOsidjssY7PKkHkWvp9ld74v EMPotDLAJe3Tv/XeNAv2STitAs6JJwKgEHB5LzYqyxDy+3WBZ3ohnu9kjgTp0AFBLsOT15xZPMM 1NQ50iIjfwKDiTahuaQRxJ6Dl0RQEl+TbTPyE5Srlo8s7voGiOzI5XULT2E67a2yImCY= X-Gm-Gg: AfdE7cnBk8xw4tXgW8018CPPRfj287i0nRzYlwivrkAa51nLNuy8StL0PjwM7+TGcyi tEzeNA16t4edxjOOLp83jfg/vUOsX+kwD39Tz2/yHwEx4vD2PLuWD48dv5BbaXpclVRwkE+wby6 KM+OGG4utGQwrLkmuZxl4wQ6VDmc4O7uSEK3HR4XKRMuC4hbfqWAETHpq27FRwsED/1g4eyKnBr uIXlylkx8BAfO8PmgTxZYI3c6GXsuL21mxYe+Y7mL167EQeDHBAr6EiUxY7esOyZJE+ufYIbgsh /2tzsc7jimHZ/H9dFwbbRaULt/1ecaeRFvKYbZ5FxB1n2UnyeeotQ+6pxWWxgkBGaby+8/ABCXC Q22GzTdutNhwmMsbi6EkHBqlrAfKGVT8W44NzvQF6jL0AmUlTT59iSu2j5ObpSSc= X-Received: by 2002:a05:6214:5a07:b0:8eb:eb8f:a37b with SMTP id 6a1803df08f44-9077835b93dmr140028996d6.24.1784527900043; Sun, 19 Jul 2026 23:11:40 -0700 (PDT) X-Received: by 2002:a05:6214:5a07:b0:8eb:eb8f:a37b with SMTP id 6a1803df08f44-9077835b93dmr140028786d6.24.1784527899666; Sun, 19 Jul 2026 23:11:39 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:39 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:18 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-11-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=3896; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=Hm/Z28jFbNNIpMkSUALvMx+PzLChWdRQ0AfWWBpGnus=; b=ODlZsMU1OSad2GOkqijy6Bi+SzBmkedQmePHZbWrIu547duYgTj9QlXP2kEZGI3zp/oV9xFpv LnKYiY411WKBEVKGMhH9hKl8NKiO4HwRIGQ79KgsGz5GSNqaKuhAx0C X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=Le0MLDfi c=1 sm=1 tr=0 ts=6a5dbc1d cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=btynFov_yHAME20h-3wA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: DTEYG0eB6exVieKbq2M84ZV4paAyuqPu X-Proofpoint-ORIG-GUID: DTEYG0eB6exVieKbq2M84ZV4paAyuqPu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX7VKoN1BIouM3 GJuKkN9C2kZIepAu04mfRH0fiueBFt951vbY5bjZziNUQkem0F2qhFKCPb0ZgQnXleVnbkDIdd6 q48eK9dgKylyLa6L/xAme1DCZYzq1U9X+kWyX/bix9mPlJX2+EuffR33jWZX72PmPLn25SNHRIa 2SjFNw9h5Wndy5r/YxzO0r0wUhvRl4QaFAC2Ry3wBxS44Mizn9ggenMf+YYKMyXWc+kFB9MEVKQ ZoNWa5j4ow6neGPCzoaTneQ+FJXB9C903VeRHcUaQT52oHIqlQMSJrQFSkGatwGWqPsc6KvFofO MvLYkB7Y/rc8ws6ESafKjXsRxHP2KClCmJaFpBv4nlUL0whLHXfGvx2wYklXNio4MQUdbyJr8y7 1oKsCROWERwDDzkUgRMhRPo9EcBEJE3Pnzgs75DKtKUkNrNc1rQ19V2KO5+sofg09o3XZtHn/Q8 ASefLozxJ54h/RlPBLg== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX1bIk59ykRFOK gSUPbwmD6conUPXhut6hNOd9vtVQv0hxwcjUerRZ3VSc6OGQMeze+Ds9TxXwkSqdgfuBF9RCfg/ lfzTLMJa7KhoNMk7DWkwA4Il26yp9a8= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 phishscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 207643fa7306..fc3fbc40b118 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -2212,7 +2212,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 @@ -2241,7 +2241,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) { @@ -2637,8 +2638,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; @@ -2652,7 +2653,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 8694f366623d..1ecd700a474f 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -727,15 +727,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 Sat Jul 25 03:20:31 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 CC7453ACA42 for ; Mon, 20 Jul 2026 06:11:49 +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=1784527917; cv=none; b=uQTm8qXgQSsqvHqrdjJ9q4RtZB7hMk0+Ibntao2FufG3M0v20iuWTFeLRnkKdvOJAu8e8JPSYLxCVpkYejEeW9pPrs1/PuvMYIJxLuXkIJZ552W0mROT+KKiOYups4Ps3O/Z1Rbc78mfoG8HV5wrLNOdETg1LKBieWndeBs/Yr4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527917; c=relaxed/simple; bh=4C6nVgcTW+thgRB8rInVDfxhuZ+n5lTL6ENDh+EIJeo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EKXSjWSsViriiyvNXAqmu797zA9S3FNbXEui7zCZ+s1GM/QbHAOqk+9UoCazhK29EStfDveEwKnvjJVeTjB+nh/+inAAG+4VQ6/OhilVKjfqGzW2B00e9Fkn/db6ltGPrED8uOmbOmZIPT5MphoEeW9W8XeOPGHJZrM2aYQGY2Q= 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=lVtcxryq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Bucj617L; 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="lVtcxryq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Bucj617L" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNsAsn848331 for ; Mon, 20 Jul 2026 06:11: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= /ZkQwyBXdXdbZK7rkpR73PpIwuDrFdUuinUJFVkWC24=; b=lVtcxryqsDSsnTjw PFLn8Hjh6OcJfEqBoiCVvv+nGxsOl4OI1D1jZv87n6+T3jMrGzFtNfIQ7cNHS6Lg 1/5hTl/LjOF/j0JcQrfDMiMLhaBmKLrN0IB6fiSFHj5nSQKBzWnWHcVw27PqBnRW xWP3oeb5gHJ0u9Br2B5lozei+GMb4K7NHabGR03ZWYR1n/0US1/xHSpP0KIVdIOH 6BdhTkTApxN1kz+cWeEn67XBWixlYzsgZHfLE6DKMLBP2qDLiM7++BgYbwmLzWhV +sP1AIJqB21jPRqrDiwIfUPlkLD+OMXuYw8hkrDvXIqlbKobqKiA2Ze7QbxtyU8C d8/oCg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2dc4p54-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:45 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1eb52e1fso75943111cf.0 for ; Sun, 19 Jul 2026 23:11:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527905; x=1785132705; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=/ZkQwyBXdXdbZK7rkpR73PpIwuDrFdUuinUJFVkWC24=; b=Bucj617LrAgixYM27S4Y9rmlTfzuWXccPIaAWVTRsQUY3xQTn7bhGJi/2gykRYVVAC ENmzmfQIQ5CfXBBIPxb6XMkz7UvHgH8Q0VskCE9IeWu1rR/M7YKky0I8X7BvolFvuvqq vHx1fHZtU//zlr7Ri//wQuHNi2Nf6yjOjr1FbU+0YE9304kAdSddrqs58xTTnIqad7fO jMJ0FNkuD1LKpVb+jesrzRzDCrIkE4HPUMiy7HKwXmD5MYA4QmGgAIMYKUb1YjWkyVMo LuV890zHT7kmt4P3qbrzcggdxEz5LTBO1Z+WffEiDj+tGwhmXdiTqOdWoHn7sOOqT+jP rQ6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527905; x=1785132705; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=/ZkQwyBXdXdbZK7rkpR73PpIwuDrFdUuinUJFVkWC24=; b=fjnYOBdxNICcgGnO35jxQM6ffWG8suzeYokJAvXe3HmOredbkIyGr/Uc1dMvmxCkCN Ae/nHsxMsAZ96oFsYz30DvmyQb+Y5JUv4EMRAcKukBiuRtC/X9quzwGNznarbXvoPe/8 v793T3Doa6aGs4iYFdTxEGcqnzNBUsJ2G4hTFl3XUUEndCGJlBdx+aYO8yd6/5t8A6HO kQ62RRJbIXeVaXsIYStr6SB4R0kxi/rz2emTPrhTt/e30coDm2AADg7/kCudoiw8hQBN /Li/AYAjhx+dVyp6u3OGxszkSAAxw6S8ijDzA20nIN98x6LjabO/dV8sbEhoPyNEvymH s/Cw== X-Forwarded-Encrypted: i=1; AHgh+RqS1+EtAFbZN6GLz+7HdO+mVUw7AV+JBhRDpw8nqJlmFDgMfMT7a8GvbQN+L94q81NEECdGn9mqe9Z34jg=@vger.kernel.org X-Gm-Message-State: AOJu0YxtCrfsuK7ArHTjU4rc1aMF2mKbYmhgkpBB77wEK0teRSKMEK3T ULRwmyO/1YnqNIZGPh6Hm8alcPMTd4N7hiGpHIdfz7I3FNVDY5fLOcLhu+MZml0vCBCezYnSe9t q6q2oHSetNhhDspvPsa4VxGSbA2JyqbLMRjlqETQADEaiYvd0wm7RjzZwYqln4UMN6UI= X-Gm-Gg: AfdE7cngVET8nOTmRGfGwhINKbAfJY3UkYraPwDuEw67pgNxX7le6V1dP7sTBSna0DM q6LzFDBQMTx96G92+tl4uPJdkYEWSY5Si08QnDIZyKqXxZ3cTuAr7cNJyU80EWP6VGeMthsh+LS cF3h87bSZVq11oyph11afSrY0d6SAVZ36tI5yQwYhLFy31aLZtOj0G3tqvzhGqn9G/c90UIoqfV ji/H6zkPRCpRxbkITiQLrGseW8dvfxrOxaB/6QRy9Cxk99AHiCKMn1sUkGTP5kCvKjNf3mNewvY UO9L4FvDTHUe0glbMgGILuM0EUUQGZkK6cDjkPQn/PdtCFWGnbtNy+InECEctnN3mda5Vds93ai 82qDOjOnNFcXVIBi34Dy+uDJZVxpjot2f/TJSMezLpLu3GHSRJMIWASwpvVC+2yI= X-Received: by 2002:a05:622a:230b:b0:51c:19af:6330 with SMTP id d75a77b69052e-5213b33bbedmr123147081cf.36.1784527904657; Sun, 19 Jul 2026 23:11:44 -0700 (PDT) X-Received: by 2002:a05:622a:230b:b0:51c:19af:6330 with SMTP id d75a77b69052e-5213b33bbedmr123146921cf.36.1784527904346; Sun, 19 Jul 2026 23:11:44 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:44 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:19 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-12-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=1745; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=4C6nVgcTW+thgRB8rInVDfxhuZ+n5lTL6ENDh+EIJeo=; b=B3Syo+/mknQQIe6IKqp1uzBpQ264ooLumBdU8/54Wne+5QjAVw83eN+GHaa4TpsIhnA/d0AH3 zIBzEJZJwZ+BKLSCAmv8Qynmfnfh2V/7dS2rLnlKt6QvMljmJ42YTlu X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX7l/0/yVT2uw0 10+uNr2FdqG0cuWwPpyMZx4WzDEEElKTiFbJHuO5tm8ETgmnQK5SG9KZ9u1oz4AIUfTU2n48n/4 E9KnGazeUBE2/lRbrZT/xpTcD/3R1wo= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfXzp6Q3tcymBhK Sws2dldsXvqYFfdJSL8IE0P0ssz6To7p3Uf/wy14pqrnXXGM6PyqTgXCByi8Ze/fiQdSM1ghCwE AAlVdWp1BnalKYIJk3WZ91hd9hOfoTpfMDyNCYQazTJIxxtoupp7e6MqqxP93IUX+u/CliG+uKq PJlz6WJTl8Yam1oOUvOTtnrQNUeJjhp62GoIVr1sZJ/vlnEhlMY51R5Ff9Yd8cTwTGQl/XvvH37 sqHKAf4TiIk2SZGrg5JdczwlXP0qFJDfhrXp9mzKRmg+MIrs0kGQHaGTtvKfil8p8hKes085xYn GWQNe6CA1l/rYhLIVJVIKmqGCcuL59OUsEPVuARJ2VyqBgJRKtZ6rKQSnsrvKARKBAH1VkVFwMB wvQYpuPv7T15KrZkWyWmPFNTTl5hhV6YIqmkPRGS1gtRgsaptpNxztSLKCSlQJkhEd6+pDze2RN 7ueeplLu1lc0qqp9scA== X-Proofpoint-ORIG-GUID: kDGUFcy6oGXztg_078I9g7hL0fOnaKZ_ X-Proofpoint-GUID: kDGUFcy6oGXztg_078I9g7hL0fOnaKZ_ X-Authority-Analysis: v=2.4 cv=FOQrAeos c=1 sm=1 tr=0 ts=6a5dbc21 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=FrCxesj2aA1etRkkIm0A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 adultscore=0 bulkscore=0 spamscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 1ecd700a474f..d1a3a6f6c303 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -718,27 +718,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 Sat Jul 25 03:20:31 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 493C83B27FC for ; Mon, 20 Jul 2026 06:11: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=1784527924; cv=none; b=Pv0yBjjhexrfgJS27+q7CdspYNdmVEW9FWPOXQQNgfhdyHxnRQch0k4WP5qAwVCqTbL8bi9FXQ7MknGKnsmbIU2foQAF0bVuNTdfS/c9+Ps3iKB13LXnEnkAX1GeCqEEjBeCHA10oyve6ZJxqswkMY1FJXj5N24NKrQViBYk0TA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527924; c=relaxed/simple; bh=iJwLCpzlsBGfwCY2/7QRL+lJXpcG2vTyp3jMaoa9lNE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=irLkGE+ms6B1Ktf5k0P25rpXe7W1OGyoUu9mn/JS9BL8HqFQfmsUNidY3XJzFixJDkYKZOXsVuDUWklxISqwz1d3lvjZ/RBcpqTkFDVFPn/mLwIbsGwolnuMKCsLhxgdX1it4rXwSJb744jK0V75GfXG9wCSuvAjSn64FzRNuCQ= 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=nfc0b8yc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jM5my5zE; 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="nfc0b8yc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jM5my5zE" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66JNvNSv649802 for ; Mon, 20 Jul 2026 06:11: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= lhiQV8OxOvmaAeJu25Jj+stsPzIy4U8Brw014ne08/0=; b=nfc0b8ycJqKhwX1V 561eSKp5y8FsK24IQle6o8A8IY2nzy51gRhYdzDVwhTIxxd4lqFovZ0DitA+avkg IuaQvUtmrPEvhpTZQL3JQmHLSzRQeGPoQLxko9CtaO85s/LkKAeXwA0FWFhgQi0b ATiRhL/43wz+dlR7YbzgT3N2o0T8ll5f1nWe3g93ioopqcNWz60YF+BDuJKYfmPI tBBTj+COb4cGR+1NU6SNb5s1JYEvJqHXPvU/6E7iMQ6RGHXZTIG/NnZT9A9MDYxV J0UEyrh1oV7Fc6cobkZb5WXxs/45FDXtCCrypGnnVUXJQ4x0P6i2y60amzYWC/uf lIFETw== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2bvvn4m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:50 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8e9489f62bfso216591596d6.2 for ; Sun, 19 Jul 2026 23:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527910; x=1785132710; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lhiQV8OxOvmaAeJu25Jj+stsPzIy4U8Brw014ne08/0=; b=jM5my5zEzbFPd8UwBc1/YwG4nx3A+QTjzwKxpf/6kc5NdvQ0QxIc3FdcBw//cHm4lr V9UeKs54NkaZTBH7zwS0wYXRB11fqcULLMleSGLAfDpWEjMY/gQaFmZKXoIoiaJeg8Pq ppWc/zakA2o183y/METG45xv0RoGPUp6MjwSOJPExstDRpAVAgzn9Hhq2yv2OLOCbPRf 6+nwSJTLQJ3/RduSK1hpZ9J4M64+veZQi58EDOR0Loi5ncRWAEMpRB9JLoSSeR9A5yhT FyC+UsyR9jgQowjlx0CUNNWbY4hFHucnsSXKyVXd+6EZZIPkAq65CT0wdsS/5hcqJgqR Fchg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527910; x=1785132710; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=lhiQV8OxOvmaAeJu25Jj+stsPzIy4U8Brw014ne08/0=; b=NNZNLXpS2Iy9msH2jJHW9FtATKtF6P1itD8X3nkNZgDE4VwFzy+NrzDaHeJH5A6SrY gg+ld2nzxVnZlzYn3km/aKiERZtOhYrMmC/FCJH5qt3h4sr8CWEaqiE7UP9ePMvExqZR jQdQMCYr1GPJd5TAZ7Z/6uv60tT0sLtu7FAfhqNMT1IQY5MnTWUt4+GrhLi2gpgyjnUz w9M+sfqKH/KZrMuVIiISPDStSCcW4Ohr8hJ363+rxmn/oiZGB/M8wUTBCDs/8q/HZ9gy 4q7cNrV5//95Qi4K0f4hzTuRgv0klYx3RpCKRppqXtE9Sm2YwDIAH00pVJoxExE+6dde ET6Q== X-Forwarded-Encrypted: i=1; AHgh+RpJXGAJD0IbYWzTs13eNh5tHZYK0ciMivmLQ83SnJCj73Se3BNKacNkjHNB1hMztwCULy8FFLzLdklAEiI=@vger.kernel.org X-Gm-Message-State: AOJu0Yyj529IuBrNSnJfD95/V1jD0mqKAyPbimPu9cuzZ7HgEwV8XbfQ HXXrrwbo9hDTu5W6ZlGQGXXScBH6vRZXxBsRgYpiAqTZogN1IfjP2oXyUkXazkiVlZ+6V5CerYG aDSRW5gWQMdxpdHTvmbqFCQa2wLJtG+G7mr/OIUgHgsXXLlj9hdQP9XYaTRao0gC2RTc= X-Gm-Gg: AfdE7clEqk05rRIYYBw5o5+CVvWKEko4txpgzpP8w5pCLwLZ//1AsLZS3zlvjvxEU7Y toFumRXzlU5e8E2HUQeOaPzuCBJgVrZxr4cCtMW+ESfr/cRjM76tuWX6WnVeXlk1JJ5wh+umV4d Xuc7maTD9EU1KU7nvcRAhS9CZJVru90QR96u2ngc0ct97vujPGKJZJYRzj3QXwiE2WtMxGXmZpU 3/KsftpqCc0raeNJT5qfTvVBsYhFyd8rsnyKv3At/6Ec/o7FP/s9BAnw5NYSiZ7qS9YMKkdQOvr MAiW6RnXT82eMmuj4b0Ls9dibcpfMeTgHPcPBY0TLqqk9StbryLiJuJ837CZ7OUeLpC9DduL71Q jBWbajaMi3PiIzhw9U1C8solG4ggnID+ZkH+iXQfebt8JUbotaI+gB71q5T7fDbQ= X-Received: by 2002:a05:6214:c48:b0:8e9:78d7:6b98 with SMTP id 6a1803df08f44-90778353e4emr120793896d6.6.1784527909691; Sun, 19 Jul 2026 23:11:49 -0700 (PDT) X-Received: by 2002:a05:6214:c48:b0:8e9:78d7:6b98 with SMTP id 6a1803df08f44-90778353e4emr120793766d6.6.1784527909281; Sun, 19 Jul 2026 23:11:49 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:49 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:20 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-13-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=8509; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=DdyEaeCdVA9QEZM1o4gUYj/xzzxduNmsf5XNmE5oshE=; b=TQ1HKjVi2QpOVMyigPVcFMvgitfp52W/1+G1F0F9EQjeqDFFNC/ivzXG6THNvTfYwih7i0S9U l7S2uxAfNWbB5D3/UO+WFvA3lXbo08XfWOHY+V1eCYPBqH7pFxxTSHE X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-GUID: 6s_qUMxVHAc9ZIp0igSpVg708bmF5X43 X-Authority-Analysis: v=2.4 cv=EcH4hvmC c=1 sm=1 tr=0 ts=6a5dbc26 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=LmD7BKvqrCyCckpIDn8A:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX5Vh9NqiWyCSK o70538pvnN4N8PnpsX/iW6X4XhLuqHpK3ZiV4YVbSMIfWnNbPzsOrONPCLPqLLWQepuQW7MrkZR v2ep6/gFR9ivTDtZxSor/wEf6PP2gkZySG0pdbveUas/bUOwDHvLLQRIink24RZV+W3ARo8tFly QnngxYR/OY9sf3kNWNCXhgTSHvFI5VdcihUZD1BN9nPW6fYjoQfj4o+4xxrC9B6LacOC2Ru65WW 9vyrG3IXfZNmTSTgalMWTMfPv3vqDqnNK4r+6GcvclCpkhYerIdrxjpnSHfOKRyMbOnQiy6eG68 CqD0nnvDZeOP88HbrSbx5UvDlJ+7wPRh+XRW/IMpdcBU6lMR+HD4caQXNSVjR3tq8fGuyRip7AC ZIQyLTDVRJfGDHW++CwZTKc777i656sy3T82tk5nNZ8AJ+OroGGWWAf4MYZJNBehIXbWJ74yUQk KkqFiLGMVQs9r+gm3nA== X-Proofpoint-ORIG-GUID: 6s_qUMxVHAc9ZIp0igSpVg708bmF5X43 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfXzc2E2ZFozrMg 4Kg5Kje2c4ZmJrEnLwrbtMk/cOLe5/C9/zQilOIPpk54uCkrEQkBqiexE5qraZgGTDlfSS/OiqB YBqacGXZqahvxM3JWmnBQYEuq74aGFE= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 d1a3a6f6c303..deb21cee1183 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -740,24 +740,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; @@ -1408,11 +1405,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; @@ -1421,7 +1416,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); @@ -1451,11 +1446,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); @@ -1472,11 +1464,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 763ae4239bd3..aa98f101b093 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 Sat Jul 25 03:20:31 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 E034C391E4C for ; Mon, 20 Jul 2026 06:12:01 +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=1784527928; cv=none; b=UpG+2HGWnKQRH95JQ9oWdW9b7R+wZZ05LSGjVUy0E99uuQ81lHoTnCiv8607HNg/X+wZ0aRRq0KLUt8M8WDS9tokEZfk4bCJwJD7PWvxDLOfaPlRfq5rPoat5fEFfz0TA0xf5/ZfEzoTkn1HgOWk5fH98VH6IvfQodE9dIpK+MY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527928; c=relaxed/simple; bh=RNLPVjE+SfZk7j0X0e34jAzc/pfGo5F/5xEO1UBPxow=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZgnQH/JdMjxdPu4iBk58EvBtir9vxrDWYpV9yND3se362ovDe19AqANm/u9T47/c1IWfHLsGZkW4UcXCIIZeYUTiP1o8kKxcTxhCj5pG1iFop2jlgXvP1p/qEDE8gQ+LWqcRj7Fk1eUColtAZZLydWiJ/Pja7lvwp/uf3cYaogs= 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=Wqe5iLJs; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cZ35/W9C; 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="Wqe5iLJs"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cZ35/W9C" 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 66JNsEup1019437 for ; Mon, 20 Jul 2026 06:11:56 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= ylLRUd4CVKSO/kHhZcIuaA8UF2WRTOjszP/kyXRriFY=; b=Wqe5iLJsSiedL+nO SPsEZFQJhr/lBkR343Km51pBe1Z/QUQ3HkG/kHMlcIOrCU0CbQLz7WBG8Q8hXaiJ zvhjfedDVePDiOmwpFIwEeNUD4X5fizH6FV/TAqrdOYZwbxoNo6KglsaCJuMnwrr nopv8xv23UC1mWWSNMavIDjG8/KPsPupyNRk1fqGGVvTiCdSfqeOIK2mS3fw8/SU +GU/qYvnSQwSZYVSp3x+jnxu7LFOSJllh16I3qY1YIevMwX0oUtpZwqiaj2Lpoae xGMJP8Xm0Hh45/765pkSlXXo0nW86AfKIRd40ERXPDMaGxlWe/XFWjInqAk0KJMr uMZzxQ== 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 4fg2d94mvh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:11:56 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e5fc4c7e9so809419485a.3 for ; Sun, 19 Jul 2026 23:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527915; x=1785132715; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=ylLRUd4CVKSO/kHhZcIuaA8UF2WRTOjszP/kyXRriFY=; b=cZ35/W9CNriDHFBBT5xN2VbgIWNcWUnqR1nFmOJ/3+XyK9vvHAIwqqFFk8YrRydXRt DbAjY3qcG1Nfrep6N1AOXsi2kOefsQPSFCZUGS3oLO7tuDNH5YjOsTpwd/W8u6CTASFj B85D/Tt6jG6kGoJ4/ejs+7ibvJf/C21btoZV2JffGT7CMcKflx77mNP+HnxQpoMSbd4K EeunmOBAylFxWzJRz4zvzjc59ivSKB3JD0r2GyjcIggwB0oPY99cdwM06DnihdqGrfkb ObLvQNOw0UngbhttXY4Ai/FNPoJr1kkxgpfkXLQiKlPOp0GQELTH2EaUhYtZR4Fgk5c9 OEbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527915; x=1785132715; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=ylLRUd4CVKSO/kHhZcIuaA8UF2WRTOjszP/kyXRriFY=; b=KYpkaY0iquYnqQ4hWPJlKcB/XVhvcVqOO5WI4+i8sF83zlNschfBc+3U/XNe18m3CN w3LdMNYCbRCnq3i+I0yyjMzoSjtHOqqs7bkG5MBk8dUwbBFzDvMxSIXBvvNyO0b2PZDE gDxhAtVYCVlFmRTSZe1q6OaXIvCv+tLEu6AuYjXjfxeuQgtE35pvlEv3hJR1lt8U+X6r 9qCi2xE2sEZGm9X9UgP7sNrsfn5cCLfaDcSpTnyyFf6yaWuwrwKSfGSGVpDo7RUX+ETp q+TkN/wX0c3bDcnKV7BwuGaojLYeImK0ozPWMCIlaZ8MLOB0ied7HjHMUn1iwb58IU9J DBmA== X-Forwarded-Encrypted: i=1; AHgh+RpsY8uR97blAUo0fxwSbJWXPAxB7wi2vVGKDgQzDQdp+c366OC7kuJd+TlXrx3Ho9NaBjxaEHifFCOYbGA=@vger.kernel.org X-Gm-Message-State: AOJu0YyY4InrdMg9LfFnWnBRgc8yVDKVb3/efjsrE/tYS2qv/xBfcRIn QqnxK/OIBHH8fkHP9N1kyRjLBvW2Ixt9ENzf8nc04l8SwXorug5FoKvnsEzue4QDQE6icXNwbLg 3WTsjbHY1GC6UOQuOekchHfEbWhw+/C+BqRwHID87m+aqK7iKb5UkNtYW2Ugwuv2BXyQ= X-Gm-Gg: AfdE7cnNNDC8GFfMpNSiBEJ27I/Lk8c3rt3CaiTkYGskxyHh7RQTI9+h9zEQWhn7StN iRvmrvSdMG1OxUKbGhtcbWQUAh4+LTPYj+XpY8kXuphixQ5CWElrM2qEH2sFmoCM3/3/0Ey7mDQ YQUiL5scq/x7CEi4Q/guReHJRibxje8kQ3WeVutfXjuDfy9bdE1nYGy0ysRCODJTIzV/47HYek3 h9OqF7Oul3y9ZWa0FRpFL1CzloQl3IR8Abh6q9M/OG0+VrB/hn6K8VMb+BAE+tpRmu6A8BVNh7F N6xtFoEuivnTrjxL5eWfaProwboshk9KMT6Dcwolqf6HkOF92q1OOvtBk+7mDEz98QpYcGs0Vam 9q/lAJaSKoBVaPKMl6LZIlvibFnWFGcrUWEWtkPPJhl4nO98E+SjmewVBmFGe33A= X-Received: by 2002:a05:620a:370e:b0:930:9a84:d90b with SMTP id af79cd13be357-930b416db01mr1277262685a.50.1784527915162; Sun, 19 Jul 2026 23:11:55 -0700 (PDT) X-Received: by 2002:a05:620a:370e:b0:930:9a84:d90b with SMTP id af79cd13be357-930b416db01mr1277260585a.50.1784527914660; Sun, 19 Jul 2026 23:11:54 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:54 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:21 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-14-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=3743; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=mBYoC87KLINdqnZzZwKmgMGhIowtcsCVrUUNDqvxcdw=; b=a/BTRE6d9wccE7tbAn/n0CU6acf9zm1TIOHrJVwbItdm0fhgyPlCyZXA2XDUL/zky0LEq97xi sk4fkvED9iDCHwY2OxH3C4TuJaRcvD2yNCqPJTIZ0SZfgnakI4wR4pX X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=HpxG3UTS c=1 sm=1 tr=0 ts=6a5dbc2c cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=rHTcTV9uYuKpyGuOXCsA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: UxajA_-n9hj_GaNbJJmN_-C9t4p-wS41 X-Proofpoint-ORIG-GUID: UxajA_-n9hj_GaNbJJmN_-C9t4p-wS41 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX/EOreqrc0prk wuaUFrGOz6++S4dDBEnoQ5v8W8ztF8ADdd/d7SXeSmQeliE1iSnPTx2Nbdd/cv5Pfaxcv40fGEf uz/y5HOYuYkJgtc+tCPqex82Eym69u2M1hWYfSuvcAmN5TE3VxURubCsZMhOfmanJRx6WJldejg Br6UCrpP3G5WNkZzzo2ACnDAh/eZnoBQlFeiCfQrltZ//kDzTj9NQjsXMNXQiOtRkHh4tjA8KpC GTyavqI3+xQXMc9BzC6/HesnGYf5ZdFnjKxQtQKxgq943DPHMAptP3sGPqNYH2oe5n+TwEh9Ks/ hZS+KUFSOQMCBrPYiHe69IK63VXhJTQfZuXVJM+w8bhk4wANEE+nMa6gCJCgO0tKctFbPqaVe3S fiULgR5O1FRuitnSXNd7XxueNFirAq2xj3fZFtfhB/OpGkRybRUSTXo7VgiGlUbEFf9y4+7NHgA VYqI+3TIobf00AfEcdQ== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX/8PSKH0ea607 TaE/h01oMCFOjumau+3iApkcZv3WIzUXpUUh6dbbyvGq0ZYGUjXnSHV4jV3msd90Q4cd0o4mRW4 lmdstepYeYqMahFPIPrEYYLtlI823ug= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 adultscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 deb21cee1183..74d885e38b8c 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1405,8 +1405,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; @@ -1428,10 +1428,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 aa98f101b093..75ea52afd9f3 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 Sat Jul 25 03:20:31 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 1EE523A542B for ; Mon, 20 Jul 2026 06:12:05 +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=1784527935; cv=none; b=aQioGcAWox+hYHjhuRxYkYaW7Ix7QXqDm6xz5GAI++lsfET4Nyb9LYkpytehS9v/Ds89OQgYhg6xHNmaaHC237Er9MEXUOS7LWoOjWzR9+ul0330RBl8xylgl8YsNpW7rdt5w7fiag606xwVKs2eoB9EptVaMKVcdipoeOFA9+Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784527935; c=relaxed/simple; bh=5rx35bWSep3xN4RUyD5mNpeVVVjnUrXou8AE1KSwoCE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YFkru89L+0isnOFvV2vN4p4AX/PXkJfovRqBoZfTtOvN4T10RLJn+sh66It7yKjNHIrhepaCrBDHJQnjecNTKN99ur7a180VbFsCqxoEsdRTJke+n526F6cC3N4KVWO5rFCgR9Vz/lSr1fkdy+SapL+P1MA9060arz6RN9B5PiU= 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=AcE2U1Yl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ExJoaQCi; 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="AcE2U1Yl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ExJoaQCi" 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 66JNsEuu1019437 for ; Mon, 20 Jul 2026 06:12:01 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= s8YKg6IaKC7m0qneFSX4THum9YhnLsBA1sZ5MrH5/YI=; b=AcE2U1Yl6RWq5HE+ OA3auvOJAR12m2YxiGcGzeHD7HZh4oeUTPJ8cXHS0bVNuAdNqWm6VVwUrlR5DOrX kJsISXg+VrpySxShB1exTvk/zG9yD1HsjAWU4abFu3avN7L7nYyV2+V/rPY7coA4 zaqSGv4H0ztrsYDSRdwVy6F25zH2iRgflEGzK2bnAt4wUUaKnDr34PaIvcF9YdXo rGfqcHppUt0HSwYv6mvrjFSzKzu2ldfzPg+nzJMLt+h2Tgd1GP17OXsfozq82SoZ nQwd3tzsVMNv2UwoUbGzq6+vJkCj8hWbe4FqaLPggKsFGipxdWSj/4yEsGY0EbQ3 2L/Gkw== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fg2d94mvy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Jul 2026 06:12:00 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-8f1e4e0eac1so166071216d6.1 for ; Sun, 19 Jul 2026 23:12:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1784527920; x=1785132720; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=s8YKg6IaKC7m0qneFSX4THum9YhnLsBA1sZ5MrH5/YI=; b=ExJoaQCikwX/QOQLn6Gdd6Xqi7TEPRgFdwWl+s2F0syogJ90NSCBi+ARyciGtT8lHI BoOP6RTLLEh0rQrHTtlgh5vCA1C31e/cEPvFb/MB64MB/5vYKqRamxsNd77IdcljsRA7 ZaWzaHaE3cU2OjGLrsGd+QNALaOdJ5k73B9NutNbItQbGeAHyFU0Ayj+Zgb+thJ3fWZr MXGm/mM0XYX8BcAzsE1lQaS3Gl8iUrxA0K2MVXylB+nX7bpQ7BEiTr/vqts3ixvEkL9G eWpZd4qY5Zw3QsViVtBY1cQsgFRQyKwXdp2EZgx+SKCEg0PF8BroQLGNgA9JfsipyPug X0Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784527920; x=1785132720; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=s8YKg6IaKC7m0qneFSX4THum9YhnLsBA1sZ5MrH5/YI=; b=SmlfdaYFb8ht2YEKs4Q13Ovzq/VZpsEVUdGxs1yt2DW52+ZC9T4rDptTIiWv5UKQFG u/VqZVclL60hHk8QxBP58MbopRM3LVWGSl8taGh2bF5Pm5xpbWtzjWMykTDkp0gqRYp8 KUs1snJoQ/Xg9Cex4aZ7h2PsVPOapV+AAHlbId2uUAEfvBLl436iVaYxYWaOZCB0WdIP yHRzQA13UpUfsvalpcpJFc8ZrFtsR8AYtqiOEZGBS5L5ApogE7vxiDEva4oTebMuQ1Rx GFA+xHzFuPLtlCHmXVeCzEvaU/3ph6su4PpeDlfeAgxUwqobdifJ22QjAiaMTg+tJowt XB4g== X-Forwarded-Encrypted: i=1; AHgh+RoK8OZ1/oQpv03jhYwU5b+IOUgXMj5upoj1upL2o76cn2f2dJDvbZMzpCaU4O844l/2ROxW4izV67d3liY=@vger.kernel.org X-Gm-Message-State: AOJu0YxsoMoYtMaBheHg77ajz47++59/BmioL0Qw3+3JBSxDK/jYYUCl FsSwD9SF3dji+Q6NP1cLQ9s3qj2a+rlPIVFqXokkEnikE775z4oaNN0b9r5tawnWlJLG3VqELW7 Cd4UGYs/o/+imIuZTJwnKZyLTYfwM0WjQ/HnhON59KxIbY6aD5ZSyZga9YyiUb/StRRY= X-Gm-Gg: AfdE7cm/zaIDbffPMV4fnskm6a0g9vyF9KcbRK8k/wUG5L4B/mKHAf16CjK5yr4gq8b 5MptkkgNwhy3FkrtakjrBTjiFrXQObb0Y0oG7QrYAg4CznyP1oomNsHiCjOQEp/ifRLSlgjbrzX jnNW1lm/7kwHRTiRbjQiJexTD7ESvWrLlU60QexShmZ5+dE4UwPLQhlpxCIbx4P0NTAmtJv63i4 GltUywR0GRi+PD+h8KS4y7oUBzlBXSul69KJp/yIqKkF5GrybiiY07GCyjop8cztIuGY5dl0W8o 0b2LfIodQve4ZUvEmcRsdULUkHBr98W75lfQRG14ylmjk/myqCYHzhloeLjxPiFJRDTnAH8OeuV jGJBZQCN+lR9VBoc1RydZg+VtlUqv6ryoEf5hykONvx4HQvvu8wmvBZijExE5AZk= X-Received: by 2002:a05:6214:c87:b0:8ee:efa3:4466 with SMTP id 6a1803df08f44-907783761bamr126610526d6.28.1784527919811; Sun, 19 Jul 2026 23:11:59 -0700 (PDT) X-Received: by 2002:a05:6214:c87:b0:8ee:efa3:4466 with SMTP id 6a1803df08f44-907783761bamr126610376d6.28.1784527919447; Sun, 19 Jul 2026 23:11:59 -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 6a1803df08f44-90778588a39sm84793216d6.20.2026.07.19.23.11.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 23:11:59 -0700 (PDT) From: Yongxing Mou Date: Mon, 20 Jul 2026 14:08:22 +0800 Subject: [PATCH v8 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: <20260720-dp_mstclean-v8-15-bea261bf4e7d@oss.qualcomm.com> References: <20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com> In-Reply-To: <20260720-dp_mstclean-v8-0-bea261bf4e7d@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=1784527840; l=3650; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=5rx35bWSep3xN4RUyD5mNpeVVVjnUrXou8AE1KSwoCE=; b=9efT/qG81EEi+uKNli7LulrsXg3ziNpwjh3xhB+lKuMhE88HpsM9E2ogd6lKku6bcEOAuDMmN JoGJ0qHa069B9hoplrk7MPRQCRJ27x7b94BUElUR1otrMC4OpZZKFm/ X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=HpxG3UTS c=1 sm=1 tr=0 ts=6a5dbc30 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=7Bdkmk_NF71dONvui9QA:9 a=QEXdDO2ut3YA:10 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-GUID: dTYNRgXW_sMlAJeYFhiINlTGArFY1mwo X-Proofpoint-ORIG-GUID: dTYNRgXW_sMlAJeYFhiINlTGArFY1mwo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX5rabrQVZqr/+ YoEKxiAru2l77YMUnr1F73/aNRjJ3//dlHVm15x8EQUAxObFVwGI/nmaqlD1YIcUMrMwJCmGhu/ Xn9/wEXBTansASEhtUB1efGkToWpE3awVazrMx/T8M3UrhWeTdKo373TOaIlLVMX9InuaWj3X2B oqOKjDyNgOv1o/T7gN/6x8VNSNJhIlM+UK42vB9Tez4Wyuv59sVqkCR7nBt/Dq+7O2dN0E8mYnr kQ2DnLzW0mshFcZiDxVAMjn71OEHZUd/MXo20yi43+FHzWscV8WZulMJj616/P+GaUR1f3gJ9Yy eGxdiM7BZkcAbK0bhQgx/Gx2NrBGyS2c8MyWUiZ/1JKeapsEWS59h2sZ0hFB/K0TgUjzYSUKeN6 Nwknt4Rre/WzUeKX5R2diMk/CcHYY8cMvCy6OtGg5hAc6rxmHXKWRrXHgEfMxia6J7ZRoOoguo5 gW/4B1MT5bdArzqaT0A== X-Proofpoint-Spam-Info: AW1haW4tMjYwNzIwMDA2NyBTYWx0ZWRfX5G7ygSLRvKtt BB2An4P1sgKNmdz8IhioLymri4S7tkJGTfpUzVxBt36aj39TRxdFTj2mbeapVou6gDEWPRa7yM/ AolHsYxgjj6Bq6IMC36YMl2WzURMdyM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-19_08,2026-07-17_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 adultscore=0 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607200067 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 | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 74d885e38b8c..c31d155715a1 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -652,7 +652,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; @@ -663,7 +664,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 @@ -709,22 +710,23 @@ 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); + msm_dp_ctrl_off_link(dp->ctrl, msm_dp_panel); =20 if (dp->link->sink_count =3D=3D 0) /* re-init the PHY so that we can listen to Dongle disconnect */ @@ -739,7 +741,7 @@ static int msm_dp_display_disable(struct msm_dp_display= _private *dp) } =20 /** - * msm_dp_bridge_mode_valid - callback to determine if specified mode is v= alid + * msm_dp_display_mode_valid - callback to determine if specified mode is = valid * @dp: Pointer to dp display structure * @info: display info * @mode: Pointer to drm mode structure @@ -1439,14 +1441,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); @@ -1481,7 +1483,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