mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "André Apitzsch via B4 Relay" <devnull+git.apitzsch.eu@kernel.org>
To: Ricardo Ribalda <ribalda@kernel.org>,
	 Sakari Ailus <sakari.ailus@linux.intel.com>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: ~postmarketos/upstreaming@lists.sr.ht,
	phone-devel@vger.kernel.org, linux-media@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
	"Vincent Knecht" <vincent.knecht@mailoo.org>,
	"André Apitzsch" <git@apitzsch.eu>,
	"Ricardo Ribalda" <ribalda@chromium.org>
Subject: [PATCH v4 13/13] media: i2c: imx214: Fix link frequency validation
Date: Mon, 16 Dec 2024 22:00:59 +0100	[thread overview]
Message-ID: <20241216-imx214-v4-13-8cbda160fbce@apitzsch.eu> (raw)
In-Reply-To: <20241216-imx214-v4-0-8cbda160fbce@apitzsch.eu>

From: André Apitzsch <git@apitzsch.eu>

The driver defines IMX214_DEFAULT_LINK_FREQ 480000000, and then
IMX214_DEFAULT_PIXEL_RATE ((IMX214_DEFAULT_LINK_FREQ * 8LL) / 10),
which works out as 384MPix/s. (The 8 is 4 lanes and DDR.)

Parsing the PLL registers with the defined 24MHz input. We're in single
PLL mode, so MIPI frequency is directly linked to pixel rate.  VTCK ends
up being 1200MHz, and VTPXCK and OPPXCK both are 120MHz.  Section 5.3
"Frame rate calculation formula" says "Pixel rate
[pixels/s] = VTPXCK [MHz] * 4", so 120 * 4 = 480MPix/s, which basically
agrees with my number above.

3.1.4. MIPI global timing setting says "Output bitrate = OPPXCK * reg
0x113[7:0]", so 120MHz * 10, or 1200Mbit/s. That would be a link
frequency of 600MHz due to DDR.
That also matches to 480MPix/s * 10bpp / 4 lanes / 2 for DDR.

Keep the previous link frequency for backward compatibility.

Acked-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: André Apitzsch <git@apitzsch.eu>
---
 drivers/media/i2c/imx214.c | 28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c
index 0e587f0a44d941bd7d9230b56df18c08250e679e..43d5181aac40c864ab09c2464d576ce457c76572 100644
--- a/drivers/media/i2c/imx214.c
+++ b/drivers/media/i2c/imx214.c
@@ -31,7 +31,9 @@
 #define IMX214_REG_FAST_STANDBY_CTRL	CCI_REG8(0x0106)
 
 #define IMX214_DEFAULT_CLK_FREQ	24000000
-#define IMX214_DEFAULT_LINK_FREQ 480000000
+#define IMX214_DEFAULT_LINK_FREQ	600000000
+/* Keep wrong link frequency for backward compatibility */
+#define IMX214_DEFAULT_LINK_FREQ_LEGACY	480000000
 #define IMX214_DEFAULT_PIXEL_RATE ((IMX214_DEFAULT_LINK_FREQ * 8LL) / 10)
 #define IMX214_FPS 30
 
@@ -1222,18 +1224,26 @@ static int imx214_parse_fwnode(struct device *dev)
 		goto done;
 	}
 
-	for (i = 0; i < bus_cfg.nr_of_link_frequencies; i++)
+	if (bus_cfg.nr_of_link_frequencies != 1)
+		dev_warn(dev, "Only one link-frequency supported, please review your DT. Continuing anyway\n");
+
+	for (i = 0; i < bus_cfg.nr_of_link_frequencies; i++) {
 		if (bus_cfg.link_frequencies[i] == IMX214_DEFAULT_LINK_FREQ)
 			break;
-
-	if (i == bus_cfg.nr_of_link_frequencies) {
-		dev_err_probe(dev, -EINVAL,
-			      "link-frequencies %d not supported, Please review your DT\n",
-			      IMX214_DEFAULT_LINK_FREQ);
-		ret = -EINVAL;
-		goto done;
+		if (bus_cfg.link_frequencies[i] ==
+		    IMX214_DEFAULT_LINK_FREQ_LEGACY) {
+			dev_warn(dev,
+				 "link-frequencies %d not supported, please review your DT. Continuing anyway\n",
+				 IMX214_DEFAULT_LINK_FREQ);
+			break;
+		}
 	}
 
+	if (i == bus_cfg.nr_of_link_frequencies)
+		ret = dev_err_probe(dev, -EINVAL,
+				    "link-frequencies %d not supported, please review your DT\n",
+				    IMX214_DEFAULT_LINK_FREQ);
+
 done:
 	v4l2_fwnode_endpoint_free(&bus_cfg);
 	fwnode_handle_put(endpoint);

-- 
2.47.1



      parent reply	other threads:[~2024-12-16 21:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-16 21:00 [PATCH v4 00/13] media: i2c: imx214: Miscellaneous cleanups and improvements André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 01/13] media: i2c: imx214: Use subdev active state André Apitzsch via B4 Relay
2024-12-16 21:20   ` Ricardo Ribalda Delgado
2024-12-17  9:55   ` Sakari Ailus
2024-12-16 21:00 ` [PATCH v4 02/13] media: i2c: imx214: Simplify with dev_err_probe() André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 03/13] media: i2c: imx214: Convert to CCI register access helpers André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 04/13] media: i2c: imx214: Replace register addresses with macros André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 05/13] media: i2c: imx214: Drop IMX214_REG_EXPOSURE from mode reg arrays André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 06/13] media: i2c: imx214: Check number of lanes from device tree André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 07/13] media: i2c: imx214: Add vblank and hblank controls André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 08/13] media: i2c: imx214: Implement vflip/hflip controls André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 09/13] media: i2c: imx214: Add analogue/digital gain control André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 10/13] media: i2c: imx214: Verify chip ID André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 11/13] media: i2c: imx214: Add test pattern control André Apitzsch via B4 Relay
2024-12-16 21:00 ` [PATCH v4 12/13] media: i2c: imx214: Fix clock handling on probe error or remove André Apitzsch via B4 Relay
2024-12-16 21:00 ` André Apitzsch via B4 Relay [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241216-imx214-v4-13-8cbda160fbce@apitzsch.eu \
    --to=devnull+git.apitzsch.eu@kernel.org \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=git@apitzsch.eu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=phone-devel@vger.kernel.org \
    --cc=ribalda@chromium.org \
    --cc=ribalda@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=vincent.knecht@mailoo.org \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®