mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 14:13:16 +00:00
20ea6adbf1
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From ae89f74e9c2583b2d49ea0c6d5653aa820083c4e Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Thu, 17 Jun 2021 13:00:39 +0100
|
|
Subject: [PATCH] media: i2c: imx290: Fix the pixel rate at 148.5Mpix/s
|
|
|
|
Whilst the datasheet lists the link frequency changing between
|
|
1080p and 720p modes, reality is that with the default blanking
|
|
we have
|
|
(1920 + 280) * (1080 + 45) * 60fps = 148.5MPix/s
|
|
and
|
|
(1280 + 2020) * (720 + 30) * 60fps = 148.5MPix/s
|
|
and this reflects reality whether in 10 or 12 bit readout modes.
|
|
|
|
How this relates to link frequency is unclear as it differs
|
|
from the datasheet, but all exposure and frame rate calcs need
|
|
the pixel rate to be correct, so make it so.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/media/i2c/imx290.c | 16 +---------------
|
|
1 file changed, 1 insertion(+), 15 deletions(-)
|
|
|
|
--- a/drivers/media/i2c/imx290.c
|
|
+++ b/drivers/media/i2c/imx290.c
|
|
@@ -853,23 +853,9 @@ static inline u8 imx290_get_link_freq_in
|
|
return imx290->current_mode->link_freq_index;
|
|
}
|
|
|
|
-static s64 imx290_get_link_freq(struct imx290 *imx290)
|
|
-{
|
|
- u8 index = imx290_get_link_freq_index(imx290);
|
|
-
|
|
- return *(imx290_link_freqs_ptr(imx290) + index);
|
|
-}
|
|
-
|
|
static u64 imx290_calc_pixel_rate(struct imx290 *imx290)
|
|
{
|
|
- s64 link_freq = imx290_get_link_freq(imx290);
|
|
- u8 nlanes = imx290->nlanes;
|
|
- u64 pixel_rate;
|
|
-
|
|
- /* pixel rate = link_freq * 2 * nr_of_lanes / bits_per_sample */
|
|
- pixel_rate = link_freq * 2 * nlanes;
|
|
- do_div(pixel_rate, imx290->bpp);
|
|
- return pixel_rate;
|
|
+ return 148500000;
|
|
}
|
|
|
|
static int imx290_set_fmt(struct v4l2_subdev *sd,
|