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 25E8A355F52 for ; Sat, 11 Apr 2026 12:11:02 +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=1775909466; cv=none; b=dPRsIaonEdDrYV9WdSXn44eJigLJo+5/S8UuIFn8ecRIOBbFhniTwCzgW+gO6o5JqrJRbbFMecEf4XA3hOaQiBTYS7lwyXVJCYgEsRu5GojcfvNK1A4DQyDqWJoSjBa8KXsZLJxNPgRD4wawlLvzHY0Ve236RWjC0iMNUVNK6sk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775909466; c=relaxed/simple; bh=bq/ApaAu9Cba0NC2uhfLECwnb5KKZEMKi1G7RCOyYOE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HqBDKwehwrCZQmV/dds2Qj9DzlpMkkX3w/phsxP2fnDsI5/v0FJ/BTfYimv7tiWGuXYHO3NatNXt3ypxDeC9mEkBrQbSurc9PVpV5h1iePTspAjHXU4OxWfHPldviJqU+1w4lP1fKZBA1POdJUfpm4qmSghQiY1KlgsOcaGGXos= 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=fDdlQJeL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=do6iB/IL; 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="fDdlQJeL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="do6iB/IL" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63B40EuN516803 for ; Sat, 11 Apr 2026 12: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= GER20aNRyZAzUKwcjDT9x/OFiH7hEb7KOqKA2FbdkL0=; b=fDdlQJeLfUJ/6fnP 4WuAE2oNwfNKdLsfhcknpaOxkpm3LKFlX0RdRq+b/p9mvmH162VbFuE42hNkC8Xf zFDZ5JE96e9JEP52tWvDkVwygdNZBSaFYvVFpwwpQWC2lIgYlKdPBNVXkYbZsbl/ b3eRNKm9G2dTEINWcaEVKLZB4MKrsv3KtATazQoGlHfoavMFvIlAI/BVatMs5zuy Sj7oQmoL3iu11im5gbL/KwPpUl6Cb7vTyl5GP8MSZTNXfTNVdw1SW0i60qppqhca X7oEYk7VS/maaYuX+QlJbe2ky65PBl9O2M4G05LOUcm5GVYBOBvqBiRdzhB8TfxJ x17s4A== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dfevtgngh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 11 Apr 2026 12:11:01 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b802961ecso36154811cf.1 for ; Sat, 11 Apr 2026 05:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775909460; x=1776514260; 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=GER20aNRyZAzUKwcjDT9x/OFiH7hEb7KOqKA2FbdkL0=; b=do6iB/ILhkkkn0evcjDhHESxrkqgVXbibubfp1/rIdhi4RqjBRrkLt/+5lo98/MiX9 22j4O35wEorE9EpA0eIYhvPkthqhGOLSu9g/p/MoHamtAZLKHSvUQOt9QmFa178Q6TeT yZOHVHJx008wQNSxyTdKzY/HNbLgVPhE7Arw2U09PUVkT+bvFu8SwNAPcUizXYJlKI03 Pr4ii7+kP0SqtXCvrNH2AZKm2VtG7JNdh+zvPV58CnO9sFWsSTuMHiN29a9Xkl3ujbzX rBljCUxdenm69lsRtMnuU3hYkHULDRm8PnELHU3LXyG7MhnGz83+3mEp5KHbX/ign2V4 4U0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775909460; x=1776514260; 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=GER20aNRyZAzUKwcjDT9x/OFiH7hEb7KOqKA2FbdkL0=; b=mVSQyi/13Jde5KdvI4OBkbO33BkMqixvfwULADH7bJV/l9YkuKD45+Sl0adyuOO0tz eUaCQOWowXvmXcLesMFkinQ6EoCUNsIZOnzSw5IT+zL4CdjMZPkLBS1zaaCD1CsT0ZiF 8C+j9GfbT1KPFjxNgkEUWZpLacSg2sySE+Ao8tXNhV9AznLR9i65b8UJOD2Wpin3c6td TVJqoPhCot+KYhH41ubBYS9CnJowZgF9UeB1BHJQMDDocwDaiG0B4AZOXx553p7/3eGU l10OAsbymfkDSI3vhyyQEMYg30GLTlLNwo8Byti2LP+MQGZqKDdcR56vQ1ixXQkPzPMR pThg== X-Forwarded-Encrypted: i=1; AJvYcCUTUcK5VNPkVRmXeQWN5fvFrwpSpRNsbYHFtI0olReOBH5nQqRMz7QS74i23L6HgIOEAl3dBlA3oTyhWMQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz5repSR4cGcgPmxqUJCnc8qvvhBp3CxFBLgxYqDFb+DAeyryCO OD70KV745bzlN2Yidu8aBdCZe7OAFucpbWooqflRIWnuLKLQnNi1oLggFlKQiRt12UI3D8/uzpn V4dmKBJ89eyXT1H7/ZqpglvYr0r423B2enO+pqX13mkDr4QpB4OR49lJjFE0VyNa51mM= X-Gm-Gg: AeBDieveo0yOcSG0VKFJDut13d00rWKe3dLr+XAyI+saolPm/8SMr0RzngBK7EYYFrI +p5iCYjPGDPOopDDFACutkT53G6N+z6ohRe+uUmoFxQEaZsvsWj5L7Kod8Xv5lal9tcCq4Zbxy8 HQJONsuUE+cnmu5xZcwaN0g3Yx+p/O9RsBRs7mxv7bYjvmVAu92iOXFPSjpdQ+zjM6tAl0rvzay z5ERCbUB4Xp3oZ0Nf0g6W/DNV8vTGzemHnKdfdNxXumdgUkOEeMmVZcBGC6hAgvqSMqvgbMxCAg vc7YmG2vSbEowBIuBHFQlOtNQ6R72ZzNBGPw0iQkNvaLN+LEWfm0b8CVDjV0i2jxMEqgTATqpMI 272+KkMisjz1ixMVfSn2gbmf415E2/+yDtdURIYCSNopjzGxHEGKsu8J12AF3TgxFs0pDNd2pm3 VihqsZ/Y250KVjOaiBpBjM0roD8ecAGdRZwNE= X-Received: by 2002:a05:622a:2299:b0:4f1:ba0b:90 with SMTP id d75a77b69052e-50dd5a91f78mr97758941cf.8.1775909460534; Sat, 11 Apr 2026 05:11:00 -0700 (PDT) X-Received: by 2002:a05:622a:2299:b0:4f1:ba0b:90 with SMTP id d75a77b69052e-50dd5a91f78mr97758351cf.8.1775909460029; Sat, 11 Apr 2026 05:11:00 -0700 (PDT) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38e495b4e73sm11906291fa.41.2026.04.11.05.10.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Apr 2026 05:10:58 -0700 (PDT) From: Dmitry Baryshkov Date: Sat, 11 Apr 2026 15:10:26 +0300 Subject: [PATCH v2 06/21] drm/of: add helper to count data-lanes on a remote endpoint 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: <20260411-waveshare-dsi-touch-v2-6-75cdbeac5156@oss.qualcomm.com> References: <20260411-waveshare-dsi-touch-v2-0-75cdbeac5156@oss.qualcomm.com> In-Reply-To: <20260411-waveshare-dsi-touch-v2-0-75cdbeac5156@oss.qualcomm.com> To: Neil Armstrong , Jessica Zhang , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Cong Yang , Ondrej Jirman , Javier Martinez Canillas , Jagan Teki , Liam Girdwood , Mark Brown , Linus Walleij , Bartosz Golaszewski Cc: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3334; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=bq/ApaAu9Cba0NC2uhfLECwnb5KKZEMKi1G7RCOyYOE=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBp2jpFtEH514oS6B6o1FC9Zcdoql1nj2N8uYHyI nbiRNU5PjWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCado6RQAKCRCLPIo+Aiko 1dahB/4yloTJ264Ag99K7uwm46uttgOjgWsKsCsqkXWtdhcPQTj/ynjNAQbI/sT1vhT2ZFtKP0i W9MEvdMEc2M8TpRXyAbCbtwMywfr8+wJv4RHWN3JHrppa3vT7SxKm8pr3N+N/3xLSx+fRoHbI+s MaEesitUe/TgtHA29UVd8bt4wgtaFBUBfF4l2ZxqnMre8maSj92zGmDcvWR8qsxqs8fGUeOaUsH u1oNNz2CEEYuqsT/xUuCeZtfapi6f4ARW41ivzbNMD3ycuwkhoAEzG6kUefGoaG1NWEcYwEIpPk fWXiJ5mOlkl8M4VIpMrbzD/Hj1Ii9EP9nDi8RwI/JMREJSsg X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=RYWgzVtv c=1 sm=1 tr=0 ts=69da3a55 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=20KFwNOVAAAA:8 a=EUspDBNiAAAA:8 a=O3ifdCkKFGgQ8ueZnWQA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: zBV-Cl-YiW8safhh288dVkYGxHKr9BI3 X-Proofpoint-ORIG-GUID: zBV-Cl-YiW8safhh288dVkYGxHKr9BI3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDExMDEwMiBTYWx0ZWRfXwIOj2thrqQ7q 0wtJs3nVUXnIAzibpg+452428SWLMsOHeoWXOCEG9Tles+BlpyyNyXgkaCGgfORuS2vH/HUwHV2 qi5gr30f7tmlGTaeiPjK5FRYoio4e0A4HZLboQ7+EuXZdxQ4+rqyIDjmFI8KubsifugmBFk2pFr yz/3BYh39TrCktZRuu8yknToCnXO8xKBQgIzojX4BUky+z5EiW3y4dcAk+KkKvTC6QnKuKUi5EH hWWhmn6PZQ/wir6SOZ6492lrzbi1SBdN/MQSS5/1KLZjFZQXqitvoiH5tH9ihUTQ4Hvunrpsaix lJ2tO+YVw8K5MqFzgfqYFBT735CllO4nAh96QiMIG/fN5s4b0P54vEJ2yELi04JvFcFEMYDiuF3 uzAhuA+fEfut2W9OyIQBiiP6daKPmDlejf7XKr4lqtvj/8Bgwdcx3JMxEDki3irf6T7feawFwGN B9HzfbT2T336yNNHQPw== 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-11_03,2026-04-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 spamscore=0 impostorscore=0 phishscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604110102 If the DSI panel supports versatile lanes configuration, its driver might require determining the number of DSI data lanes, which is usually specified on the DSI host side of the OF graph. Add new helper as a pair to drm_of_get_data_lanes_count_ep() that lets callers determine number of data-lanes on the remote side of the OF graph. Reviewed-by: Javier Martinez Canillas Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_of.c | 34 ++++++++++++++++++++++++++++++++++ include/drm/drm_of.h | 13 +++++++++++++ 2 files changed, 47 insertions(+) diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c index 4f65ce729a47..ef6b09316963 100644 --- a/drivers/gpu/drm/drm_of.c +++ b/drivers/gpu/drm/drm_of.c @@ -558,6 +558,40 @@ int drm_of_get_data_lanes_count_ep(const struct device_node *port, } EXPORT_SYMBOL_GPL(drm_of_get_data_lanes_count_ep); +/** + * drm_of_get_data_lanes_count_remote - Get DSI/(e)DP data lane count by endpoint + * @port: DT port node of the DSI/(e)DP source or sink + * @port_reg: identifier (value of reg property) of the parent port node + * @reg: identifier (value of reg property) of the endpoint node + * @min: minimum supported number of data lanes + * @max: maximum supported number of data lanes + * + * Count DT "data-lanes" property elements in the remote endpoint and check for + * validity. This variant uses endpoint specifier. + * + * Return: + * * min..max - positive integer count of "data-lanes" elements + * * -EINVAL - the "data-lanes" property is unsupported + * * -ENODEV - the "data-lanes" property is missing + */ +int drm_of_get_data_lanes_count_remote(const struct device_node *port, + int port_reg, int reg, + const unsigned int min, + const unsigned int max) +{ + struct device_node *endpoint, *remote; + int ret; + + endpoint = of_graph_get_endpoint_by_regs(port, port_reg, reg); + remote = of_graph_get_remote_endpoint(endpoint); + of_node_put(endpoint); + ret = drm_of_get_data_lanes_count(remote, min, max); + of_node_put(remote); + + return ret; +} +EXPORT_SYMBOL_GPL(drm_of_get_data_lanes_count_remote); + #if IS_ENABLED(CONFIG_DRM_MIPI_DSI) /** diff --git a/include/drm/drm_of.h b/include/drm/drm_of.h index f2f2bf82eff9..7bcc0ccfe0f4 100644 --- a/include/drm/drm_of.h +++ b/include/drm/drm_of.h @@ -62,6 +62,10 @@ int drm_of_get_data_lanes_count_ep(const struct device_node *port, int port_reg, int reg, const unsigned int min, const unsigned int max); +int drm_of_get_data_lanes_count_remote(const struct device_node *port, + int port_reg, int reg, + const unsigned int min, + const unsigned int max); #else static inline uint32_t drm_of_crtc_port_mask(struct drm_device *dev, struct device_node *port) @@ -140,6 +144,15 @@ drm_of_get_data_lanes_count_ep(const struct device_node *port, { return -EINVAL; } + +static inline int +drm_of_get_data_lanes_count_remote(const struct device_node *port, + int port_reg, int reg, + const unsigned int min, + const unsigned int max) +{ + return -EINVAL; +} #endif #if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_DRM_MIPI_DSI) -- 2.47.3