From mboxrd@z Thu Jan 1 00:00:00 1970 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 9497C3B8BC3 for ; Fri, 10 Apr 2026 09:34:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775813675; cv=none; b=YkP/8fFp5qusHPI0NILGrAgpZlB/JUrvT9Hlc683k5Uh5jjTzNfNTF+4Vz9Kddzb3sVn/bFyks9DW7PZ9n7xvsEbODBesAbiRsaS0vZRtFlgkSnxfRreJSHeJ2qQ3I+XYdWTgFfpQdtUNdqFbwFSjug3AHbwybwxJwrNdQQr8rw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775813675; c=relaxed/simple; bh=JEHs627RYNAcA8lkZhsMU2AZPLqN5l4TgtCY+KLc3k8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IilPMcmKIwiBD8nXOJ1GtoShfY3+V5bhkZAXOrY920uQ0z3wdh9Z+1WQXIoGCNRel4DRbrBBMIrtVd0g9P4xxwvGHlJ9MYvNPOQO/le6UxrKcRIj4hcDPhaH0M3z4mdbJp5e21mOVxUxejFXfgKtc1CDO8X1i4/5uZtl63cvP3Q= 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=DuCK2X4d; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fZZIMnl9; 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="DuCK2X4d"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fZZIMnl9" 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 63A5aKtq780183 for ; Fri, 10 Apr 2026 09:34:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= XH5OGuuCFVVaQxq2zBNoNsrh1MXRyUkvunIP+bf+M8E=; b=DuCK2X4dDgRx0TLP pZC/w+lxLRWC1exZaXODf/ciUVMITVO1NZkLB4d9yWKVubIxCidHhcNtwJNKxHYw /wDx6ULd6O439NXgxlwvIG63DbqRaa3xils1KYsfgtJUU2IMFvlqd8s5v8LP5AhU 18FcaeJR2uTTHMYvh5eemAwHNu4B8b5aX31jNfobMjat65kC2IGTE5OU8OLQcSw/ /4I/+vDVraK/w2TFlXc6N0C0DjI8JgKzRYLf3tUZRjrBJIAT+AqOwltDYveSMa2+ JcehQo6Ck/XtzJakqd3fu6leFduVSdW9u4yuD3QrSAnNX2FgBNLxWWVDECd5oPXK wL+/Lw== 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 4dec8huwkv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 10 Apr 2026 09:34:33 +0000 (GMT) Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-89463017976so46583906d6.2 for ; Fri, 10 Apr 2026 02:34:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775813673; x=1776418473; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XH5OGuuCFVVaQxq2zBNoNsrh1MXRyUkvunIP+bf+M8E=; b=fZZIMnl9oJxFOEHfywsaDPBXqg7XMCNDIEFj0/aDpLH7CRuHitOo+GJ4hIqGfLsY77 t6wTU6sXCWNBOTiM0inLD5D1FEz7ui7sLOllV0srXviQZG6YDgJFYExe3/mQRXKEZNMh PbOypHB0XZgONzmkz7NA9E8eRoWuD24oTvghnpFByqwGMZf4hundaGXiMzoRWDfNxSTW HnVUnf1fEykUnKDZ/Y5XKMIFHb4LGk+c9PNZgVsC00DdqoJsFXDwpURd4eZSUTFUL9+P xhfSD8xP/YHQBsF9x4ACXUSIwKmIU7l49yp/GbhqIOs39myouII6CPRWQH9uXfj1qga2 Eoww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775813673; x=1776418473; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XH5OGuuCFVVaQxq2zBNoNsrh1MXRyUkvunIP+bf+M8E=; b=AyUNpOKyeLdVw9WZE2gJuXxOV5zAEc81O1lsV4I4EHcMKQfCZR45KEM4cjC8EI3wka sjrB9H+npLNmiZ3qCuWq+adX6FB6JRFluXGqVg2DbhBH17IFaMTDSZ25A572leti0Pas K9i9O7D5lsrEMO3ZO5tZuBHvSgVJa28cX8VFPFcJKjfXAaCmkVPU7dySut+YR9m+2cVo MhA3mgM1WuXS9GjjWGAeyQYySPQcgqP7IaWyxstegeqNsGIgpot8wtQkpmlDsL+QMXZx UJhIq83CrSq2BXugFuQbg6RBy/lTPFVcaMeZgqLo6qTXTW6gW82nQuIMeFKUhnNGgmpQ Mz/g== X-Forwarded-Encrypted: i=1; AJvYcCXZYltglqzJLGZi5cSxIcJAV6GG9vx+f4Z8NivGRjMs12Mf+VhggGrAjbuw/9+F7ATO3rYmnAQwOcC0jLI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw12ayfcypYWoK63xk23poY/1h2HE9ltCPhAdLJjwghmQ9piz51 AGZaQ0zcgjxsH6/CfH++Jr36ZV8S7b3rg31tq7JPgAHnc74l0l0BnS7Bc+hrRnGL2kbNHD0dM+p M4cOeUkQW6BOPiJUYJS6LwbO4S9aFXvVQWBT7Px0ujEt509ehiHaPuYODU1E8N/GQuhk= X-Gm-Gg: AeBDiesXoaQty6wyjB5hLWLJWVAwCD3R9hq8igyZTgJae5OZtqESh1LbUkmqCN6G6My Dl4zzk4EmQazhYhncuJ6WCK6Ohu+AuX07FpEXKjO/L1FXHbeRpWA/4tXv3dl4LattbonYOLH8fB WwJR8wza9vaDbT88L2BssnKk6NalT9IK4p5wAoo/sQ4FsEt3OQg5wA0L+rqiDqb8/WIVaWUCBRl mgcjYd1d4zn8jQZ2Nt56vyUZ//FKTt5IR8iABFZjJ1GG12KMEk19AMHawe37ZyigCeKIKbk7NBa Dla8v4Q6o6KrFHfUYbf1nJEsC6bszUy3RYxKs1uS3DhTjRGaoRid2+N6FKmBu9pOTr027vrZyqz 9ARw2KbruZlzrAGkvUdj++xGRnCcL/nEM319N7J/Ce4OIVjg3H6HnVGanSlkQAtcaLnUmjWC9pN C2/Z1onq4= X-Received: by 2002:a05:6214:4e84:b0:8a7:32c8:7075 with SMTP id 6a1803df08f44-8ac861aa864mr28916276d6.19.1775813672607; Fri, 10 Apr 2026 02:34:32 -0700 (PDT) X-Received: by 2002:a05:6214:4e84:b0:8a7:32c8:7075 with SMTP id 6a1803df08f44-8ac861aa864mr28916026d6.19.1775813672207; Fri, 10 Apr 2026 02:34:32 -0700 (PDT) Received: from yongmou2.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8ac84cb135fsm19223386d6.38.2026.04.10.02.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Apr 2026 02:34:31 -0700 (PDT) From: Yongxing Mou Date: Fri, 10 Apr 2026 17:33:43 +0800 Subject: [PATCH v4 08/39] 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: 7bit Message-Id: <20260410-msm-dp-mst-v4-8-b20518dea8de@oss.qualcomm.com> References: <20260410-msm-dp-mst-v4-0-b20518dea8de@oss.qualcomm.com> In-Reply-To: <20260410-msm-dp-mst-v4-0-b20518dea8de@oss.qualcomm.com> 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, Yongxing Mou , Abhinav Kumar X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775813628; l=4382; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=BkXona5TbnmF2de1k2yc2BT4vzk4O5UWrXuvAHrPtBc=; b=p8UCmpq5XBfAtP50t/F6FDt0RigWiXxicBr6UCmW8ZWVkMnfjZJQawhqlnqHAx9w1xHwzUAg9 BnhX3u/uhRsBZpIBYOrbH170cbtzxIjAqzA4NdvcERnaV5l/G1uySGm X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Authority-Analysis: v=2.4 cv=PMM/P/qC c=1 sm=1 tr=0 ts=69d8c429 cx=c_pps a=7E5Bxpl4vBhpaufnMqZlrw==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=x41-kvR0HCwjNSFKcS0A:9 a=QEXdDO2ut3YA:10 a=pJ04lnu7RYOZP9TFuWaZ:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: xcVNCgP3XM_bIvdXxEetEPQkxLzXQLQS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDEwMDA4OCBTYWx0ZWRfX85/EZdr8iadf Rlx/JGL5orbyEHp8F29CwGjzFSCdwrZN0lJqmWgHna8Twl7CLV7vEGoqmPL6xYv+jm4quxSpUhn F0KMR6xtO92Ho7zF2AROJFR0cWVXLm91k8DIo1LJpKhXVAZbA4QQzhMFc33yZ8FsuA1+/+u/rPv cf+gTwP+2c6rQsbxjN8UDLGjuvPbNjbIJPYIsBufbOUXGz0GEOMe782V8cRc4+WxbMUP7g3u8nK hMtaP1t3V+78Paoa3PlRjzD8/r3ajPHbuGuMe0kvcn+ydWDVxhvgly+iYb4sWdZ2oex6a9NHvD/ XEDHYDfPnkuvafFARFeZ/8EawrZjb8Tx5RspovR4pT1yfjr7XWrPIOt2byXsYxnBu/YOkIy5z9p +TZZVqm2P8V1pTNwXnwHqWsaULXUyLId8mmf4+3GWtH2VT8r9NaPKn6fCEQSrQj+L42WMkGyZXD aoqz/U2bjInBmIdwOrQ== X-Proofpoint-GUID: xcVNCgP3XM_bIvdXxEetEPQkxLzXQLQS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-10_03,2026-04-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 clxscore=1015 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604100088 From: Abhinav Kumar Currently, the dp_ctrl stream APIs operate on their own dp_panel which is stored inside the dp_ctrl's private struct. However with MST, the stored panel represents the fixed link and not the sinks which are hotplugged. Allow the stream related APIs to work on the panel which is passed to them rather than the stored one. For SST cases, this shall continue to use the stored dp_panel. Signed-off-by: Abhinav Kumar Signed-off-by: Yongxing Mou --- drivers/gpu/drm/msm/dp/dp_ctrl.c | 21 +++++++++++---------- drivers/gpu/drm/msm/dp/dp_ctrl.h | 2 +- drivers/gpu/drm/msm/dp/dp_display.c | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.c b/drivers/gpu/drm/msm/dp/dp_ctrl.c index cd58968d4e14..d0eed8c7df45 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -477,13 +477,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); } -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 *msm_dp_panel) { - msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); + msm_dp_ctrl_config_ctrl_streams(ctrl, msm_dp_panel); - msm_dp_ctrl_config_misc1_misc0(ctrl, ctrl->panel); + msm_dp_ctrl_config_misc1_misc0(ctrl, msm_dp_panel); - msm_dp_panel_timing_cfg(ctrl->panel, ctrl->msm_dp_ctrl.wide_bus_en); + msm_dp_panel_timing_cfg(msm_dp_panel, ctrl->msm_dp_ctrl.wide_bus_en); } /* @@ -2523,7 +2524,7 @@ int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool force_li return ret; } -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_panel *msm_dp_panel) { int ret = 0; bool mainlink_ready = false; @@ -2536,10 +2537,10 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl) ctrl = container_of(msm_dp_ctrl, struct msm_dp_ctrl_private, msm_dp_ctrl); - pixel_rate_orig = ctrl->panel->msm_dp_mode.drm_mode.clock; + pixel_rate_orig = msm_dp_panel->msm_dp_mode.drm_mode.clock; pixel_rate = pixel_rate_orig; - if (msm_dp_ctrl->wide_bus_en || ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420) + if (msm_dp_ctrl->wide_bus_en || msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420) pixel_rate >>= 1; drm_dbg_dp(ctrl->drm_dev, "pixel_rate=%lu\n", pixel_rate); @@ -2571,14 +2572,14 @@ int msm_dp_ctrl_on_stream(struct msm_dp_ctrl *msm_dp_ctrl) msm_dp_setup_peripheral_flush(ctrl); msm_dp_ctrl_config_ctrl_link(ctrl); - msm_dp_ctrl_configure_source_params(ctrl); + msm_dp_ctrl_configure_source_params(ctrl, msm_dp_panel); msm_dp_ctrl_config_msa(ctrl, ctrl->link->link_params.rate, pixel_rate_orig, - ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420); + msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420); - msm_dp_panel_clear_dsc_dto(ctrl->panel); + msm_dp_panel_clear_dsc_dto(msm_dp_panel); msm_dp_ctrl_setup_tr_unit(ctrl); diff --git a/drivers/gpu/drm/msm/dp/dp_ctrl.h b/drivers/gpu/drm/msm/dp/dp_ctrl.h index 5d615f50d13b..32196e97cbe9 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.h +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.h @@ -17,7 +17,7 @@ struct msm_dp_ctrl { 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_on_stream(struct msm_dp_ctrl *msm_dp_ctrl, struct msm_dp_panel *msm_dp_panel); int msm_dp_ctrl_prepare_stream_on(struct msm_dp_ctrl *msm_dp_ctrl, bool force_link_train); 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/dp_display.c index 58c46d5ab4d8..1bf1335712bc 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -666,7 +666,7 @@ static int msm_dp_display_enable(struct msm_dp_display_private *dp) return 0; } - rc = msm_dp_ctrl_on_stream(dp->ctrl); + rc = msm_dp_ctrl_on_stream(dp->ctrl, dp->panel); if (!rc) msm_dp_display->power_on = true; -- 2.43.0