From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 611433B47DD for ; Mon, 29 Jun 2026 14:15:08 +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=1782742509; cv=none; b=V7rw8ODS1Cx78DBGgx01IYI/zTQ/SXA4Za/TeTBU1/9p8pjEkYbz2Fic2F41zH+oue+Vg+ay9K75JAZoWQc7LoMPwpTtJ65hZP77iVbXrypGEO1jY9JkvHO2n1HlOSTz955by+RUES30O0MW84LBD6T2sEqyI9EOQb0QpGiTeXA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782742509; c=relaxed/simple; bh=OaULnG6ZYqDjHwwokAvPm9tNfpMjHsLvWglqwDgfRoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fJpBRgVNlzeZH3/zLq0/n9kb9ctuazggXWmgsofHGTdazuJ4IkhJR+3cLNvnZwQUND6Wlf9wdAct4tiNjKe1hULavVX8UqrqdtLbN52K8aar3ducIuAxhD9LRLp7I27pe/4mXfjey15HkSsvWs9uwRJgX8I9rBzBkfLXmQopZzY= 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=AT/K1r9S; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZJ56t6tn; 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="AT/K1r9S"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZJ56t6tn" 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 65TATK7A2656122 for ; Mon, 29 Jun 2026 14:15:07 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= eErWUES5lcasuhvm6WPQHNkgN01/Ssy72Sz66KPQZic=; b=AT/K1r9Sg0CpPcIT maqJQlcJLqZgc62+Db00ai6a9cWriVexCBYeKFuCjZkN7BuyQTu1unmZn85N5mpb /rhf2VE/t/GW6Zj2T135lzwPAKZl1v6dGndB5W89/FTmPaGG6cbLALvLyCp04ERF d98WNX2c+BGeCHRAtCAu4RoLl8+GPjt23svOUk+OVTJRZ7/4fzlhhewsBDpOjdkv +sAsjEXdpPKIaltRUu+TVYSh6UUVZEX7DUIgMTiBy/iUVnM6AYFAoqpnUwX6LjME ZHhMNAB0VZRH3UqeyVuM5wOsxFuNr5h9Sex3x8Ede25ivKqY3GMieA95o5uxm1yA Uo+KuA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f3np7h6rg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 29 Jun 2026 14:15:07 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-92e4f27f49bso161909885a.0 for ; Mon, 29 Jun 2026 07:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782742506; x=1783347306; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eErWUES5lcasuhvm6WPQHNkgN01/Ssy72Sz66KPQZic=; b=ZJ56t6tnnxR4JIvujmtnNOrQiIAyatrcaeLNODV/+zN9pJ6aRaqTapGZe6ZF1LGOnM MJJiXx1ZzTnVgLaR67PDw4dy/Eu6wZQ80FMkm0g8zzZXWut/jBUrIhHkApI+YhLxuOTL CRwwLwPtmB+0pb+p5KWEqeUMzGfjp2Rd8GsIBkXutPCQeMmcarIZVKaHreALz6mFjpw3 Dq45FyIZuS/02Av8ryVqx3SOgnDUMsu/X6KnbsTLTeSrtLThpBEmGAvaQL5pBUPr9lsp zK3PXYcQx1MWmoF5g7AleUxhb4eQ11p/VUy0gEPYDiZkIOhSo7UiR4ypTlsTvqhCDNA7 B+wQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782742506; x=1783347306; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=eErWUES5lcasuhvm6WPQHNkgN01/Ssy72Sz66KPQZic=; b=SVdETQT65HUKEqp6oyL2KK8mLEU9Ed95Z1e7YJcuix9AZRLSHu05/nTdGlMLEsaeC+ grEQVbetQibdh01vKL38OTqrD452LIlzYiCp3CFfOk+KU46e4sKuZahKyjSYpyegxBvr qn4LOtuMn2aUQ9CAYIBTIgIq3h2YDsq0xU8ZueXK0LnpWziJYZQngUM/f4KjZzDrV8cR 3iuWYviGW4X9qAXoP7mykcDGBBK2y89nhmCbw59ZNhtJC0xHbzkhNYDxW0x5mCyq/sAh lkuhXs0o5YNzODyD75KIt+LYIN9n++JlalCiORSE9378Vi2M20LarZ62M0j7s6Hq01gx 4HKA== X-Forwarded-Encrypted: i=1; AFNElJ9kOR4jnobtbtO9PpCn39jCJd+J/DHXj+cEyBi0XqB9hHsobLpA9ukwkiSpTmlFhxHXAw9iA3NNL6UVGXM=@vger.kernel.org X-Gm-Message-State: AOJu0YwaAsBpBnJtPYHTrp6M7gowA6HWoyzTPAuaUjq5xi03vIeK72/L TJHj7/BDX9Tj/lt18Pzt7Gxgupf+HjmPLAe27+gEdcvWJP2Apweg+XUBYL2thII45fhBvoTi41A bQZj+ucO1EAoYec23gKmIE9gfxnZ/fo4n8x3IA9gJHJ7EXGDYhS5LRo4rTS1b/AefH3SwRZOq9r UpzQ== X-Gm-Gg: AfdE7cmOg1KKt0WuXwDdcXC+YrPv8lsYjPDbnOX64vyWrVJxo9dlsZNf8k63ph6MSpl Ox/esep3xav0KQdVhGLKhJfWJ1Qx4TW6OFd0hkG9yXG+kUYkgc1wWd9qaYMq9E4prSJQRxsr9tb /hHKg9vTEKPWIyYGOrmnXAxudpa4KAO8o5ZtOhPJ2KY8GZbjLMDh+lv4hAm6uwepQqmSj/QF1PK niO+tGIy8EoB9FDs1QzE97O5c+rCQDvQxNyGSU5kYJ/cN1mrXUcrGqNyJVsziJklfGloobB3XNt 97DGRLzs8xQqFERj+KUUkLOBFEWp2CgKaKf33wuFnVv1/fxLuE1ZP8i2TnweeZw3WizO0E3ULwk CEWrWYNvyi9zqpqI2ZuXWiY7sI4jZdVrSbS7PgFzvs1avvkQUsiN/lUaV/ZBSbSTTlzpb6w== X-Received: by 2002:a05:620a:19a1:b0:915:b9f6:719d with SMTP id af79cd13be357-92b3da97d5amr1656549485a.30.1782742506231; Mon, 29 Jun 2026 07:15:06 -0700 (PDT) X-Received: by 2002:a05:620a:19a1:b0:915:b9f6:719d with SMTP id af79cd13be357-92b3da97d5amr1656538585a.30.1782742505553; Mon, 29 Jun 2026 07:15:05 -0700 (PDT) Received: from yongmou2.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9260079070bsm2143165885a.40.2026.06.29.07.15.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 07:15:05 -0700 (PDT) From: Yongxing Mou To: Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Jessica Zhang Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, Abhinav Kumar Subject: [PATCH RESEND v5 02/25] drm/msm/dp: introduce max_streams for DP controller MST support Date: Mon, 29 Jun 2026 22:14:23 +0800 Message-ID: <20260629-msm-dp-mst-v5-2-2ed6aee1867a@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260629-msm-dp-mst-v5-0-2ed6aee1867a@oss.qualcomm.com> References: <20260629-msm-dp-mst-v5-0-2ed6aee1867a@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1782742144; l=4176; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=Aqo+NoeQSRVWiAKg7eVou998ouelemJcrlt/SprmKw8=; b=xrP8SSMsPOs65ifnl/6yyv34YTP3zjglo6mf3Xq0XimtZ/7B5wRiJAnTUrI730coFiRU9qIWm TaeGAqCKFI+A44BGtDQibFQN4kjEpgr4++d015+CfNVJDUj3R0/21xo X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjI5MDExOCBTYWx0ZWRfX6jHafLwpNaY1 F5bzs/XzIfTJ/A+Y5rTn/FD+4OQ9KoojsPwgAbFu+W4rIBsvZ4zhjf0FjdgBdAKU1yHx7oXLsmG ss7gZMZ8r4Dlr+Loi6/pb57wsSv/BE9C5yhf5cl46liqZ2kTaobPnv7gq9m8FjVifY+zqkP28/G GlfGbp09uRGnThs+/YfWAZB03O1G3S/6+QNCiT9S3kf0+QlpYcTqyYqP9TgAiacuYM+ZJ9bh2Oy 0FqIWkpyc/W4v+wyQIooNK4w0XM+6YBJ3zy2DAOxdvFJFkqs/m44T3hUM7IUo43CLmQCanInK+c ovE+a9QpLClNEImYQCWarXP8mgq1NEMgY+4W+K+VjWVdmj75plWh3vDPDzkkdP3Ug379Kyc4Xlh oleKAE8Kja2o6I2N+9jCzzRPbKlKqm1HzdgR8Mq+eAhTjHq+FLCH1NNhPKh175a2LyxpmgdM+U0 ZRaDp3vJ38xv4hUPhUw== X-Proofpoint-GUID: Co7HhVrREMf9e6j1L3apAD8aVo3coSHU X-Proofpoint-ORIG-GUID: Co7HhVrREMf9e6j1L3apAD8aVo3coSHU X-Proofpoint-Spam-Info: AW1haW4tMjYwNjI5MDExOCBTYWx0ZWRfX1HY2eOC9u3Do FDt/GOX8DgwJ6zG7ds56q5GGshLEEzemvNjvGnpvplqTfUj2TyRMcws5EMsOwupUn4rcnnP7DOI DFM37D6HfklD9GZQsk1rZ74JFcYmTcA= X-Authority-Analysis: v=2.4 cv=OcWoyBTY c=1 sm=1 tr=0 ts=6a427deb cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=lhQZdvDDsnZ9MB6dQpsA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-29_03,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 adultscore=0 spamscore=0 clxscore=1015 phishscore=0 bulkscore=0 suspectscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606290118 From: Abhinav Kumar DP controllers across different SoCs vary in the number of concurrent MST streams they can support. Rather than hardcoding per-platform values, the number of available pixel clocks in DT serves as a natural indicator since each stream requires a dedicated pixel clock. Introduce max_stream to capture this at initialization time and expose it for the MST module to use during setup. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 13 +++++++++++++ drivers/gpu/drm/msm/dp/dp_ctrl.h | 1 + drivers/gpu/drm/msm/dp/dp_display.c | 12 ++++++++++++ drivers/gpu/drm/msm/dp/dp_display.h | 1 + 4 files changed, 27 insertions(+) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c index a475e787656e..68fb4facb056 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -127,6 +127,7 @@ struct msm_dp_ctrl_private { struct clk_bulk_data *link_clks; struct clk *pixel_clk[DP_STREAM_MAX]; + unsigned int num_pixel_clks; union phy_configure_opts phy_opts; @@ -2754,6 +2755,7 @@ static int msm_dp_ctrl_clk_init(struct msm_dp_ctrl *msm_dp_ctrl) if (rc) return rc; + ctrl->num_pixel_clks = 0; for (i = DP_STREAM_0; i < DP_STREAM_MAX; i++) { ctrl->pixel_clk[i] = devm_clk_get(dev, pixel_clks[i]); @@ -2766,11 +2768,22 @@ static int msm_dp_ctrl_clk_init(struct msm_dp_ctrl *msm_dp_ctrl) DRM_DEBUG_DP("stream %d pixel clock not found", i); break; } + + ctrl->num_pixel_clks++; } return 0; } +int msm_dp_ctrl_get_stream_cnt(struct msm_dp_ctrl *msm_dp_ctrl) +{ + struct msm_dp_ctrl_private *ctrl; + + ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl); + + return ctrl->num_pixel_clks; +} + struct msm_dp_ctrl *msm_dp_ctrl_get(struct device *dev, struct msm_dp_link *link, struct drm_dp_aux *aux, struct phy *phy, diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_ctrl.h index be0d89d60914..305add3dcd93 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -55,4 +55,5 @@ 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); void msm_dp_ctrl_reinit_phy(struct msm_dp_ctrl *msm_dp_ctrl); +int msm_dp_ctrl_get_stream_cnt(struct msm_dp_ctrl *dp_ctrl); #endif /* _DP_CTRL_H_ */ diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index bb243ab09e66..9cd243411e44 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -87,6 +87,8 @@ struct msm_dp_display_private { void __iomem *p0_base; size_t p0_len; + + int max_stream; }; struct msm_dp_desc { @@ -578,6 +580,7 @@ static int msm_dp_init_sub_modules(struct msm_dp_display_private *dp) dp->ctrl = NULL; goto error_link; } + dp->max_stream = msm_dp_ctrl_get_stream_cnt(dp->ctrl); dp->audio = msm_dp_audio_get(dp->msm_dp_display.pdev, dp->link_base); if (IS_ERR(dp->audio)) { @@ -1178,6 +1181,15 @@ static int msm_dp_display_get_io(struct msm_dp_display_private *display) return 0; } +int msm_dp_get_mst_max_stream(struct msm_dp *msm_dp_display) +{ + struct msm_dp_display_private *dp; + + dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display); + + return dp->max_stream; +} + static int msm_dp_display_probe(struct platform_device *pdev) { int rc = 0; diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h index 43ed79093e24..d3d4ab98089d 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -26,6 +26,7 @@ struct msm_dp { bool psr_supported; }; +int msm_dp_get_mst_max_stream(struct msm_dp *msm_dp_display); int msm_dp_display_get_modes(struct msm_dp *msm_dp_display); bool msm_dp_display_check_video_test(struct msm_dp *msm_dp_display); int msm_dp_display_get_test_bpp(struct msm_dp *msm_dp_display); -- 2.43.0