From nobody Thu Dec 18 08:09:12 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C75D92BD590 for ; Mon, 14 Apr 2025 11:12:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629147; cv=none; b=NMPVszAYSVsMt4nOsexQDvjR/UdC/pWkI74YxHcvXBFl9c8pzhHwlB0KgTLHV4HnP/jNgerJkSjUHM6KBoMPRLlXR+ORr8fp5ZdHXrsrhl0DJcgXVvjQsqXIt5f114Qep0WzHFZTP1QLPBoGVNW4BpVTuVUd3KxNRY4aSLCvZEY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744629147; c=relaxed/simple; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V7vl53yu2Qkf4gcyrp5OLLAwqRWnOtdK+iQd9p16QNI4jkYkcrIX0TGd42pMWxguYfcdBAxDzTPI/X3NbWCXCEMXFZ6ri0J+WzfkBehQne5vkWKGd348vhJx4FRf5rljkjT4BCikxyOLc1WgLh/vkfMmS5Mwz9ZEMFHdXTnh5fU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=bQ23WiUn; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="bQ23WiUn" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2E3301961; Mon, 14 Apr 2025 13:10:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1744629011; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bQ23WiUnqRx4VT8DSbHYU8HNrS19k3vpcjRxrknoGHaVyKv1BwAQna5Xs1TBfWfHY s1wGr0Lq3NbBg70SH+4faCtghvsQzbet1Oq4tTTNfSoTUcEl8NaMHu6TDrzzqXXibR L+MBXn4cesA6M4CklYFFPEFCNR4V0rpOtqNflKYQ= From: Tomi Valkeinen Date: Mon, 14 Apr 2025 14:11:16 +0300 Subject: [PATCH v3 07/17] drm/bridge: cdns-dsi: Drop crtc_* code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250414-cdns-dsi-impro-v3-7-4e52551d4f07@ideasonboard.com> References: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> In-Reply-To: <20250414-cdns-dsi-impro-v3-0-4e52551d4f07@ideasonboard.com> To: Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Vinod Koul , Kishon Vijay Abraham I , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Jayesh Choudhary Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, Francesco Dolcini , Aradhya Bhatia , Devarsh Thakkar , Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=6355; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=5EGyGJnWI+/QCfDK21G2d3wbljoQGlKsUVbo0NY8UQY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBn/O1+35kJUwgCKIRHTiEhA7H9qZV309KhJjlw1 uz0HjikwFeJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCZ/ztfgAKCRD6PaqMvJYe 9S6RD/wOzrA4ogYFrY6jZC+ZDaX6zSRmDgRQE1sdJ4KODlcRM7KfFfri91CxGco3uTDuSij8K+h UfLnUqo+WluamwDB9U+Wo1YKzuajyri9RsnQ/Qf0dqFX0uUsVipUq3PY2RStbWvFIYDHUwgsRyl XmNRipGLYdhw8EKqOuYi7inun7WMdTAKD732JHsyCWtifoTfxxicB33JMM+6kd7QCmBdNiUMzVI gO+08bF0cpY9RiuLgsqC7lSz5J9Uk+FkCfNXqGUBKPnzOX9a90R8dNpdS+V9RdLD+NiTztzlL8L LKacsE/ElddiZczdGaSeubvqPQRk4w99gY2JPMLz61/Suf/k49oJYG257b1YqLaZM7UKRi4+G+6 htLQ6RniYpeh7kUkJRjWkwjo8VruV0eZaDuyKGivLEjjSl6D7M2Pcxx13COcsjtCClDlRelU3Jf ExIVCZyBMzsZvTiWcrWSi2pyZJpHS9ljMz6O2a7u5tsthy2soQ3XfUDcn8vWFOUdofHh6YalX6n rOsb9/fMxuZIwalKi88Ozib+I7bioB7TmUtjy+j2obNDa/2MVYnfhBe/iUcj4SrovHtKRtRyEAv HZSFTg12VqvTUuzrk3ZvloPcdirmd9RFsBjOykI1kmJhTuXBxfLpH298p7FPlVSnP1OkGPEDcP/ 3XBizVCawwLRylQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 With recent change the cdns_dsi_check_conf() is always called with mode_valid_check =3D true. We can thus remove all the code related to the "false" paths. Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 60 ++++++++--------------= ---- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 5315d572f7ab..d521ddb8bf75 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -452,15 +452,6 @@ bridge_to_cdns_dsi_input(struct drm_bridge *bridge) return container_of(bridge, struct cdns_dsi_input, bridge); } =20 -static unsigned int mode_to_dpi_hfp(const struct drm_display_mode *mode, - bool mode_valid_check) -{ - if (mode_valid_check) - return mode->hsync_start - mode->hdisplay; - - return mode->crtc_hsync_start - mode->crtc_hdisplay; -} - static unsigned int dpi_to_dsi_timing(unsigned int dpi_timing, unsigned int dpi_bpp, unsigned int dsi_pkt_overhead) @@ -477,8 +468,7 @@ static unsigned int dpi_to_dsi_timing(unsigned int dpi_= timing, =20 static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; unsigned int tmp; @@ -492,30 +482,20 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, =20 bpp =3D mipi_dsi_pixel_format_to_bpp(output->dev->format); =20 - if (mode_valid_check) - tmp =3D mode->htotal - - (sync_pulse ? mode->hsync_end : mode->hsync_start); - else - tmp =3D mode->crtc_htotal - - (sync_pulse ? - mode->crtc_hsync_end : mode->crtc_hsync_start); + tmp =3D mode->htotal - + (sync_pulse ? mode->hsync_end : mode->hsync_start); =20 dsi_cfg->hbp =3D dpi_to_dsi_timing(tmp, bpp, DSI_HBP_FRAME_OVERHEAD); =20 if (sync_pulse) { - if (mode_valid_check) - tmp =3D mode->hsync_end - mode->hsync_start; - else - tmp =3D mode->crtc_hsync_end - mode->crtc_hsync_start; + tmp =3D mode->hsync_end - mode->hsync_start; =20 dsi_cfg->hsa =3D dpi_to_dsi_timing(tmp, bpp, DSI_HSA_FRAME_OVERHEAD); } =20 - dsi_cfg->hact =3D dpi_to_dsi_timing(mode_valid_check ? - mode->hdisplay : mode->crtc_hdisplay, - bpp, 0); - dsi_cfg->hfp =3D dpi_to_dsi_timing(mode_to_dpi_hfp(mode, mode_valid_check= ), + dsi_cfg->hact =3D dpi_to_dsi_timing(mode->hdisplay, bpp, 0); + dsi_cfg->hfp =3D dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); =20 return 0; @@ -524,14 +504,12 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, struct cdns_dsi_cfg *dsi_cfg, struct phy_configure_opts_mipi_dphy *phy_cfg, - const struct drm_display_mode *mode, - bool mode_valid_check) + const struct drm_display_mode *mode) { struct cdns_dsi_output *output =3D &dsi->output; unsigned long long dlane_bps; unsigned long adj_dsi_htotal; unsigned long dsi_htotal; - unsigned long dpi_htotal; unsigned long dpi_hz; unsigned int dsi_hfp_ext; unsigned int lanes =3D output->dev->lanes; @@ -552,12 +530,11 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, if (dsi_htotal % lanes) adj_dsi_htotal +=3D lanes - (dsi_htotal % lanes); =20 - dpi_hz =3D (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000; + dpi_hz =3D mode->clock * 1000; dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; =20 /* data rate in bytes/sec is not an integer, refuse the mode. */ - dpi_htotal =3D mode_valid_check ? mode->htotal : mode->crtc_htotal; - if (do_div(dlane_bps, lanes * dpi_htotal)) + if (do_div(dlane_bps, lanes * mode->htotal)) return -EINVAL; =20 /* data rate was in bytes/sec, convert to bits/sec. */ @@ -572,27 +549,25 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi= *dsi, =20 static int cdns_dsi_check_conf(struct cdns_dsi *dsi, const struct drm_display_mode *mode, - struct cdns_dsi_cfg *dsi_cfg, - bool mode_valid_check) + struct cdns_dsi_cfg *dsi_cfg) { struct cdns_dsi_output *output =3D &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes =3D output->dev->lanes; - int mode_clock =3D (mode_valid_check ? mode->clock : mode->crtc_clock); int ret; =20 - ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); + ret =3D cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); if (ret) return ret; =20 - ret =3D phy_mipi_dphy_get_default_config(mode_clock * 1000, + ret =3D phy_mipi_dphy_get_default_config(mode->clock * 1000, mipi_dsi_pixel_format_to_bpp(output->dev->format), nlanes, phy_cfg); if (ret) return ret; =20 - ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, mode_vali= d_check); + ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); if (ret) return ret; =20 @@ -610,9 +585,8 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, * interface. */ if ((u64)phy_cfg->hs_clk_rate * - mode_to_dpi_hfp(mode, mode_valid_check) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * - (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000) + (mode->hsync_start - mode->hdisplay) * nlanes < + (u64)dsi_hss_hsa_hse_hbp * mode->clock * 1000) return -EINVAL; =20 return 0; @@ -662,7 +636,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; =20 - ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg, true); + ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg); if (ret) return MODE_BAD; =20 @@ -993,7 +967,7 @@ static int cdns_dsi_bridge_atomic_check(struct drm_brid= ge *bridge, const struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mo= de; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; =20 - return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg, true); + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } =20 static struct drm_bridge_state * --=20 2.43.0