From nobody Thu Oct 9 10:48:52 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 DFBC929AB05 for ; Wed, 18 Jun 2025 09:59:48 +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=1750240790; cv=none; b=VS/i9LGHckeE2a8bxeGgoHtDhNRVRgKwUMX7+cBkJj1Zb10Q4yA2dPtpPSnZE0dvvsPwsMK0pqgFWrlM3MbeN37vtoGIkfvgxSF6EtsGdTYiDVjUQKpw/l7tj5WCbrSJEF9TQnKZunRZEkkMUuHX00/3a2/Qln4hucdZzBTqA/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240790; c=relaxed/simple; bh=FWUWDnpjlkxGHO3YQdvVG0CCWNqk21NP6KjDjK9R0fI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E+ojLqDr6O9H4ogF4KroUXKBIXhy2e4wU2NFweFXI7xoWlfU0XU+XJ5yYnIadirua/buJg5pnbn3pNC/o1Iic1s6sqxf1hPf0M00jqGqkkvzPv9U/yfuNErBE0qucdyUUy8yFCthmxX/WRBuuIB1IgYT3BxNxlcscIfwPX3VUSc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (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=WpH1UvjJ; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (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="WpH1UvjJ" 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 5149518E2; Wed, 18 Jun 2025 11:59:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240768; bh=FWUWDnpjlkxGHO3YQdvVG0CCWNqk21NP6KjDjK9R0fI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=WpH1UvjJzUQ3O3TMtI2+EfcT05fINjgFGHBgY3tRsZoSjRAtWrq0z7V1zrsQmn1P0 KzjljsdV2UUsVflSP11qg/aCHA9+gpSmXxftSPLynwrjcmHWIvFOYQpdou0Oxr72p0 Uhl22/U4B/RBGu5SRYrnaoFYqURJyvMehiRiKGvc= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:10 +0300 Subject: [PATCH v4 07/17] drm/bridge: cdns-dsi: Drop crtc_* code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-7-862c841dbe02@ideasonboard.com> References: <20250618-cdns-dsi-impro-v4-0-862c841dbe02@ideasonboard.com> In-Reply-To: <20250618-cdns-dsi-impro-v4-0-862c841dbe02@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary , Dmitry Baryshkov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Parth Pancholi , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=6412; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=FWUWDnpjlkxGHO3YQdvVG0CCWNqk21NP6KjDjK9R0fI=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo3+8XjjaXvbc/omLdVaKcZnOVeV0BbXpsb43 f6+QPTofayJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/gAKCRD6PaqMvJYe 9QAcD/9mBy0GDfyL6Zio0NiXfwMfKgIfBIc659j+2GkoP+rlfxD/1uKeA3lSuX5tB5Tva54nsqu 4jilbzqSZiWSykKnRLkJNqSsWxBU3dmtMiPii2ue/1ELNB6zkMoXAv0004izA9QVWOLQyDmu4LF a8Em7bsdltNrmJ4YIsmdQHp1hed1+d9wuV+kOi8b0k2IRx7ZzzEy44/B5YU/BvSz5SKoJAO7t72 tqpnijNGJDWfeQjVIv68knmHUMXjQHZDKwsvlgqjIPc9uz/t5xZpRzdSi1/L8xofqH7dl2sVnRf eE1GpNSfs7+i1h9mrIe0rtXYqqkvKc7QzHebi2rVr1MtEBv9YOzrFdE0eaYbC79bxSzs7lrpT3H b32YTrVhxJSxpTAdykH+EvDsi2sD3s9Io5k973icqHBLcGS+bZBXc8qifYcKGwWnpCweNRUoy7u hRTnXVsBoXCA0LGpj9v47yxPFSbEmJaN+85HL7kx5JwyJS4ZxwfoxJgBbzCcJylw5uOkorBVRgT FH6OZTZVSfkjgBCI3DuIFPX/voDqyXPCT+GzGevttHsMvu2jHsFnAApaYix4jVVSxdm+1TyQAp+ lP4loqnvNX0Xn0k5XOyTk84BPjSMsW/6EYU7N3/AvwerhnQe7a/tT6VuN9ija+jnnmgndlqv9gv oSqF9nXGBbqgmUg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 With recent change the cdns_dsi_check_conf() is always called with mode_valid_check =3D true. We can thus remove all the code related to the "false" paths. Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 60 ++++++++--------------= ---- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 0c7ad05b6e53..eae9469ef431 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -452,15 +452,6 @@ bridge_to_cdns_dsi_input(struct drm_bridge *bridge) return container_of(bridge, struct cdns_dsi_input, bridge); } =20 -static unsigned int mode_to_dpi_hfp(const struct drm_display_mode *mode, - bool mode_valid_check) -{ - if (mode_valid_check) - return mode->hsync_start - mode->hdisplay; - - return mode->crtc_hsync_start - mode->crtc_hdisplay; -} - static unsigned int dpi_to_dsi_timing(unsigned int dpi_timing, unsigned int dpi_bpp, unsigned int dsi_pkt_overhead) @@ -477,8 +468,7 @@ static unsigned int dpi_to_dsi_timing(unsigned int dpi_= timing, =20 static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; unsigned int tmp; @@ -492,30 +482,20 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, =20 bpp =3D mipi_dsi_pixel_format_to_bpp(output->dev->format); =20 - if (mode_valid_check) - tmp =3D mode->htotal - - (sync_pulse ? mode->hsync_end : mode->hsync_start); - else - tmp =3D mode->crtc_htotal - - (sync_pulse ? - mode->crtc_hsync_end : mode->crtc_hsync_start); + tmp =3D mode->htotal - + (sync_pulse ? mode->hsync_end : mode->hsync_start); =20 dsi_cfg->hbp =3D dpi_to_dsi_timing(tmp, bpp, DSI_HBP_FRAME_OVERHEAD); =20 if (sync_pulse) { - if (mode_valid_check) - tmp =3D mode->hsync_end - mode->hsync_start; - else - tmp =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + tmp =3D mode->hsync_end - mode->hsync_start; =20 dsi_cfg->hsa =3D dpi_to_dsi_timing(tmp, bpp, DSI_HSA_FRAME_OVERHEAD); } =20 - dsi_cfg->hact =3D dpi_to_dsi_timing(mode_valid_check ? - mode->hdisplay : mode->crtc_hdisplay, - bpp, 0); - dsi_cfg->hfp =3D dpi_to_dsi_timing(mode_to_dpi_hfp(mode, mode_valid_check= ), + dsi_cfg->hact =3D dpi_to_dsi_timing(mode->hdisplay, bpp, 0); + dsi_cfg->hfp =3D dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); =20 return 0; @@ -524,14 +504,12 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, struct cdns_dsi_cfg *dsi_cfg, struct phy_configure_opts_mipi_dphy *phy_cfg, - const struct drm_display_mode *mode, - bool mode_valid_check) + const struct drm_display_mode *mode) { struct cdns_dsi_output *output =3D &dsi->output; unsigned long long dlane_bps; unsigned long adj_dsi_htotal; unsigned long dsi_htotal; - unsigned long dpi_htotal; unsigned long dpi_hz; unsigned int dsi_hfp_ext; unsigned int lanes =3D output->dev->lanes; @@ -552,12 +530,11 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, if (dsi_htotal % lanes) adj_dsi_htotal +=3D lanes - (dsi_htotal % lanes); =20 - dpi_hz =3D (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000; + dpi_hz =3D mode->clock * 1000; dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; =20 /* data rate in bytes/sec is not an integer, refuse the mode. */ - dpi_htotal =3D mode_valid_check ? mode->htotal : mode->crtc_htotal; - if (do_div(dlane_bps, lanes * dpi_htotal)) + if (do_div(dlane_bps, lanes * mode->htotal)) return -EINVAL; =20 /* data rate was in bytes/sec, convert to bits/sec. */ @@ -572,27 +549,25 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, =20 static int cdns_dsi_check_conf(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes =3D output->dev->lanes; - int mode_clock =3D (mode_valid_check ? mode->clock : mode->crtc_clock); int ret; =20 - ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); + ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); if (ret) return ret; =20 - ret =3D phy_mipi_dphy_get_default_config(mode_clock * 1000, + ret =3D phy_mipi_dphy_get_default_config(mode->clock * 1000, mipi_dsi_pixel_format_to_bpp(output->dev->format), nlanes, phy_cfg); if (ret) return ret; =20 - ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, mode_vali= d_check); + ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); if (ret) return ret; =20 @@ -610,9 +585,8 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, * interface. */ if ((u64)phy_cfg->hs_clk_rate * - mode_to_dpi_hfp(mode, mode_valid_check) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * - (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000) + (mode->hsync_start - mode->hdisplay) * nlanes < + (u64)dsi_hss_hsa_hse_hbp * mode->clock * 1000) return -EINVAL; =20 return 0; @@ -663,7 +637,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; =20 - ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg, true); + ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg); if (ret) return MODE_BAD; =20 @@ -1000,7 +974,7 @@ static int cdns_dsi_bridge_atomic_check(struct drm_bri= dge *bridge, const struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mo= de; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; =20 - return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg, true); + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } =20 static struct drm_bridge_state * --=20 2.43.0