From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 ABE30293479 for ; Mon, 14 Apr 2025 11:12:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629136; cv=none; b=WIBOtYsU+mdoFSeizEUNcDcWflMeEBmPEgKzF2/qFaDRee0OlxPfx/eP+9CMusrsse7MuY+PrfaPhOBFDVXBrEbiCtr2Z52OWNDJlZ9GaYS3bAOsJMyydd/mz/b6FG37IQJ7eKAnkZo6OtwcpvK3HpIY+Sk1q+nbErQ2cyJAOx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629136; c=relaxed/simple; bh=Dupe7V99g6BivBbibfTkx5/konvjoim8qu4oyF93KbI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nO4/R8BfB2vdgDUJC2PRa0fqtwk31O2SrjdQ2zHhTvrGDGvXj7YbyQ0rJaxOL1xU8rKv+Hd/CQvgcr207mOz/+WhEcVCBXfg7lHpz0ZNz/87Yu4S7v33a4yimm1e7kLZB3KIqvH09rmF0lLYEHmsCKBwYHEzkN8LTflfWVCX0oM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=dbodVe5N; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="dbodVe5N" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E830C6A6; Mon, 14 Apr 2025 13:10:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629004; bh=Dupe7V99g6BivBbibfTkx5/konvjoim8qu4oyF93KbI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dbodVe5NJhlYDqlhjc27cW2N7L+FspD/tCA8qp3/Zh/4i7F9Xm7lj7h6RbaLDtMSa sa90D2VQ7rphDnzPtWNEGGMl7iqBdSCSgzm5BydyW4e+f/whsD7hHso+gc7Fgh8vvx LexkvvpX4dC3I4JjSHwUJeF1SLk2v1LC8Z/ec53I= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:10 +0300 Subject: [PATCH v3 01/17] drm/tidss: Fix missing includes and struct decls 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: <20250414-cdns-dsi-impro-v3-1-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2174; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=Dupe7V99g6BivBbibfTkx5/konvjoim8qu4oyF93KbI=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O18CpvPg0gWEY/bDJl3Aw5TruSylz56Geq4b 9U/cuklb/yJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfAAKCRD6PaqMvJYe 9a7QD/wMc3YRRq9NmO1AZ6YotLhhbS4D6NvPuv+tJa+8GhbUbe8xuEWkOtiwr0ag9V3i17EB0xt j3KtRMQ3i1NLq/PmLYXSrOxy4Xl8dnpJGBUNnTDm/8280QpRjM+m3nAXrxk5HKjlDN9AY0KXXwP VfwBC67KrL46xPBamPs27cO0ss2WZRmoXXsjYdycEE1PfK7WiJWPP+hQ7RezLfPHq4euLIHISKY MQXCew/Og7bO2jfD9L9YPmY4S937D3A1NvBGIwEeV7utHbzOYmCO3XiDPWwTbXukFbIR2nYXZQO q6y1XrJ05cpoOfMx4WtRRFL8tXguEdcmEEQ6unjcKG6cTVUeu3soSZ800ZFVsxOVu4ZfQrfNZ6U bzEZuRg3Lds7jFi41DKqhQ7ilYUZlIq4zHL4Hj/i3pZJXSuJOYcBkuoVVVW0+todFNOYF4TW+iq 4bgYtHrJxJ8+PpJ9l0sfZVs1gXoWjATENSM6u2OgRnMc/jY7uRjhQi+1ea3N8R7NbQ+zpS/4G3k UvVYLayRFleiVhAFaBD3NdejC39U9Nm16H2qm4Pi6bhIa2kaNY+LcEduKLqZMpjEZ6XB/LoLdIl EntXriHdlIlvFQQoC2DSnosq9a9xwWK5xUWZyN+2MDluCnHNUDjzvUqXvlFVDkZ+6lrWrWgbAeD Mt8PuWG9vrC8P5g== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Fix missing includes and struct declarations. Even if these don't cause any compile issues at the moment, it's good to have them correct. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/tidss/tidss_dispc.h | 3 +++ drivers/gpu/drm/tidss/tidss_drv.h | 2 ++ drivers/gpu/drm/tidss/tidss_plane.h | 2 ++ drivers/gpu/drm/tidss/tidss_scale_coefs.h | 2 ++ 4 files changed, 9 insertions(+) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/ti= dss_dispc.h index 086327d51a90..c31b477a18b0 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -7,11 +7,14 @@ #ifndef __TIDSS_DISPC_H__ #define __TIDSS_DISPC_H__ =20 +#include + #include "tidss_drv.h" =20 struct dispc_device; =20 struct drm_crtc_state; +struct drm_plane_state; =20 enum tidss_gamma_type { TIDSS_GAMMA_8BIT, TIDSS_GAMMA_10BIT }; =20 diff --git a/drivers/gpu/drm/tidss/tidss_drv.h b/drivers/gpu/drm/tidss/tids= s_drv.h index 7f4f4282bc04..56a2020e20d0 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.h +++ b/drivers/gpu/drm/tidss/tidss_drv.h @@ -9,6 +9,8 @@ =20 #include =20 +#include + #define TIDSS_MAX_PORTS 4 #define TIDSS_MAX_PLANES 4 =20 diff --git a/drivers/gpu/drm/tidss/tidss_plane.h b/drivers/gpu/drm/tidss/ti= dss_plane.h index aecaf2728406..92c560c3a621 100644 --- a/drivers/gpu/drm/tidss/tidss_plane.h +++ b/drivers/gpu/drm/tidss/tidss_plane.h @@ -7,6 +7,8 @@ #ifndef __TIDSS_PLANE_H__ #define __TIDSS_PLANE_H__ =20 +#include + #define to_tidss_plane(p) container_of((p), struct tidss_plane, plane) =20 struct tidss_device; diff --git a/drivers/gpu/drm/tidss/tidss_scale_coefs.h b/drivers/gpu/drm/ti= dss/tidss_scale_coefs.h index 9c560d0fdac0..9824d02d9d1f 100644 --- a/drivers/gpu/drm/tidss/tidss_scale_coefs.h +++ b/drivers/gpu/drm/tidss/tidss_scale_coefs.h @@ -9,6 +9,8 @@ =20 #include =20 +struct device; + struct tidss_scale_coefs { s16 c2[16]; s16 c1[16]; --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 54CC5298CA8 for ; Mon, 14 Apr 2025 11:12:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629139; cv=none; b=bUL0hJdRsBHUPkZWeyTfc2oEyRcALg4cBEjrVsM4lv1JRmWmIY5yMX4IJ9ly7H8X+3cAN0KzYz6qUBa5022DXU8Ismmrm2PZeUx1D8HwyFFEiFBxqSwsj4JMd+Bmn4Xz7jrQXD1Pcjvj2thMC6775jjWkxXmOBtxzzX5/FpeItM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629139; c=relaxed/simple; bh=lEa3BxN/6LhqthWXir58vTyZRT4d8BUmsi3iv05b4SI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hKOLnNAsvoAAA3xeaCcBwSBj8+uaZxuuRVMLWt7LXXN0hCXiRRFE2FjImV28mqr73rW/YN6j20uA0npcnfb0AI/Vv4Y8AalazPwIaddSeyNLFAdg8M9Gf49BE6SCeGlmsyw0OaHhbDU7D94IrWG1frByMGe5CcyWLiw0wnpLU7I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=YXODpftw; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="YXODpftw" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 251D799F; Mon, 14 Apr 2025 13:10:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629005; bh=lEa3BxN/6LhqthWXir58vTyZRT4d8BUmsi3iv05b4SI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YXODpftwi3BM7VaheebN3guCOGsi+4bU+ojza8T7/Ro0Whez6IaRkUVHMYZA3EOxz 8P+adz/oBT6VdbYR89I3+vyFR9xzdI08DQOiQzyrAO3r2aUmfEuc7CczvDWbEa0hCu ZGvdyVv0jVY2Xxa1yBQsp1Z7bru1mGQNfFeuSgis= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:11 +0300 Subject: [PATCH v3 02/17] drm/tidss: Use the crtc_* timings when programming the HW 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: <20250414-cdns-dsi-impro-v3-2-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2447; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=lEa3BxN/6LhqthWXir58vTyZRT4d8BUmsi3iv05b4SI=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O18ncL1CiafBlZG0MdVYTCpi14Z+sY+pMcV+ N2TzX0IjNOJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfAAKCRD6PaqMvJYe 9UDGD/9zR9ZDJsIojm4mZ7+2bW6e+6cv4XGLsdp3L8ADCwFgZAhxlpmVFk/Vu2fcbep/nC2iooT VI/+m1K7ffOfeEwqgGnTAjF3O4ziyuPuRioEOsAXiZ3E6Vbx+ic5nZqFyTnfQRsWq/PBqNHg+9j zQqBplSUfO/o/irY78+EKXcoTKpdJ1KZC9Styh9B8tXixEFdFZ3ZXWMBm0Ws2yDdBs/mrpoTpBI U0sBX963jPAyvfNqYfVZKeT8X3O3ewY1gn6nqSUAn+HNu4DjLMMsH7UicNBW5dfh94CQ75GBNI+ D6nMJxQibK+5OYOkMhfXpg+ZoD+ymbbOtk8JzciwjwKrDvJt4fZ0nBOSBgDmEt/sTIqT2BDRT5J PDVRhMF5xG06SWTvN/4Diu1igLXpO6ahM1jKZP8eW3FniD5b/ytv7pnDj9mxi3zdZHVpDj2Skn7 wDGwhR2HqcfRaQREYyxvmWHiCW2TA3zIGsZGqH9CGFgFNKkO98tEz06gJJ2r+R6ofqSNTKf2eE0 rRG36ttzNcR2voVbcQvg9n6n+7Ju9z6OoHzHhgNzOWgn3dbVbAWQ1xSpzwmfTOr826EGJ614iUU C58xLYD9LPvsunxpM1nkEEU5XWjJJSj4qu5vW02HC4+Nwn6QARfoLxqZ0exDFKkdQbkyJNwjc+R 8xZbtWBYftQbJHg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Use the crtc_* fields from drm_display_mode, instead of the "logical" fields. This shouldn't change anything in practice, but afaiu the crtc_* fields are the correct ones to use here. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/tidss/tidss_crtc.c | 2 +- drivers/gpu/drm/tidss/tidss_dispc.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tid= ss_crtc.c index 94f8e3178df5..1604eca265ef 100644 --- a/drivers/gpu/drm/tidss/tidss_crtc.c +++ b/drivers/gpu/drm/tidss/tidss_crtc.c @@ -225,7 +225,7 @@ static void tidss_crtc_atomic_enable(struct drm_crtc *c= rtc, tidss_runtime_get(tidss); =20 r =3D dispc_vp_set_clk_rate(tidss->dispc, tcrtc->hw_videoport, - mode->clock * 1000); + mode->crtc_clock * 1000); if (r !=3D 0) return; =20 diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/ti= dss_dispc.c index cacb5f3d8085..a5107f2732b1 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -1084,13 +1084,13 @@ void dispc_vp_enable(struct dispc_device *dispc, u3= 2 hw_videoport, =20 dispc_set_num_datalines(dispc, hw_videoport, fmt->data_width); =20 - hfp =3D mode->hsync_start - mode->hdisplay; - hsw =3D mode->hsync_end - mode->hsync_start; - hbp =3D mode->htotal - mode->hsync_end; + hfp =3D mode->crtc_hsync_start - mode->crtc_hdisplay; + hsw =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + hbp =3D mode->crtc_htotal - mode->crtc_hsync_end; =20 - vfp =3D mode->vsync_start - mode->vdisplay; - vsw =3D mode->vsync_end - mode->vsync_start; - vbp =3D mode->vtotal - mode->vsync_end; + vfp =3D mode->crtc_vsync_start - mode->crtc_vdisplay; + vsw =3D mode->crtc_vsync_end - mode->crtc_vsync_start; + vbp =3D mode->crtc_vtotal - mode->crtc_vsync_end; =20 dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H, FLD_VAL(hsw - 1, 7, 0) | @@ -1132,8 +1132,8 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 = hw_videoport, FLD_VAL(ivs, 12, 12)); =20 dispc_vp_write(dispc, hw_videoport, DISPC_VP_SIZE_SCREEN, - FLD_VAL(mode->hdisplay - 1, 11, 0) | - FLD_VAL(mode->vdisplay - 1, 27, 16)); + FLD_VAL(mode->crtc_hdisplay - 1, 11, 0) | + FLD_VAL(mode->crtc_vdisplay - 1, 27, 16)); =20 VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, 0, 0); } --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 460A4298CD8 for ; Mon, 14 Apr 2025 11:12:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629140; cv=none; b=MKVOfB3Q9b+hWC9okF3LM3JAVLeshy6/w1IYJEXgogcrNb56OgB+i0MTD9o2mHjP+EStC2Tn3qIH0biyL/deaILeHNL/lOYN0iQ/aHY+JNfOWM4d0ySijmeZVZ8Ut2Zw4weBa0VCQuYIkNfkYUj8VZL4GERRw5VialPUaNpuqag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629140; c=relaxed/simple; bh=G+qNFKvRQA6UIRWDHc0oLkdtE/hQiPBzkhVP6XpdPZ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QCi4raauyxipa9FG/JHVbpQE/EeU2j9116WCsk9CpWzVoKZF0HY/8e3iMGOW005dp6l7RV6oOh5l+ufcgRUpwxULJ3hEGxvjqOH3dsRdo3Nq7/RYH8neSEP+GN5B9aHPj1IHZo5qvWMOEWqaPfzugYMTrTF4JMUTLWaAVo1h8jw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=eOEjbSuU; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="eOEjbSuU" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5A48313D7; Mon, 14 Apr 2025 13:10:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629006; bh=G+qNFKvRQA6UIRWDHc0oLkdtE/hQiPBzkhVP6XpdPZ8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eOEjbSuU/QYw71ZlgAI019/xWa3ly8n+A5r/NQz3DpXi3rOYAfN5jxt8FG+2ITI1u 8A0B37x5fAB2NEuE2NjWLkEH5ZBW7La5kGVojs0IuWKpxkV1sEyNeRPxn0X2qRigtr j/0yUFeKV14Wyfy5uMM6hdWUqwLS9Jg/i+p06igI= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:12 +0300 Subject: [PATCH v3 03/17] drm/tidss: Adjust the pclk based on the HW capabilities 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: <20250414-cdns-dsi-impro-v3-3-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3791; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=G+qNFKvRQA6UIRWDHc0oLkdtE/hQiPBzkhVP6XpdPZ8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O19VN5zgt8TbTJnGRZrWkT/4F+Gnn/RJSs2f 5Taed9kmpmJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfQAKCRD6PaqMvJYe 9dqAD/9wWA2Bc4bvstLEt2pn4wU2tuyQ1RBXP7gDPBS5dZv01z9aMqKPntK631G0h8A0+AXmRA2 om7GtakvctartQeTc8eQUX8dHEfUHC8uwSdBforv7ycuKDrqLDM9FVkiXkxymQ8bQQV902GJH98 vY6dJ+EJMT/USOYNpktNipz7Ex0GB6V1ZTv9dcdsanoWDRr4UQJmiwZlw4+Blutkb9NEFtIlJI5 JuQwc3FO8k39CL9nWlk51CFREO9eYmojhLAjD8Fcyxoki2Xq7LjAE7HA7KmFSM5M1lmkVRYfMxS XRhbHYYRX9LOd1JEon9XVu+nwLFnUl6U7iRD8AYQmaCjNXKTSCBnjeud9TWpkZmURLWpTSXuavc S1fBMICX96UG5NfO3cTIo/81M66xvkTnIsTLcTSEOSZ5Dm+pMMnVcZ2CPTnaEYnpTBTDN6kzVcX ZJvHz8p0uOBbwCeWn6/gaKyeYPHgV2gGGd/sesuQ8nYUeAoID0B63nDbQiyLB3l8WO7s/eHz9oK dPABOXcsB+iezKGI24t3e9u6oAKyBWg3TBAK+LKkvTu9M98jGgSuQnudUBdPdj8X/cPGcyF1Su9 xq1I8CqvBgUC8GGfjO3sKyjMTMtAayCBBJsQ605sELTooBP3lskefDSTyYiN2t9okCV71SQ4eN8 SmUo0JrvHd9EY2A== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 At the moment the driver just sets the clock rate with clk_set_rate(), and if the resulting rate is not the same as requested, prints a debug print, but nothing else. Add functionality to atomic_check(), in which the clk_round_rate() is used to get the "rounded" rate, and set that to the adjusted_mode. In practice, with the current K3 SoCs, the display PLL is capable of producing very exact clocks, so most likely the rounded rate is the same as the original one. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/tidss/tidss_crtc.c | 23 +++++++++++++++++++---- drivers/gpu/drm/tidss/tidss_dispc.c | 6 ++++++ drivers/gpu/drm/tidss/tidss_dispc.h | 2 ++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tid= ss_crtc.c index 1604eca265ef..6c3967f70510 100644 --- a/drivers/gpu/drm/tidss/tidss_crtc.c +++ b/drivers/gpu/drm/tidss/tidss_crtc.c @@ -91,7 +91,7 @@ static int tidss_crtc_atomic_check(struct drm_crtc *crtc, struct dispc_device *dispc =3D tidss->dispc; struct tidss_crtc *tcrtc =3D to_tidss_crtc(crtc); u32 hw_videoport =3D tcrtc->hw_videoport; - const struct drm_display_mode *mode; + struct drm_display_mode *adjusted_mode; enum drm_mode_status ok; =20 dev_dbg(ddev->dev, "%s\n", __func__); @@ -99,12 +99,27 @@ static int tidss_crtc_atomic_check(struct drm_crtc *crt= c, if (!crtc_state->enable) return 0; =20 - mode =3D &crtc_state->adjusted_mode; + adjusted_mode =3D &crtc_state->adjusted_mode; =20 - ok =3D dispc_vp_mode_valid(dispc, hw_videoport, mode); + if (drm_atomic_crtc_needs_modeset(crtc_state)) { + long rate; + + rate =3D dispc_vp_round_clk_rate(tidss->dispc, + tcrtc->hw_videoport, + adjusted_mode->clock * 1000); + if (rate < 0) + return -EINVAL; + + adjusted_mode->clock =3D rate / 1000; + + drm_mode_set_crtcinfo(adjusted_mode, 0); + } + + ok =3D dispc_vp_mode_valid(dispc, hw_videoport, adjusted_mode); if (ok !=3D MODE_OK) { dev_dbg(ddev->dev, "%s: bad mode: %ux%u pclk %u kHz\n", - __func__, mode->hdisplay, mode->vdisplay, mode->clock); + __func__, adjusted_mode->hdisplay, + adjusted_mode->vdisplay, adjusted_mode->clock); return -EINVAL; } =20 diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/ti= dss_dispc.c index a5107f2732b1..3930fb7f03c2 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -1318,6 +1318,12 @@ unsigned int dispc_pclk_diff(unsigned long rate, uns= igned long real_rate) return (unsigned int)(abs(((rr - r) * 100) / r)); } =20 +long dispc_vp_round_clk_rate(struct dispc_device *dispc, u32 hw_videoport, + unsigned long rate) +{ + return clk_round_rate(dispc->vp_clk[hw_videoport], rate); +} + int dispc_vp_set_clk_rate(struct dispc_device *dispc, u32 hw_videoport, unsigned long rate) { diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/ti= dss_dispc.h index c31b477a18b0..d4c335e918fb 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -120,6 +120,8 @@ enum drm_mode_status dispc_vp_mode_valid(struct dispc_d= evice *dispc, const struct drm_display_mode *mode); int dispc_vp_enable_clk(struct dispc_device *dispc, u32 hw_videoport); void dispc_vp_disable_clk(struct dispc_device *dispc, u32 hw_videoport); +long dispc_vp_round_clk_rate(struct dispc_device *dispc, u32 hw_videoport, + unsigned long rate); int dispc_vp_set_clk_rate(struct dispc_device *dispc, u32 hw_videoport, unsigned long rate); void dispc_vp_setup(struct dispc_device *dispc, u32 hw_videoport, --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 81DBB29B215 for ; Mon, 14 Apr 2025 11:12:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629143; cv=none; b=n3czT74bLxSOTgiQGj2/hVR/eliqDNbxQpGzhZODLJKmfUYa7LhiKyUcRRpMS5c8udcKQzKVq0QlOXCD6FvHBQAoxKGekkIDsMqAvB3ne5NGsT0+2rvRYMxHueTRZlTl5vmAfqmMdD+yy7sGf/c7ZjmMPhb9RrCZXPpTpNO2tAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629143; c=relaxed/simple; bh=0rz+qtGwR8012ibx7Ol/9THyUm6cLrG8rh2vtI7MsMc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SS13CiqHr1t1iw+aN5EfaEtbFFdyWsgti+tOAH60lEx1FPLONwpuwRZnazOd5MAMwV7Esk6VAaqasvz83K3nHD3uIvc44esFB4yIeDCrFuwUGn1wKV+z3u67/Ys6p17zwRDEWHsUQdaxXECLS6p7GvopQ50mcLCmNDK57q8bA+c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=F90HVGaE; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="F90HVGaE" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8DAE714C6; Mon, 14 Apr 2025 13:10:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629007; bh=0rz+qtGwR8012ibx7Ol/9THyUm6cLrG8rh2vtI7MsMc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F90HVGaEHXcVXQRlikSZOeq7nwTdxWgLR/O4ZCJ/sMd9RPYwtr+y16vk5hguc5RG6 ZabqFXdTYkxEUjoNsrIBzi1A42TECpA6ci1B7s0jFzikYPu0bFYpOhbLvyTEnJ0QdE r1RTUt3/E2wro+VPNkM0nJRHSOykrs8npHfRZ0eY= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:13 +0300 Subject: [PATCH v3 04/17] phy: cdns-dphy: Store hs_clk_rate and return 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: <20250414-cdns-dsi-impro-v3-4-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1212; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=0rz+qtGwR8012ibx7Ol/9THyUm6cLrG8rh2vtI7MsMc=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O19WJKrDQFr1DAKHlKplUTsadmGLQhQQvcKW 3x6+N/hII6JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfQAKCRD6PaqMvJYe 9c46D/9NFtvR0pSbvbEr3POjEwVF8VIo4YTvY9yeNi7QVERsbNO4LX8+wumnIOM6ZNS19JrLKgA HzJoND7mcdrBMuaQcPZbXTtd0y/jRhHZ2AFHD6Z6pRHA1+xyeOMj0KPJduROOWr296YFh++gXf8 eVyfECyk1eH8gj5IIh6Kq9gRiZL+C/n6cDH8y8AGq1F0D103cSSb/tqXVR8SOFqfu3YxOFnEyly TPmd7awGgG6yL1bupzFQdgUA6v4fcJoUYXfm1/UtC6uts2BRVribCDI2xgGTVPqYm0twhp0TxPg 8XJYYSyR7MPNsywfIBywl5dr5TzuulaNjwXMd3yFXS9ItSW0E5Nuaczmpnu4qOFUVfnvTZs3uZx xeA0OtsWnOnvFMU8l4jCUCfjQIwFow8HBH4CUkaEfe4bUPocc/JZr1oCVJylPgastaVIOUlLVgG ZVFbK1kqf+HiCTmpqN/MDqZQkipBZtO9C5r6SmphPwtnBlDWCtAvzDRI3zhyLpB504z6peiXW0D epkaULqBWDowlMJEiMFPA4Mspv/Zh3mX3Arse0ijIFhuzP8VKUt4FpRVNq9v5TUaYSbcAPKwl18 lY0eU+a2KedupqNNjMoBubaBPVhN7lWVdYW69hzd3vpbhiWBSdiN5dmQBtMb0zGPLOdIb7G6UGo Mb0wlAvFKtMJ9pQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The DPHY driver does not return the actual hs_clk_rate, so the DSI driver has no idea what clock was actually achieved. Set the realized hs_clk_rate to the opts struct, so that the DSI driver gets it back. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/phy/cadence/cdns-dphy.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/phy/cadence/cdns-dphy.c b/drivers/phy/cadence/cdns-dph= y.c index ed87a3970f83..f79ec4fab409 100644 --- a/drivers/phy/cadence/cdns-dphy.c +++ b/drivers/phy/cadence/cdns-dphy.c @@ -79,6 +79,7 @@ struct cdns_dphy_cfg { u8 pll_ipdiv; u8 pll_opdiv; u16 pll_fbdiv; + u32 hs_clk_rate; unsigned int nlanes; }; =20 @@ -154,6 +155,9 @@ static int cdns_dsi_get_dphy_pll_cfg(struct cdns_dphy *= dphy, cfg->pll_ipdiv, pll_ref_hz); =20 + cfg->hs_clk_rate =3D div_u64((u64)pll_ref_hz * cfg->pll_fbdiv, + 2 * cfg->pll_opdiv * cfg->pll_ipdiv); + return 0; } =20 @@ -297,6 +301,7 @@ static int cdns_dphy_config_from_opts(struct phy *phy, if (ret) return ret; =20 + opts->hs_clk_rate =3D cfg->hs_clk_rate; opts->wakeup =3D cdns_dphy_get_wakeup_time_ns(dphy) / 1000; =20 return 0; --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 8E43F29C34D for ; Mon, 14 Apr 2025 11:12:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629144; cv=none; b=bz9D760Pk/Q8R3WtXuc7z+2TV3Ix465UfLmI3ZIoknYFZ3lmDVi79FuA9IKcWukcY6iKGKhw5sIWTuco14cmD/mglmvzR0RB+Oaqya8l0zbePUwre35JWTKz8iBnz5rY/+lfFOFFDTMGm8eG3USyYFQpOmgbRA0YMosczKTkMOY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629144; c=relaxed/simple; bh=Vp6riUjIzDMXhg8AyDl9dAqQ+4STX4wOuNTSlWToDlg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ra7q6w3hqQqW1dq4mAnc43o85ns3zroRs2Yj0oWQ9Aym8vo6D60lDFhmLSqvlZlrOSUMYEPRYJSXb4yb6vdSdhyRUyb3JDhIsPC2B/L7+2S4T201eTv4EnNFbjj5cxdt0LrykTH4XlBUJVEsY+0u7O0BBlJcXZMnWKQToCLIBbQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=u8R5oUxA; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="u8R5oUxA" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BDCB0502; Mon, 14 Apr 2025 13:10:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629008; bh=Vp6riUjIzDMXhg8AyDl9dAqQ+4STX4wOuNTSlWToDlg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=u8R5oUxAOj1jslmwrAWd9tLiJVUxVef6gai2AV83h0MUZLnziOMjk4o333o+yboi2 sjqv8S4ol/Vxn3bcGTREVGsScCLrNwsQC+FIgGlXBWVOWalBSwtGL2iZh30Na8vO9k XosVRuMdSds3iVB6QZlLkEjezrsvEQttY014WIgQ= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:14 +0300 Subject: [PATCH v3 05/17] phy: cdns-dphy: Remove leftover code 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: <20250414-cdns-dsi-impro-v3-5-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2229; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=Vp6riUjIzDMXhg8AyDl9dAqQ+4STX4wOuNTSlWToDlg=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O193Zf7j/VU5OcrE6QZ6/+BsWaBEoUMSmr4o IxRY3HuK++JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfQAKCRD6PaqMvJYe 9caeD/0bi72o7Jy2amqYxym6vqN/ptvBV/YvewmbV1spqmP85BG570h75atCXVqjqZqngHpPAV4 a6pRaFHCUrkvjbNqF/KbifzaIB3neOWYQE7hUMX3JwycsWWDCJh+DnATzBha4K8zFljWTye81AK tD8hWjsptLvLkPpBkLphZvTjZ99Rf9B73pi36uLf+ZBR2ah3xvFRfnyCWwFq7zV6rx0aV3TL2yE 72EzNrOGxUiFwsfv7iATciEvhmYgztLJ4FoRcYib4etfRxbhw41uKABEr1Du2npss4jbiDQ2fx6 rBWdo43iqcWWfH2g3I8w/pceF38GzytZJoDbKSbOT9NJCchvtsnRDV/jjH31jAKgqfBrwz68DHL OV5fbGZNAAyfx2cMw1wXASrLVdaWWGuObSEAW81CwxQehScFVisdTxdOKqWzqKlsnhRbZ8OYfwC XJCP9y9+BAlofwM0nMuNknquQfFCNIhQznmPAQCXZpPGRAeQbqiezdxjZJJKWctDjjIuoNAF+3V iC6Oe/dYy2Xr1+XPklqzsfu4BAW4EPkUn79lk4bqZlbZDEdhBi0y7QBvUmRBzZCUvhlre4PbVVZ eyE3LoPfby7uIdFAT6lXETb8Cz1Ib63hyLMXj7cTrX5fbztzkl3uQ+LTe/USbBuUXfM0HtCK7dN Hxk5KWZVK/RqMXA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The code in cdns-dphy has probably been part of a DSI driver in the past. Remove DSI defines and variables which are not used or do not actually do anything. Also rename cdns_dsi_get_dphy_pll_cfg() to cdns_dphy_get_pll_cfg(), i.e. drop the "dsi", as it's not relevant here. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/phy/cadence/cdns-dphy.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/drivers/phy/cadence/cdns-dphy.c b/drivers/phy/cadence/cdns-dph= y.c index f79ec4fab409..33a42e72362e 100644 --- a/drivers/phy/cadence/cdns-dphy.c +++ b/drivers/phy/cadence/cdns-dphy.c @@ -55,14 +55,6 @@ #define DPHY_PSM_CFG_FROM_REG BIT(0) #define DPHY_PSM_CLK_DIV(x) ((x) << 1) =20 -#define DSI_HBP_FRAME_OVERHEAD 12 -#define DSI_HSA_FRAME_OVERHEAD 14 -#define DSI_HFP_FRAME_OVERHEAD 6 -#define DSI_HSS_VSS_VSE_FRAME_OVERHEAD 4 -#define DSI_BLANKING_FRAME_OVERHEAD 6 -#define DSI_NULL_FRAME_OVERHEAD 6 -#define DSI_EOT_PKT_SIZE 4 - #define DPHY_TX_J721E_WIZ_PLL_CTRL 0xF04 #define DPHY_TX_J721E_WIZ_STATUS 0xF08 #define DPHY_TX_J721E_WIZ_RST_CTRL 0xF0C @@ -117,10 +109,9 @@ static const unsigned int tx_bands[] =3D { 870, 950, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2500 }; =20 -static int cdns_dsi_get_dphy_pll_cfg(struct cdns_dphy *dphy, - struct cdns_dphy_cfg *cfg, - struct phy_configure_opts_mipi_dphy *opts, - unsigned int *dsi_hfp_ext) +static int cdns_dphy_get_pll_cfg(struct cdns_dphy *dphy, + struct cdns_dphy_cfg *cfg, + struct phy_configure_opts_mipi_dphy *opts) { unsigned long pll_ref_hz =3D clk_get_rate(dphy->pll_ref_clk); u64 dlane_bps; @@ -289,15 +280,13 @@ static int cdns_dphy_config_from_opts(struct phy *phy, struct cdns_dphy_cfg *cfg) { struct cdns_dphy *dphy =3D phy_get_drvdata(phy); - unsigned int dsi_hfp_ext =3D 0; int ret; =20 ret =3D phy_mipi_dphy_config_validate(opts); if (ret) return ret; =20 - ret =3D cdns_dsi_get_dphy_pll_cfg(dphy, cfg, - opts, &dsi_hfp_ext); + ret =3D cdns_dphy_get_pll_cfg(dphy, cfg, opts); if (ret) return ret; =20 --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 60DF4298CD8 for ; Mon, 14 Apr 2025 11:12:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629145; cv=none; b=h/mjerF2OSk2ohsQt3K85l3T2c4Egq4VPKidM4/g4hqMsgzlqQUvbY0NFpLdG5Ik/b0eQb/BRyF4e2s9/xXwxHlqXuZtyVVMs/QP5wOr4r+t/r5OpT7Yv1vKveOAHQO2h5s8amKwvDhPJeffv9Z34ldDVtFieUws72T3vgUOPlI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629145; c=relaxed/simple; bh=UkXw5jrtx4cXq2fBCmUZ7O32tBWjC1bfsn24JsFx6zI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IdlD5YjDfhRIPjKLzjXlssgMqN1GEgGj4U+rt9t2sgFSKU+DfRBUPCtnflafDOx78VGn3XFVgAMrMLwqHPaE/4NxTgdmc6aFVADt5k9IvjBqV+zDBHvrhozJgCV/jiQuwtxtZ+GdoQcrCrW3YaI5bK9EPZA59t4HCDyPHZhwPnw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=ErkGSDpc; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ErkGSDpc" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id F0A111648; Mon, 14 Apr 2025 13:10:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629010; bh=UkXw5jrtx4cXq2fBCmUZ7O32tBWjC1bfsn24JsFx6zI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ErkGSDpcsKUeTKMVIa2OJ1RhpmIh0brnMOr2wbWfcKpEJaC5dMfGrAHUldwZVv98w QEHzQre26nWTlXq/yY11ma6ggeB4BZwWqAU9e0aL5VQs4ufaZS8ipPFPvt+djNfo9v MMPAP1hq8lJEPnl+Eea6JCOj6AQZQr51k+62x4Iw= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:15 +0300 Subject: [PATCH v3 06/17] drm/bridge: cdns-dsi: Remove extra line at the end of the file 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: <20250414-cdns-dsi-impro-v3-6-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=674; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=UkXw5jrtx4cXq2fBCmUZ7O32tBWjC1bfsn24JsFx6zI=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1+GHkd1JMbn6AHORSHHCtFItB9o8t/nB4qA fPdIhCBpyyJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfgAKCRD6PaqMvJYe 9TlND/925JQuITXscOZzU8SElgbI8MjB2tOzYOTHH0K50Due7e1jiwFBIteDez4syiWygB5yS9x zP5bKx8tDU0pVe8sDYrDyO5za9dzSAA4BeoLwfX05QcMAs/Ret2JaNN4U3W8kICzcWlHbAwXdaH 4tXeZ2fOiPfjxqojlArHcDy+J0hvLkt5U5bELrF2kfotafyRGfUNd4IEZwy+jVTm7dYkR0SXbEE KwQUzoH4VfH/cLDbEL8PqKUf2B9XeOGH12mqQVEM/EW+7uZjxsNIJwOM6wcfUBbVqR5C3Aaomw5 cZ8iOhmxBlrwDWBuM60cxcAPAx/mJACQRUM+AM9dVPM/f26+LmQ9etW//sIiKZRQoSQuTGwldrG qngbJv7dhpW3qvc6AZnVRrQBZGsMyTaU08eUZPQ+yg6l/bFZvcafQQtgzLyiuM0UFWQYds0/phZ iQCRVoBT07yD/PUuOOpLccOvZnB9MeH788GtHoHimCNeZXlq/Ppa3s2+xx6tdAbavNFPkmYrsCu 0OAOYWzxIw9fpSPB1cW6g0WZGdFPl4l8aFVqE1H81UmslZ5MZJG35+39uOSlM8nynniic1TVRv7 pa3K5hDpHp7YoWQSrqL7gnBYvEFys7Wd/NVT+dduoGoUI/AAwOu4XKXV6M+FDTnPhEZZCzFMRTx i2HwJrUdMK7zXeg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Remove extra line at the end of the file. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 1d300f0da2f5..5315d572f7ab 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -1435,4 +1435,3 @@ MODULE_AUTHOR("Boris Brezillon "); MODULE_DESCRIPTION("Cadence DSI driver"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:cdns-dsi"); - --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 C75D92BD590 for ; Mon, 14 Apr 2025 11:12:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629147; cv=none; b=NMPVszAYSVsMt4nOsexQDvjR/UdC/pWkI74YxHcvXBFl9c8pzhHwlB0KgTLHV4HnP/jNgerJkSjUHM6KBoMPRLlXR+ORr8fp5ZdHXrsrhl0DJcgXVvjQsqXIt5f114Qep0WzHFZTP1QLPBoGVNW4BpVTuVUd3KxNRY4aSLCvZEY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629147; c=relaxed/simple; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V7vl53yu2Qkf4gcyrp5OLLAwqRWnOtdK+iQd9p16QNI4jkYkcrIX0TGd42pMWxguYfcdBAxDzTPI/X3NbWCXCEMXFZ6ri0J+WzfkBehQne5vkWKGd348vhJx4FRf5rljkjT4BCikxyOLc1WgLh/vkfMmS5Mwz9ZEMFHdXTnh5fU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=bQ23WiUn; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="bQ23WiUn" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2E3301961; Mon, 14 Apr 2025 13:10:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629011; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bQ23WiUnqRx4VT8DSbHYU8HNrS19k3vpcjRxrknoGHaVyKv1BwAQna5Xs1TBfWfHY s1wGr0Lq3NbBg70SH+4faCtghvsQzbet1Oq4tTTNfSoTUcEl8NaMHu6TDrzzqXXibR L+MBXn4cesA6M4CklYFFPEFCNR4V0rpOtqNflKYQ= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:16 +0300 Subject: [PATCH v3 07/17] drm/bridge: cdns-dsi: Drop crtc_* code 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: <20250414-cdns-dsi-impro-v3-7-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=6355; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1+35kJUwgCKIRHTiEhA7H9qZV309KhJjlw1 uz0HjikwFeJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfgAKCRD6PaqMvJYe 9S6RD/wOzrA4ogYFrY6jZC+ZDaX6zSRmDgRQE1sdJ4KODlcRM7KfFfri91CxGco3uTDuSij8K+h UfLnUqo+WluamwDB9U+Wo1YKzuajyri9RsnQ/Qf0dqFX0uUsVipUq3PY2RStbWvFIYDHUwgsRyl XmNRipGLYdhw8EKqOuYi7inun7WMdTAKD732JHsyCWtifoTfxxicB33JMM+6kd7QCmBdNiUMzVI gO+08bF0cpY9RiuLgsqC7lSz5J9Uk+FkCfNXqGUBKPnzOX9a90R8dNpdS+V9RdLD+NiTztzlL8L LKacsE/ElddiZczdGaSeubvqPQRk4w99gY2JPMLz61/Suf/k49oJYG257b1YqLaZM7UKRi4+G+6 htLQ6RniYpeh7kUkJRjWkwjo8VruV0eZaDuyKGivLEjjSl6D7M2Pcxx13COcsjtCClDlRelU3Jf ExIVCZyBMzsZvTiWcrWSi2pyZJpHS9ljMz6O2a7u5tsthy2soQ3XfUDcn8vWFOUdofHh6YalX6n rOsb9/fMxuZIwalKi88Ozib+I7bioB7TmUtjy+j2obNDa/2MVYnfhBe/iUcj4SrovHtKRtRyEAv HZSFTg12VqvTUuzrk3ZvloPcdirmd9RFsBjOykI1kmJhTuXBxfLpH298p7FPlVSnP1OkGPEDcP/ 3XBizVCawwLRylQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 With recent change the cdns_dsi_check_conf() is always called with mode_valid_check =3D true. We can thus remove all the code related to the "false" paths. Signed-off-by: Tomi Valkeinen Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 60 ++++++++--------------= ---- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 5315d572f7ab..d521ddb8bf75 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -452,15 +452,6 @@ bridge_to_cdns_dsi_input(struct drm_bridge *bridge) return container_of(bridge, struct cdns_dsi_input, bridge); } =20 -static unsigned int mode_to_dpi_hfp(const struct drm_display_mode *mode, - bool mode_valid_check) -{ - if (mode_valid_check) - return mode->hsync_start - mode->hdisplay; - - return mode->crtc_hsync_start - mode->crtc_hdisplay; -} - static unsigned int dpi_to_dsi_timing(unsigned int dpi_timing, unsigned int dpi_bpp, unsigned int dsi_pkt_overhead) @@ -477,8 +468,7 @@ static unsigned int dpi_to_dsi_timing(unsigned int dpi_= timing, =20 static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; unsigned int tmp; @@ -492,30 +482,20 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, =20 bpp =3D mipi_dsi_pixel_format_to_bpp(output->dev->format); =20 - if (mode_valid_check) - tmp =3D mode->htotal - - (sync_pulse ? mode->hsync_end : mode->hsync_start); - else - tmp =3D mode->crtc_htotal - - (sync_pulse ? - mode->crtc_hsync_end : mode->crtc_hsync_start); + tmp =3D mode->htotal - + (sync_pulse ? mode->hsync_end : mode->hsync_start); =20 dsi_cfg->hbp =3D dpi_to_dsi_timing(tmp, bpp, DSI_HBP_FRAME_OVERHEAD); =20 if (sync_pulse) { - if (mode_valid_check) - tmp =3D mode->hsync_end - mode->hsync_start; - else - tmp =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + tmp =3D mode->hsync_end - mode->hsync_start; =20 dsi_cfg->hsa =3D dpi_to_dsi_timing(tmp, bpp, DSI_HSA_FRAME_OVERHEAD); } =20 - dsi_cfg->hact =3D dpi_to_dsi_timing(mode_valid_check ? - mode->hdisplay : mode->crtc_hdisplay, - bpp, 0); - dsi_cfg->hfp =3D dpi_to_dsi_timing(mode_to_dpi_hfp(mode, mode_valid_check= ), + dsi_cfg->hact =3D dpi_to_dsi_timing(mode->hdisplay, bpp, 0); + dsi_cfg->hfp =3D dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); =20 return 0; @@ -524,14 +504,12 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, struct cdns_dsi_cfg *dsi_cfg, struct phy_configure_opts_mipi_dphy *phy_cfg, - const struct drm_display_mode *mode, - bool mode_valid_check) + const struct drm_display_mode *mode) { struct cdns_dsi_output *output =3D &dsi->output; unsigned long long dlane_bps; unsigned long adj_dsi_htotal; unsigned long dsi_htotal; - unsigned long dpi_htotal; unsigned long dpi_hz; unsigned int dsi_hfp_ext; unsigned int lanes =3D output->dev->lanes; @@ -552,12 +530,11 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, if (dsi_htotal % lanes) adj_dsi_htotal +=3D lanes - (dsi_htotal % lanes); =20 - dpi_hz =3D (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000; + dpi_hz =3D mode->clock * 1000; dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; =20 /* data rate in bytes/sec is not an integer, refuse the mode. */ - dpi_htotal =3D mode_valid_check ? mode->htotal : mode->crtc_htotal; - if (do_div(dlane_bps, lanes * dpi_htotal)) + if (do_div(dlane_bps, lanes * mode->htotal)) return -EINVAL; =20 /* data rate was in bytes/sec, convert to bits/sec. */ @@ -572,27 +549,25 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, =20 static int cdns_dsi_check_conf(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes =3D output->dev->lanes; - int mode_clock =3D (mode_valid_check ? mode->clock : mode->crtc_clock); int ret; =20 - ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); + ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); if (ret) return ret; =20 - ret =3D phy_mipi_dphy_get_default_config(mode_clock * 1000, + ret =3D phy_mipi_dphy_get_default_config(mode->clock * 1000, mipi_dsi_pixel_format_to_bpp(output->dev->format), nlanes, phy_cfg); if (ret) return ret; =20 - ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, mode_vali= d_check); + ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); if (ret) return ret; =20 @@ -610,9 +585,8 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, * interface. */ if ((u64)phy_cfg->hs_clk_rate * - mode_to_dpi_hfp(mode, mode_valid_check) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * - (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000) + (mode->hsync_start - mode->hdisplay) * nlanes < + (u64)dsi_hss_hsa_hse_hbp * mode->clock * 1000) return -EINVAL; =20 return 0; @@ -662,7 +636,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; =20 - ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg, true); + ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg); if (ret) return MODE_BAD; =20 @@ -993,7 +967,7 @@ static int cdns_dsi_bridge_atomic_check(struct drm_brid= ge *bridge, const struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mo= de; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; =20 - return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg, true); + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } =20 static struct drm_bridge_state * --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 8B1AB2BE7A5 for ; Mon, 14 Apr 2025 11:12:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629149; cv=none; b=WP/EyC6nyCpcpERVh+wQf+JNUmoBiZDDt2K+sxG5Kjptw+Wr9imW1E/hO5eE+K/6nupWwUWa4hwC95gjB69a1QhQpdEz69SwaFXqhV05FisJGw+N2WTC6TKtqrooOLW38H+JhUdQ+RHGehThzxi4KgNoQu6OzhnfYzXJx7bM3x4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629149; c=relaxed/simple; bh=r2d2HB7/bIbl8ir7v45yLuBpRydPumEUWn8w+vZt7oE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HIVhJ09NIszh0oMsy+0DQrNwFJ7kS6bqNwivjBN6cI8HQk3ybWip89HJJqCdrhpoBu0ndlCndQMVnoBfIZumIeE+HdPpxnzMkf7VeUNlpbZ6jalaGJp3WUymiTpH3BpwZ8SpvdJPh1dyER0lhaed2aoyOY86F6fAsL0PhRmg1cU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=U5dRjQ66; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="U5dRjQ66" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5F1171995; Mon, 14 Apr 2025 13:10:11 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629012; bh=r2d2HB7/bIbl8ir7v45yLuBpRydPumEUWn8w+vZt7oE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=U5dRjQ66Lq1/hkWT7FkeWTApkyoG56AWun/wVZZuTe6Em9Skptg1EXLDWZrrQP5Lh g+zEPO7qZtY+jERvTjLCwTMrJU0NCSKIlBZChgxlGxr0ZqiqYZPFOwHZRZuBoXqt1U T9zEb3jIzkRPhGBKK8FH9RSvoeWlTzMlfMVOxpIw= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:17 +0300 Subject: [PATCH v3 08/17] drm/bridge: cdns-dsi: Remove broken fifo emptying check 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: <20250414-cdns-dsi-impro-v3-8-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1856; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=r2d2HB7/bIbl8ir7v45yLuBpRydPumEUWn8w+vZt7oE=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1+dkbnt0hWdDmW1bZOk/SLwgABLeodN1zMT YScC+tVZw+JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfgAKCRD6PaqMvJYe 9f12D/0RvaGn/98qfrgGpDan09/UwnbQurUIFMYSbMQ6wuP9bBCmygmG3sEkO68lKyepmfrvqxE QYitozEFhIxhg2krvsIAjNAtEU6E/A+1V7STcf04oY3dUS+/xvCIqS+s4fuCt4WMRLkWtkdFkid h1yrGnvwdu1JZnHvfJfZzra0HxCO3DSDej73BSbxj7A3sa6edJ4FYBnPBXyZKPm2W8K6ykf7iw3 VsR4W3wKEfrwcZtJPnnDB57RHoL3a0zPpHZfNg3fxXmz8h1iIg/cCAHWL3stefDSabS07L2ezEz iqRc95CY6soSMDgWgXjGcdNUzhozdib/1eBTsYkg5ScU3bNasBReTBD+/EuLLal5+3bnPCCOc9t PEUWE1UZJ0uu6KJ+44uTjVEry43T3V9GGSLJc4ZDinWeW6F1D76x69EgHqHB7OXG275wGRQMNQM 0cFtIpkm3cJWLUHxNB9MxXZNtOT/aiM+v7LVM5IwUoD5EoiRaRdy8H1fijod8BLM+QJ5Qy/8VIv 5ZIe0cL6aGiUkYg1Pb8j11U2W3PZG6L6NoYsWgmwJKTm5GhyWgR1eRj0fde218IgGzGMS4SzLLN 4gMTE9izOlTRr37tQ5acLTTz5eaxQFWY5ZNYN7sjPKGWIVzI5CTi+k9YUclqQvCBQAWXPtKzdiG ytGws2lLV0tRL+g== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver checks if "DPI(HFP) > DSI(HSS+HSA+HSE+HBP)", and rejects the mode if not. However, testing shows that this doesn't hold at all. I can set the hfp to very small values, with no errors. The feedback from the HW team also was that the check is not right, although it's not clear if there's a way to validate the FIFO emptying. The check rejects quite a lot of modes, apparently for no good reason, so drop the check. Signed-off-by: Tomi Valkeinen Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index d521ddb8bf75..bb8ac7161abf 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -553,7 +553,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, { struct cdns_dsi_output *output =3D &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; - unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes =3D output->dev->lanes; int ret; =20 @@ -575,20 +574,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 - dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - dsi_hss_hsa_hse_hbp +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - - /* - * Make sure DPI(HFP) > DSI(HSS+HSA+HSE+HBP) to guarantee that the FIFO - * is empty before we start a receiving a new line on the DPI - * interface. - */ - if ((u64)phy_cfg->hs_clk_rate * - (mode->hsync_start - mode->hdisplay) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * mode->clock * 1000) - return -EINVAL; - return 0; } =20 --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 D33432BE7C5 for ; Mon, 14 Apr 2025 11:12:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629150; cv=none; b=FynTF4xcoIwIwEgBHpf/h+FmPTJ70oK+dM3pu8IDhWq0asGS3I6KcBZHfL7K+b0XlxuofrW5HC4XkYSZluAnBAnJ72jqj/j0JcowE0MqYN5Jv0AZNnsRiAS4N3gBU8w2Pnehma4XsfR1FyhPKQGVsiFikW9NU1IwaoyvJOyuiMc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629150; c=relaxed/simple; bh=Pnx7suxbYin9pheGwTqEDVuMtWI0UCAstJMoqNVTugc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S196obMrFZONU5npPl2OXNC/Dn/g/DMvGLc4+Nh/vsesWmcZZ7pMPNPc4b+L41ZzUMb7WfWUD9n71QeUIJQelvyg900/0Gg3ozevGUhOIq2ddpYVtDxFs0+x6kRQ4EakQO1TSfKEIQ8hwU6dcByLeh8/YLcMsqlJ/VzOQqHxUMg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=Segwhtz3; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Segwhtz3" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8F7612194; Mon, 14 Apr 2025 13:10:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629013; bh=Pnx7suxbYin9pheGwTqEDVuMtWI0UCAstJMoqNVTugc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Segwhtz3WFAJRU0HHZBjoFCnzkKTnrPVNIHS8q1K4et1PM2V7o+nA1lYINd9HyLXN hL6rPrNqisQryCHGLUwcSNsiY8YuGQeFZF0lEBdC68rFRx3S+fIfXuL40WBhitmuzs 8+bhVGueylckxd2HZUtF97+k2wXLovTq379Oaoa4= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:18 +0300 Subject: [PATCH v3 09/17] drm/bridge: cdns-dsi: Drop checks that shouldn't be in .mode_valid() 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: <20250414-cdns-dsi-impro-v3-9-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1524; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=Pnx7suxbYin9pheGwTqEDVuMtWI0UCAstJMoqNVTugc=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1/NI5zR4Bh4wsNG8XTmFGv8lXZJ18oVWybO ju5ZATbU0iJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfwAKCRD6PaqMvJYe 9Yz7D/9cvEI3imLmKbEfVAl1FKGhg9b2PNfDmVqTtFlN2G22vnApzejVU80DyNm2px1zm/ZJBF4 00D0yfkku6uAS75wOGAfgcYPoomKH6dPf/WN+jcXW3UkiBNTw/FA+doY01ZqqmQtiwaUuU7pV1R klqpzs4vTyjLv+m5/Af1SfiHfU12E91tWE9KA9/HxcYqMpdRETYCXYuqjEQkTyCjcKEQwfgtlFY J0bZ6OIR54Yw/5LFphV0yUvZG+EJ8Rd5z68OqnZn/QzjdWrYl4ZWTVflBoVy8xNkMmmc8BovYst uvxAf5m76p7krLxI4IHkKMDUeyk1gGDG7Kf/UAJFDXKW8HZzTQ6ADo3eeOfV2PFR3fB/Zwodc8q 2PEXvJMh0QBGxbb7XWBNLjPa13Kz+0Duta1nd9Zk2MhU3Kwp5MHmV8dSRbBmCXAzmsmM3CUWPXi NVu+dw0mpt1nSYFfmni4awaFabz2da6N3yIO7IwZoYvFsewjyUjtwMLmvxvkwJht1yBbsgOqm03 kFhJ+8ehNlLB/DuZE4jzwoGUomB7vEo0aPZaluh/jxetF4J1f3GfzFLJUbulmlQrNMVherf8eL5 wdenyFRBir1aqHDycX8l1fgM20RT9OIJoAyJVRDea+GHH7pCsOkfuVP9B6A7VOQoS9CPSRupoaq 4Db4sDFY0HqL5kg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The docs say about mode_valid(): "it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints" We're doing a lot more than just looking at the mode. The main issue here is that we're doing checks based on the pixel clock, before we know what the pixel clock from the crtc actually is. So, drop the cdns_dsi_check_conf() call from .mode_valid(). Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index bb8ac7161abf..4759fd6f79b0 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -602,8 +602,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_output *output =3D &dsi->output; - struct cdns_dsi_cfg dsi_cfg; - int bpp, ret; + int bpp; =20 /* * VFP_DSI should be less than VFP_DPI and VFP_DSI should be at @@ -621,10 +620,6 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; =20 - ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg); - if (ret) - return MODE_BAD; - return MODE_OK; } =20 --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 A9AAA2BEC23 for ; Mon, 14 Apr 2025 11:12:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629152; cv=none; b=dwgPz0UbQeWoLoFu5Um5N1HM+rHt/eCiu8lcMCbaZqTE/7OJ7iVdkqeGhS+bFecXgmspts9bS81yy+aHdStXI22pZqxsWMpcoBWHhsgTbNam5R2+H/q8mjGCFqtyUKoS6LF8cTQuLS3sDRDY93DPatw5xMPS08aJ5/RUP7MYARc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629152; c=relaxed/simple; bh=R1XPiSomlIO4vu4bVz8DbFGpvqP9IARB4z1KL47RG+c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m0xDwauWyg299Dj7IBTNEGpGc91EOn0Q5wv2+tSMAF7qlXMUOVdoYBlM2/Xqrs5O7dg4wwBIHNSoRTn+5zqM4VAVuIBrbYOlGfaFv156wczVJ3oJRrUIqxBzz+Z0wiz0ejZnhm7N+x/LZo/qJHPopacEV9d8RuqG4FRGX1XEzpI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=XyS7poA6; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="XyS7poA6" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C88242447; Mon, 14 Apr 2025 13:10:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629014; bh=R1XPiSomlIO4vu4bVz8DbFGpvqP9IARB4z1KL47RG+c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=XyS7poA63d4rQUlWmGTqL8dfgs0jdH/C2kKq9dD/nNJExE1Fgias+JvxLRy0WHyeC 3nhSWiiQvJ+GlKgG4p5u0rbk4HHTLWSvj8RP3v/s9yjumdMfbjsEmClz/R5UbaU1xN R6tgY23MibySGXiK1AvV+JHsddw7K9PvUzvUjQ3w= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:19 +0300 Subject: [PATCH v3 10/17] drm/bridge: cdns-dsi: Update htotal in cdns_dsi_mode2cfg() 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: <20250414-cdns-dsi-impro-v3-10-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1842; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=R1XPiSomlIO4vu4bVz8DbFGpvqP9IARB4z1KL47RG+c=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1/9KEsI6Wtv/Qh6GwsKFCqn6PTH1ExO4ABg nSayMKzmVCJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfwAKCRD6PaqMvJYe 9QDnD/9GwQyrYZSRahjQ3ujF5k18LxofK9zxibQB5qX90ar7xkrh5xHrFVIyV4/UK3Kmsyj9gMK 9cfCmgG6JUoGS9qCWEbhWJSWhk5nDZBrvBsX2MFFFYNhOw3r/M54WQZFlgA+a3qAK5TylwRmiO6 40Xt7uXqdOjfoUQdwHx8ozFRw2rY1sY/xh0KjGANMEoRREuWinm127dMIlS/dj1mfykjKRJZtEr 9jN1RyBfLLoCXMq1RVjmPB0CXexHVejUavYQDl2m9Yx8AGsOeINReyxtgEBK1OsxJK/oUqrH+ep 1lRfUSt0clBcfqKEjtAyqt3W4ItpQz5qZsGNe9FChBB2frFPhadWEP8DvI6OaS0ohCLSMYxpqo/ k6nRBcdq7S3rswoVCJ14PrSucTgyGPsVfmV//Kb8OpZd4VyvciBVvJKotFs/Cn47raBAnTkTx/i dbzQ+TVOsG6pybWFSDwxo5OT1NF3Ab6UlWv2vg6aa962wyMkw/M4hb/GLYeI0u573FspG9BQnUN Qm+GXMCUhCPV0P9tanqrWY3BlAYa6Cq58XHeYcMc7KIFxzpnjvzCzMkrchV5xaG1+cjTNGnHpqU 7VkfB4ZvD10BkPNu15+Hb+ZJGhSY8ksm1XCzFImnV1NTzyzQPkfYMTQnK1S8BvPFbPIP1rXUsc+ 6GAIqtSstnz1iyQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 cdns_dsi_mode2cfg() calculates the dsi timings, but for some reason doesn't set the htotal based on those timings. It is set only later, in cdns_dsi_adjust_phy_config(). As cdns_dsi_mode2cfg() is the logical place to calculate it, let's move it there. Especially as the following patch will remove cdns_dsi_adjust_phy_config(). Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 4759fd6f79b0..fc034a9624a5 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -498,6 +498,13 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, dsi_cfg->hfp =3D dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); =20 + dsi_cfg->htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; + if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) + dsi_cfg->htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; + + dsi_cfg->htotal +=3D dsi_cfg->hact; + dsi_cfg->htotal +=3D dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; + return 0; } =20 @@ -514,12 +521,7 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi = *dsi, unsigned int dsi_hfp_ext; unsigned int lanes =3D output->dev->lanes; =20 - dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - dsi_htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - - dsi_htotal +=3D dsi_cfg->hact; - dsi_htotal +=3D dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; + dsi_htotal =3D dsi_cfg->htotal; =20 /* * Make sure DSI htotal is aligned on a lane boundary when calculating --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 194302BE7D7 for ; Mon, 14 Apr 2025 11:12:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629153; cv=none; b=GpxZb1kQXdEQSZNvOJ0dcp25mbYJnczFutoTIKtufSAuXGFBA8OsElUUjDclbmSLKkk1alJwuPs2Xk8vld+A9ZeTEm5Eq+evXn1iCLutzRdZigXQo0YLY8lWlaI8Tycr+M6inr3++n7iuVjYeAE9tOJkYhUmai4qYcGgJ/UkIdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629153; c=relaxed/simple; bh=7gT6INJdKQdfYGfAzCjzG+NZhY/z+fVKVIvW5xYYBGk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HMCbzDNOCcoW6cUMB9r526UL1TenuGIwXBg2I6JwO21YCYf1xc1VWOZDHXBrx4EdRgVMheJVKXwydDyyjKW3BS6XiBQcwW3TzNnVvdFHj5T7Y+ZMDLQkXb33WLzKfh2zv+xeCCJzjDWyM63y4f1qBd9gVFyJFuSgu8g9yHCcxVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=O6LZ5rRQ; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="O6LZ5rRQ" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0F385193E; Mon, 14 Apr 2025 13:10:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629016; bh=7gT6INJdKQdfYGfAzCjzG+NZhY/z+fVKVIvW5xYYBGk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=O6LZ5rRQi8KuR/ykKwUoWVbmtT5NSv0ELrPbQ9/ZIs6qH6xXe+sBJxZRFhkOUclG6 nIlQsE2SM76uUFKnz7nsn5bIIUHmSoAJHBaQe1f8KjLq9cjm4SegsN6S1vGpFsdUQQ z+Ihsz4tfpJ2qov+ifIe8aLrEvh9//nEoEFp2QM8= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:20 +0300 Subject: [PATCH v3 11/17] drm/bridge: cdns-dsi: Drop cdns_dsi_adjust_phy_config() 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: <20250414-cdns-dsi-impro-v3-11-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3923; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=7gT6INJdKQdfYGfAzCjzG+NZhY/z+fVKVIvW5xYYBGk=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O2AM93ZewkCW9E31nEP1pKgMpPqnUjfnMiuz qpLdeOKPk+JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztgAAKCRD6PaqMvJYe 9YtcEACRXHyXTOfbAEy90s9aH2r3wItViyoFqOdTQP8mTiy1LNEUv3maXZQ0EpxNZ1qB8lj5CDQ avTnmzrUYCxDckYjW/FHcIpY5BHBY2+Lcbe2rvK7wagjrA+lOoFGbnzW8NCsTBKe6AMlp5LFim1 cCF+cq7tAoJB7lMjYGKonxLV/TGF0yMFKZmpnPa4RY5rrK6bPjrGIm5SQ6a6YLa7TVWfi8ODdox twaI/kiuk9kw8TcLDlAKyPlB93HHLtQRCp2STDlax+EDgFBag7P48zMK/9tGtS3XB7UmJmR9ohe 3ZOH58gkLRJnb3oG/aUm259Jr1xXnb9LS6N/VOwVY+5ykp9NOZLDcwGoJ8DzDsQIyubaZJ8pICV A1V9VuTMFPqp7axtYqh2le4+H/drrQJ27umnEotbEuecowGVdJdGAHUKQIEUvErtz8n+4rl1REK GTCv0FMUwJZe0yJtKb9Zkgc/07gsMuGrcc7uGgSqcT73W2e52tg9me4h89KyymdUz9ZtuXQRK6+ P1ckki986b7VYGHa2I5MJkb/qQUQ0QakC834LdNPMORih5yp4ciNs0uO+Eli4EiDW8juYE12jIV OFBIy6xvf23o6LvR8sz/dQaMuN0CrKsPMPOVz+PKRJHncvvYJXgGf2HesyhWcxz46GicWy3clJ3 ql49XAG5+ViW0yQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 cdns_dsi_adjust_phy_config() is called from cdns_dsi_check_conf(), which is called from .atomic_check(). It checks the DSI htotal and adjusts it to align on the DSI lane boundary by changing hfp and then recalculating htotal and HS clock rate. This has a few problems. First is the fact that the whole thing is not needed: we do not need to align on the lane boundary. The whole frame is sent in HS mode, and it is fine if the line's last byte clock tick fills, say, only 2 of the 4 lanes. The next line will just continue from there. Assuming the DSI timing values have been calculated to match the incoming DPI stream, and the HS clock is compatible with the DPI pixel clock, the "uneven" DSI lines will even out when multiple lines are being sent. But we could do the align, aligning is not a problem as such. However, adding more bytes to the hfp, as the function currently does, makes the DSI line time longer, so the function then adjusts the HS clock rate. This is where things fail: we don't know what rates we can get from the HS clock, and at least in TI K3 SoC case the rates are quite coarsely grained. Thus small adjustment to hfp will lead to a big change in HS clock rate, and things break down. We could do a loop here, adjusting hfp, adjusting clock, checking clock rate, adjusting hfp again, etc., but considering that the whole adjustment shouldn't be needed at all, it's easier to just remove the function. Something like this function should be added back later, when adding burst mode support, but that's a bigger change and I don't think this function would help that work in any way. Signed-off-by: Tomi Valkeinen Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 45 ----------------------= ---- 1 file changed, 45 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index fc034a9624a5..319a6a9a6fe7 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -508,47 +508,6 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, return 0; } =20 -static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, - struct cdns_dsi_cfg *dsi_cfg, - struct phy_configure_opts_mipi_dphy *phy_cfg, - const struct drm_display_mode *mode) -{ - struct cdns_dsi_output *output =3D &dsi->output; - unsigned long long dlane_bps; - unsigned long adj_dsi_htotal; - unsigned long dsi_htotal; - unsigned long dpi_hz; - unsigned int dsi_hfp_ext; - unsigned int lanes =3D output->dev->lanes; - - dsi_htotal =3D dsi_cfg->htotal; - - /* - * Make sure DSI htotal is aligned on a lane boundary when calculating - * the expected data rate. This is done by extending HFP in case of - * misalignment. - */ - adj_dsi_htotal =3D dsi_htotal; - if (dsi_htotal % lanes) - adj_dsi_htotal +=3D lanes - (dsi_htotal % lanes); - - dpi_hz =3D mode->clock * 1000; - dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; - - /* data rate in bytes/sec is not an integer, refuse the mode. */ - if (do_div(dlane_bps, lanes * mode->htotal)) - return -EINVAL; - - /* data rate was in bytes/sec, convert to bits/sec. */ - phy_cfg->hs_clk_rate =3D dlane_bps * 8; - - dsi_hfp_ext =3D adj_dsi_htotal - dsi_htotal; - dsi_cfg->hfp +=3D dsi_hfp_ext; - dsi_cfg->htotal =3D dsi_htotal + dsi_hfp_ext; - - return 0; -} - static int cdns_dsi_check_conf(struct cdns_dsi *dsi, const struct drm_display_mode *mode, struct cdns_dsi_cfg *dsi_cfg) @@ -568,10 +527,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 - ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); - if (ret) - return ret; - ret =3D phy_validate(dsi->dphy, PHY_MODE_MIPI_DPHY, 0, &output->phy_opts); if (ret) return ret; --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 CEEF32980AA for ; Mon, 14 Apr 2025 11:12:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629155; cv=none; b=fLRRQ+7qlJ5xc3ohWmO4a2nOTYajq763ArstpifQ0GGbtagvBRGcjoDtlA+aJ93IwR5LgEEh1QzwXf9zC9ZtfkF+Ai0nvR3jov6mTiqDE6OBUnCCxd4jJN1UkIc8sJenfn3F8bEGWNNz50aCueiv7R/hjMLXck5GLi3crBxGLiA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629155; c=relaxed/simple; bh=NZZeJOMjKVGFEcJiQwe/gJ7CW1xo76X+fNMsV0WBGOg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LYh+B/lXHjMJ6QQ5BhtH6oOLKIFPZVyT7IBe8hnHPSk3Dr8ngWpbDF1es+rD/pcxfDqSR4EESu3KP6hPqmaolMxJfS4pcw+sSD5zcVTDglrCyiJfES+heXeVDs12OJheH7BDiK61qDx12soKXlSzNtHklmpK6HR2+K+/cWQhaVk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=lOD+Hk20; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="lOD+Hk20" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 404A2258B; Mon, 14 Apr 2025 13:10:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629017; bh=NZZeJOMjKVGFEcJiQwe/gJ7CW1xo76X+fNMsV0WBGOg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lOD+Hk20vTwUYDbO2fZrHWT1sPNGc5N42ucHrXqLYWxvw+iBTbkmxLXRGs3Q2wQhA jCifOw83Pvy38sVqYWsQdWX3ShuhdlaSeHQ/rl/wxDv3uHM90jfs7urk65GewRGyR4 j/vxRc7U9qAXP4v1k6N2WH9t40BCQY8pk+JD5RW8= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:21 +0300 Subject: [PATCH v3 12/17] drm/bridge: cdns-dsi: Adjust mode to negative syncs 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: <20250414-cdns-dsi-impro-v3-12-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1496; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=NZZeJOMjKVGFEcJiQwe/gJ7CW1xo76X+fNMsV0WBGOg=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O2AxOohbr3DOefetNLts/9RI9p1z2XxeZjvd ejRMIXmeu2JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztgAAKCRD6PaqMvJYe 9bIpD/96fTlXqRQiUlePQGXlZe5+xKYcdh6gZTzZMSLps/sxNyzQ0fjjMq0UUMN4LMtB6e+z2WU FU/HiLIVkTVRGPVEOA32y+ZsKH9Auxd4F8MeSsHwY+iwLtjW6pd5jV1RvNmacoCLevmoiJOkAwL xykG8Fs8gWiTZJwY1M7lJ9MNo1XpsjyacHYFJ6ya3MCwtDekV2foWArWfTwJEpUxDg82V/lhFnB FEhrtq6Ztwps462aItI3bEcObjI+vVICpt54I7gfuGlN+akg2KsX8gMevH22lzI9Wf25h5mh+0x SyP85XVGJ00OJl5xhJaCporNwfHD2Lv/WkkpgDzaGJ3gAsflkzHtogydtnSzvBe3iyzQQ/RabFO ko12GAX/aLoOAAwO977d122M7iPtbOasLr3vnIofjJfHcSOOMTsRLbaiddPZuVncs7hwEMF73qt ax/1VcWp1aixM7d0VYoLwrOg2oRUDEgcOTg5LtPx4oVgoeSCF1WzYdRBrWn/0Je8FLqEF2jR0nm lXRO9Tbj0R923e0i/skwdrzcWafFYud10Wcz9UHxwlEnw9OVxAZTqtKA3dLy/PXtAP1KlKZz528 urCC8JIBO9BZ290r9Yg5RaWWm+h4JMc5QgKIDD1/9AuQddga3nakoLINdgQh9Jn3VOmgNx6UDTM i4NG6hAHkYUGpvA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The Cadence DSI requires negative syncs from the incoming video signal, but at the moment that requirement is not expressed in any way. If the crtc decides to use positive syncs, things break down. Use the adjusted_mode in atomic_check to set the sync flags to negative ones. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 319a6a9a6fe7..182845c54c3d 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -901,9 +901,13 @@ static int cdns_dsi_bridge_atomic_check(struct drm_bri= dge *bridge, struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_bridge_state *dsi_state =3D to_cdns_dsi_bridge_state(brid= ge_state); - const struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mo= de; + struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mode; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; =20 + /* cdns-dsi requires negative syncs */ + adjusted_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); + adjusted_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC; + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } =20 --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 6C26A2980C0 for ; Mon, 14 Apr 2025 11:12:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629156; cv=none; b=YITGn3wZC2ZTMuVMmwOKH7gY4LJ25GDFufC11gqHUNa7ftH2D55xuRBrxe75riVPfsN4Qs9sXCmPaiCRuds94oJMMmEwab5cx+a2PIpO2WYEzLKAhiCZpNm36cKccUcqdmsUduiTS9XupnhIQ4xk6WNmPXVsMFQOp9PWYiG5Irs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629156; c=relaxed/simple; bh=YOFz63JzljKPD78q10dTnyaY1ocLDBf5kpnKoq+T+4w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=otcUz7CD6Kl4aY/R7BU2yNzMD9vHz0c8/jdVGiru9JByHTlgjRw7VBiTfG12L7pd0kmXHMSuWv+YfILXLRmaJ6r1y+RAfgmI34V4xWTMAu0yZbxrUdKVIp5dZ+d02y7BU4ZRLqMj8v9N/ZtwUuv5dcyGi27ftvwFUd2mtGdEUMA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=H2k5u3hO; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="H2k5u3hO" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6D7A51A78; Mon, 14 Apr 2025 13:10:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629018; bh=YOFz63JzljKPD78q10dTnyaY1ocLDBf5kpnKoq+T+4w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=H2k5u3hOftjAQmGa8qUUHi/ikYQBY0ovIVPZ7c9vNxa8TFyB08paZHsB0iJNUSyU0 JuAHJfnBwf4gyPHuzhg2AxIDiIF+jOR/cJWmZ27RKVvNJuk1AJDsF7QF7SilCH9oIq CtHnN5B+pBxyHhCik64mF8FbjcUqPppNqODvf5Kk= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:22 +0300 Subject: [PATCH v3 13/17] drm/bridge: cdns-dsi: Fix REG_WAKEUP_TIME value 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: <20250414-cdns-dsi-impro-v3-13-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1914; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=YOFz63JzljKPD78q10dTnyaY1ocLDBf5kpnKoq+T+4w=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O2A3rPjfcdggqDjJDVvwAexTdYOx6yKZjOo8 N+p47bA3eyJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztgAAKCRD6PaqMvJYe 9TxwD/0WCSjrtl3JIf92rhufeilD1pCHWl23FMfXyELuBPt+ovfNWAbWqn5tcOtkvWbdF2C0SBC BLdVIUqg8gA+2/SCQZduNcvAIwJ5TLLncbeGnlTkOLy4ouOMvAACG1AnFT2RJRzEPZtP4K8lRSw yhePNIxEOXrBYuhORcWlJO216rC7fPVvv/OimdJyIdQGX44K1KZM+JDKlfKShUId8XUxkOXGC4y BP6PpO/bhuGGqC6M1xSCEMrjZy12vHf2behjIbkLVAFWcCw3JKM5Xkg3ID7qzI5M+6xOfjsRgEm AB6L2HMwmAYmBdJH/jdtOo3h52sLQc2vO3KtEMPbhqeREduNUCb+jreGaMcRV61yzyOeNAXvhV9 gWhaRgegIIXjJFTYX5bVSUWesSCIh3nk86T9f5bY3b+ynlXJCVZPiVpCjRCWcJUvEMLGOwFsN0g ab2dYnggImHqmCoo/ZQgqIdYuHwVEFPVfIaOfeEgeVMI0OK2MrmpIjb1yay5DwW6sWDVoScmdTl wJ71QtLwP3KFbsJt4sbT6GH17Q5q2C4TJqRuaYGKqTge9vWwv4HMM7V3XBT0HT9D8TehrBx+7Bv n6KBM6h9/h+Pd3hv9EWN+gPfIO69QbUidX8z0dHCKcE+oaPdCr1nb6gpfCOtwwwn9nMbSp8xJUH EKT8aMUKJcCJffw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver tries to calculate the value for REG_WAKEUP_TIME. However, the calculation itself is not correct, and to add on it, the resulting value is almost always larger than the field's size, so the actual result is more or less random. According to the docs, figuring out the value for REG_WAKEUP_TIME requires HW characterization and there's no way to have a generic algorithm to come up with the value. That doesn't help at all... However, we know that the value must be smaller than the line time, and, at least in my understanding, the proper value for it is quite small. Testing shows that setting it to 1/10 of the line time seems to work well. All video modes from my HDMI monitor work with this algorithm. Hopefully we'll get more information on how to calculate the value, and we can then update this. Signed-off-by: Tomi Valkeinen Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 182845c54c3d..fb0623d3f854 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -786,7 +786,13 @@ static void cdns_dsi_bridge_atomic_pre_enable(struct d= rm_bridge *bridge, =20 tx_byte_period =3D DIV_ROUND_DOWN_ULL((u64)NSEC_PER_SEC * 8, phy_cfg->hs_clk_rate); - reg_wakeup =3D (phy_cfg->hs_prepare + phy_cfg->hs_zero) / tx_byte_period; + + /* + * Estimated time [in clock cycles] to perform LP->HS on D-PHY. + * It is not clear how to calculate this, so for now, + * set it to 1/10 of the total number of clocks in a line. + */ + reg_wakeup =3D dsi_cfg.htotal / nlanes / 10; writel(REG_WAKEUP_TIME(reg_wakeup) | REG_LINE_DURATION(tmp), dsi->regs + VID_DPHY_TIME); =20 --=20 2.43.0 From nobody Thu Dec 18 00:23:47 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 B7DC72C374C for ; Mon, 14 Apr 2025 11:12:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629158; cv=none; b=Xd/uH6UMUBUXauQzSdTt+M2Nb4ABt5QMAjgGSoZ/BQv7gv0thLaFVziIMMJZW3fwXZXaQGadCwGIy2s+tXs59L/rfWB7iQ+nrcDZYqlswHY9XJO7/UANaDabtSEBZTOoz+TtpUC6NA3hle5L1GYZVX3dLZHoKcG9cbgGV4luqck= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629158; c=relaxed/simple; bh=49nZeRMG+Wq88xPKlAPzjO8QNo3kDMMtOzbXmSftZ7w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kHq//n56oNUst7WLOLVvuzyCuXbvWQsGJWi+YmTcN0xn12uVPMN53Q2f5vTr2CFWQ3pM4YpTtFuLu1ZGMgpIpNcS94o5wiGlG/8poSIPFSXAw5iLbvFBT/IFmNaI/46v4yX93qa40TEzMUgm1/shJBVvu2bUvgxk3IT4IszvO1M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=mGSilwyd; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="mGSilwyd" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9F6A62699; Mon, 14 Apr 2025 13:10:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629019; bh=49nZeRMG+Wq88xPKlAPzjO8QNo3kDMMtOzbXmSftZ7w=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mGSilwydheDwKzTtEtco65ecJA+7vwfzRlcJfMv7idKihJd510xQmBEG3bWc/a/qc H4rRph89XPr7aIu/g/zAgbOgIVVqW137dZeO3LonlExdRp3wUbz0qqDJboPPNMxe51 Kjbbe0Y6MU3R/v8h+cgpW7CUXUw99ia1Zbnmn5bI= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:23 +0300 Subject: [PATCH v3 14/17] drm/bridge: cdns-dsi: Use video mode and clean up cdns_dsi_mode2cfg() 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: <20250414-cdns-dsi-impro-v3-14-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4347; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=49nZeRMG+Wq88xPKlAPzjO8QNo3kDMMtOzbXmSftZ7w=; b=kA0DAAgB+j2qjLyWHvUByyZiAGf87YGjCqSoqJaYVxyXLMypsIJ3rD4Zr+drjMHXmC5R3WHfy IkCMwQAAQgAHRYhBMQ4DD6WXv2BB5/zp/o9qoy8lh71BQJn/O2BAAoJEPo9qoy8lh710R8P/299 rBvpNadn3e+05rJ1IMPuigBP9rF3M9fWPm5DHAvoGki5cgvSXiAhiXzx/THDLZyentMs9YJfWqp 7ALQ0dQoQ4q8E5b+JbADRCldKt7BqOVvTtoUUzhmT992sNCJi1ZO/FchFdIoM3j+/8iO8DyGYz0 GTHvVoKCkMXUYRTmuJVkzWY9qU12Ka4P+13zEeAKV9STRmckwK9ha1/BRq/Q6aciZg/t7SKo2/M 8rm0kmnJZ90iDTPKNx9draATFHntQbblAp6JUvzNxoE+1rl5gtugHYzkufjbLaLm8zXEx9uc+ez pwZZqCfz84zIqtSozn2alIkaBGWSeWpvcgeHnQ7JchSLF+08Z7YLICuJcGr92h4727AU39ojB/S 4DkbG2diLRci1R3wy4WkR8jpH3ANmhIn2uDl/RRh8CRDNWzb3tvG3C4IxMK8GLLf1rkZ0VvtY9u ln6Z41/JtlzXsv2PywgXXdoTssIaPNQqTGmBpXi1GhV+GBZpoaXrRYux/47IxurBpOEIMiqBrRR SJoBNs/rJW9ezt8Y417lxSsfSTy0HXtMDWfrVH6rFmu0TwirBz6C8CuOb4Klxasl4zJx1GNeFog Lol5i+Tfex/ZNgMVV/BxVSfZzmax/6XBuJFqW3W30gMolfVvesFE8+FREA+Gw8Uv8w6ioI1j+Yk 1hWL3 X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver does all the calculations and programming with video timings (hftp, hbp, etc.) instead of the modeline values (hsync_start, ...). Thus it makes sense to use struct videomode instead of struct drm_display_mode internally. Switch to videomode and do some cleanups in cdns_dsi_mode2cfg() along the way. Signed-off-by: Tomi Valkeinen Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 45 ++++++++++++++--------= ---- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index fb0623d3f854..a55f851711f0 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -9,6 +9,7 @@ #include #include #include