From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 66871C83F17 for ; Wed, 23 Jul 2025 10:06:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CFBA610E794; Wed, 23 Jul 2025 10:06:05 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="IyPWKTUl"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3E4010E78E for ; Wed, 23 Jul 2025 10:05:43 +0000 (UTC) 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 B4981111F; Wed, 23 Jul 2025 12:05:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1753265104; bh=fIos1sJRvSwScwZuDc+xyilJlDcV87vU4OaAE7gJEVM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IyPWKTUl9iEWsioY9DdHKB2Jiah/x6L+QrowG77h+mDWqcuKnn0dKC1sZXSLfAsKU hENjQ43DXfWexzJpP8GVHLc9xdLGdZY1OHgv3zF7KWS9BTRnJ12JoD9TA23fZfDdVe rbtFgG9/5OXfgn5TPCnj/pU3vLvXgINWCfDFm8oA= From: Tomi Valkeinen Date: Wed, 23 Jul 2025 13:05:11 +0300 Subject: [PATCH v5 05/15] drm/bridge: cdns-dsi: Drop crtc_* code MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20250723-cdns-dsi-impro-v5-5-e61cc06074c2@ideasonboard.com> References: <20250723-cdns-dsi-impro-v5-0-e61cc06074c2@ideasonboard.com> In-Reply-To: <20250723-cdns-dsi-impro-v5-0-e61cc06074c2@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=6510; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=fIos1sJRvSwScwZuDc+xyilJlDcV87vU4OaAE7gJEVM=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBogLPqVZYAbbf4uhzLQqYSbcWlgdfraKC9Fdv+8 ERYsxC8OmSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaICz6gAKCRD6PaqMvJYe 9R5uD/94AOCk/0SE4i7Q3YlDd60chTaSZNfvo0NxYWgaTP8NlmDB5IB+frblDC6xnH8K7NDJ3qD aCYMGtq3gYIgTy0pPzMpXOKesWpmORkYPf7TmzttYP+0pBeBznaCtSu8qXJ8zJoUK1WoqZ1BcO1 m5PjZhkEbZrvyEFYsD7Vg0P9sPSHM8fSOcJtddpnPMeadxkX/tiX/2F/81d/50CYGNDCcHDZFRt stWSpx292JBC9ePjf8mTlw9GsmP81ZNZDEFb3pwNow229YmcrlO+uUku30kXOFF255bG8s89Iqe K+NQqN/Uiw2X7UNXWREkmC3yxYVvs+70L2JeJFOTtH1QTs7/Vxyr1WjOIRNlMGinr/hPztsDr16 hnnTWjbB39bSCfrk9ivyNjSFKrTLpgp44+K/8pcX0AMDN8usRFDgSXlOCFqpqaJncoeo2967Gxu S5Ugg/uroAFSTCFwQ48UQmkdx+/7fAzstlGdPo4uiT4PrMopLekoggcnl6qazmlsPkeVcuu35za jCxUy88jpa+Ueuqv003Z4PgKWUjt1jqmiJiZkrfIc0NDK+4nb2C/iLOI7qv/T8K963BXxZNOkIW rUX9R+RafJEbPujd4+lo22TPlV55JntiELpitX8qrCL/UXS7M1w22viLvAffxdVBe8QD43GQr6f zxoLXNX6wTRcntA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" With recent change the cdns_dsi_check_conf() is always called with mode_valid_check = true. We can thus remove all the code related to the "false" paths. Tested-by: Parth Pancholi Tested-by: Jayesh Choudhary Reviewed-by: Devarsh Thakkar 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/drm/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); } -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, 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 = &dsi->output; unsigned int tmp; @@ -492,30 +482,20 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, bpp = mipi_dsi_pixel_format_to_bpp(output->dev->format); - if (mode_valid_check) - tmp = mode->htotal - - (sync_pulse ? mode->hsync_end : mode->hsync_start); - else - tmp = mode->crtc_htotal - - (sync_pulse ? - mode->crtc_hsync_end : mode->crtc_hsync_start); + tmp = mode->htotal - + (sync_pulse ? mode->hsync_end : mode->hsync_start); dsi_cfg->hbp = dpi_to_dsi_timing(tmp, bpp, DSI_HBP_FRAME_OVERHEAD); if (sync_pulse) { - if (mode_valid_check) - tmp = mode->hsync_end - mode->hsync_start; - else - tmp = mode->crtc_hsync_end - mode->crtc_hsync_start; + tmp = mode->hsync_end - mode->hsync_start; dsi_cfg->hsa = dpi_to_dsi_timing(tmp, bpp, DSI_HSA_FRAME_OVERHEAD); } - dsi_cfg->hact = dpi_to_dsi_timing(mode_valid_check ? - mode->hdisplay : mode->crtc_hdisplay, - bpp, 0); - dsi_cfg->hfp = dpi_to_dsi_timing(mode_to_dpi_hfp(mode, mode_valid_check), + dsi_cfg->hact = dpi_to_dsi_timing(mode->hdisplay, bpp, 0); + dsi_cfg->hfp = dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); 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 = &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 = 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 += lanes - (dsi_htotal % lanes); - dpi_hz = (mode_valid_check ? mode->clock : mode->crtc_clock) * 1000; + dpi_hz = mode->clock * 1000; dlane_bps = (unsigned long long)dpi_hz * adj_dsi_htotal; /* data rate in bytes/sec is not an integer, refuse the mode. */ - dpi_htotal = 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; /* 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, 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 = &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg = &output->phy_opts.mipi_dphy; unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes = output->dev->lanes; - int mode_clock = (mode_valid_check ? mode->clock : mode->crtc_clock); int ret; - ret = cdns_dsi_mode2cfg(dsi, mode, dsi_cfg, mode_valid_check); + ret = cdns_dsi_mode2cfg(dsi, mode, dsi_cfg); if (ret) return ret; - ret = phy_mipi_dphy_get_default_config(mode_clock * 1000, + ret = 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; - ret = cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode, mode_valid_check); + ret = cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); if (ret) return ret; @@ -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; return 0; @@ -663,7 +637,7 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; - ret = cdns_dsi_check_conf(dsi, mode, &dsi_cfg, true); + ret = cdns_dsi_check_conf(dsi, mode, &dsi_cfg); if (ret) return MODE_BAD; @@ -1000,7 +974,7 @@ static int cdns_dsi_bridge_atomic_check(struct drm_bridge *bridge, const struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; struct cdns_dsi_cfg *dsi_cfg = &dsi_state->dsi_cfg; - return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg, true); + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } static struct drm_bridge_state * -- 2.43.0