From nobody Mon May 5 04:02:24 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 2E24523817C for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600681; cv=none; b=SfOhyYnu9cIS7QHs/V1D7Hqueeqzs4YrAORCv25sfBAKo6wlubrJBRuWS8jTlglbl8ec7BhmfAsjJdaJNZ/AYxby89jsH9t31DaHDVjMgFeZpCEZIuMQkwwsLV2KwK4KPdfEqMfjddKu1fdyZPm62a5K49o43ha/Crlxt069kNc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600681; c=relaxed/simple; bh=tWpzu7ba133Zdaj4dIf8mfTY5P/FzEw3AwQGlLkB6nY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NkNBxxxJ3evrSJEgI6ooJjk6yt4g5DwDhR2AsErT5G7Qvg7k1+HqVMApJK/pnEblg0SRlD2bjcf2jufAJ/LrHbdXbvVpEGoKi+AxdbyvHP65ToYYxEoFxUf8W08slKqWdLQoOQw2SCBuZY3GQhgpr89O2TR0D3f8sqvWGIgmyMs= 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=XiTaeGGQ; 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="XiTaeGGQ" 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 E74956A2; Wed, 2 Apr 2025 15:29:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600563; bh=tWpzu7ba133Zdaj4dIf8mfTY5P/FzEw3AwQGlLkB6nY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=XiTaeGGQDZcc5mC4YZUP28aG6WrYTqwJQctuaS29IqWasCY46ayi9aMnTvOV2+0Dp 7fgHvJty0omJ9Bh/B/U+pTGpHyUu2ldvTRDegglbK6fsqJU1lBXWLEu53CmakAo8Ez F+BKSFgd1LhMBrUybOl3GlRzHbnQveR5lUTMs9zE= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:43 +0300 Subject: [PATCH v2 01/18] drm/tidss: Fix missing includes and struct decls Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-1-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2118; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=tWpzu7ba133Zdaj4dIf8mfTY5P/FzEw3AwQGlLkB6nY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twb1rv8WsaK7ZyMNRHo2SCza155wW0BQGFDR NuG01wNSSSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08GwAKCRD6PaqMvJYe 9ZZSD/49WAxaJgfcNgLcwg7nvNWgDMBwl6GFx8D71IkdeY1FtzSCQzO0LoB9ZeM9+Y+aPy9f9T9 DqhcnPQ7o/u4tq67PcIq4OIVOklnk5O0Z2SDVMNryax3kQboN4gvnlUFAaMPSHSFzE3vY9pw2m3 bwVFI+eLtAntLqXcsXBm1uFy5LlptAFXbaknwYA6Uvkw6/GBkOgJF4E9WqIMPvtXmOJDse1lYgh oIOBPDA1ZyVbQ+i3mSH3PDAi9PXz/Emza4558knGsHsMizm4dfqD/oTuWIqDAikqEdyQ2ZQYEdk IjDah/sv1spVbVDqJiLbcgE+0SMW263mwf4AFwyLvmRkLP6AhpUcgs9WUA2iZxpBxTbbHKB1VIR l0O9mMR1nSWTo9yMRjp7HkgyrINyVN/FYbnCUBwMRKmR9O18a63yjhaMyG9StPtVPRrtouYxf7A F0dd/L06h6dfIrsecf9CV2zgezxbcmGXWjFDUOpANUM+Rmsffmr/JmKCw9oVjdtpuLWEsdZuIoi IGYR5UCtUABr//fBgpalui7Bg9vmxND+t6TgKl5e/vis7yEOk3X4LPpTiVt8BCvzS3zUWPN5GgM 8UsMXNWazahMmRyhzBBBtMut6+QhJqZchWn+kGEVwfExjBemikxlF7Re4nAiJqW9kKrELflJVi7 H70T3CRi185GwZw== 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 <tomi.valkeinen@ideasonboard.com> Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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 <drm/drm_color_mgmt.h> + #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 <linux/spinlock.h> =20 +#include <drm/drm_device.h> + #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 <drm/drm_plane.h> + #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 <linux/types.h> =20 +struct device; + struct tidss_scale_coefs { s16 c2[16]; s16 c1[16]; --=20 2.43.0 From nobody Mon May 5 04:02:24 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 7BB9023A9BF for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600683; cv=none; b=D1fbipc108xoUo3MXyv4GF1QDXqS9qUSMwoLjw+5he7nH53hDUBYU3jekPvrm92Ah5YwAwRnzJXeQ+cVCxoU5GIkIcIuj8obm1o1i8pwXT1Kbkk2aoRCzN7Mkr1WaQ8XoeumWnW2sHnm/DpdQrAju8v2D9JS9T7H0n/2QvaOo3I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600683; c=relaxed/simple; bh=lEa3BxN/6LhqthWXir58vTyZRT4d8BUmsi3iv05b4SI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TEaAwsy+s0Kb7BdNEzsojpv8CbashEYh/mARAZKHACFxbPtNnEZ3sHN8RqXoGx86eGxcs2I6RAIVwHbknScIFucRPDLuOLk/B4QFj/FG/F+KPuAr45b0PT11bh1271lN69iy8B9F5sN4pKim83xf5taX8WsrrBnMB3ah1qNw0Wg= 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=Hy0ZYv7+; 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="Hy0ZYv7+" 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 18666109A; Wed, 2 Apr 2025 15:29:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600565; bh=lEa3BxN/6LhqthWXir58vTyZRT4d8BUmsi3iv05b4SI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Hy0ZYv7+3NqqgAW6ebTLNj5eH6r2ENeyc/blyhhqBpSlqnBwwUqwXlwD49+yrFSLs IMPf0B6XfIpmyQpLcXQ/vhpXR9lqE4Ww/Q1ShnLm0L1sO7kt9RqcZqZJC+Cgv1sPGV fi2pmDfwqoHy9ZO6DIjEz1eB3HGiy/Rqpeq60okE= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:44 +0300 Subject: [PATCH v2 02/18] drm/tidss: Use the crtc_* timings when programming the HW Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-2-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> 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/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwbvLVB3NSmEEZTKu2mPkd4cA53AxHiHX+cu 5bfLMU8TS6JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08GwAKCRD6PaqMvJYe 9YhAEACdn7Oov1vXfnvsqQzBPL5vwo3aQ+a4r7+ThgX72vDWUZGEOsnceOUSZQ/kOBrq/jD+6E6 YMTaSawx/zRswAAP7WZE1bFd+6z1cXCmNPG2n32uuK5ZCmqObJsOeFBjwfjFvaj/MF+EsGpUyUq e7LY81lqAZ3D1GDP6xBRytSabDoObPpXq/flP7O5Fp21I414UcJ0KOHpY5W6l5T5nEgmbDuw8+O oobEl38xV/8siHif2loJz2WG9Lcjt3uwtd6GpX1HlWOJ4sM8xeWcQWQcuDA82qt+iyM9SrXUT8/ bOBc15mxhN8Xccl4UwTQ2bArkFjt4pr5+efjgUK3Pf9lpEuJufM8msXpAtfIAhTHRrKX1Z9VsxA rOLBWEAMtg5Df5q+4/T6x9pJI6z4luCbY490q3vDxJEfARQNso96i0EgwDylPGnJ26FyAfuML0O 822FOJzLMxiEhd1In7hO3gDL/U5OuEixME7uxHVP5piFfNNM1jBLULEU4dBSbDPOXmIg1cC+x/T AztfKErMNF60ODMLK12eSIKYKZJkFeFHX+Zy/visWKf1kA6rqhnsbqf8itA/ZDPv6kuvG/23B4M NU6JU8R90kccucxKjhv8ERWCeIPRWEDVKUPpjHR+H6P+sZHoX+ftCTkpIQGau+0WrCqLkIH/sCw Xvv81vKlzLHxMdA== 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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 Mon May 5 04:02:24 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 5EDBC23BD0A for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:23 +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=1743600685; cv=none; b=lKOHqWTT4YuV9OdxmfvcUl2XPIXDlJNDBwGuX35mIRfJmCiurtNKYwscIcUxxsjdgO+/xmjQ/Pu3J85GhH5OJuH5+/q7BntRG4boMTPFWPdnyXCY/VuU/vz6gkR7jn2aw5LbD55ovY0pN7M5wqGKny2fK3ds5nqYWQ3pUZhZt0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600685; c=relaxed/simple; bh=ye/JSU6RkHhBBCfydm73XwRK9B4EaT5qH6JR7AJ+l70=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=olnIdYClzJ69H4NNkApO/pq71M3f3mpHgo0L4g5GJ4DD0a2nj7NIsdMk+WknUasAvq9Rjj0GElqPeVHwWbbG9QAzf6lSnZSm/z4JrHGSpI47foctrNOawNhZRm+sU0uLFusZSJHYplocbZsh2Qh7xVfXtPqa9eHyJ1t3rmGJNzc= 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=ernYpvSO; 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="ernYpvSO" 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 3BD7618D7; Wed, 2 Apr 2025 15:29:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600566; bh=ye/JSU6RkHhBBCfydm73XwRK9B4EaT5qH6JR7AJ+l70=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ernYpvSOioCibN7IuvbvF7/jfNl3aNOXg1fJd16OOoWZ9TOvQGQJdTg1zlBcLPxTG mFFzFf3Rgi+24oi/gaw9jZkDM7xjZGJnU+ifDS6/ORhD35v1qFmTi95ZfVsKAxHk5v O4gr0ByK+z6yre1/ulHGxtFK+mIwQHVBtKU1tExo= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:45 +0300 Subject: [PATCH v2 03/18] drm/tidss: Adjust the pclk based on the HW capabilities Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-3-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3735; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=ye/JSU6RkHhBBCfydm73XwRK9B4EaT5qH6JR7AJ+l70=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twc2escEfItlPXesG8FIeup/1y8543dNTdaB i4LBDgP+8eJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HAAKCRD6PaqMvJYe 9dSQD/9pkps9DnK+/7diEOjwiA0BDCFcQ1JC+JDSASXO8elUhhgqL0ULOQJp4YE2OTt9HTu+tMN QQNa/DZiRsrZeStCyq/gR/2ulYvPYseaGQVPQZ5AS9uwiJWVe0FCqu/+Ht9eG6enBon/+2E6O8j La315wTP6NOqY+dNj6V6VQrN38Q+eCLKQ0g7yXVQj724m+mWBmqT+zGC47xK80AIhsPpg32QaTS On+g4uJaI4Z+vUqoTGU/01k53r3rzAKrexnPdvl8m5YfLzdeF6TcZe7gRtauo6heYvLhUfLf5nU ytU8TeHyTymbKJapftCnLhyAlE26DXdSgz7ddN2jeGzZXcSNZe2uiUgvhce2rARtyCQBY9Zmkmd URIWI5LKtYpA1G3AMYYVNaLq5Ld0OKj7fmetN3b7fO37hRNSwOALNvUse3gy3sJI24yVGsbf6Bd ABqwOsP7tf+lUqOzTLpqeCN8IaFoxYp52XH+tRuTT1bdQjarDwAg8VkT1+m8Zb597wlZOhEDw++ Tv2sVhO639/y9Mbxm8jnFlES9jeMMvXHH/1pQR2sjbPktWTRRjZ/vhPFWnbH8wGFovXy+wDMfRa Lq9q5Dlu0O1EytKTDHzbmpqLGhgoKj2KZ3+cBZcYsvZ9ad32oo3Gfw/80t6dV1ULhIRKlOL3oZd JxmcmBJhYsMQyWg== 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 <tomi.valkeinen@ideasonboard.com> Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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 Mon May 5 04:02:24 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 E4787237700 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600686; cv=none; b=lo57bNnkeL+3P83YbBl5HKF9HpRpFRQ5RiUY+kSsP8bcusBJdaxo5tIMC8KZc1liMFpt2dOAmvceKMmVlLY1+WK2iH0QH7cSuDLayXWjptz7Ubdz+aja7KM/XGeZtYbNeEjzYBtA8iv7o3HhPM13hZXh4IE8pJl/hY2onwYlfJM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600686; c=relaxed/simple; bh=0rz+qtGwR8012ibx7Ol/9THyUm6cLrG8rh2vtI7MsMc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MzYyKQDrswsbPPuNUD/EHd46AiFcrB21bgbCAwh5H0NQ/xNh5n+b2wMBtl8iS16Y10j59w/0+3/tiLXgoA4pyUObZ7ofd+EuCCvCs1/bxdBJMv5xt09l0RhwVlC6cYDs7wjkbVgeJSgeOVsszbgna30QOdvlDVqoo+RbKkJ1DX0= 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=iHMAvUFZ; 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="iHMAvUFZ" 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 62FF71986; Wed, 2 Apr 2025 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600567; bh=0rz+qtGwR8012ibx7Ol/9THyUm6cLrG8rh2vtI7MsMc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iHMAvUFZ0oSZaOR2bJctKAa9uKxqxZ1uwIFG+fgt5ReEow5ommMK0fE7hXUtlMVHP LYg4CJOs+qmplVfNkcrrvIm5kSC4X9Ctgy/7LmY7shiVHpIRsYSRzKm1vHRg2p7+WX 1Hf+o9yBxVAqV7dcQwiZpakjC1ZGJsqvH4fXSda0= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:46 +0300 Subject: [PATCH v2 04/18] phy: cdns-dphy: Store hs_clk_rate and return it Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-4-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> 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/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwcaZeTlUBNgRJH+o0UqxKZ47XGEk5nI4+fx rlZ/xHDxHSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HAAKCRD6PaqMvJYe 9fwTD/4xUL4hkpewbyumBl2OhN2ZsCukOxQqMp6sDpBhQla+6MmBo5TwSfiDKA5PxrVTVCoRRHl Tz13fTTolMEQB8iy4zjXiMJ7YoVFe0yzM73tnnh4Ay5RfGd4JvM96cx8prHIdyRuzQG/ANWjaS7 XVq12EuPuOpuzzWHdwSh10BVmxzShAOJINdAHPCvl0e7OXkUE9tesiZEmqgIfQwWqGdV7ZiGtHx 8goeYf3sVYdKDcEQSfAZZDXXmRjEFFHZ6mlbjxoUpR/HoKEumNUAIYU/mL1nqmWOFOrC89g3/eG hJq8F2FIdZQEaWxRYqO5KlzYXLq1qPWiKfK0stc7BYHPl83I9oqk8uzWaVqYiZmNidVr21Q/wXz ec3sOipiMf5xS4j16tOu47LJ6W1WupZ9FGqd/C6ocDn9KE00TdJOWesU326VPcUn7lRAsv+yDGY WSxKkXX3n2FKpiQB70ejX1wcD3/OqmVeJOK9J7wSdPNZPXX7dGyyiM6GcsfYkCd4J35IPa83G3z +whWZc3fkm6jHWRYIMvW4FSRXRHpdRdFXoiKqk1UAKdCqdRvfpZJWkruEqfjTqjMknMErxQ8rfC PCANjw3lqM0A5neDAwc0TdSUqxnGRQXn7tfmKPVNcOFjDjekJfeSMhRTsMk/h2yUUoPpArXnMBJ 0LZmxjAyRkrlGKg== 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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 Mon May 5 04:02:24 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 AF75323C385 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:26 +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=1743600688; cv=none; b=f5fwvBg6l1ln947IdlBrQya1lPFAH5D0DZUXXz4z7H2EQLShOYJgHQ9MhHsRhKoSHO8KAaG89HILlO/Bgw1xlskJ7lEyXm/YmFJ5P1UdsjKqu6dEB7aykvFyGqAvspmEzqIP0V2dUZzK2XRW/QIIKrIfqHw9j1Oi9sMXn0OJdwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600688; c=relaxed/simple; bh=c1oUALt2KZgajaeiEy/9OAK/9/j14NZ5nS73HsxdZOA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XerS79Y+8LJCkH7nOpIilDC+P3ATuU6ha2FbzQMeJH1Q+SIb1Oah0MbkMk/lalEUGqLtDTtcyLOah4nLEOPLrDRYtqZtzemG0uuoo9iPrvQTWM3fndy3Mdtqyci2qNjAScqYjUBqifjsXn18pUTj9RHMHVI5g+uDBwMV9+C4RV0= 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=wXmGBINm; 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="wXmGBINm" 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 861F81990; Wed, 2 Apr 2025 15:29:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600568; bh=c1oUALt2KZgajaeiEy/9OAK/9/j14NZ5nS73HsxdZOA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=wXmGBINmOlLXn1vTyhMmFZrXUAfsfyZtR9pUGb0w99+dJ58rFxlqXdfSyz+58BF3h H018uSJwxkNFLeBm2pZkm3R6mcjrWaoUaU+gxWkMwgcGgHDF0+/8aGiR8ub/CKFaGB S2D0dDF0K5AGe7ojFYzsR+sf3HN2mVWuDAl4Z++4= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:47 +0300 Subject: [PATCH v2 05/18] phy: cdns-dphy: Remove leftover code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-5-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2173; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=c1oUALt2KZgajaeiEy/9OAK/9/j14NZ5nS73HsxdZOA=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twc8yDvZ1RQJmWUsNT9bt28ZCh+IWNxKTyfr JxisTgoyRGJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HAAKCRD6PaqMvJYe 9cqHD/9RumZ2gSAlo7blCD7hh6ZrKtGOq284AvCCYaDZvrs4Mzx2hggPApHUDHtXlpnebCAF48s JDRfz/OAfVIR184WRUzqOPBH1VxP22ztZsJLwqGVDvA/o/IMTQfNzmIeFHArLZ5JLOH+t7o27Pt BlgXlBUJn6BIVrW1X9mDuYfrpLRObGkDbNo3iyQkykFD314zD91/O4YJ8Ik8RuqZeeV0bceFKr8 k2zpHNKg4dYmODOlGEFBdCxjRxcDAIwJkyUtPvcFkgjo8J1i3pkExPTTDkqrJOIqR/qVDZGBUrQ WgVHoDXspczgFPTAF4uBACOXICC04RifuCSxHGZ3ET2Pszvg8Ju2KHcraEUxDIOb8HB9YZQNseq EUbfzuFLhe4Maj624ts32U3VifQtHflpK5VYr61NOoR2Z+Flrn4p6oM0CWIImb5gbraKDnaFbIz BuN8Cyw16yQ1Oa5oP3DJeRbZhGbJuYP5XjGQ4gh15Me+Ao0JrZawQ41eVaV6041pJzCCT+8oYsY BnzAwg/FgZ6/YdP8X1hMyqgArhoSfrNo4hKvHD4WsvagnI1ObkJYZWoDM6v8sM5ge9T2RQHPdr3 zpItaUkyesVtWXZ3MJZRYryv8gMAMJmskOeHcEPKxOIEJ5Fncw0tFtIBwxRYfDzSlKnqPGaf9L1 7/75V09J/IMEAUw== 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_get_dphy_pll_cfg(), i.e. drop the "dsi", as it's not relevant here. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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..7f8b70ec10c5 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_get_dphy_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_get_dphy_pll_cfg(dphy, cfg, opts); if (ret) return ret; =20 --=20 2.43.0 From nobody Mon May 5 04:02:24 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 164D023C8AE for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600689; cv=none; b=t466JSNyd7s3CsfCnYF2gRKMRSk1oa+TlzYcRMrU5vjpng6uXue6dck64tH3d3t9n+umxwb2Q5w2uGM9abe5hBH4O5xhK/onkabAUOkL7gJDDF29eiVVd1Yxvf3PFWu9X5a3hWEE4Hu7pnvO/XfphpXooR5Vfq4Hyeo9rPhceos= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600689; c=relaxed/simple; bh=3CN4uj1iCwxXdJquhx40R2NHzb/pS+FOmacXJwz76L8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a4UDfipUv9/n3LHvrxH/c6Jxsm1UZExpmdA2SwK3jKZyfD1Wx8X/2sN2SA59v17fWBSWEFgTN7nptmk1j57WKfFsg+wjMZx4LvbXFmg/426xqP7Js/agpPZ8UIereJMdg7fuVZ3ZmFYOQkybNJCTLTdFXCe5jwsJMCotvVt9a8I= 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=NQHUAfPc; 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="NQHUAfPc" 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 A7C9119C9; Wed, 2 Apr 2025 15:29:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600569; bh=3CN4uj1iCwxXdJquhx40R2NHzb/pS+FOmacXJwz76L8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NQHUAfPcH1rwhxyByEIFVaRgsdUCfq2XYKbi/yXKQkeOS0Pi1n1l7ioh7sUYpGwPK SswKu8gTOL3mgBzpherhLplNBdr5rAzyX1mPg/NXxrOlkOZien3VL/HPfVbop9jAUv imPdp1wS9kvmpXgSEJjj7ZsckJp9ahlz2heCcQ7E= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:48 +0300 Subject: [PATCH v2 06/18] drm/bridge: cdns-dsi: Adjust mode to negative syncs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-6-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1357; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=3CN4uj1iCwxXdJquhx40R2NHzb/pS+FOmacXJwz76L8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twdw/WedZDgLhiIic9z7RcO+p8ir4C1KqJPF U0d60QXZ7yJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HQAKCRD6PaqMvJYe 9aaoEACIPT3NJO+z+ih6nFSRkIVA5j6s8OwEPZYFfv3GG651PEeRrOCmHTCuXOwCMc8ZuZFVRzH 9j1KMTGQ9ZkccMBOo33ZjUz0TWeT18peERi4/4/O1kTJZPLtYRTZ7FUionkIgNCqrCbRqJCMABn UH4BDCRaVEg1FdHDVnDfaQmY/ORhppJE5ICsTni6q4FEc9ZCDMRuzM+NWJkW846ptRw1FTOjtne 09NjoKB3JrllIxRhdlLzrdft/Fh8HN1wZNm5Mehs01dk0Z9aKtFfBNS0sMM9IMvv9H+5GKc2+YU 6KvkIMFa8njKqmqHzssSsArx5qPTn/AENQjJ3mIAbStlSIicaWlo6AQy44YP0dbQWkHHfRdXS+G Cg41EhJVTLpq6d+vFfaUnpY0JuYETBVwfBIZwC+8Po6ceD05ww7LVvquJ3cWP0kP8GVnmRoCPVN MZNkeU0n83KTC4t1ksALYouwmfMGIr4GxUvVLvr5M8kGIvDeJSzceXrpfJIPED2+wZARPjbsDJB BiEuDgxa1CO2fpS60IDu5q5tA2MOyBvxs9F46Mz+df2EnRUZDaxmZd4eydcMiEUzbkNBEiL8U3N tHDYnKvb4zhmi02j024+tj5DW+KVEwtV0pzmbCuEMKR/cLwgYoJQvIRiOXhc7IajPjgsFoNMPeT 3CFUlpTJi/8jUAA== 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 8a320bd4d34d..53322407c1b0 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -992,6 +992,11 @@ static int cdns_dsi_bridge_atomic_check(struct drm_bri= dge *bridge, struct cdns_dsi_bridge_state *dsi_state =3D to_cdns_dsi_bridge_state(brid= ge_state); const struct drm_display_mode *mode =3D &crtc_state->mode; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; + struct drm_display_mode *adjusted_crtc_mode =3D &crtc_state->adjusted_mod= e; + + /* cdns-dsi requires negative syncs */ + adjusted_crtc_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVS= YNC); + adjusted_crtc_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYN= C; =20 return cdns_dsi_check_conf(dsi, mode, dsi_cfg, false); } --=20 2.43.0 From nobody Mon May 5 04:02:24 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 C2E0023C8D6 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:29 +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=1743600691; cv=none; b=cMThqh8j7q3GmbJSOGq4w5ZroyNxI1FEI+TOb1J/PMx4E2IHbM/hZc83FcbhjRcIKRRc9PZy+0uBG6mI8LBpp7c+J7J9S+oFmFJXtzShdbmb1GEzfZQcqQLx6w08JPppvacJwPOVHBhZXc2yvKEwW5mV8tdjTIcn+OdSC7w/6n8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600691; c=relaxed/simple; bh=S8uUUDEaNeicbiSY8YvRq9DMlAGVbKYKCtdKJ0sZaN8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V6XWRA6WzVeDgUVSmha5+ESHpi8r59Rsxd4tobuuAlOG1ooz8kbwXN18eRikIAgIWLZfWmySpNPEUoUCdQu/IDQl7Y8ULM3xIdrvMrHynBg9vvyKZNl+uOOltTX+d7gNOa28EZqoH1uCg+lyGNjnLvpfSsHdgyrAEhG2mFbJYVI= 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=TbQrJStT; 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="TbQrJStT" 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 D0A2E19E1; Wed, 2 Apr 2025 15:29:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600570; bh=S8uUUDEaNeicbiSY8YvRq9DMlAGVbKYKCtdKJ0sZaN8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TbQrJStTAPF/eX2uVj21oQLUiAQSdSbuRTR8bEbdfA1mEtwLCjQNHwn9xj/cNFzqg bRrN/9IxkjOov7R65sbDIpt1ExDvfOSYFub3T8h0VHPPjShL+SrFUAoyv5IyYTUT1f qB/8V5uw8CvyXOxrbIzWhj0QWZPElZn9/571LhF8= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:49 +0300 Subject: [PATCH v2 07/18] drm/bridge: cdns-dsi: Fail if HS rate changed when validating PHY config Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-7-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2073; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=S8uUUDEaNeicbiSY8YvRq9DMlAGVbKYKCtdKJ0sZaN8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twd0AEPulojI4YQTGxGlw6WhL0s6oojtNNCo xGjiLne1PSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HQAKCRD6PaqMvJYe 9YEcD/0bgooVvLCuu3FLtqeH3YC4ZA8SY/8y8p73Uq7oomgpTBroT3IKCHwFz5CGjRwFwKyvKWU 49YHzXWtvHKvaG5zkLT4/DBlXEshXP6ss5n2mSE6cUres/zdcuLKUw34XI23inbILk5hQ9STkFA ydYNpT/3gwzcfi8YEL99Z1YnkcBNDNTbEhugwFiZin620DQyVS75prnbIpKtoV8w5ZWP0Qil7WC IEfpDvajZ9YgClKsudDokHQQbYdfYKPE32S/O1uESrHiC0hukSDENMiCovaMsUfgZVEV35Qlkdk g36FPQQuQTBb57Q6rENl62mfPACfkA470gD5eMCLWE/KfwDk/ztpblrh8/VbII1VRZH029ybkOf cbe+JBhQO03GlaI3XY7h+xGu2uEEhm3yVr4JrQCQueKk1dDMF9GVMqNKR2vFUqIj/RfAHc4FeLh fFttc4ylimhxsqb14tzONvAZViku9y05/6Z/2947F3shnrzBz2dFk611s5ClKK4aTujvexVjz3d ltQIzcJzOSYQp8tkfb/iOe9kh78TVN0H9gZer9Sw5VWfZ3Dt4SVfjhMhkQS3aLFHFtAdNx5c6Yo RywJDjX0/pfoIinfbZeLodLfe6cVHrqDdvbZjJaowgpPnuxG5E+T8IedpBrRBjis/o4LdsVOA4K oGfwJfwi+7y+85w== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The phy_validate() can change the HS clock rate we passed to it in the PHY config, depending on what the HW can actually do. The driver just ignores this at the moment, but if the actual HS clock rate is different than the requested one, the pipeline will fail as all the DSI timing calculations will be incorrect. There are ways to improve DSI operation for various clock rates, but for now, just add a check to see if the rate changed, and return an error if that happens. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 53322407c1b0..9238acf69823 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -580,6 +580,7 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, 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); + unsigned long req_hs_clk_rate; int ret; =20 ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); @@ -596,10 +597,20 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 + req_hs_clk_rate =3D output->phy_opts.mipi_dphy.hs_clk_rate; ret =3D phy_validate(dsi->dphy, PHY_MODE_MIPI_DPHY, 0, &output->phy_opts); if (ret) return ret; =20 + if (req_hs_clk_rate !=3D output->phy_opts.mipi_dphy.hs_clk_rate) { + dev_err(&dsi->dphy->dev, + "validation changed hs_clk_rate from %lu to %lu, diff %lu\n", + req_hs_clk_rate, output->phy_opts.mipi_dphy.hs_clk_rate, + output->phy_opts.mipi_dphy.hs_clk_rate - + req_hs_clk_rate); + return -EINVAL; + } + 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; --=20 2.43.0 From nobody Mon May 5 04:02:24 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 010A823CF08 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600692; cv=none; b=dHlln5lR9EyHLTy/TbOHcp/a5VWE5e/OPN+i+n53SqwMPLo5Ha1do8zTe3DiaRlkEe1XYF6wp7JWpYYDE1sxBvTryNYDj6fZF8qcDUB5YSKjclRXoMq7H9G8MOTxHrLRqStoZF9WsOU0p7qq7d6jM5AH32vyvhd4iNcW4plSUsY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600692; c=relaxed/simple; bh=vjRuuRXkQ3UFqYx/0yC4s/4b1wMI2nCnKESmkXL4LGc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l1FXnzZMqqL5i1KqibdfBoK5WngKEx7L0JRKDomzaS85SS3Sl/vawsC/mShzQAjZNHsyDLbekU3wpoJypHnKDHrf0FOyq9CSsEMWAxK6SzvcjjQCSXab0Xz2mKZddI0IMJt6RZ8DNh/K842AgaPjSMuW9kPAcjy7e3+B84SNStY= 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=bePSgVek; 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="bePSgVek" 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 04FC21FD6; Wed, 2 Apr 2025 15:29:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600572; bh=vjRuuRXkQ3UFqYx/0yC4s/4b1wMI2nCnKESmkXL4LGc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bePSgVek6aFL2lIogvgla6Mc4vD1ekSrYF6lPAnZu3rboQXtuLIpHx4aj5I61/Sqg +6jWuKieT/305mi9XK6UAJIfMg/Knu3foDyCfyldVvJWiXTXnsG72ibaUjisn+bwJh nnG5NeAQacxM3Ha6vaZATZSaWcQaGBfp0TrmZk/I= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:50 +0300 Subject: [PATCH v2 08/18] drm/bridge: cdns-dsi: Clean up cdns_dsi_mode2cfg() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-8-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2823; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=vjRuuRXkQ3UFqYx/0yC4s/4b1wMI2nCnKESmkXL4LGc=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twe4ruVwjDyoZFcIcdKbfQD5zYgBMS52y27F sAMybOt7t+JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HgAKCRD6PaqMvJYe 9feeEACuB7Lm9N6fMlgyo92alSQDJNrXcax5yxnsjAfUFi/MHJqlyXp5se2qMeu6PfMicvbDpKU hUvOc7vYBwAyq7Xte8qBrDKm3chOM8zxZ2862G8k13xTMI2Fm/OBIUtJhQpdm6WaRs1KuzLwZwh 7WPyCe3BIeaLgtJ4tKWeTW7x7rOqpBbBHG9hB41tUibQFdYlIg6lKeGOgzcGU4uHVtbY0gwjg/r BRHwCtI5xEQSv01UgIQ7Api4Nb+js+jJuBAjzjJkaBP3VUkVp/RSBRMpBgYGnZVVJSXCB4juIDP oKwnDAIpb3M7Tb3XCe6eebc20WgqlwwA4SZToB08xsNYJmjVcHZkpcYLYlSdLK+XPa+quTFWDeX E7V2hSkJU/gnMXCW6/+ZmFFToCT/qyYJl7Oe15A4FuJV1wNxMrTYVAwBIp96R/gmX3sqUPOoVf1 AYLBB1xsqllBmLioXpuFPip7Pbk1XGWEfK/GEah14PIt696Y3OMGBAbpr7QvGWZa7UdcN2Cnril +cxqBHxXmVqx1l9FAOpzWe9h29h1SvJk4hsXSJaFRiz1er3Xb7556cYqcwFShAmF0/K6+ywCwvo qbGm0bIttUKVGz+Oxx/rWWUWxdxTLV5EXa3NQULWvfF84+CM4VCDGpqN0CdgHGNSqZT5zRKix88 5BRpV64LLORGLrw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Clean up the function a bit, mainly by doing the mode_valid_check dance once in the beginning of the function, and grouping the calculations wrt. sync/event mode a bit better. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 48 ++++++++++++----------= ---- 1 file changed, 22 insertions(+), 26 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 9238acf69823..0aaa1d06b21c 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -481,42 +481,38 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, bool mode_valid_check) { struct cdns_dsi_output *output =3D &dsi->output; - unsigned int tmp; - bool sync_pulse =3D false; + u32 dpi_hsa, dpi_hbp, dpi_hfp, dpi_hact; + bool sync_pulse; int bpp; =20 + if (mode_valid_check) { + dpi_hsa =3D mode->hsync_end - mode->hsync_start; + dpi_hbp =3D mode->htotal - mode->hsync_end; + dpi_hfp =3D mode->hsync_start - mode->hdisplay; + dpi_hact =3D mode->hdisplay; + } else { + dpi_hsa =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + dpi_hbp =3D mode->crtc_htotal - mode->crtc_hsync_end; + dpi_hfp =3D mode->crtc_hsync_start - mode->crtc_hdisplay; + dpi_hact =3D mode->crtc_hdisplay; + } + memset(dsi_cfg, 0, sizeof(*dsi_cfg)); =20 - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - sync_pulse =3D true; + sync_pulse =3D output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE; =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); - - dsi_cfg->hbp =3D dpi_to_dsi_timing(tmp, bpp, DSI_HBP_FRAME_OVERHEAD); + dsi_cfg->hbp =3D dpi_to_dsi_timing(dpi_hbp + (sync_pulse ? 0 : dpi_hsa), + 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; + if (sync_pulse) + dsi_cfg->hsa =3D + dpi_to_dsi_timing(dpi_hsa, bpp, DSI_HSA_FRAME_OVERHEAD); =20 - dsi_cfg->hsa =3D dpi_to_dsi_timing(tmp, bpp, - DSI_HSA_FRAME_OVERHEAD); - } + dsi_cfg->hact =3D dpi_to_dsi_timing(dpi_hact, bpp, 0); =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= ), - bpp, DSI_HFP_FRAME_OVERHEAD); + dsi_cfg->hfp =3D dpi_to_dsi_timing(dpi_hfp, bpp, DSI_HFP_FRAME_OVERHEAD); =20 return 0; } --=20 2.43.0 From nobody Mon May 5 04:02:24 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 E9E1423E326 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:32 +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=1743600694; cv=none; b=UIIPl9dYHswSLTtYm7pV0hp0nfpigK+UmLpZoHpJsTC3hVh7RJ0kB1KtRzWMpN4t+V56JFE8Vt2hlhqVuWYGiiO0YJ7n9UVT3hROEIeeQV0D+coxmWfkDIoKTP2Qf2iwFTMuAMP7wHzvmRr4zs68Q5sxq2sfI/4Oci2w3nGOnJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600694; c=relaxed/simple; bh=PM3qn/s33KHnLl3YvY8GLYvLdFsywv9G587wE6W8Bwk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rmoLxPLQuYmAs7T+VXir//JHe6/gnQgyieNVJF+kBYGxfrARQAKS2e9JQxm2QCkFM7w0y1axq2bH+zOUFwoRLCEA/m124gM7xnEPWTrs9nV5kTiFbCJW4DJWbqZ5bY0578kWsPU/qtSp7kRLtZ7sclskxq2j+SemZGCEdyGG/V4= 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=cS+v1bTa; 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="cS+v1bTa" 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 292E36A2; Wed, 2 Apr 2025 15:29:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600573; bh=PM3qn/s33KHnLl3YvY8GLYvLdFsywv9G587wE6W8Bwk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cS+v1bTaOhJ5Kp2CgKyh5zPS5svmlJ/aP6I9Cvu6DKZ1ZNWZphx9epAGK3SbZ2gn0 uxmTWepbQDW/2gJm7GnutZJzLGLNKbVp56ClQMR0iTxf/dsVRrYOL9VinZOIXY5vV+ GFx+jReLqTq7SXVoeIXk0+cLdaq8uWYIaGQ09NQA= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:51 +0300 Subject: [PATCH v2 09/18] drm/bridge: cdns-dsi: Fix REG_WAKEUP_TIME value Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-9-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> 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=PM3qn/s33KHnLl3YvY8GLYvLdFsywv9G587wE6W8Bwk=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TweyQPovNekJjG70A8r4TqzcJ/RzGV+MzpSO QLm9FkmlieJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HgAKCRD6PaqMvJYe 9fM1D/4rcbNWQXxfqSvs7aVKIohHjvYtU5pKE0RDzydbYhHTW4n9F8Se/x3T++shXnKUfTrT7V/ OaKm9e7AeocvNtPdkY0/lfRAtvEpuMH3J7U0CTl9/CsGjq253/4lKVW+j+gEhDeCb+Ip8ipjX8j H3YbzlQZtlZF93gVx4d/jS1pBje+g7T26nYv1402EBbsAJSUlCdUwDgxbEr1PCSERZylv2BzBlP NSl4HzotvY/0zrcATP1p8ENDex8BltYmFdVAtIuHqz8mg6PhiIxDkj0PgNWdVxmkCN272jspYvU MTxHVPTYitYsmjtq1CLuCt2vvxbzZRKXUWB8lwx4IKYBpxOGrqz+Y2f2p27Bv7qWfCj78pY5f68 Iaczz8yQpXJDkn8X8CjZRk3ZJ5UMXDdzm7sSoNMnzhtLIvwtTEjRdJ5LyUdGWl2tm9e6sdfaVZb jxRWeD+MWpg5D40omp2fx2FNZS3ebsQ4G8yxSuD+eaUgLnpZlUgJZdqN7DdzT7gBpqKVa9wW+cT 2Hi8D9/WhbWBpuCqgSvwvInujJ/aizA8ExOnB7eP/NuYtBsm6Ov/Lb+Xm+RsmHTPXCXOjROmJgg GUapoY8ePDu6Kg6dUv24ULQOiBpHuDNuOjGujm7Lg1SYNjPiG6BCe2JPUsi5PSvXYu0Cgd2W2mK Avghy47TW0sOWNg== 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- 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 0aaa1d06b21c..62811631341b 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -882,7 +882,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 Mon May 5 04:02:24 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 F23B623E33A for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600695; cv=none; b=nrKnjLKyzQQiyxjIL1rMOfG2MIJRalh3GqjWjmyXu3TcMZBxkmOQhLqhGz1lpyBKf5SYnL5TLsG2fTxYPNsidkceHXby3cljNM5xRsP4IWMN5aoP24AcRM/mjYfAkt9pMsr4mo1xwsxJjMZC7Qi8yH5l1klAPAJPOS+43+TIhIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600695; c=relaxed/simple; bh=terDw8VLDSycV/I6fcyF4BbvPpfjEASKJADXJuIxv/I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M5LFyzRzodQA98yfB537J9+3fwOUoCnDwyrFjUPVlZ6UHI5AdkFBH9rNV+e0wbm3J5RDeOYt9rvNc3pxfvP6Voo/maZOmKOximghD/welXR0lCGd8W8iawwOdc4J5iwR31Io51XWLHkyBcjVEVee++jgHnnzR3sxQkJgydlg8FU= 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=ho2aCxgA; 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="ho2aCxgA" 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 4FDB82434; Wed, 2 Apr 2025 15:29:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600574; bh=terDw8VLDSycV/I6fcyF4BbvPpfjEASKJADXJuIxv/I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ho2aCxgA2Wca4y/Fx9LV5m1CBUTqC0FR0oSA/lDRGCmWLPztwKzsQPOJj22M3kFil IYprW4tjzvrcF2DR+kVKOevgomS3+CFYqqw0qkPfA/143TfoLsxKl8863mmnzEvJ9n OcaX1ac63U/AVoDZaATIUXUV5fw2xY6xoLJ+RJes= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:52 +0300 Subject: [PATCH v2 10/18] drm/bridge: cdns-dsi: Fix event mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-10-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2987; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=terDw8VLDSycV/I6fcyF4BbvPpfjEASKJADXJuIxv/I=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twe/tVteqeFa2Ic65dsnEnKHbgdu1Loaivie SSxoDo3+RmJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HgAKCRD6PaqMvJYe 9ci7D/9OtgQL1krF/aw7wnzN0htt0P7N47K84a6EPWb7y4IMK5MQZdsqKuijjPHF6z/ClvNgiho /Uh3mJCxDtp18WXVfLy0TAJUKJi+4tatoj2RES+oBDmP/auadigIcKTSDlvNlUI6S5GOj64hBj/ d04YpnuXZeHpteVxUqAm4s8Dj+g33JB7Ap2Ly2yEfa9rAJb4PNIKnaa9qxe6E7Iu8ZuspmNVh/Y UvgJhurgvGHO3BSZmce9Oh47/cSrMRLP4W14nbEioXRe9YebaqD8f5WC5xaIiFaM7272U5WFbt8 15fZpF4ZkzmURY1FFy8Hq68NDl/WDQ7Ic0v2tTokcLCbp+pq7fDQSrlRoYiK+ZT/xRYdi/0AZIj V1+fwOK+OHvcDlfFzi/1AaixDq1jwghtIIIwVuCqunKxiuBWzOJgknZchoodaFTHC8B3k5GPy3L 1XC2GIHNbRbShvhwwUFPNJiEiPLLZuE3lFL8XZAAn8Y66SMZdoYfaNc5GZKEc0gNAP5NiqqOwhZ +VZul9N6SNqO4BbaYctQboVh37y8drjWLuH0DtGp/8lbU3dgTD3AOd6iv5q4k+RWEHQVax+IH1W 9SMnLFY2gscCgs8XoE4PfVB6ZJbS5AvkzRqtPvXhKU2G27ZyiAFO9Dlj6ke6vQx64dSnFTZrgqs V/6UA0/8jBLtslg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The timings calculation gets it wrong for DSI event mode, resulting in too large hbp value. Fix the issue by taking into account the pulse/event mode difference. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Jayesh Choudhary <j-choudhary@ti.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 33 ++++++++++++++++++----= ---- 1 file changed, 23 insertions(+), 10 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 62811631341b..9797e6faa29d 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -417,7 +417,8 @@ #define DSI_OUTPUT_PORT 0 #define DSI_INPUT_PORT(inputid) (1 + (inputid)) =20 -#define DSI_HBP_FRAME_OVERHEAD 12 +#define DSI_HBP_FRAME_PULSE_OVERHEAD 12 +#define DSI_HBP_FRAME_EVENT_OVERHEAD 16 #define DSI_HSA_FRAME_OVERHEAD 14 #define DSI_HFP_FRAME_OVERHEAD 6 #define DSI_HSS_VSS_VSE_FRAME_OVERHEAD 4 @@ -503,12 +504,18 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, =20 bpp =3D mipi_dsi_pixel_format_to_bpp(output->dev->format); =20 - dsi_cfg->hbp =3D dpi_to_dsi_timing(dpi_hbp + (sync_pulse ? 0 : dpi_hsa), - bpp, DSI_HBP_FRAME_OVERHEAD); + if (sync_pulse) { + dsi_cfg->hbp =3D dpi_to_dsi_timing(dpi_hbp, bpp, + DSI_HBP_FRAME_PULSE_OVERHEAD); =20 - if (sync_pulse) - dsi_cfg->hsa =3D - dpi_to_dsi_timing(dpi_hsa, bpp, DSI_HSA_FRAME_OVERHEAD); + dsi_cfg->hsa =3D dpi_to_dsi_timing(dpi_hsa, bpp, + DSI_HSA_FRAME_OVERHEAD); + } else { + dsi_cfg->hbp =3D dpi_to_dsi_timing(dpi_hbp + dpi_hsa, bpp, + DSI_HBP_FRAME_EVENT_OVERHEAD); + + dsi_cfg->hsa =3D 0; + } =20 dsi_cfg->hact =3D dpi_to_dsi_timing(dpi_hact, bpp, 0); =20 @@ -532,9 +539,12 @@ 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) + if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { + dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_PULSE_OVERHEAD; dsi_htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; + } else { + dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_EVENT_OVERHEAD; + } =20 dsi_htotal +=3D dsi_cfg->hact; dsi_htotal +=3D dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; @@ -607,9 +617,12 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, return -EINVAL; } =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) + if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { + dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_PULSE_OVERHEAD; dsi_hss_hsa_hse_hbp +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; + } else { + dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_EVENT_OVERHEAD; + } =20 /* * Make sure DPI(HFP) > DSI(HSS+HSA+HSE+HBP) to guarantee that the FIFO --=20 2.43.0 From nobody Mon May 5 04:02:24 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 0695C23CF08 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31: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=1743600697; cv=none; b=eMf54YahWF/bVgtPEgnhqlKFDW4Fo/++qaZoj3TnDAL0h786Xf5GipBdQme4aLiZGyLAH5eDAaPKn7YDcAgw/CQJoMzVxEASQrN8D5XVRoNSYQq61iA1knNFGaNw9lN7ZVLh03O0VkcGenccGxjFXXnpeSo19cqt7TqTc5DYS6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600697; c=relaxed/simple; bh=2qJfC7oDxsjuiQHnkQy9vy3BrMM57VcAHQdpuKoTbDE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aNqIBZ3ZLBjPGH+hIFEF34NcA0ZWVmFpat+2gHGrgKYBmha1D2CC6dWZfYUJzRyIff+IwQ6riTzh3XVfNq26zOj2/Qr4cNP7cx3tPLrS+evpUuhkft4NPrTnA/unMjkpTAkipTNpI6nvz6q3XWtTSHJGvY4CgM156z2mnm/zZzs= 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=MBGQt6G1; 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="MBGQt6G1" 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 7A82A245E; Wed, 2 Apr 2025 15:29:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600575; bh=2qJfC7oDxsjuiQHnkQy9vy3BrMM57VcAHQdpuKoTbDE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MBGQt6G1K+JaPOeF4nizPZ8kWrecJo1iwuq/b5SUlW+V6bxcccpy7J0NJz2kXqAgx fbdvvtMyzn85QXtwtFLbFBpszDjFVYE4zTg5FgcktugZitCiElEFoKHiqcPX0pYT/8 KKHj3vDTBEtAtHMuGwzVywRSbk20VBxF/Hz9Va0Q= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:53 +0300 Subject: [PATCH v2 11/18] drm/bridge: cdns-dsi: Remove broken fifo emptying check Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-11-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2637; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=2qJfC7oDxsjuiQHnkQy9vy3BrMM57VcAHQdpuKoTbDE=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwfNSdCSAxRQ7FWWHrv+ucmbrxQItEOhvwxd 8wtdX1XYAaJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HwAKCRD6PaqMvJYe 9c39D/wPtEvIKBRT0+zWyqwf1N+KagKV5o3nGkcvDwRIswnJJEK4SSUUGwmtshFXIttWQ3gFjFj kYsY0xqd1Kis9EhELKPE4/v4foX/AiP4os8/cci6iekicrTq9+51XGozSx8dHGS5xDcjVmuH/xt WXqO6A6ofc+63+BOx5u56ocun59IJyxLu2aU1LfOX0b6vtbdgnfnH7ah9x1/PWTqA+ZEFsoimb0 i1IGBJOpdItLZ8aGqz/PaMQoHMK8YW+80oSIqp7U3JlLpsrQ5902mgebD0lcb3k8xNIrJtQJEnw mY8vrT/ypwkxxZtmQVZwcAOum9gB0i8eQ46SSxJYKtr68Pra+d/iBXnuPhz+5YkNmbODhnOAa40 ettMRlNFDNh0uGG8XrW3LOkoRsRjls+R5UgbKXs3pOOa14gTc/SilBSHYdBfc0jIP8fd4Ge61PI tyS4+MgoHlC6AQi4RJ4VbheqyCLHrFO/G9cIlDLTAs1DwmFgFiMYKohRZRb0S6uIo5CT4y8spRt 39d0T2mcveoGUAL3tJAS0nXYNbb0clid/9gJWZVSz4+Jdv8UcRWJRhuyYE1+r2w/c8l9dei0gzy WE8yHsTrstJ2oehxi0DZTX31fk5Q9YfHEeD7MvLjJtHgixKEhQ6RgIcfKLq8BEVej/DHKVocni/ CQAGqQXza3Rnzdw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver check 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 28 ----------------------= ---- 1 file changed, 28 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 9797e6faa29d..e85c8652c96e 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -453,15 +453,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) @@ -583,7 +574,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 mode_clock =3D (mode_valid_check ? mode->clock : mode->crtc_clock); unsigned long req_hs_clk_rate; @@ -617,24 +607,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, return -EINVAL; } =20 - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { - dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_PULSE_OVERHEAD; - dsi_hss_hsa_hse_hbp +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - } else { - dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_EVENT_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_to_dpi_hfp(mode, mode_valid_check) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * - (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000) - return -EINVAL; - return 0; } =20 --=20 2.43.0 From nobody Mon May 5 04:02:24 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 615FB23F273 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:37 +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=1743600699; cv=none; b=ELqW77v27OLmaTPdxoVrkbQuhwIwIQo0DhgDJqKXWgc2fSiy7lTovzbXfryFiQnxQSWDr6b0IH0TGs/PnpeblQt0pIGcl4MJhjN8NWbyDbmQ2Au319ffroOb/tBLhMclDGl4IOhFJ8Adq58k6WfejFbOpgKw21w4b/0z1WjizM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600699; c=relaxed/simple; bh=yg2ZEQSdiQylg810dHQuElWWoHgC3iltx0QPHEXmIO4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=J0g7hOMWjJ2cMAfVhTV2aSODnrPc3HgH2Ofgwbkn/O2a1qO1at2lQkTlW/CN9hUdMDZE3XWzG9BKS664pDec4Y87lcKhnUcbPn1FyVvPXqtLWtY5n5xw8vgowpbreB/u8SqSjpjOO9abrfx2aMy6xpGh7pVXd74c8l+mjH61/mU= 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=ohQf+fPS; 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="ohQf+fPS" 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 A4D5F1FD3; Wed, 2 Apr 2025 15:29:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600576; bh=yg2ZEQSdiQylg810dHQuElWWoHgC3iltx0QPHEXmIO4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ohQf+fPS5mpyI2EheGw+m2jJiIltnZK1MpKQZWlCy0xFMk1MukwmJOYA7AAPSp33u hGPmGgsKDsG8p9fNyALv8uMnZbiEypEHXy9GBBVxeNcd52OXDc4IoEkdx8YBp/2IJN agEFqfbuEZwbbf8u2TWywW2SKmWTVDa7wUbSklJQ= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:54 +0300 Subject: [PATCH v2 12/18] 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: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-12-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=5390; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=yg2ZEQSdiQylg810dHQuElWWoHgC3iltx0QPHEXmIO4=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twf10ut22iEk3Q+EDdXda2S5QpSgD3saziGo vfHAAnAiCGJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08HwAKCRD6PaqMvJYe 9SQdD/4xFxcBWH9hIqosPQ4f9ilyKef6n4RzucI4w0aaasSQaapdUWX6mVEiLZr7EC5LvRNli4U d5JvgqpYDtsSwbu0ymmVbBMPxWnPN/n/2p5ebTnjFr4oG4fcDFUTYDtybd3KmvPsvlFX7CBEB86 RVVFcpMwt0yUqxECLySurCXu9gpG21sCVUuh8tLX23H1UpbNkdiCiU+YE1ijrF9ClPOdCs88rJv HusugEcbVSoXACsMQRvlfi5kzBX7Pb5f7wzKGDd+c6ZLFx/gqLqsoTr44h2VfxZqkzVZ2qpJiDy YHRaJTI3OsjFggvPdqakxPkqFLOeXeUqgwJprASvt1i+OzrJRPxlWxUMBuRIxiQvbMRT+ZJLpJ2 TZwKJpqsksXZPf+F95clJY/tttnJ+NKbeYaNv/+rbucGHX0xbwcgHJc5upcd3qYMuHG8d/hoJUa 50cl4H+3q2epTtnM/AgQznD+ZYtKV3R/wGFoQSE40rJ8Ivx1p3xsSUwKP3vP7BjktbamRiNRv9D HWLwEIJt/6NGtHUG1Rd4zB2nAwlzblWjonVhwsS58oErIZT33MxBUa7DXvDH9Vds6gZ3hCphzVe 1mJjUqP1EfJYcI5AfWtIV8oZ2tXhdB2w66mhlxZ8miIx4iI5ab6M3jhw1SbyKTKDdBTMw/s6L7D BAc+GsztPb6DSPQ== 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 checks from .mode_valid(). This also allows us to remove the 'mode_valid_check' parameter from internal functions, and the related code. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 44 ++++++++--------------= ---- 1 file changed, 14 insertions(+), 30 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 e85c8652c96e..cf783680b1b4 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -469,25 +469,17 @@ static unsigned int dpi_to_dsi_timing(unsigned int dp= i_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; u32 dpi_hsa, dpi_hbp, dpi_hfp, dpi_hact; bool sync_pulse; int bpp; =20 - if (mode_valid_check) { - dpi_hsa =3D mode->hsync_end - mode->hsync_start; - dpi_hbp =3D mode->htotal - mode->hsync_end; - dpi_hfp =3D mode->hsync_start - mode->hdisplay; - dpi_hact =3D mode->hdisplay; - } else { - dpi_hsa =3D mode->crtc_hsync_end - mode->crtc_hsync_start; - dpi_hbp =3D mode->crtc_htotal - mode->crtc_hsync_end; - dpi_hfp =3D mode->crtc_hsync_start - mode->crtc_hdisplay; - dpi_hact =3D mode->crtc_hdisplay; - } + dpi_hsa =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + dpi_hbp =3D mode->crtc_htotal - mode->crtc_hsync_end; + dpi_hfp =3D mode->crtc_hsync_start - mode->crtc_hdisplay; + dpi_hact =3D mode->crtc_hdisplay; =20 memset(dsi_cfg, 0, sizeof(*dsi_cfg)); =20 @@ -518,8 +510,7 @@ 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; @@ -549,11 +540,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->crtc_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; + dpi_htotal =3D mode->crtc_htotal; if (do_div(dlane_bps, lanes * dpi_htotal)) return -EINVAL; =20 @@ -569,27 +560,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 int nlanes =3D output->dev->lanes; - int mode_clock =3D (mode_valid_check ? mode->clock : mode->crtc_clock); unsigned long req_hs_clk_rate; 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->crtc_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 @@ -635,8 +624,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 @@ -654,10 +642,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, true); - if (ret) - return MODE_BAD; - return MODE_OK; } =20 @@ -996,7 +980,7 @@ static int cdns_dsi_bridge_atomic_check(struct drm_brid= ge *bridge, adjusted_crtc_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVS= YNC); adjusted_crtc_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYN= C; =20 - return cdns_dsi_check_conf(dsi, mode, dsi_cfg, false); + return cdns_dsi_check_conf(dsi, mode, dsi_cfg); } =20 static struct drm_bridge_state * --=20 2.43.0 From nobody Mon May 5 04:02:24 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 2827423F422 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:38 +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=1743600700; cv=none; b=KvOTlCNRVDQf0e89X4YK7dnoTQl5eLYdvmEJVLT0eX9V93sVgM/ca5UddRcEBY28rctdcdQwmLNHnL7jo+cSsFzxdum/BCWAraPMpqqPHJu36QMEZzPlZknHwFba9+R+SWbyW3koM7rMz+1JCF6316CU0qsBRETo8Q25xRO9XfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600700; c=relaxed/simple; bh=NRiwCTHabbz+p81RY4GkrUeFRgzVyalNNk+RjRNcX5o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MLpZd6QCqOtWTfvWwrs6kt5lelYnAY2nvn2E7HWJnKGzKolaRLwdUl1fKYV4wJ3rayHvof3zlOALBJcK94hNlUKp3T2+M1qN3LQT0nYAEitcfa0G9XKewNPoVMJJC3XLWSluK7r6XV+VqagAzzg3WtJsB3vxp+7bwxz5SwI6ZF4= 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=R1/1KBEx; 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="R1/1KBEx" 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 CC2ED2462; Wed, 2 Apr 2025 15:29:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600577; bh=NRiwCTHabbz+p81RY4GkrUeFRgzVyalNNk+RjRNcX5o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=R1/1KBExfXLQe7uYnRhUvVpwZ+6WqqfR911hFWDEsBUCpjWJThhB4tgINO8soYh+a PWOlEM5yeGFgsWDWQcxsM9xOejA4m7yTQ2JeohXkRxCOpbWaBimDai6YdRza/S/q15 u79JPCyG7NtIXZxUQ0jhQRoLq1tv23Mzqp6FIyKM= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:55 +0300 Subject: [PATCH v2 13/18] drm/bridge: cdns-dsi: Do not use crtc_* values Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-13-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3185; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=NRiwCTHabbz+p81RY4GkrUeFRgzVyalNNk+RjRNcX5o=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwgEslEJvR9Rc4ug3uU1XdfqYhOfdiaYk1nK v92vYpcJQGJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IAAKCRD6PaqMvJYe 9dWUD/9ATKuRhrpAf5dk5R+z7ZUL3tLNU0Wz7KDGDLopcmgFyARqJwBE8pSz7MkS61+QZHM1rzK NL6V46R64DfI+o4NrGiCkFbc895Y4E8c4ycvQCYoDSsfW0qtzP7eNdnPys7NKy2KNgtG35daKSt MRIz+ZRzGe7nkfTFXa9ansPgtUQzEbXeokS33MrjKQDfkxwixFGqsLwOUBYUqTZQY9n66oXimIJ mFtusdSOJjrBb/jjmsS92crz2AzxUlFNwPqTmsuJv6ShWK8SWjdl0cxQGO+Aki7gNfh5JiC3E17 A/uSf1J/ODbH56U3CZ/9T0gElZh04t36our6aAS1EKZj/LxmU1k0y/sC/ZdE7h0NGKU+J99GzPT LFjx1PoAfj0hQbmT5uu/rh/yATkZHif9Ix5slv69LPEnfVOvx3Enne2sJX9b6ZAedgYb0PyZ+/Y sMef89w3/Ax6m1eCNvNQ9Ieu7SWv999/Uku99PINMBHouCnQsn0+hu5DzNG7qClAbmXFEXDivRj tEN5+dSjXc10GQPu2BURm64p1pzxcRUkI2hT3porcs9WJatofIcOExJMxTpp3ty8zx1uB4V9fXS C/fM/giH9iGBa4d3nYUXeKqKT1/94sZb0lOyRokUOjML1KNpshtJkVjsSMJOq/Ehud7ir/74B6i 3p4sfe9y0bgLSAw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver uses crtc_* fields from the mode. While I think in the enable-path this would be correct, I do not think it's correct in the check phase, as the crtc hasn't had a chance to update the crtc_* fields yet. Overall, my understanding is that the crtc_* fields are relevant only in cases where we have things like interlace or double pixel mode, where we have a logical and real timings. We never use those with DSI, so the crtc_* fields should just always match the normal values. So, drop the use of crtc_* values. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 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 cf783680b1b4..220213f5cb09 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -476,10 +476,10 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, bool sync_pulse; int bpp; =20 - dpi_hsa =3D mode->crtc_hsync_end - mode->crtc_hsync_start; - dpi_hbp =3D mode->crtc_htotal - mode->crtc_hsync_end; - dpi_hfp =3D mode->crtc_hsync_start - mode->crtc_hdisplay; - dpi_hact =3D mode->crtc_hdisplay; + dpi_hsa =3D mode->hsync_end - mode->hsync_start; + dpi_hbp =3D mode->htotal - mode->hsync_end; + dpi_hfp =3D mode->hsync_start - mode->hdisplay; + dpi_hact =3D mode->hdisplay; =20 memset(dsi_cfg, 0, sizeof(*dsi_cfg)); =20 @@ -540,11 +540,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->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->crtc_htotal; + dpi_htotal =3D mode->htotal; if (do_div(dlane_bps, lanes * dpi_htotal)) return -EINVAL; =20 @@ -572,7 +572,7 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 - ret =3D phy_mipi_dphy_get_default_config(mode->crtc_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) @@ -822,11 +822,11 @@ static void cdns_dsi_bridge_atomic_pre_enable(struct = drm_bridge *bridge, writel(HFP_LEN(dsi_cfg.hfp) | HACT_LEN(dsi_cfg.hact), dsi->regs + VID_HSIZE2); =20 - writel(VBP_LEN(mode->crtc_vtotal - mode->crtc_vsync_end - 1) | - VFP_LEN(mode->crtc_vsync_start - mode->crtc_vdisplay) | - VSA_LEN(mode->crtc_vsync_end - mode->crtc_vsync_start + 1), + writel(VBP_LEN(mode->vtotal - mode->vsync_end - 1) | + VFP_LEN(mode->vsync_start - mode->vdisplay) | + VSA_LEN(mode->vsync_end - mode->vsync_start + 1), dsi->regs + VID_VSIZE1); - writel(mode->crtc_vdisplay, dsi->regs + VID_VSIZE2); + writel(mode->vdisplay, dsi->regs + VID_VSIZE2); =20 tmp =3D dsi_cfg.htotal - (dsi_cfg.hsa + DSI_BLANKING_FRAME_OVERHEAD + --=20 2.43.0 From nobody Mon May 5 04:02:24 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 B163C23F413 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:40 +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=1743600702; cv=none; b=R3UTHeeqxNml6GjXgxgQy7LA+IXjlQafnyxy+pMnx+woWjLbDyYMCy1j67s7JLlp+73anMxWr1NvG82hIkEN4cxHmFethl9NRuTaVLSGnkgY+MVYYNr5Kjvh4TAG3OQevmYvx9l+h53Q3txxt1cCjTx8ZN8p6Os212h4Wvknb/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600702; c=relaxed/simple; bh=IIDKgphBR8Z+MRb90fam19Jh4edh+nhVkDzVKuQW/rY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cdM7Hs2z2q6lsJxKXfGFBoH3U7QAIgI7a5mvV1qC0jT/6AOLK+dCyd5pfQRzsMxy0Q2IOU8VvM/QWsNwkUxeRP6t8R5UvLiXxSlNYFEX1Yz7AiQNhISVTOO7j5pe3QPMBnNg5ixWDUcvVUsBMH5kwitC5TvkGEN4QWg/9F+ARw4= 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=ewM5tG4L; 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="ewM5tG4L" 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 0252D25EC; Wed, 2 Apr 2025 15:29:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600579; bh=IIDKgphBR8Z+MRb90fam19Jh4edh+nhVkDzVKuQW/rY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ewM5tG4L4CyDBKjLkSnh7Rr31MZz7fmacUoHMQMziVAXkIX7yD4ZQ3F3N6n2wdbv/ HzBWmdmMDQX4K8btkW357qlv0EAC8avTWIiuEe+GPkZzs6wkWK/efBrhmIbzC16QJd yumSuguNH+GOaHJSTfiUiF4x9yycs/yfPj50xyts= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:56 +0300 Subject: [PATCH v2 14/18] drm/bridge: cdns-dsi: Use videomode internally Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-14-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4546; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=IIDKgphBR8Z+MRb90fam19Jh4edh+nhVkDzVKuQW/rY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwgE/Bvc7519Sav63c0+qQ9diO63TzZq0FQt bfZL9SrcD2JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IAAKCRD6PaqMvJYe 9VncD/9A2IAiZBtLzbDk1nuBNFg+G5KREDNLS8B4zuMU3PYMZaXqSsVkC7XtLfeNq7K7sqyUFWJ TOAu0B5cX6KqWqSMjJMk2O40xrNBfoC8X9LSwk0dWekEvYkgk0MEhk4bx0aPrV90XQh5hWSc7ou nn17eQTJm+++ctGVPCQ2CEyoRnA5yxyuXUDKWV+wM+lE7kEL6sQXrfN66aUHV0HEwKgbVM9kQIk YK1KXS/Ing/hhEn5jwAeq1AzInP6wNvu6UOMjz1qYKoRWobkYw4ccAPK6+X47PTq1L6mVw1oBgs 9CRLlRS/jhzzURio7IedIGL9oW8U9EihYeYo3ao8IKygZDQH288xX3qLDLVWLypVcktZvmIiMDA zX273jVH+BrLsooaYPk5fGLMVOCNEWjtlvPpcQSL7IBjZKgKM0Gv7fa6Q5cCSx47tTcrY3TOoYQ v5atM+ropp+FV9Q4MV8Onvw3hur+38pdZB+ZNzb471C8dWlsGmnS/tKbBkIH8CfkuH02nVNXAnw F4P882pDYymsmLJlp7C8ND3GaRFXNmSJZ34rlpoxjfP7zwXDGP9O7F3b8xTmIELWjalqC4Pi99p KJZs7q9fY092WkvCOtBMdb2vqDeDzPYhSjj/siufqhqs1ZAVbphJU7BHmUA6j+Q8khTD/IExsPH XBrm62/72WB7nMg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The drm_display_mode is a bit difficult one to use (we need hfp, hbp, ... instead of hsync_start, hsync_end, ...) and understand (when to use crtc_* fields). To simplify the code, use struct videomode internally which cleans up the code. If in the future we want to use crtc_* fields in some code patchs, that can be easily achieved by creating a videomode from the crtc_* fields, and no change to the functions that do the work is needed. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 31 +++++++++++++++-------= ---- 1 file changed, 18 insertions(+), 13 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 220213f5cb09..1a30e2f7d402 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 <drm/drm_drv.h> #include <drm/drm_probe_helper.h> #include <video/mipi_display.h> +#include <video/videomode.h> =20 #include <linux/clk.h> #include <linux/interrupt.h> @@ -468,7 +469,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, + const struct videomode *vm, struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; @@ -476,10 +477,10 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, bool sync_pulse; int bpp; =20 - dpi_hsa =3D mode->hsync_end - mode->hsync_start; - dpi_hbp =3D mode->htotal - mode->hsync_end; - dpi_hfp =3D mode->hsync_start - mode->hdisplay; - dpi_hact =3D mode->hdisplay; + dpi_hsa =3D vm->hsync_len; + dpi_hbp =3D vm->hback_porch; + dpi_hfp =3D vm->hfront_porch; + dpi_hact =3D vm->hactive; =20 memset(dsi_cfg, 0, sizeof(*dsi_cfg)); =20 @@ -510,7 +511,7 @@ 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) + const struct videomode *vm) { struct cdns_dsi_output *output =3D &dsi->output; unsigned long long dlane_bps; @@ -540,11 +541,12 @@ 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->clock * 1000; + dpi_hz =3D vm->pixelclock; 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->htotal; + dpi_htotal =3D vm->hactive + vm->hfront_porch + vm->hback_porch + + vm->hsync_len; if (do_div(dlane_bps, lanes * dpi_htotal)) return -EINVAL; =20 @@ -559,7 +561,7 @@ 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, + const struct videomode *vm, struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; @@ -568,17 +570,17 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, unsigned long req_hs_clk_rate; int ret; =20 - ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); + ret =3D cdns_dsi_mode2cfg(dsi, vm, 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(vm->pixelclock, 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); + ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, vm); if (ret) return ret; =20 @@ -975,12 +977,15 @@ static int cdns_dsi_bridge_atomic_check(struct drm_br= idge *bridge, const struct drm_display_mode *mode =3D &crtc_state->mode; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; struct drm_display_mode *adjusted_crtc_mode =3D &crtc_state->adjusted_mod= e; + struct videomode vm; =20 /* cdns-dsi requires negative syncs */ adjusted_crtc_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVS= YNC); adjusted_crtc_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYN= C; =20 - return cdns_dsi_check_conf(dsi, mode, dsi_cfg); + drm_display_mode_to_videomode(mode, &vm); + + return cdns_dsi_check_conf(dsi, &vm, dsi_cfg); } =20 static struct drm_bridge_state * --=20 2.43.0 From nobody Mon May 5 04:02:24 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 513C6241132 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:42 +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=1743600703; cv=none; b=YTOkBHeLf3Fvy6b+LXTTSlfroMwxnLH96MJP2LqZM63wDFYddu85x0W/h1L84sR4YLgIzdx2uMN5afl5TssNJirB02Ws4l9YJOHvdKw+TA6KqpQEh0tK1RZCHSyT0TZM+6smcVAlX2PqBj39g1qdvTTSoh+0qGDYo9Zyx3wkcH8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600703; c=relaxed/simple; bh=zjC+aAWjyFx4oAnilSfbgcfpfJMsawdKHCZ+xTpDXuM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Amn4wihRvY4kx3aS/FDHUJMFjL3ISPqFTl+uqDpxlZ77gcEjdsvKRnMBnK+xMCRFGPbi1+dqAfLrbAG+NagTB5xTSH4IiDx8po1Um27DCmNOf33Rjh9GESEjSLn8fVBaXcJeuHHzQHldlwt2tDqJaXG7MgsVzZispr+GostMULs= 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=b7o3idKS; 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="b7o3idKS" 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 35CF12692; Wed, 2 Apr 2025 15:29:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600580; bh=zjC+aAWjyFx4oAnilSfbgcfpfJMsawdKHCZ+xTpDXuM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=b7o3idKS0CIJQd12xZbk7pkr0of6nj4kKkfYGnSnpF9d1m1BgY6zY2CVKZTfzhna8 ym+7EhY/dbBmLXRWEtzYiWS6s06nZl2ME3w0WKnbWDo1RVhLRWM1r5kYgJ+DLsiGL2 oOQ76yaJqqkiw/TURKl0xC+3dnfSkPbUN5S6P9SA= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:57 +0300 Subject: [PATCH v2 15/18] drm/bridge: cdns-dsi: Tune adjusted_mode->clock according to dsi needs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-15-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3451; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=zjC+aAWjyFx4oAnilSfbgcfpfJMsawdKHCZ+xTpDXuM=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twgxd2MQmPHmB+c5V8EHmEtb/Ma4NoNeJFFH okaajIj6dWJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IAAKCRD6PaqMvJYe 9Xx6EACr8w3Wy7tZ/mGjzMi0iBuMtACBi7M6u7ZNYYoUtx/hNI41wyELcxkWPziEPXXLHZLI5o5 OOKRhxBVbnEt9WFKmE9ZnxvQzawOOScnBxxud50n4zKDEu1aPKgIRjw7hGfQCcOTZ9quTJq39hw f6ZMrJrbFPJM6UwIzg5oO+BUHgNGKexWgaysxdgoI4sRzCfHmHiKHgqK1g38mfFtMsALClSyvEe x6DEcBiw3qt/cS9nbe/IuFjrWkZOZ+j0qokplEw4sRH07iVhhP81nBskOsn/tQCxc+IVCCRm2xf MnvlVBpy7M/QvkXTGIbERLTn9Bdo2QF9iJsp2EeJoSYtYqvCnuN99uHJhe0gOy3OILL2RykXdW3 INUxLKoOK1z7nNf/pm4Go9S/bkU/lOJMR5UbYzalGsKfHErQQhQDkiCPttQ7y9O/F73A8jH+7jx w48VCs3dlBTRim+PocvtPz/zMtV6YZ4blKIcwmj0SxCQzR0m4x2EGLVmQL88reiAT69e62NDyDL zH/TruhsK3IHC0K4OzSTZegYYxmkXt9UIpntFfIvzXBbjCyJUEyTBpiclqjjkGdxZJvi8PITvWT 1zgSwuf0ZduAO2cYHpqUu4hMq2q5PpV495OFhcS0juJXkeUk3LG0UYWGd47LSnYS87A0rgBPtUM in3ZgGDEtOn2rUA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver currently expects the pixel clock and the HS clock to be compatible, but the DPHY PLL doesn't give very finely grained rates. This often leads to the situation where the pipeline just fails, as the resulting HS clock is just too off. We could change the driver to do a better job on adjusting the DSI blanking values, hopefully getting a working pipeline even if the pclk and HS clocks are not exactly compatible. But that is a bigger work. What we can do easily is to see in .atomic_check() what HS clock rate we can get, based on the pixel clock rate, and then convert the HS clock rate back to pixel clock rate and ask that rate from the crtc. If the crtc has a good PLL (which is the case for TI K3 SoCs), this will fix any issues wrt. the clock rates. If the crtc cannot provide the requested clock, well, we're no worse off with this patch than what we have at the moment. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 39 ++++++++++++++++++++++= +++- 1 file changed, 38 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 1a30e2f7d402..9f4f7b6c8330 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -966,6 +966,28 @@ static u32 *cdns_dsi_bridge_get_input_bus_fmts(struct = drm_bridge *bridge, return input_fmts; } =20 +static long cdns_dsi_round_pclk(struct cdns_dsi *dsi, unsigned long pclk) +{ + struct cdns_dsi_output *output =3D &dsi->output; + unsigned int nlanes =3D output->dev->lanes; + union phy_configure_opts phy_opts =3D { 0 }; + u32 bitspp; + int ret; + + bitspp =3D mipi_dsi_pixel_format_to_bpp(output->dev->format); + + ret =3D phy_mipi_dphy_get_default_config(pclk, bitspp, nlanes, + &phy_opts.mipi_dphy); + if (ret) + return ret; + + ret =3D phy_validate(dsi->dphy, PHY_MODE_MIPI_DPHY, 0, &phy_opts); + if (ret) + return ret; + + return div64_u64((u64)phy_opts.mipi_dphy.hs_clk_rate * nlanes, bitspp); +} + static int cdns_dsi_bridge_atomic_check(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, @@ -978,12 +1000,27 @@ static int cdns_dsi_bridge_atomic_check(struct drm_b= ridge *bridge, struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; struct drm_display_mode *adjusted_crtc_mode =3D &crtc_state->adjusted_mod= e; struct videomode vm; + long pclk; =20 /* cdns-dsi requires negative syncs */ adjusted_crtc_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVS= YNC); adjusted_crtc_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYN= C; =20 - drm_display_mode_to_videomode(mode, &vm); + /* + * The DPHY PLL has quite a coarsely grained clock rate options. See + * what hsclk rate we can achieve based on the pixel clock, convert it + * back to pixel clock, set that to the adjusted_mode->clock. This is + * all in hopes that the CRTC will be able to provide us the requested + * clock, as otherwise the DPI and DSI clocks will be out of sync. + */ + + pclk =3D cdns_dsi_round_pclk(dsi, mode->clock * 1000); + if (pclk < 0) + return (int)pclk; + + adjusted_crtc_mode->clock =3D pclk / 1000; + + drm_display_mode_to_videomode(adjusted_crtc_mode, &vm); =20 return cdns_dsi_check_conf(dsi, &vm, dsi_cfg); } --=20 2.43.0 From nobody Mon May 5 04:02:24 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 A3B2224166F for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:43 +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=1743600705; cv=none; b=cTJn6XjQDnO+74eeIxt6TAmn+TrVUvgU1Zal0NciMY3+HhFYxqFsZLDVFSHjm3D6hdC3zcrNEu5RjE7QaauPHkMJQh78pwa2VJp6BxzFAH3FCrjyWsKlVkkLuPtfi26K9jGpBRLlmvtvZz1qmMbyr1+wBvhk09/NwTM593ZzwoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600705; c=relaxed/simple; bh=+KTrHkkHrlimkcuE/FGh2M7ak/aUnyOtjsNsvIRCm1s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=czTmC/PHg2qx4RosdGAsPo7A+5WaMGFq5CFqQLVSr71CkbjmjcOXQmdxNkGUvH6SG/dnQk9rr2E42ooXXPPejNAiyePKJL/PxaYAt/rRq1KI6ahtx4xriJWvOtFqbxWSa1ZCSfNYXsJaZVamrW2NdLyB5mByoracCgukpjoSVbE= 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=KReOvD8U; 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="KReOvD8U" 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 62F422698; Wed, 2 Apr 2025 15:29:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600581; bh=+KTrHkkHrlimkcuE/FGh2M7ak/aUnyOtjsNsvIRCm1s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KReOvD8UBUeNb4TVNPZi3w7epXAWXa8CQ6tymla2A8scpJyDrNnhKWSkCkZC+NvIg r6Hcz7EBf+kDdtzGoJCob+ix9NOGyywADfVduYXShIZZOkNatRGwquGna/HdFrXIE8 3MjrU5A4+TqyyhjAJHMKI31TW7S3Jt9pbyVnLpf8= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:58 +0300 Subject: [PATCH v2 16/18] drm/bridge: cdns-dsi: Update htotal in cdns_dsi_mode2cfg() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-16-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1931; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=+KTrHkkHrlimkcuE/FGh2M7ak/aUnyOtjsNsvIRCm1s=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwhN5j4jZl/ZKghFpGwQA9aKuBkv7UUMeIZg //p2OMD6FCJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IQAKCRD6PaqMvJYe 9RYvD/46o6fQlsJtr+9aj4Q6Ts7/IJrOxvcT6mMmD6lUQVvXa7Ynf2b/o4JNz6tQjI+gEbzKHCI cx9UNePzH0FvE7KWgSJM5BwQXpfGGWLCZ4DNA1D4iAXqT5waV4h4GdUy8W/a4QiSfTbNUb9TiVH 29MklhHz5J4Ym137sEWvNJThBN7apXJ2BkclO1pRJn1ifoqpFOlFgFUblcVMUDTa+vsq41chC+/ FwMlJQ76WeOo4Q0tnwKngb/OR4cQXLq87PcV1rvUZrGaZgY2a2kMRD2j3Zmx+ZCZDphtzKwzASq zn24x7kaACDShjTLWBrLggZ2ZfcbnvgetyjNv2GhbCnDsQljZQ9Qax2rjKLsFLHO9zWN8Qlbdji EEWcbH7/VjnriplhR53pqQryqF+IkRPEvEskekIrHwsPIdUCLrZeMrVASyfzpuUm8Km0NgJhDTc kioMznHDpPj+BXsjObYAhQI8MUlLGCTmWfiavevta36k8rVAyhf6UcpvgZH+OwAkIxYZ1QyS8H5 qfxBDSRut3xctntzs9y90FB37SJBx31Y8vP97MO1lW8IehMZG+JizYNosZ5qPKFv1vgMRfKgt+9 RikYljNybLo6UTOzxCGFVN3UOL+7qFBHhHM9IS83VDl8Kyr9mHs4bZ4KBAtc23vFlCn8b+Q2uQN Tiy/aDfaxJVFWzg== 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 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 9f4f7b6c8330..2a272fd8ea3e 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -505,6 +505,15 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, =20 dsi_cfg->hfp =3D dpi_to_dsi_timing(dpi_hfp, bpp, DSI_HFP_FRAME_OVERHEAD); =20 + dsi_cfg->htotal =3D dsi_cfg->hact + dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; + + if (sync_pulse) { + dsi_cfg->htotal +=3D dsi_cfg->hbp + DSI_HBP_FRAME_PULSE_OVERHEAD; + dsi_cfg->htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; + } else { + dsi_cfg->htotal +=3D dsi_cfg->hbp + DSI_HBP_FRAME_EVENT_OVERHEAD; + } + return 0; } =20 @@ -522,15 +531,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 - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { - dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_PULSE_OVERHEAD; - dsi_htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - } else { - dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_EVENT_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 Mon May 5 04:02:24 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 3D3D9241663 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:45 +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=1743600706; cv=none; b=e87EDNgKHogNGESIpGWEbQ4VWo3eZskGu0caKA+9ZfOEzw7ozeoFrUIiHOJ4EBs0l7rS+nnZZXpc3yELs6AlfZt8T+xuMXLK2WA4PBeIKeuWYebs+pmXduOQD/gBlbeBHmksRto9rtqFNEKDswnYDi2NVA0Uy5o+h2csVpqzN5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600706; c=relaxed/simple; bh=0UMDOMabLZ6w671e9DBv9w+zXTuDsT+vgr965ZIFrf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=U7XJnqvlNPIw7kpxjE5zO1zraFse4UWC3pOoazqiMro8RrMCk4UkpajD5DlR/XYPZZctEBxKMOzxSafLG3k02dyduOggjVNBBK1TJJuSpyM3kOT8knjEj/6TwNFHPP6A9QIOlmHSHYBfme/xVrFEL4DKeIFPuK8LbyTKBcfe1uI= 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=A2zIJxOS; 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="A2zIJxOS" 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 90C11245A; Wed, 2 Apr 2025 15:29:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600582; bh=0UMDOMabLZ6w671e9DBv9w+zXTuDsT+vgr965ZIFrf0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=A2zIJxOSh4XVWTvMJjRDfkBgB+RsfQj9wPFsDZqSx/cwEdq2D6oJi3/WjZj4DmrzK niZnSSrBewdKqqgVcqZ87sYgvZc4J+73igz1XDCsRtxNu8Gl+Huq4Ejz5Q6mUQQdF8 PPSy3pMDjP9zgnxhzS2/+6a3ZIqOdslnYT/jPiR8= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:30:59 +0300 Subject: [PATCH v2 17/18] drm/bridge: cdns-dsi: Drop cdns_dsi_adjust_phy_config() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-17-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4069; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=0UMDOMabLZ6w671e9DBv9w+zXTuDsT+vgr965ZIFrf0=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7TwhA7IHku8zSkXQAiP3vYa5d/Pj3/ZzKiRIC UCck3nPKAqJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IQAKCRD6PaqMvJYe 9Xr1D/9ID3aP/PTXdAJ9kg0Ake+CiIWI00AUqxp4kNOx32MwSOyBawJTDy91HQOQPpVSJP1QLc2 j+ag3vKPjHTk3tC9GAqpDbPZ67pTDFDz1n013N4ZSBNWaP7RLyB4rtgWsuuUpFEUBb6ubDioYny RPuNACMPIlX0Tbg2lcGQ62t8Kh0zrSx2bSXsYold6e39CPd3qE6xTXwmUpo72k7ikLNYkXBW93Z WUUmUTNa5oWJBGdfyCTFtMUaLYZuOEiAXI5U6QvoORyoKj/BBWgDf7Hl3LudV40XugembxyDxoy nDL1WL5RdCDVeb6LiSqD2VW/XqHS6oYzN/aHjvNOzABDqrsY+P9wv6Sz+OjGNcYmHJXRibeO+nt GtPVvhDc2P/oJlJO8+Ke6UokDrW2gbUrUWtLseXMySLX95lmtWVaAG5w5RQFPFDv5/YUawOOfdh 1Y1PZSFxbkXncOOXnWqS93iiRboyuNQqhyE+2Cx1yKnAdbC+NvFJmtP8WId1aOg1vWjLPJvErkh Tt7ueZnezqSgiQicSiiAIw6bLNL/PfzfRUFBnKS2tNmBh+Iw5psVaP683XjPUrMlpeb8Xu+K45M 2Pj4BmqdIHp80AsG5xaf6rwL+9O4FpDyxzAzrXpF7CcKoCd3Q9pW4StAcgCZkamQ2cga4j9/v/w Jof9f4/350hpgLw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 cdns_dsi_adjust_phy_config() is called from cdns_dsi_adjust_phy_config(), 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 <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 48 ----------------------= ---- 1 file changed, 48 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 2a272fd8ea3e..0bb55584cb44 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -517,50 +517,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 videomode *vm) -{ - 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; - - 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 vm->pixelclock; - dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; - - /* data rate in bytes/sec is not an integer, refuse the mode. */ - dpi_htotal =3D vm->hactive + vm->hfront_porch + vm->hback_porch + - vm->hsync_len; - if (do_div(dlane_bps, lanes * dpi_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 videomode *vm, struct cdns_dsi_cfg *dsi_cfg) @@ -581,10 +537,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, vm); - if (ret) - return ret; - req_hs_clk_rate =3D output->phy_opts.mipi_dphy.hs_clk_rate; ret =3D phy_validate(dsi->dphy, PHY_MODE_MIPI_DPHY, 0, &output->phy_opts); if (ret) --=20 2.43.0 From nobody Mon May 5 04:02:24 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 D61242417D3 for <linux-kernel@vger.kernel.org>; Wed, 2 Apr 2025 13:31:46 +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=1743600708; cv=none; b=ANE/RZ/axZzUkjtFT3WYEafzX6fCXjaCdJ7ipZgbU2uSjJQmOTDJfRHgbuQYyiNeX9BazAKAgOJ+klZxz+6YNQKNoehqzmLlqEOhAjXhSvYf/67KcaTyh5KoXgNJILHEPCaz61I1Shwpia/wuLj61xnE8gZb+wVtsKyY6saimbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743600708; c=relaxed/simple; bh=QpPNCE/E/KWQolKtCOFkofej8djB0ueW3MJ0KSDshcA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N9usYtsv3JhehPYScXSoFJnEGBKWWE2FR62G2D0rG39mxxdoxP6f43yNcEfvwMJS0t2pUPjacBTmEd3728nFJOTh77eRGpNd1yxV/C1eq393GecWfXgCJ5eFDGrJZSyfNUgBNSuXkOqIBwqbezYRiOHgSmfTn3AmwW0Qan4s1ck= 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=fc/RSj74; 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="fc/RSj74" 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 B86A51990; Wed, 2 Apr 2025 15:29:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1743600583; bh=QpPNCE/E/KWQolKtCOFkofej8djB0ueW3MJ0KSDshcA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fc/RSj74kn2Z3On0haOJO3gvM7cC5TQZ0nxONkvQACRv5I4s04Pa4FdtVks8ZZShg w1KfwoWjAjSWz1WOkE1wzHfhSbuvtrmNrdICdrHW4sg6Mp7kK1JSR9Fm9OWCEZrxJF ezYHtgZ4QK7wLpjxjoP932DiMQ7Ks4yhkbfkzwLg= From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Date: Wed, 02 Apr 2025 16:31:00 +0300 Subject: [PATCH v2 18/18] drm/bridge: cdns-dsi: Don't fail on MIPI_DSI_MODE_VIDEO_BURST Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250402-cdns-dsi-impro-v2-18-4a093eaa5e27@ideasonboard.com> References: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> In-Reply-To: <20250402-cdns-dsi-impro-v2-0-4a093eaa5e27@ideasonboard.com> To: Jyri Sarha <jyri.sarha@iki.fi>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>, Kishon Vijay Abraham I <kishon@kernel.org>, Andrzej Hajda <andrzej.hajda@intel.com>, Neil Armstrong <neil.armstrong@linaro.org>, Robert Foss <rfoss@kernel.org>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com>, Jonas Karlman <jonas@kwiboo.se>, Jernej Skrabec <jernej.skrabec@gmail.com> Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini <francesco@dolcini.it>, Aradhya Bhatia <aradhya.bhatia@linux.dev>, Devarsh Thakkar <devarsht@ti.com>, Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1141; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=QpPNCE/E/KWQolKtCOFkofej8djB0ueW3MJ0KSDshcA=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn7Twh5vAfBQ7KP6xDJ0AYdDCj4qpAPSm4xNsLM sdkiIAenmuJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ+08IQAKCRD6PaqMvJYe 9e0wD/4hTNNGZmT2+7Ef56h6RsvSyeVqQ+ZHg1Afvpmc5Agd9Ul2FJExtTibZ7yjgpO0xllrw2s xmTLn7BTXFcXGpmFBM9LIyDBLIz72HGGy1emB5sufTZUtHeqhivMgNMGpESREKbfQ+CBmUyOWkZ LaGocgPaO+VQAMW3LCbUEJFVOXt977Xv49fwvVHwmD4Rnx2TzOXAjgPtDbfBtZnDSHgqAsQ5E4s zdiwL+NmawGYTkIBUWnOgobGyDZbpJ2IHhZx4pPc5a/udzbpOIPvjFk9lRvpgBs3FOLo4yJcEkm 14QE+44dS9dwQbZgYnAqgvK/cCyRb3YnhusF9e4YZ5Etds0IgbPutzVyIWZwdxtqHPfCFXUOCgp MbxbJpgRF24qM3P08HviR680vB6bezdW05fMdESs8IKqXOziq7tcOzu6WMawyZx3tkQzGjz43q+ BXWQ6oZdc+Y244AphNtyB4HJSkHSnXd9L9it7o+an+Xnsfw/ZfXC2zycU6UjqDBYPEcBnlbngLM VBlhoNhtCijeUibdL2g1Fx+6W21YO5ZsdjTqjz6gRwxY6MLG3aWsvvS1jfDo75CYMQ1YKLZLltS ZLjBLR8SJvrZA4m0bakJz3UQ4P71JElxhrJSadd5tL3XEs/FWKcYVRNFZesYjhIbEVS+Snr0Oxd 04a9Tf/+FQoLsfw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 While the cdns-dsi does not support DSI burst mode, the burst mode is essentially DSI event mode with more versatile clocking and timings. Thus cdns-dsi doesn't need to fail if the DSI peripheral driver requests MIPI_DSI_MODE_VIDEO_BURST. In my particular use case, this allows the use of ti-sn65dsi83 driver. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Tested-by: Jayesh Choudhary <j-choudhary@ti.com> --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 4 ---- 1 file changed, 4 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 0bb55584cb44..4b77a203b608 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -1057,10 +1057,6 @@ static int cdns_dsi_attach(struct mipi_dsi_host *hos= t, if (output->dev) return -EBUSY; =20 - /* We do not support burst mode yet. */ - if (dev->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) - return -ENOTSUPP; - /* * The host <-> device link might be described using an OF-graph * representation, in this case we extract the device of_node from --=20 2.43.0