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 7C3383BCD3C for ; Thu, 28 May 2026 10:40:57 +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=1779964859; cv=none; b=Dz/il81RmNqXrayxcApPjZj5ZCOSK70pOTQDClfcKUlB/cxOnKhNmkEm2KKJoCqHHQIcLYQywGScrXTy4MdRg65nMlsM16sabT2MpVK7ZA/Uenk8Zx0LtLsqWMUjMkzJHxWRD5CudsVZCKHVtCqqqpReO6rgfc5Wzsi7KluScx4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779964859; c=relaxed/simple; bh=VluQ+GSUC9CfNFLNLvLHc58jEW6kFKOO2mES+jvgQeg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B5KUpwgcKrqlV/Jep/QM3dAM1Axtly8sv0PpZAzdeb61oFZ/EUYi6ZyAcV3brJIi2QrJyf9OQfAFEmzyJCJPe1Kl/A6TJ+6OrQajj97QbmxPw+P3QCERtHC6PmRX1uDK4eKCWNrMWRezg60XyQ5psdhiTnX5833c+2dLTOf9SJY= 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=fkl7es++; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WxgZVZj0; 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="fkl7es++"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WxgZVZj0" 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 64S8vbKQ1697234 for ; Thu, 28 May 2026 10:40: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= 3Gr2EDNFY0bB/CkE5VFTvCv3redMXxtxC722xjDFOpI=; b=fkl7es++ceLPClkI kuIGujljJ5DgQ0jRRS1KCHlZcCksXYce8u9nSPrnuKEOsXtD7zCTxEkLn0wWJo+s dgC/mZ8Gh3HtZxXno8Scj8T6Tcv1afih7bNzEvF2uRDEldYZfMdtFTvstMQEO0j/ G5SsHeJLcmB3o2TkCa/bHfbTxYie6HRM1cUwLD02uxdJO2zgAL9D3qtaDm+j2L2E nJRElhWD0HVhyjIjAuSaoe74kKWcj475qr7Hr4MwA548zh7Qo8gtmZLoBZDMXdkV 1wrZ2s6TYhjwv57Tza1jXA7Dy/KIts6mIxiYEEJ5KcV8Jz2uYWhcesFlhCQ0cmtK oEIxMw== 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 4ee7yaje4w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 28 May 2026 10:40:56 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-911cf6eb48cso151161485a.1 for ; Thu, 28 May 2026 03:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779964855; x=1780569655; 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=3Gr2EDNFY0bB/CkE5VFTvCv3redMXxtxC722xjDFOpI=; b=WxgZVZj0oXFAckgpOiTc4v6sZ+SeTY4q9W6GKYEwbMxB6H+VH0SyZ2iRjh9ChWrakd zx+/GPhlPwl+mRV3ifgfu+02MXSgER36dYnB+LNwvLxvEpNQ/JEFSDR9ANfC9MDQpazv VlBuyue6Uy28wml8f0/pGg0kkUL4KZdCfqF+FDeX11DIHFN90Fu4cbmAnVB38xm4oZdp qjiLR30NGS1Nfe53UT/qzZpTzb5XZ4CuzzC3HUkBbJ7D3ziPGroUCs59wJwWs7GHb1e2 Qhol/szaBB1XeNC1STLQbNoFMhZEWrxbCeHwk7k/vL/BWcd157wQqpzCqWQ/eobWXoK1 Jf5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779964855; x=1780569655; 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=3Gr2EDNFY0bB/CkE5VFTvCv3redMXxtxC722xjDFOpI=; b=Auqak49vuWiIg65diiBdAImpn7FdveqgRkqmuodgQ5EchiTLbqp09SkAAJcj9N3Jks TJqNGd18zsXXBLUCWsT1yXUnH8oH/5ObHBlSByCcxAGOllSP4dGODtGrj1iZlNcBMwp+ 2g/UGWo08FQmqik0MTuFU00JuZrT3BPSlMNvHwLqU1SmFQN/4SN8PiqnG4EjEROyTjoi mgjtsA92LUDKzmc700kY6yUIw9XzKVl/3R1xNT8qlRpWdoZ5fFwI01FHd9QHTntcJCTz V2ZSE1qGkC9f0vyt2Y9d5U6yFafHG2pgUtTXlx9iXc8LczQlwpzf8y6WyjenyB7eZNoH VAuQ== X-Forwarded-Encrypted: i=1; AFNElJ+v/NlLcuFNngcRq0ZqYuuh4RvrRpRwIM/4jACbwyeTaHX6N7nysNVkkuzSOhDOf70MjxdJir4DiY8kNEw=@vger.kernel.org X-Gm-Message-State: AOJu0YyjXIdjXi42np/MCiezRLWOSGEpok8TX6qS/QMhP5NyIMfzb4m+ M84Gpnszy69Cls6M5gADMUdn01Y0hQUpSTxDeUmQ8Uu3U3I8udW5XpK03mb6frMsHP/8HmEa+eO OW1qhc2cusbnS4noCRd/PmwU+HfjTzzEJDkehPNispKmx5AWf8LZLHpDG+Hl9I+b8etM= X-Gm-Gg: Acq92OHIKxX8uuAEzzS1u7ZSkxJlxF4rS/OXcaIlXtOxbUwTw0CTDJamBPclobJdLUN qlSX7B3SUhRA5hPiVszzk6s/c0+lCCGvLZ1aqrpR3+SwCVoX/3MxS+AUEujt20CXg9vP/2ghdWP yvqklhus3dDYk4DL5kT/ok2IUE3AG2rvrkbkRMrQcC77XuSVXUsNNGiXeS+5fR/fCp3tJ2+NIZo gkcf/xh5MjZ6ZqFJKpjrzMAECAPd0Mf5QwNZJ/M9oszDivTQ1GyigvrgIKFAOjnfdq0Xl+Dzlq1 AtPOh23daKYLLLhnimXzpxA6jEo/XEGECJAySBNRxWbleEi6L0U5T7lXAHvRRwB6C6AiIwMDopD xqQFCeVQ23s2MroiG0lC4nY4U595ojt1UqYHNeUVk6MukqAJ68TjrbiE2rzZ/zg7/llAZLfovhb tVJVyd/UkpKzvEF/oJ5Q== X-Received: by 2002:a05:620a:2b45:b0:910:3078:5cf6 with SMTP id af79cd13be357-914b497bdfdmr3946451285a.44.1779964855176; Thu, 28 May 2026 03:40:55 -0700 (PDT) X-Received: by 2002:a05:620a:2b45:b0:910:3078:5cf6 with SMTP id af79cd13be357-914b497bdfdmr3946448985a.44.1779964854789; Thu, 28 May 2026 03:40: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 af79cd13be357-914f86fffddsm755148485a.12.2026.05.28.03.40.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 03:40:54 -0700 (PDT) From: Yongxing Mou Date: Thu, 28 May 2026 18:40:25 +0800 Subject: [PATCH v5 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: 7bit Message-Id: <20260528-dp_mstclean-v5-4-a9221c1f1f3b@oss.qualcomm.com> References: <20260528-dp_mstclean-v5-0-a9221c1f1f3b@oss.qualcomm.com> In-Reply-To: <20260528-dp_mstclean-v5-0-a9221c1f1f3b@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 X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779964831; l=3827; i=yongxing.mou@oss.qualcomm.com; s=20250910; h=from:subject:message-id; bh=VluQ+GSUC9CfNFLNLvLHc58jEW6kFKOO2mES+jvgQeg=; b=psov3Sj3O7eYFrJBIUaTQxDLdd/VTAk5+SUcq8dNSTo6AIN9r86zWmEEgcrnxXRhrXWkLCVBQ lPET6FJ7PCRDK4E5sPuK4gWzA9PZNsaocJZ+Stf+rZNCag/61aohQuH X-Developer-Key: i=yongxing.mou@oss.qualcomm.com; a=ed25519; pk=rAy5J1eP+V7OXqH5FJ7ngMCtUrnHhut30ZTldOj52UM= X-Proofpoint-ORIG-GUID: 8AKAwCIFmupFBCz9cXGeob07zB8G_NJb X-Proofpoint-GUID: 8AKAwCIFmupFBCz9cXGeob07zB8G_NJb X-Authority-Analysis: v=2.4 cv=E/r9Y6dl c=1 sm=1 tr=0 ts=6a181bb8 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=N4WGanfLxQUAwF0MUGsA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI4MDEwNiBTYWx0ZWRfX5CN8StzqAT/j S8PoGOCR2eRc8V5902ft9A6cj+4viVcYPnd/IA/EAMUzMoB2IM5FjQljlhHm29ZxAiUfjgttVbb 7CwJOlZpo+5PnvCoMQ2SVdXd6aCiswYuEdXP7lavnWb2SgDbiG6gZY/e0TugNqc+bZwIY+6ykQi TRZec8YRkGVMd6faIpFVR72NkV2hnR+H7d9CVvESBpDgsv/LC5TkHx7Iq8p1GIyT2qSqbCgvdFa AKndJtKHrr8c0W+ATHomw9oebjeeeoxhaoVkUpWEgREWvPQ3LHCydiyBzihfOL1irLCCf3zjPra GnRtgHbaitDb+de3QEXo2YGgQigPvOmWGbNtt72mCts1C+QOOdH5v71GkijAMxUI7qjP6ZANEKm H7u3+eU65Ap7+pGceYYOuzTHzycAsv5o8h00ji70lf+QiEPx4tTyNPvAOTqxEk2c6v4tAijPzve kWtvwcaf2YEdRazCl9A== 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-05-28_03,2026-05-26_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 adultscore=0 priorityscore=1501 phishscore=0 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2605280106 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 --- 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_ctrl.c index 86ef8c89ad44..cc00e8d2d6c7 100644 --- a/drivers/gpu/drm/msm/dp/dp_ctrl.c +++ b/drivers/gpu/drm/msm/dp/dp_ctrl.c @@ -388,26 +388,45 @@ void msm_dp_ctrl_push_idle(struct msm_dp_ctrl *msm_dp_ctrl) drm_dbg_dp(ctrl->drm_dev, "mainlink off\n"); } -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 *ctrl, + struct msm_dp_panel *msm_dp_panel) { u32 config = 0, tbd; + + /* + * RMW: in SST, config_ctrl_link and config_ctrl_streams are called + * sequentially on the same thread. In MST, caller holds mst_lock. + */ + config = msm_dp_read_link(ctrl, REG_DP_CONFIGURATION_CTRL); + + if (msm_dp_panel->msm_dp_mode.out_fmt_is_yuv_420) + config |= DP_CONFIGURATION_CTRL_RGB_YUV; /* YUV420 */ + + tbd = msm_dp_link_get_test_bits_depth(ctrl->link, + msm_dp_panel->msm_dp_mode.bpp); + + config |= tbd << DP_CONFIGURATION_CTRL_BPC_SHIFT; + + if (msm_dp_panel->psr_cap.version) + config |= DP_CONFIGURATION_CTRL_SEND_VSC; + + drm_dbg_dp(ctrl->drm_dev, "stream DP_CONFIGURATION_CTRL=0x%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 = 0; const u8 *dpcd = ctrl->panel->dpcd; /* Default-> LSCLK DIV: 1/4 LCLK */ config |= (2 << DP_CONFIGURATION_CTRL_LSCLK_DIV_SHIFT); - if (ctrl->panel->msm_dp_mode.out_fmt_is_yuv_420) - config |= DP_CONFIGURATION_CTRL_RGB_YUV; /* YUV420 */ - /* Scrambler reset enable */ if (drm_dp_alternate_scrambler_reset_cap(dpcd)) config |= DP_CONFIGURATION_CTRL_ASSR; - tbd = msm_dp_link_get_test_bits_depth(ctrl->link, - ctrl->panel->msm_dp_mode.bpp); - - config |= tbd << DP_CONFIGURATION_CTRL_BPC_SHIFT; - /* Num of Lanes */ config |= ((ctrl->link->link_params.num_lanes - 1) << DP_CONFIGURATION_CTRL_NUM_OF_LANES_SHIFT); @@ -421,10 +440,7 @@ static void msm_dp_ctrl_config_ctrl(struct msm_dp_ctrl_private *ctrl) config |= DP_CONFIGURATION_CTRL_STATIC_DYNAMIC_CN; config |= DP_CONFIGURATION_CTRL_SYNC_ASYNC_CLK; - if (ctrl->panel->psr_cap.version) - config |= DP_CONFIGURATION_CTRL_SEND_VSC; - - drm_dbg_dp(ctrl->drm_dev, "DP_CONFIGURATION_CTRL=0x%x\n", config); + drm_dbg_dp(ctrl->drm_dev, "link DP_CONFIGURATION_CTRL=0x%x\n", config); msm_dp_write_link(ctrl, REG_DP_CONFIGURATION_CTRL, config); } @@ -450,7 +466,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); - msm_dp_ctrl_config_ctrl(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl); + msm_dp_ctrl_config_ctrl_streams(ctrl, ctrl->panel); test_bits_depth = msm_dp_link_get_test_bits_depth(ctrl->link, ctrl->panel->msm_dp_mode.bpp); colorimetry_cfg = msm_dp_link_get_colorimetry_config(ctrl->link); @@ -1628,7 +1645,7 @@ static int msm_dp_ctrl_link_train(struct msm_dp_ctrl_private *ctrl, u8 assr; struct msm_dp_link_info link_info = {0}; - msm_dp_ctrl_config_ctrl(ctrl); + msm_dp_ctrl_config_ctrl_link(ctrl); link_info.num_lanes = ctrl->link->link_params.num_lanes; link_info.rate = ctrl->link->link_params.rate; -- 2.43.0