From nobody Thu Oct 9 08:43:29 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 847FF28640D for ; Wed, 18 Jun 2025 09:59: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=1750240779; cv=none; b=fljukHghH/sCOA++Q/dKyFuiIz4z3cv1SAYSd+j6icv8M+uwjEKPKL2Pnbc/oc4cDLpx5pUSest2FdaacEtKC1dqnQvTFn0NlNEhx+tBGUpNFQTXi4rHg5Az1lxy8RJsvXAk+jScDWa5T51COGdsV/PWEHEhL7fAqgtDrSrN7/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240779; c=relaxed/simple; bh=2epr8ao5TAgZA57K71+fCAJlw3g10O4XWpdyeMJVQgI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RQOz0rGZgRZPxs6DhXboMkGFTg0Ak0QQ+UUFxBp1ma09E8DXISdVuXS2Vcw5LM9A0Nu6TIH101i2Zq+FMlj/NUpxJEoAk9SbuzmGjEFspe7qK2wCxLTIZZt0wd8gWM8awDKy2H27gdYWe2DWrpgwHOheoNvi8Vtrd7Ka0GI/5Hs= 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=NMZY4BLO; 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="NMZY4BLO" 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 9FCC8111D; Wed, 18 Jun 2025 11:59:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240760; bh=2epr8ao5TAgZA57K71+fCAJlw3g10O4XWpdyeMJVQgI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NMZY4BLOr6GDkKjrrVYFz1V4+/4HLXQy+SSfJ4E1Dggty75JUPmC9Zp8DxRDQGjpC n2nLzWRA/iQzn1c0BElwzK8O3RaN2xt631nGRoSiHydf/bR9RGKDqPL0l5KYo8eDlq sApgXdwuB+jsPrUpprahNIsYpAbq2leB52VW5FXM= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:04 +0300 Subject: [PATCH v4 01/17] drm/bridge: cdns-dsi: Fix the _atomic_check() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-1-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=1662; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=SXe0VxRuPHAxO1Ko/oDsuelobFJsNH8ZVsNaLWN6Eow=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo38amO3S0OMdIxHt3vE1hoJ0QkvgnTqfHdwk mbxJ98ktTaJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/AAKCRD6PaqMvJYe 9YSxD/95pwOCPNQnxndxfh7yb0dGnav6xqwiy1eFN9I8tGO9J6IgitbhzE/obVA8Byr+3ZSlW91 Rfs159+V0ToKFAkd4fU9dPDbfxoRg0ILCeV/VM0SERw3K8uTdyiyALhUnmhAlcJFlmPRGVsGZ3+ Bz7DFfBk9R4sG8nxfphqd0qklsxjkbAMDzOUNwfscD+5kwUYzxYAWZr8mzd1gaj8BQvyxtFv4pb x03MYldbisGIKuK+EvGNqSILppqGwz7BCBELPAdKgwB+t3+ClqVzOAkiauvZPQ2Y1Wx/xqE7Y54 OUM/wELqb1/g/DQA1DZltEHdu6EeExXJgMyiYLi3qL3XHPG8ITbVwNmLOw9RIsQS+e54988mG3q uOX408tXUa4NbbN0SyRzoKX7wmFaGCYUfIlf48D7zID5LGy4+TuqDjHeRAZqpZVO3UgCa0ommfo CQUfjYn1nKcg0VjF6PmOpEBI8QCUfsikU/jtTPq0IHFjcZ70S+MIUG2vw7061zz7A+D5Y5Lh7Ze GGSZ7tv/qpsSpK6uttDSRiByV6sgbE5TT5y5d4NQIyhPOTaH2VvbJV2d/vURUNGCg1rPq/ULKTE SlmqrccIQiLX5UVm3XZar+xn13TbAGjwRf+PBseJgihbwHmL3cbF2NkBdBVpx+06yuMqdLJleIp knbwmeevZzWbrEA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 From: Aradhya Bhatia Use the "adjusted_mode" for the dsi configuration check, as that is the more appropriate display_mode for validation, and later bridge enable. Also, fix the mode_valid_check parameter from false to true, as the dsi configuration check is taking place during the check-phase, and the crtc_* mode values are not expected to be populated yet. Fixes: a53d987756ea ("drm/bridge: cdns-dsi: Move DSI mode check to _atomic_= check()") Signed-off-by: Aradhya Bhatia Reviewed-by: Tomi Valkeinen Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 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 a57ca8c3bdae..695b6246b280 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -997,10 +997,10 @@ static int cdns_dsi_bridge_atomic_check(struct drm_br= idge *bridge, struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_bridge_state *dsi_state =3D to_cdns_dsi_bridge_state(brid= ge_state); - const struct drm_display_mode *mode =3D &crtc_state->mode; + 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, mode, dsi_cfg, false); + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg, true); } =20 static struct drm_bridge_state * --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 ED5FD2882B2 for ; Wed, 18 Jun 2025 09:59: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=1750240782; cv=none; b=PMrB37iFz2gPkJBOsPLVTp/XS4KU73fQWDOGyrNDq5jkIikgZvPCZ7zVadIbeHYXCSHdhzSh/f+maaO3a1ChmkBiicfqWbexfX6v9d1McKLv/0B2Xd+1yS7B2XW8ADipGdIPqYgLvgN6dkMlMsHLf17wfeFbg4ZNlOLxbBvhttU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240782; c=relaxed/simple; bh=TUWjk/+TL9jYKTUj3GcjEHPOCFzwRG3GYqF9h5mNZlw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=arl7Cbenpdsom6DDlueP/oQSzvx0JO3KIDDzn5zm4h947zJKvQE2SL7LxKzf684o0UHDeFxKba+cQRJh7NQAjJ17twBbe4kWNQ17vRqcpH9CCPTTTuKG6ronXJTJOprloloyLTH9v9UxJQoayeSplzsH8VbKMHs/LVWTZSVfCP8= 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=cgHDAz5A; 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="cgHDAz5A" 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 E543E752; Wed, 18 Jun 2025 11:59:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240762; bh=TUWjk/+TL9jYKTUj3GcjEHPOCFzwRG3GYqF9h5mNZlw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cgHDAz5AO0cJnQV3HJYDZyjgFXisLZFVYDWQr/JxZsPqRVJQTVZ8PtFuheyqBF1LR if557w53H7JrtNj7C9pUQM6oo07IP9luQmQz/rKwGIPpygn8BMs4n2f5GNtSO7Hc2M rIbnxd5zSOnsmfZ0c/C5DOP4d/bhoDZzUqHmItj4= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:05 +0300 Subject: [PATCH v4 02/17] drm/tidss: Fix missing includes and struct decls Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-2-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=2280; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=TUWjk/+TL9jYKTUj3GcjEHPOCFzwRG3GYqF9h5mNZlw=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo38C5zhrKujmVy6XgKslKFTxAnDEoAl2YpVw IlQjNaaQr6JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/AAKCRD6PaqMvJYe 9fw7D/9twN8cK5mpKNgpPNI4yEkWEu7tBOUDGh0Ui1SJOqapy6FDhLpiwzzDaDNb8Tk4tZ31LCl HMAhvqw88IlcoOarNcRgwFe5jcH5KQMLG5RYv1b0rAywhs9cRigrRXs9PybpwTXGBHEWtm0RUX/ xjK1cZv4Dtkz0vxow2utBckIrfoLMS5mMxVxYqIhwqTbpcSwLyNQFVwO0ilISlWnn5p49LXOj+5 UPQeESHxzK9YQgXzPlR59145SQbp2hIpepi23a+oiUePVeX6T/SbpwIPQE5dh2GVibh670T9BvJ SPflI321mZsnqMfj+e/eyj7X5YdjTfGFqSBEHhbctN/nz4m/0Kkq2sVOk7Mfh2R9QJJm52Lk8dm 2Jm+eGyzuAj7XFzNQT+jU7bJokJkoK+4Szqg2z1mXn4Pt5mY/nNp/xl+1CKFgjMkhh0v5rz7R3w yVNMn1xHIlEC2Y0TMnKtjwuRUk5OqHGiF9uin1PDQUf+p0zW2xKFVBkHeHdXqiMW3icgBvv5z31 mBlejpNfcR2foNqvGwSfsrCeM3mIljVAsLoYyCVST1gAyGEPHkcv1syFTeBFcIAKwkZttYq/lYn E0cEVx8xkIBLwapfVfUZJ5bc8aFWQTqQlFSB/abRX1N4WqUj5Hz/ALFO9RTnke2qiADf0m7wDJn qFENzb+28JoYUoQ== 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. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Tested-by: Jayesh Choudhary Signed-off-by: Tomi Valkeinen --- 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 28958514b8f5..be0b42e49b09 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -7,11 +7,14 @@ #ifndef __TIDSS_DISPC_H__ #define __TIDSS_DISPC_H__ =20 +#include + #include "tidss_drv.h" =20 struct dispc_device; =20 struct drm_crtc_state; +struct drm_plane_state; =20 enum tidss_gamma_type { TIDSS_GAMMA_8BIT, TIDSS_GAMMA_10BIT }; =20 diff --git a/drivers/gpu/drm/tidss/tidss_drv.h b/drivers/gpu/drm/tidss/tids= s_drv.h index 7f4f4282bc04..56a2020e20d0 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.h +++ b/drivers/gpu/drm/tidss/tidss_drv.h @@ -9,6 +9,8 @@ =20 #include =20 +#include + #define TIDSS_MAX_PORTS 4 #define TIDSS_MAX_PLANES 4 =20 diff --git a/drivers/gpu/drm/tidss/tidss_plane.h b/drivers/gpu/drm/tidss/ti= dss_plane.h index aecaf2728406..92c560c3a621 100644 --- a/drivers/gpu/drm/tidss/tidss_plane.h +++ b/drivers/gpu/drm/tidss/tidss_plane.h @@ -7,6 +7,8 @@ #ifndef __TIDSS_PLANE_H__ #define __TIDSS_PLANE_H__ =20 +#include + #define to_tidss_plane(p) container_of((p), struct tidss_plane, plane) =20 struct tidss_device; diff --git a/drivers/gpu/drm/tidss/tidss_scale_coefs.h b/drivers/gpu/drm/ti= dss/tidss_scale_coefs.h index 9c560d0fdac0..9824d02d9d1f 100644 --- a/drivers/gpu/drm/tidss/tidss_scale_coefs.h +++ b/drivers/gpu/drm/tidss/tidss_scale_coefs.h @@ -9,6 +9,8 @@ =20 #include =20 +struct device; + struct tidss_scale_coefs { s16 c2[16]; s16 c1[16]; --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 ED5912882AC for ; Wed, 18 Jun 2025 09:59: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=1750240782; cv=none; b=AivQHNp5JJCYbPdcYKRcdkCFaJbhPM9CyFRIloBf6WQcGGaJ08ZAwgcWHrr6IpyFdPUm/X+CigqqE6lLP1LPK2XFatPjmUtbZhgFFCevJEVxy9OEvLy8oPu7UaCDjj0PF+yskDycwrDh8SM9BoP45mZDhcNd8BG7Qy07e0XXCFE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240782; c=relaxed/simple; bh=FOWHSRDkQD1bUvtU+nnwl6eQjS6QhU0ViuG9LUXBNWs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UZStYcwTJ9xEVScjg/ciFekZ3cIMYzNavyuNKfm5ViApmrjpgqR29G+J+QAFJvGTbCRRBThp0g3LnRyE8VRForlciXflW/beGyvWuOuXQ4Pawd0AyY7Dji9weNQnR3gJOdW7WbLZj5P18Ghy1qjZ3f+8igUP10ffSvuubSjx1as= 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=r+KUzytP; 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="r+KUzytP" 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 33ECA14B0; Wed, 18 Jun 2025 11:59:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240763; bh=FOWHSRDkQD1bUvtU+nnwl6eQjS6QhU0ViuG9LUXBNWs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r+KUzytPQCFjcpGkMO8elwLCFy0SSbOEGNPDz/hdW5PotiEV/TEKC31jSBUnjjlEr cBA51hCH3tkhI3WIffw3h9+B8iPo6KTL37+27B3eh3bkHc5Kk8ssYcZSiF9xz4upmx bnMjnTshh6OxkiBdg+MDOHXqZw4vHMWbd9jwfg10= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:06 +0300 Subject: [PATCH v4 03/17] drm/tidss: Use the crtc_* timings when programming the HW Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-3-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=2609; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=FOWHSRDkQD1bUvtU+nnwl6eQjS6QhU0ViuG9LUXBNWs=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo39L30SKCSptkm8rKGeMS9Q2J2xZps/0US3U /i9xxNp4K6JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/QAKCRD6PaqMvJYe 9XCDEACa4ZSEgxTcRCRUts/Y7mzB5h362Q/ki9mitvBpxiL5h2Mut+wgefCn0izDRzoBdLZnC5w 9KV2pEuGj3yrSVbss/IC5t9eVq96oMmEynEC0cocB+Mxg/Ri/2ozOM4lsTySg+KkonEc9mL1JIT CQGyRpvAcs0xkbUMqNqlKSqA631gMvozlDKTIuLDYhx1SiT+Uu6wz57OC+Kzbz5H311ECZEb97M d6TOAwf6Cgyl7Smb20zCdCjJnNAcszdnW7rtPD+Y9s8GNC0fqUsNqE0HYYF54AesJ+H2YZckwNc E7jGdtvcGVL8gqVGLprpTtZ4PAvywvalK5ekN8RqfbArVQ3vi0PZiRlIR3y7Jf22BD6LEYmmIv4 vfpdtQv+fwqlufMIH/w9CiU9/hHOR5uBLnabyGKPc613IYYabAREA0tA9cmBfzJYs33ODiZTtUN 0xi5TD1I8FeDWbaaU0DnZGl3rWWHKkpE1IKDZWBWlCXUYSVpyD20do4MNcHHe5TnIrFajVLWGkB ecs/UwxDtDXk8X5T+4ZAZ+EmdcHll3Z2SvXgXp3Pyu01JHNe6VOVMSacxz4zxGjQyfN7m3bA75i LKXd5ignXLqoHB9XzKd7kHhM2FIZ8vE8xopmBFJwo+nc4Bcwcqpezb2+RQSaFH45DSVczf1H2I6 0i3/8ae1lwyXozQ== 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. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Tested-by: Jayesh Choudhary Signed-off-by: Tomi Valkeinen --- 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 a2f40a5c7703..17efd77ce7f2 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 21363ccbd763..857edd6170f8 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -1194,13 +1194,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) | @@ -1242,8 +1242,8 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 = hw_videoport, FLD_VAL(ivs, 12, 12)); =20 dispc_vp_write(dispc, hw_videoport, DISPC_VP_SIZE_SCREEN, - FLD_VAL(mode->hdisplay - 1, 11, 0) | - FLD_VAL(mode->vdisplay - 1, 27, 16)); + FLD_VAL(mode->crtc_hdisplay - 1, 11, 0) | + FLD_VAL(mode->crtc_vdisplay - 1, 27, 16)); =20 VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, 0, 0); } --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 64EB328CF7A for ; Wed, 18 Jun 2025 09:59:44 +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=1750240787; cv=none; b=acaixAbl2RZE20dQZ4C2BQ/xM40UYLkoPl1AFulx5/npIb+65xKdMl4+sUupx2WKjFsa9q7oe+2HEWqEccm2NHbGP9Bu8vqgYiSaBI2ddVUXcIknqQ8yNySgogwPl+Hx7Z8UMNAZTjLUlnoL1mV4yboH6H2KM/LpVPms9sIEioQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240787; c=relaxed/simple; bh=SdsFxcP7kgRnccaBenP8n2NR26UZV0KXLNKJ22UARi0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gZoPZudl4Sql2WcDqr2wwCZOOEh863odPr9Z0MM2CFjBvZ6ghNRF0Uc96oWuplhPcPTFMbdeSFLe5RWd8qnpSbK2GIqHtVshneTs3dsTCKcv+gGaLD3raRWx7pphwbghdXjXDZea6FoSokdSlhVGVwTszD15K807A7AI6EaCULA= 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=YVsmBqoP; 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="YVsmBqoP" 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 79BFA156F; Wed, 18 Jun 2025 11:59:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240764; bh=SdsFxcP7kgRnccaBenP8n2NR26UZV0KXLNKJ22UARi0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YVsmBqoPGA3QhrXuNpkcqjwiWH1rnIWZUoKC8Bq73lg8IGWPM0mFkcD++pPczLSWn /b2gLDhLOu11yEnLLSDZOG9+IfLudpAxLjZZOJ5CK6ypaXwh8eAJOwF2X034s6J5rW oEhqmdZSPa812uHI43L0P9xJ1AQWPzqu7+395cts= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:07 +0300 Subject: [PATCH v4 04/17] phy: cdns-dphy: Store hs_clk_rate and return it Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-4-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=1374; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=SdsFxcP7kgRnccaBenP8n2NR26UZV0KXLNKJ22UARi0=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo39r9sodyAJ2tcO/X69aOfndhCXQftZPghxE Hmwz/4yT/qJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/QAKCRD6PaqMvJYe 9XrCD/9a3slbZN2powiZp5L/w9sEKj/2HZcjA2+hVNNc0EKvkmPweq7VVf7hKsLSBbcRDcK08q5 Dkqb6QRx93vi+9qkPSTFHveZmMWswfJkFN4lWSyNS+h1UeuNpFovZBQL2EozuDYEmFRsdTg/eqI dIM/Xegbc6M5kcENYqQSGQrEfzamkDdsOYp59hUqgHe6TXzi4jgMvtpWk9q8y1fMBDLm/jnKFXa H54kvMYKjH1zyBQF6oOJBrBsdBky3HgqXzzfSi7FW7FJNOItnDHZ368viXhNr4x/Vp5cI6BQY4z 1m1wFcdkIAk/6uZRynKGX+ncUJ+2829f1yrZrgREcwm+j3gfOkInMwCi7qj9TwIJFMRCDmqJyh7 KfRiEGSIMxg3QwAuw17/tFryeqH3htPTFQ9nDzuLVt9VznH0J6X4DvFqvLYU6QSTrOe0QWdMk3r PO7IbEP3KbO2k4D+zo/jeLjMD5tE/cWyhgrCyv049NQ/NKf+RT0uRY9s+o8FTta2aYOIg1LOhMi N2crEp63tVBSlSH9zpvzutnzelhKSWyKWem4d5v9RlwUBe88/CItMxDys823sJsD7GzaeX9njl9 /MO/X30FJaPvbeFLBqnRTsXDpudHRjrdrvEGOhnJpn1y+F7oRXWzvLJLnRw1TYvsrrRSTefliyN a6aSda0/qL5KuJQ== 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. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Tested-by: Jayesh Choudhary Signed-off-by: Tomi Valkeinen Acked-by: Vinod Koul --- drivers/phy/cadence/cdns-dphy.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/phy/cadence/cdns-dphy.c b/drivers/phy/cadence/cdns-dph= y.c index ed87a3970f83..f79ec4fab409 100644 --- a/drivers/phy/cadence/cdns-dphy.c +++ b/drivers/phy/cadence/cdns-dphy.c @@ -79,6 +79,7 @@ struct cdns_dphy_cfg { u8 pll_ipdiv; u8 pll_opdiv; u16 pll_fbdiv; + u32 hs_clk_rate; unsigned int nlanes; }; =20 @@ -154,6 +155,9 @@ static int cdns_dsi_get_dphy_pll_cfg(struct cdns_dphy *= dphy, cfg->pll_ipdiv, pll_ref_hz); =20 + cfg->hs_clk_rate =3D div_u64((u64)pll_ref_hz * cfg->pll_fbdiv, + 2 * cfg->pll_opdiv * cfg->pll_ipdiv); + return 0; } =20 @@ -297,6 +301,7 @@ static int cdns_dphy_config_from_opts(struct phy *phy, if (ret) return ret; =20 + opts->hs_clk_rate =3D cfg->hs_clk_rate; opts->wakeup =3D cdns_dphy_get_wakeup_time_ns(dphy) / 1000; =20 return 0; --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 2925828A737 for ; Wed, 18 Jun 2025 09:59:44 +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=1750240785; cv=none; b=d48ULkGQ4e8Zr8q4+yfcKFmurnoN97OoK0dnrnc0/EQX6EKvRBTBBy5qAZ/9QA40IcyG+PompjCPtvTezVGHz0A5mcdxoXgzQ8p+JOoZnyt15Oksi/nKaQ2xDITg9RLT4hgHq96WdBUUP8ueN/Q5fzMMiNNhjCLT2pLlsaBm+ys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240785; c=relaxed/simple; bh=SYQpfUDGcUI4Fjl3I7lrF+Wp1Q4tFzZwD9sXJK2XFV8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tVQVOsluTw6u7PUDNS0SXCl33+PJ089cheSoWk2eEbx5ht+1V8jOqi1C3JzqE10KI2Kp1/jVR/Id2fGyjg8vKjowTTDa4aYwqbtVUdossUOO/MQotAqaHh3Aw9u238nlZzlZi+EnnIY8ySs1VZslm2CuahH50sWfjEi4pFIDhRk= 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=CvMv2RWD; 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="CvMv2RWD" 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 BAB1D17EB; Wed, 18 Jun 2025 11:59:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240765; bh=SYQpfUDGcUI4Fjl3I7lrF+Wp1Q4tFzZwD9sXJK2XFV8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CvMv2RWDkGmJADN6SKWWihtOVW54n4or+EIOa53d8gkRgIhDxsqERaNrPzvcmllh7 6dgRbF6HjpzdXZEiDq7FNCj9JZf2iYYCwuPfCo2MzQH3eUNDc89/Gpl9h6qB8E7LX8 IC4BbdLC8uADXycBr9Sps2gHXSJzdH+08DE6HYgI= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:08 +0300 Subject: [PATCH v4 05/17] phy: cdns-dphy: Remove leftover code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-5-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=2285; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=SYQpfUDGcUI4Fjl3I7lrF+Wp1Q4tFzZwD9sXJK2XFV8=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo3+e0RBS4Kze29yVEHMxrbIx+D1OSdIr+dA5 cMRf0EHcnyJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/gAKCRD6PaqMvJYe 9UUND/9NRombRCIFomalMb4a0VX77dNdBckwFwdSbXbnt+iJgItXp11qEFzDji7Hgoa5Ch3lSYX ybMc1A5RE85MSv9QdU9SrId4ck1cqBPXBBYCYmVx3OROoEsX2jtZ122gkLe7uD4snwteKsNjVLR JfzBZJw4OynVvZfternW65/9UYTjRRZenNEgo192pvrZ3HszgSgDYJY0ihrLgVnTM1SjFYuWlsC RDYfwYPNpRsm3plEjRhVrIRF6epSy0Kz0+EeTgXwPuWurvI9IZnYtYbShiwfTx/GNeG+/6wzyY2 JSkljoaSkQZZwKcFGY+WArNHVdHBYYcLIbGfV5dfOyOuNuhw+0wAwPZ2wXeTwKOx+jK/3vMWQII F8fzx8GzpLKz+1FLVvZg/L1Z0l1gHV9yGbhodztTg8lIM/ph5kGIWdPlrYc3kE6lBeDYwMXUB4V hpDzBW6r+bS9UW9GulM88EJtm2OolyABVtE++pVRLQbjfzxlrqVycJFcnNGiPqMMi0+Ln37ehAw EJGg6z1agOB6c9/bFDBQ8qm4K51W16GGZYZy3I3qy65dAtoTkCMFjXOkS/eaEwYsts+IgiMr772 hitnLWK9h923lbPomP6P/S+FN+qIiOeiphNvW3PwcjMBoTwcynKY2yhqHt1K/KIjqJmO9GQ35G0 zp0Hqr9eEwuRoaQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The code in cdns-dphy has probably been part of a DSI driver in the past. Remove DSI defines and variables which are not used or do not actually do anything. Also rename cdns_dsi_get_dphy_pll_cfg() to cdns_dphy_get_pll_cfg(), i.e. drop the "dsi", as it's not relevant here. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Acked-by: Vinod Koul Tested-by: Jayesh Choudhary --- drivers/phy/cadence/cdns-dphy.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/drivers/phy/cadence/cdns-dphy.c b/drivers/phy/cadence/cdns-dph= y.c index f79ec4fab409..33a42e72362e 100644 --- a/drivers/phy/cadence/cdns-dphy.c +++ b/drivers/phy/cadence/cdns-dphy.c @@ -55,14 +55,6 @@ #define DPHY_PSM_CFG_FROM_REG BIT(0) #define DPHY_PSM_CLK_DIV(x) ((x) << 1) =20 -#define DSI_HBP_FRAME_OVERHEAD 12 -#define DSI_HSA_FRAME_OVERHEAD 14 -#define DSI_HFP_FRAME_OVERHEAD 6 -#define DSI_HSS_VSS_VSE_FRAME_OVERHEAD 4 -#define DSI_BLANKING_FRAME_OVERHEAD 6 -#define DSI_NULL_FRAME_OVERHEAD 6 -#define DSI_EOT_PKT_SIZE 4 - #define DPHY_TX_J721E_WIZ_PLL_CTRL 0xF04 #define DPHY_TX_J721E_WIZ_STATUS 0xF08 #define DPHY_TX_J721E_WIZ_RST_CTRL 0xF0C @@ -117,10 +109,9 @@ static const unsigned int tx_bands[] =3D { 870, 950, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2500 }; =20 -static int cdns_dsi_get_dphy_pll_cfg(struct cdns_dphy *dphy, - struct cdns_dphy_cfg *cfg, - struct phy_configure_opts_mipi_dphy *opts, - unsigned int *dsi_hfp_ext) +static int cdns_dphy_get_pll_cfg(struct cdns_dphy *dphy, + struct cdns_dphy_cfg *cfg, + struct phy_configure_opts_mipi_dphy *opts) { unsigned long pll_ref_hz =3D clk_get_rate(dphy->pll_ref_clk); u64 dlane_bps; @@ -289,15 +280,13 @@ static int cdns_dphy_config_from_opts(struct phy *phy, struct cdns_dphy_cfg *cfg) { struct cdns_dphy *dphy =3D phy_get_drvdata(phy); - unsigned int dsi_hfp_ext =3D 0; int ret; =20 ret =3D phy_mipi_dphy_config_validate(opts); if (ret) return ret; =20 - ret =3D cdns_dsi_get_dphy_pll_cfg(dphy, cfg, - opts, &dsi_hfp_ext); + ret =3D cdns_dphy_get_pll_cfg(dphy, cfg, opts); if (ret) return ret; =20 --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 824BA2853F3 for ; Wed, 18 Jun 2025 09:59:47 +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=1750240789; cv=none; b=u+J/UwMA2RIzxoVijugQiral0MJAjtqY04D8OPHNwscaN2mjnkFZTuFopPXrHMuHKRwCu6jMRdC1UWibrcy6YFDM6c6q3CmmJHnf5oMrRLoa3X7Q1TqbaR2am3nXW3aUscCWdkXQKizT6ILxFEKpO+ofknmrLHYmDY/DIfgdq9c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240789; c=relaxed/simple; bh=CyQv33b09RvHl4nOFdkuxj7qIGokAYoC0TXSVeU5XvY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZM7JBnpLaVyGgBjj6fuz54MHE7jV+bmRHj+WXhtkKS+/YHNWYHNajm5B+D+nSMQqckRuDoE85Yj8xi03ezSa9A2W7cSpINz3zRuE3aT/3wKdjMayAptswfe8G6CjylawIDi/wZLDUtd0bJ8ZpOCyblLTbvASxEuSONWTILlaWkE= 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=gCeF45A0; 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="gCeF45A0" 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 0814A17D1; Wed, 18 Jun 2025 11:59:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240767; bh=CyQv33b09RvHl4nOFdkuxj7qIGokAYoC0TXSVeU5XvY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gCeF45A0fmquNkacgBzrQ36gp1Qkx6DoBIX1zUHyJes/13JDf73ffOvaJ0U1AhMfW dlqVGnBC7TBOn3JTsB5VIa5JXURL144ihVYKDgB0sxLVef1BAyXpl7JdrRgtKygNIL OiZzSU/FDWVWH95x4JhlPSnFPWegBnRkVyKfQ6+I= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:09 +0300 Subject: [PATCH v4 06/17] drm/bridge: cdns-dsi: Remove extra line at the end of the file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-6-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=786; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=CyQv33b09RvHl4nOFdkuxj7qIGokAYoC0TXSVeU5XvY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo3+zRxirnMuQfMTECONQzyd7qv1sEh8AoZoK 6sbY60qyROJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/gAKCRD6PaqMvJYe 9UDzD/97Dz2GUH4Uu5er5xQvbd22dCoUAd/QUJlR3L10ujrOs/4quGGZNkmXEiVvBk3msxFMYz1 9GQhv03i87x+Q3hl/pivdm2VycLD0xW4qJelAoLLTFzLGZQY1OdD/pL9jvIXgRrBplOopb07yZ9 SJ3QeibiZnrljMAJ91ldn2yG6RKwHB9NDVV5crw1Mg9kYsqgGwJbZRqSVpdB31kAzq5Zx/oYNNU 7mIKMC528MwOQScUxAOA0uWCYstwKYx43HAg0P0nI3kqQrgrWsUKfGtfBSjhgch/UO0r9mxuxee Mxv0NpIrhfTKSuQ9kBZxHQ22korkLPO444Gnei9puRzeT/cv291MRw8OQPfqziAJLBctiV/bM8Y jqgKRCs+m/wCETZ0K2wAk6i4UvWRh5nJm6Sk91l9Pv85vOK3rmPXD5keFZm9SuMYqIVX3DIJj/J naMY2cfEmRAU0a7Ei0eVsxbzw3pkYkz8I7sSJDaM0dzIzR2uZtL0fJ7/rZ5ZbpunZMtMf49D/16 6WACrRxwhJqttSoj6AxzKqzWtJRwJF9WRhRD+aDX7nKxRkt2+FI79xUhTGWFzi4nG15Myq/fPDA uyLhpizWIzXEnDUYnfrAqM8sTuh6+p4/TvlEVaYc2dAhSB7BgYCoZAaznc7vVo0h8GutpNsFZGb G1t7g7hgtOtW3tA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Remove extra line at the end of the file. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 695b6246b280..0c7ad05b6e53 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -1442,4 +1442,3 @@ MODULE_AUTHOR("Boris Brezillon "); MODULE_DESCRIPTION("Cadence DSI driver"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:cdns-dsi"); - --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 Tested-by: Jayesh Choudhary --- 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 From nobody Thu Oct 9 08:43:29 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 BCF122C15AD for ; Wed, 18 Jun 2025 09:59:50 +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=1750240792; cv=none; b=DymJDL4t03U0KhvWbziwjrvwTdRePtIFGimWyixX7KUuvxBrloLevaGyMBYmh/MxK1ICzTxCpxs7teNn2bQB8OoVR/K3zkDHKsObUJ/wd4R5LIbjEicvDIHO6LWrqMjO2jZ+nTjhn4+gSAll9QdoEj2G0a0AH21bFdte4HjqbjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240792; c=relaxed/simple; bh=J+6mryuTRX2gB2Rgwr5vt3wvRXw/gjqeHL//L5Wxqhg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h3MagRiRa5w/KF/zE9OH93wLi+KQ+FBiatOL370yR1JvCKx35a/+TdyVYgUEnPJdH3AG1bNg1gpHcp0/QlWWND1qlEjdF7D3T6LW8NGVRcBI5SgWnGeQL8E6/EgBTLXcrdTG7TtvqV5i3kKwIxarIA5JWDc0VnwNyhrYoT0UuME= 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=T3iYIrar; 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="T3iYIrar" 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 998761C0A; Wed, 18 Jun 2025 11:59:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240769; bh=J+6mryuTRX2gB2Rgwr5vt3wvRXw/gjqeHL//L5Wxqhg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=T3iYIrar75xKvopy8iyPp682uIw3x4Y9FogbGQ7mismuvIRBMulfwMqJVHPZey7wE HHB93oOnGr6PgCJO3BzEKv+hbejUqy9sBhW/llHyDHBuVfdani2k7VEO8BVLD6nwlh U5pWGxOFQoZfc5sGY4s90fApu92lDoThyFgMVhUI= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:11 +0300 Subject: [PATCH v4 08/17] drm/bridge: cdns-dsi: Remove broken fifo emptying check Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-8-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=1912; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=J+6mryuTRX2gB2Rgwr5vt3wvRXw/gjqeHL//L5Wxqhg=; b=kA0DAAgB+j2qjLyWHvUByyZiAGhSjf+jRxOSwxnZRMFSceTkzN1h9dgwbT4lCoGBjujnNms6U 4kCMwQAAQgAHRYhBMQ4DD6WXv2BB5/zp/o9qoy8lh71BQJoUo3/AAoJEPo9qoy8lh71lpwQAIfJ VrMy5bauKUmd9xIUo0jiekemLRGhuaztMb+is2MO0QH8ErEsgc0IMiM8XMVtkq5Ca1FqOlwT8KB zkzM/10coueclGz+Z0zx/GW8Y18RBO7gtoysWorMmMt+ifiBAl0juBpPExXr9/UOp6ENDK0pe/Q 2Xp1yoTtxe9p+2KgVO3EC+RFU31r/62bX3YqOL8D+w3BgJ/vv4ajN8jJqBwcXG0JsLfG+nG06zM 6m12aWPYwhdLcN3xEboR6Y+eitY4Us7sBnpjbeJj1+DhgWZsFe37m2kYGKeP65M0a0MuKMZqdYv dPRWbg20uLx1dafO2ovAWvzsDvHijyqlHfX1DxMFKbMqJj4QOgqrXQAHlYsBA4xWFVAxyAFjcVy qzvYtrjs4Dk7xGtLkWTtYBjL7oK67BlLdpiP3UF3fvxIQNLj9i/uy2LHFFfRtDfbVT9CggJSdyR hNbURV9cqIix4TYLxRMhD/AbHpiqUHzKkfg/P5m7ZzwRmmDnohil5BXBi2pWEQfxh6uYKtATlO9 lui7zCmOPxb3nEuAu4jGtcdYrjAicjEDzOU0gyVMRmG2UYzSHe5o+NONbVNwTIBHAjT5MnvlpfF XBSXj0/Jw656GXz3n3llzxTKb9UVJihrZD5vP6vmbOGttmQtN3jGboqSlXzFNM1IEoXTqK/b4IU AH279 X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver checks if "DPI(HFP) > DSI(HSS+HSA+HSE+HBP)", and rejects the mode if not. However, testing shows that this doesn't hold at all. I can set the hfp to very small values, with no errors. The feedback from the HW team also was that the check is not right, although it's not clear if there's a way to validate the FIFO emptying. The check rejects quite a lot of modes, apparently for no good reason, so drop the check. Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index eae9469ef431..000c5a2367fe 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -553,7 +553,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, { struct cdns_dsi_output *output =3D &dsi->output; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; - unsigned long dsi_hss_hsa_hse_hbp; unsigned int nlanes =3D output->dev->lanes; int ret; =20 @@ -575,20 +574,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 - dsi_hss_hsa_hse_hbp =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - dsi_hss_hsa_hse_hbp +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - - /* - * Make sure DPI(HFP) > DSI(HSS+HSA+HSE+HBP) to guarantee that the FIFO - * is empty before we start a receiving a new line on the DPI - * interface. - */ - if ((u64)phy_cfg->hs_clk_rate * - (mode->hsync_start - mode->hdisplay) * nlanes < - (u64)dsi_hss_hsa_hse_hbp * mode->clock * 1000) - return -EINVAL; - return 0; } =20 --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 351FA2DE215 for ; Wed, 18 Jun 2025 09:59:52 +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=1750240793; cv=none; b=MOSIYxDh3MBn37h4NG1x+rwf4flPXYNaDzx5PxFDZt25gogrg6QEH7kiAMaGSlvr6hTYIdUqmSQIMO8kg/IU888DsDDaOhhwi5cJorPQcvYfGCyWNU9xe5L3K3ujsGD9Hn4aQiptj1NDhWOVYlh4U08rr+/yQAiy8UdEa4ix8jk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240793; c=relaxed/simple; bh=k9MwYoc1zOwO3F/NDWi15b97VWDuRARPG5PckYENJ90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RpLyJTRRzhGOLhRFfd7YfhEyO5OO6FReRShdGT+Kc/GpUGXcAdp2ycIKxJC9uQxvjSyhfTfIRJ48u1qbJn2V3TgGxSSnYKs50FPgDjazgZ8TpOGQKxz1TTWeo9j60s7BYpr8P4TxalRWmXD/j4rlehJBNgsp53J4a7HiFo8tFeQ= 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=FdyO0djb; 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="FdyO0djb" 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 DCDDC5254; Wed, 18 Jun 2025 11:59:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240771; bh=k9MwYoc1zOwO3F/NDWi15b97VWDuRARPG5PckYENJ90=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FdyO0djbuQFtdmZJ0G89bwh3E0Ym6ZCAuv3bVyuWA0SDCLeQp/zTrCMdq0yXoeNUv ZYwNMMc3nl2hX5lwHWQzUMauTw0vu+JAnIymxAKqOzrpZLT0GB9ZV4FC9N+YaeGeAr cWMaMAFl8USq7GuhOdfz52px7X6DZSssrLGJQBY8= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:12 +0300 Subject: [PATCH v4 09/17] drm/bridge: cdns-dsi: Drop checks that shouldn't be in .mode_valid() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-9-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=1636; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=k9MwYoc1zOwO3F/NDWi15b97VWDuRARPG5PckYENJ90=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo3/RBQ6cJvoLv5Vc8R66K8shy6mBvMy4mrKQ rwEpxU6I9iJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/wAKCRD6PaqMvJYe 9Rg3D/sE98W4rwobQCN8OYphUfVKya9wQtI+BpJwNCJV+05doVEOPyxvb920HjO5wrj5O9iBWyi MIUqfk9eXZsg7e6edGJZCejFLOdfIQ1GqWKqhwAUcS0adfUaeHzFawyhQ5F5qv385XeiYmFUH4W qiOtVKAUldHhghNjyHSSl37DSGaO+F5kjZ66pWz7VoYq1Fv1uJRBZk2cK7OypRHiLE+MbEIezQW vTig7Z/we3q3FsZSu/vcCV6txe7KynWlS3c+jfUdLyHdMR3vFIRYgrnbZK5oFBGk5Ccu07HYNSR 8ULDw78RUYtTnc2ViyUl5NInq9O7LKDHE8pBg5Mk440+2IwI+Qyzb5DSvVCo0YqYUfBgTUSoeFC 3l3iqvRnBvkpDJZ73JM2B8iqu6iHHo6naKmyLYI5+YX40ecQ9/qZwdmTU+J485NOWpSXH3w3Ibb o59B3WVm7qa/Bdjk/ys5O2tegAUNEvJqrpZzp/b/p1dwO//hiIVEkaUWHFYvvHZYqQoaMX9SFli Gp56rlZZbvyY7adrzOKd1xutPBERpxW3uIaLew6ZKds+xnIt6QsD3aF0iVr6RyIvQ6r+Im4BMYz aI7KCV8CObrzqa9EFxKDRr7DMqG9WyGAaKXoUwDfVghmzaaXUwmNrJwGflT6QjWlvdPwcO2Uprc c8S9BCPfHX825Ew== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The docs say about mode_valid(): "it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints" We're doing a lot more than just looking at the mode. The main issue here is that we're doing checks based on the pixel clock, before we know what the pixel clock from the crtc actually is. So, drop the cdns_dsi_check_conf() call from .mode_valid(). Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 000c5a2367fe..b2b6529b1c70 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -603,8 +603,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 @@ -622,10 +621,6 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, if ((mode->hdisplay * bpp) % 32) return MODE_H_ILLEGAL; =20 - ret =3D cdns_dsi_check_conf(dsi, mode, &dsi_cfg); - if (ret) - return MODE_BAD; - return MODE_OK; } =20 --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 358472DFF3E for ; Wed, 18 Jun 2025 09:59:53 +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=1750240796; cv=none; b=S2we+pgGdTQtko8eTzUf21Nlt8Fb+pz02m7SrOqCPLTJ0PWuZl4P+OarCu9M4cPRwoDIbMdL/cFpma/8a9j6H7GY+9lvqW0BPNUbCjZFTfeJudR1JmtOD/oqibiDf0Ii3h64AHShujOGY/GeF4d6gC4moxWsxRNMAslwXrzLJsg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240796; c=relaxed/simple; bh=oj6zxN/DaiB+xfnV2bQHrSQ1cRZOpHdgAlqJjJnAEgw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SE+Y+pXOt6G6O7avyWtYMI+xf3ys/OLl0U7a2/8NiOr1k6MiN+mxkYqu4uJ+z4HFD1Km+lexOjY+SjeeskwQ/YEMKRpj1QHI7XSUnNqLJREdTFnjQep0KvfB6Z24w5oKIANq0gep61I6y/jcgqUXk81J2Su44wTk4gFbFocKajw= 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=d56yAncQ; 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="d56yAncQ" 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 318F01FB2; Wed, 18 Jun 2025 11:59:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240772; bh=oj6zxN/DaiB+xfnV2bQHrSQ1cRZOpHdgAlqJjJnAEgw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=d56yAncQg2yYWIbrypCDWSYz1kGVEEdvCLPYUCzhgFICB80ET4q5O5o5F/cLT1B2A NMyN9FOi6s8RGojFND3/sZrMwOChZ4Cs71dWA2krLet9mpHqFVTADKcGvRjMSUBjjp /7iRZ5PEUb9WS8KW95bph5bPst6JQiTTz8Z5t6Zc= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:13 +0300 Subject: [PATCH v4 10/17] drm/bridge: cdns-dsi: Update htotal in cdns_dsi_mode2cfg() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-10-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=1954; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=oj6zxN/DaiB+xfnV2bQHrSQ1cRZOpHdgAlqJjJnAEgw=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo3/suGvBk17slNEtWBJ5PFTQAkWbkFlJqZtQ lSMaRhcEKSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKN/wAKCRD6PaqMvJYe 9WoDD/wI2gJv6JHMXyz2Q6LXHWvu4iUUDU9F6tliNxCyPfiFf1iUMXVjTsdMbR3GFyuayjOlXUM mnSMs2ZQww7gCj2w97NFsZ15FliiAo3ZmA4eUP3UnaE8aB9J5//vPYel1KlOEtW4oKmshZnkUX7 oG2SCg9JkzIrs1mSOm0f7bNp9dqIL/30KhWTIbxhr9iltjz32wOelYErASUTgTrTY0U40ZHP9EM oOtnNehGXP+ssOSEBzv2uAiVFhsKPHsvlKk4NUCq3L4l5rDjzMRdw4zWgo5wUNs5XZNs4Er1+wh JWfOQmnwrizO1B4OWhCcf5gmVqu7J8zb9N1w+8N42tnT3EKOYWW9ENd6mzzflbCBOIiGx5fJ1Ea y/jhVywC+N2sW/nnau3i/rpx8FFKcUiP5tHF9Yy0P4vX0/xf5uSWWB2i7LfN8Q/EEciZ+N3MjjV nr1itM5wWrh5nhwKJUsb8zBJC+jHs3sFxAqnjtr9dqAITN9XDQFAZ8XB8+Hl0JTJ0w12XQmwKqe Gyf8pgLZANW14fODE20DBdhDdeDFBgGVpCYgo8R0kuj3vYfM8lktJSVPkl4tvngfdNfOI1fLfeQ wiVGLYPlsII4MwIPK1OK9zUHHqrJwIIGKl2LnvlohX/AsPXC/3rWJZTWdNTnkNw6mEhfW9V7Gr2 qHi47bNK/gONoAA== 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(). Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index b2b6529b1c70..7103878df1e7 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -498,6 +498,13 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, dsi_cfg->hfp =3D dpi_to_dsi_timing(mode->hsync_start - mode->hdisplay, bpp, DSI_HFP_FRAME_OVERHEAD); =20 + dsi_cfg->htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; + if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) + dsi_cfg->htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; + + dsi_cfg->htotal +=3D dsi_cfg->hact; + dsi_cfg->htotal +=3D dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; + return 0; } =20 @@ -514,12 +521,7 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi = *dsi, unsigned int dsi_hfp_ext; unsigned int lanes =3D output->dev->lanes; =20 - dsi_htotal =3D dsi_cfg->hbp + DSI_HBP_FRAME_OVERHEAD; - if (output->dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) - dsi_htotal +=3D dsi_cfg->hsa + DSI_HSA_FRAME_OVERHEAD; - - dsi_htotal +=3D dsi_cfg->hact; - dsi_htotal +=3D dsi_cfg->hfp + DSI_HFP_FRAME_OVERHEAD; + dsi_htotal =3D dsi_cfg->htotal; =20 /* * Make sure DSI htotal is aligned on a lane boundary when calculating --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 945D92E3AFD for ; Wed, 18 Jun 2025 09:59:55 +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=1750240797; cv=none; b=jrIZIRlD9URlQNwhAYN6zCRWMF3U0GKpYXKD75fK3VIP1cqDvmByjeOIGA6oAAVC22q/GYCTiLXFq2yh6Q+Ewug71czw3jWWYxRJYCdsJTpLhYjAHHAnHtuVLiOGdNsl0kCDiz0rjJj4uywfLvOW2Y4tN0w4B/64GPRvESv+2Xo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240797; c=relaxed/simple; bh=nOIk7nVK0gYGQHYfnFn+wepDOT+LG8Fpmo2vGsvo32Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LQlX2MLUyBqMaCIplxytEkz7c9ErqGCKOwDhdDjlI+PwK01hOntnyVVIKCt8YlYISML1NOMTWx1CLNvikmz0DJLq3yNSidKrwifuxYBXq7zausE7WsZw45IfAuvOsBft7A1SEfPzygkoPtck1yy5goPOi4q7uWQGC4X2aoo3Yi8= 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=EpU1yAMP; 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="EpU1yAMP" 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 79B6B5278; Wed, 18 Jun 2025 11:59:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240773; bh=nOIk7nVK0gYGQHYfnFn+wepDOT+LG8Fpmo2vGsvo32Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EpU1yAMPNLkNLJ6x8vjdJ8jtvjyV+En7JfsCRyqX1gZ248V3ysZuvghrIiBQwyfK0 KIvofryA8kxAElGDgNMQeWOib9yDN0+mvzdVdtkMrZrjnLw4YCeWrGJcjZv80uO1W2 CdUAsOOYmkC6UfqewNtTEXjjsYi1ph+ivhYPiPtM= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:14 +0300 Subject: [PATCH v4 11/17] drm/bridge: cdns-dsi: Drop cdns_dsi_adjust_phy_config() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-11-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=3979; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=nOIk7nVK0gYGQHYfnFn+wepDOT+LG8Fpmo2vGsvo32Q=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo4Azi1FzGS5kuKlatY6+5w+Ff8BaSgyy6KKe 9HlGyPbsJSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKOAAAKCRD6PaqMvJYe 9U1dEACuVvO6hwjUGQePXtDyET3qfUTLzhf6GaexsOVTYP6R1oF1MdzccG6WAsgkQPpKZCeM5oz k3aoxDcty40HL9DV6UcpMkjZjBtek5YBnvW6u3Msd8CxPSIsprj+HR7BTN3mqKKWrRR3RkyMmgP t8AOdHYg2af97+cXxBpKtWKLGaIVmvx0RVTe5f8IS8BP4rf2cu9h0Y/Z/qgWc/PdSzOaH8pk4LZ 0ACs73Qmx57MTziyfnGp6L4UMwOg/J3RHEcQbssvyHq24y574n1Rie0Cr3Rvat/CoEupgiloWMW 8Qi6q8PMzko9bWsNnZxgMgZFltfw77ixLcusgmdJ5Kn3atFLS9SvcOPAnAHjWPHR4Rj50CDxk8V fNxayXsXuGQRV2X/WMounnoGZNGLlqeQwHg9s4nDp1IqEl2Fx8hlaMmUhCIZI7WnEmsgnhAtEkb LnlWSt+9c+MACdAW6AM/139yy+ufsAbeZpq/+0InpR52uRja27l+FxuL+17TjRPATad1rEowq9X A3yuYKOjLY7DXmElFW1n1pMi4+TOQUHgiRfRt/fUlFmKZI5fttVRt4Jp1b/t6DwVyQxo7dwwsGV 4v4rDZAVsb7eQviSRwJBisrjhzFdGPDAiMi/Jh71lv8RKee8Wp59COxLwcPjKk9l9MlcfCrS8dD kd1JjyvT1lbtp6g== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 cdns_dsi_adjust_phy_config() is called from cdns_dsi_check_conf(), which is called from .atomic_check(). It checks the DSI htotal and adjusts it to align on the DSI lane boundary by changing hfp and then recalculating htotal and HS clock rate. This has a few problems. First is the fact that the whole thing is not needed: we do not need to align on the lane boundary. The whole frame is sent in HS mode, and it is fine if the line's last byte clock tick fills, say, only 2 of the 4 lanes. The next line will just continue from there. Assuming the DSI timing values have been calculated to match the incoming DPI stream, and the HS clock is compatible with the DPI pixel clock, the "uneven" DSI lines will even out when multiple lines are being sent. But we could do the align, aligning is not a problem as such. However, adding more bytes to the hfp, as the function currently does, makes the DSI line time longer, so the function then adjusts the HS clock rate. This is where things fail: we don't know what rates we can get from the HS clock, and at least in TI K3 SoC case the rates are quite coarsely grained. Thus small adjustment to hfp will lead to a big change in HS clock rate, and things break down. We could do a loop here, adjusting hfp, adjusting clock, checking clock rate, adjusting hfp again, etc., but considering that the whole adjustment shouldn't be needed at all, it's easier to just remove the function. Something like this function should be added back later, when adding burst mode support, but that's a bigger change and I don't think this function would help that work in any way. Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 45 ----------------------= ---- 1 file changed, 45 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 7103878df1e7..f7d7d277367e 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -508,47 +508,6 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, return 0; } =20 -static int cdns_dsi_adjust_phy_config(struct cdns_dsi *dsi, - struct cdns_dsi_cfg *dsi_cfg, - struct phy_configure_opts_mipi_dphy *phy_cfg, - const struct drm_display_mode *mode) -{ - struct cdns_dsi_output *output =3D &dsi->output; - unsigned long long dlane_bps; - unsigned long adj_dsi_htotal; - unsigned long dsi_htotal; - unsigned long dpi_hz; - unsigned int dsi_hfp_ext; - unsigned int lanes =3D output->dev->lanes; - - dsi_htotal =3D dsi_cfg->htotal; - - /* - * Make sure DSI htotal is aligned on a lane boundary when calculating - * the expected data rate. This is done by extending HFP in case of - * misalignment. - */ - adj_dsi_htotal =3D dsi_htotal; - if (dsi_htotal % lanes) - adj_dsi_htotal +=3D lanes - (dsi_htotal % lanes); - - dpi_hz =3D mode->clock * 1000; - dlane_bps =3D (unsigned long long)dpi_hz * adj_dsi_htotal; - - /* data rate in bytes/sec is not an integer, refuse the mode. */ - if (do_div(dlane_bps, lanes * mode->htotal)) - return -EINVAL; - - /* data rate was in bytes/sec, convert to bits/sec. */ - phy_cfg->hs_clk_rate =3D dlane_bps * 8; - - dsi_hfp_ext =3D adj_dsi_htotal - dsi_htotal; - dsi_cfg->hfp +=3D dsi_hfp_ext; - dsi_cfg->htotal =3D dsi_htotal + dsi_hfp_ext; - - return 0; -} - static int cdns_dsi_check_conf(struct cdns_dsi *dsi, const struct drm_display_mode *mode, struct cdns_dsi_cfg *dsi_cfg) @@ -568,10 +527,6 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, if (ret) return ret; =20 - ret =3D cdns_dsi_adjust_phy_config(dsi, dsi_cfg, phy_cfg, mode); - if (ret) - return ret; - ret =3D phy_validate(dsi->dphy, PHY_MODE_MIPI_DPHY, 0, &output->phy_opts); if (ret) return ret; --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 951842E54C9 for ; Wed, 18 Jun 2025 09:59:57 +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=1750240799; cv=none; b=kQ4NFVsA4/nPS5+rheWW+sefFv7/A13u8rRZlxvmhWVgTXTsL6kCD1h60gNaO3MLL2XyOIT304Z2cmF15EvLOryidz0d3c+5mhG0R19nGeIgOmh5blGMgyVxpWuWZohJBDOVUym35QR4YiKS+MCzRQHYxPPIpNomd1ceFkicUCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240799; c=relaxed/simple; bh=BfOuS4S0Uv2jTTiGjUIA+jDJR/WYF9LdxpY+1sPAlnM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FPWruZTR1tvBtmTvlJoEgPrYpEQkwSZWtVk5XmYICBb58r8my8l8SaWJCw5gGhXNHnaB2cKVMIvRz1JdJP3i0o/IVmZbmJv/RgDwwkPWYVyKlMYb7lrSsaQ2GjSTkSA/79EzXNyc2D9PQbfIPopjIWjE4idH5Wjlv+8+WC0RZ74= 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=nwkmFmBk; 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="nwkmFmBk" 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 C34A3527C; Wed, 18 Jun 2025 11:59:33 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240774; bh=BfOuS4S0Uv2jTTiGjUIA+jDJR/WYF9LdxpY+1sPAlnM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=nwkmFmBkOu267VY14AaxenosDVugbL+oSCyNLVTjcqA0pABqjVLAp5eRMZRT+1oZx cIwx69nUTv+/iEZXILYQyhI4Rs3h50vBXu4O/aQPqzbjw+i3Mdgez2iFFkppTHwUGb vsDfDnSAjks7e8g1WG7WqU7Fh2w02xhCUrCbWLVU= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:15 +0300 Subject: [PATCH v4 12/17] drm/bridge: cdns-dsi: Adjust mode to negative syncs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-12-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=1608; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=BfOuS4S0Uv2jTTiGjUIA+jDJR/WYF9LdxpY+1sPAlnM=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo4AQf/UerQXlT4K+PKstjvu6hzvb29c4HX6t bWWG9uEo8mJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKOAAAKCRD6PaqMvJYe 9UieD/sHr4pjZ79k5hvLqhBY2NWkzYiJGcE2M90SswRbagQHDWoV+cCVPTyD9WVAy9rsSv3poWz 7/70zSE6qDVj4tevy0WuLDSOUpBb/UXyTA0Ihowsb2lQknYZpwAu0u9b1c7R0g5I+iMkVP2Lw+O 3MbAlC2x6KfKEppkAiHO9y2fiYVZvSKGeWX19yOm/21Jyja+0vA8oGo7HjUsgbW68Lx740+R+oB DoA2gdHSL/p0um/6hYIH5OrcdbVrjr5LSYyl9kG9bAB2T5sWQqv9/lLL0BrFOF7qbiwcPxW6SAr gMPFokgoiBtTSl9mWa94N2cRRlI2qMnHwU20o0onoSNIk3XeIh/JbwhSB+wrTWkdJPhy/k9r72L WySwYt+Ph19iBLjvjWHifjtv3R8oHjOLZeU+hqbLqE6JYMyPCdftmrZOsse0lSdMEEaZ09agKu4 2khuMqP3cUzMUKKhQKJw0zZX3HZefoYp1nEWMUKLL8XNTto/EGBw1r+JKtMLZkujQjnXhcxVU1T 0SRcF3aJ86ud6eHbBjZp0hwDXuv71cMOGa9jy8M/rzlSDKG+Beemk3wd4O8eqjPTjcrdwJN8WI6 +PeWc3rKzNxWijgWdNbcH89nswIPE9xFw/R61KtKV/agZwR8VTLt/kNj1YQYywsDahMdrxuBVHI rxJ7fpaJk54+5nQ== 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. Reviewed-by: Aradhya Bhatia Tested-by: Parth Pancholi Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index f7d7d277367e..d49b4789a074 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -908,9 +908,13 @@ static int cdns_dsi_bridge_atomic_check(struct drm_bri= dge *bridge, struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_bridge_state *dsi_state =3D to_cdns_dsi_bridge_state(brid= ge_state); - const struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mo= de; + struct drm_display_mode *adjusted_mode =3D &crtc_state->adjusted_mode; struct cdns_dsi_cfg *dsi_cfg =3D &dsi_state->dsi_cfg; =20 + /* cdns-dsi requires negative syncs */ + adjusted_mode->flags &=3D ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); + adjusted_mode->flags |=3D DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC; + return cdns_dsi_check_conf(dsi, adjusted_mode, dsi_cfg); } =20 --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 9CAF92E7167 for ; Wed, 18 Jun 2025 09:59:58 +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=1750240800; cv=none; b=BUO3tkrETTznBbDGW9zzWGMzGsc4iXJYx75fLquRyIaSooOsscnfANLV8T9wojf3wRFO3abyLbKB6wXh1HOFzQvc258tI08/lpBlufLn2RnEPJQupnolmPJlx+wvCqNCYinK49NAlgJywFLmVycNs+2kzE3BN1H0PJZ/MwuugaA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240800; c=relaxed/simple; bh=D4vM1OMrS8uj57MoLnQeoqPxyPPl1IzpjBbsE3qvLPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LDW06eR6RBq5WohD0eDQdiuvsfa5WOAC3m2/0UJIK0HyAPiSxIuv/H6QrveCtcoAJEiZ3g4Jk1MeYv1L8y4Jd0lIVKhoxXEbbIQMfHx4d/AnqviAZ8B/D6l/MZkrIjNJ3ljVj9EmPICNqEGFCz4hkTl2U7Mrq4lyIOQvf4YyFp4= 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=GUkJiqao; 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="GUkJiqao" 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 1B209287A; Wed, 18 Jun 2025 11:59:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240776; bh=D4vM1OMrS8uj57MoLnQeoqPxyPPl1IzpjBbsE3qvLPY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GUkJiqaoM4SqZtI0/SxILskdUda+DpphvEe4h60xpEhkw02MT249dTiQFFfNMh2dX tXpx2ElxKV/siW6bNtyR0seApjL2nC2y+sB4HkqSx7TU79UatBJ3j8d4qU0r5EskMV HIvNFCkO54s5mB8cS/muP8Yhzsx3fGMVLfqRRB6k= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:16 +0300 Subject: [PATCH v4 13/17] drm/bridge: cdns-dsi: Fix REG_WAKEUP_TIME value Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-13-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=2020; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=D4vM1OMrS8uj57MoLnQeoqPxyPPl1IzpjBbsE3qvLPY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo4Amxl12GShQLcu87uGxxbidqe6BNSsEvzlb HQMQwNHJXKJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKOAAAKCRD6PaqMvJYe 9f2vD/499q9kgi+Q5x4QmdQ0TLhbGtWJ/kBQy2Cfr9sOzttZQ6V7K6bLe0fzLT6kYUj0m/m9w5W 7Rvq+CMpDOV7c/xOut4REupKm/minFMXS6hZF9Z9AiZZQyldAL9YfCEiqjB8bk5MSw1lfBiU3g2 EONtgwYTRylfRbbZT/GZbLGR9x/vWmJEWWvRr7Nj2gc1Jt8HArEF4N0ozZ+7AGmbJtn2xRvjlRz I6OGVpbu7XCCJw4BKry9BMrC7Z9oG0PHwxVTOgJssq4h71Ti3Tszc+e7ac4+9+86ZuPBHPKe/an BIxHVu/kJayZR5GfGzZkg2GsAvFvuRdim5OkSpy1aC7uM4ZP6RpbedZp1ULzDgZriq1By4yaxur 2RMqw4piSa7UN+APT3qHXHLE2BQit7/8S5NDrVI/65VjIb6MJPnwBZ/yR1EP0BgVQgq8YGyI3e2 YL61cmKmvIRS00nJPPcvrSt0YwyeaMDKDO49rK6sakFmQSZwCv/hGSh4pixylnwAhdcGc8icecc 69mYurakzecbnlGAHLTgRWg69F20kp9o3Pbjla1uiSgAuuKxeTAwQ5EvrIXs3IE2KKgg9R6fZMm uRYs/dSuzAM/1LjXIb0fGjkL+ht5j/2ojzwj7LkktgLOlzvybyKrIQdz9vsilyqtwe44HvYIdVB P7SVZ9UOjg8pE5w== 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. Tested-by: Parth Pancholi Tested-by: Jayesh Choudhary Signed-off-by: Tomi Valkeinen --- 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 d49b4789a074..6bc0a0d00d69 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -793,7 +793,13 @@ static void cdns_dsi_bridge_atomic_pre_enable(struct d= rm_bridge *bridge, =20 tx_byte_period =3D DIV_ROUND_DOWN_ULL((u64)NSEC_PER_SEC * 8, phy_cfg->hs_clk_rate); - reg_wakeup =3D (phy_cfg->hs_prepare + phy_cfg->hs_zero) / tx_byte_period; + + /* + * Estimated time [in clock cycles] to perform LP->HS on D-PHY. + * It is not clear how to calculate this, so for now, + * set it to 1/10 of the total number of clocks in a line. + */ + reg_wakeup =3D dsi_cfg.htotal / nlanes / 10; writel(REG_WAKEUP_TIME(reg_wakeup) | REG_LINE_DURATION(tmp), dsi->regs + VID_DPHY_TIME); =20 --=20 2.43.0 From nobody Thu Oct 9 08:43:29 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 D279F2E8DE5 for ; Wed, 18 Jun 2025 10:00:00 +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=1750240802; cv=none; b=dqrU0K7zi/Lq1sx9WGM8KFxFCzHgBU00M1e6FEHvpDVjfoRTy4ENO2cMuNR94RXhX1h/pysx1vUop/Hi5xtD9A0wwD0/V1g/JuJy1Pr87IBzqkIP6V9T9QQmmxrZT/CKkhhjwqgK24DfYHfuXZTgPReNdrrX82ZpsOQtqb/beJY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750240802; c=relaxed/simple; bh=WylBtnNm5+D1WBqQ7n5b4AX+XLZXRGkFwWek5BXnqQk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X29WejI1+R5TSaJNGb4ZN/PsEygWFOM3Jue/00lHYq3+ZXX5obwCNh3S6DgVdXCxS3X6ENtnCD2r6Jl1UWl9Qaa1bPOyGdylpGHL8RhDJoIreT+6z6U+EnkI7cL93cKrDg0nOYMo0H3gdtuDAsnUpyrVZBT8yvq9n2/9NE8b4GA= 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=CV+gCdPV; 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="CV+gCdPV" 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 69BE0527A; Wed, 18 Jun 2025 11:59:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1750240777; bh=WylBtnNm5+D1WBqQ7n5b4AX+XLZXRGkFwWek5BXnqQk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CV+gCdPVgMPYF5Y/GiLSYFPkLBu7LAo+xGIf5ZZrqiKkUd12g/in7u3zpDL/NeTdu iUe7WSkpzmXhxceWpwXxfc1Wa5JspnpRJkwFK/imOOcAA9n6puqce87w2oFY6aQG72 QH2B0eLhizw3gpKqH+4G2oB6YaUjxXfKpdmJS6Ro= From: Tomi Valkeinen Date: Wed, 18 Jun 2025 12:59:17 +0300 Subject: [PATCH v4 14/17] drm/bridge: cdns-dsi: Use video mode and clean up cdns_dsi_mode2cfg() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-cdns-dsi-impro-v4-14-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=4459; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=WylBtnNm5+D1WBqQ7n5b4AX+XLZXRGkFwWek5BXnqQk=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBoUo4BGAmE+TH/R4RW43+0JeJrvMptcyEWtkJSn SwUNiIrq/+JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaFKOAQAKCRD6PaqMvJYe 9fyzD/sEDvnFRm5vslpBwXfDXS9RK/8BEkKD/XQTjO+mnjj+wRbCw0jTsVSTPal2a0HgIIU/Lp/ RrDUouZiR5aYiIRqCF/lLflr3Wj9Q4xlGQ8NVWeIzE0dpgYq/Dc/H/uNlAemJbfgV1eoqSvs9N9 co7+r4ej7qLOZbeHBvurNxOHfhsqFTonNC5OBB/BTAArTymJxhfOHCEBivtyi6T/AdX1fPoDWth ve0bP9YSO6EaxpSsAuqFMEJqQTrGzFCgEjv+x0cIFUiSmSNY0MEmRhy+rXEBH0TbWpNg6s6WXoC p6i1SPjBFzwgdpqMCPtxzT6ysP0LHcYvmbNbmUwAFr/Gxz4qzYxKNeHeo9YI0Y5AaICsF82I+22 AIdxkD15ZWtHhUHsSEfChfOAOurO1Tw7b4nTDZsQ/tPUQuNAQ+EyCNX1AM2ZHxIAiF/JWXch7kr 82rSL5GSR0ToIdQHmz1Ta2+w0EjkcPc/wMIExx7KlRufQ/vDasM6XEBCemC8zvhEnDgpM817oVO 991ydvp7v2HqK5Yo3MNJAyg3ZH67AjJ1NhkWT8X840K/Zf/Ke/k4kNwES2FnFjej+y4FyXNJ4Hb /UfGivbk+cD2dj+UEaGsRhFt+U/xO1c5PSj1Iy85Z2USrDw6loRJjg5o5pyoiYW7yjZoiKoUFXc 4NADnAG9svzWxVQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 The driver does all the calculations and programming with video timings (hftp, hbp, etc.) instead of the modeline values (hsync_start, ...). Thus it makes sense to use struct videomode instead of struct drm_display_mode internally. Switch to videomode and do some cleanups in cdns_dsi_mode2cfg() along the way. Tested-by: Parth Pancholi Reviewed-by: Aradhya Bhatia Signed-off-by: Tomi Valkeinen Tested-by: Jayesh Choudhary --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 45 ++++++++++++++--------= ---- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 6bc0a0d00d69..07f8d5f5c2aa 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -9,6 +9,7 @@ #include #include #include