All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Jacopo Mondi <jacopo@jmondi.org>
Cc: slongerbeam@gmail.com, sakari.ailus@iki.fi,
	hverkuil-cisco@xs4all.nl, mirela.rabulea@nxp.com,
	xavier.roumegue@oss.nxp.com, tomi.valkeinen@ideasonboard.com,
	hugues.fruchet@st.com, prabhakar.mahadev-lad.rj@bp.renesas.com,
	aford173@gmail.com, festevam@gmail.com,
	eugen.hristev@microchip.com, jbrunet@baylibre.com,
	mchehab@kernel.org, linux-media@vger.kernel.org
Subject: Re: [PATCH 12/21] media: ov5640: Fix durations to comply with FPS
Date: Wed, 2 Feb 2022 23:48:52 +0200	[thread overview]
Message-ID: <Yfr8RIRGiSs89D4z@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20220131144444.129036-1-jacopo@jmondi.org>

Hi Jacopo,

Thank you for the patch.

On Mon, Jan 31, 2022 at 03:44:40PM +0100, Jacopo Mondi wrote:
> Now that the frame duration can be controlled by tuning the VBLANK
> duration, fix all modes to comply with the reported FPS.
> 
> All modes run at 30 FPS except for full-resolution mode 2592x1944
> which runs at 15FPS.
> 
> Tested on a 2 data lanes setup in UYVY and RGB565 modes.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> ---
>  drivers/media/i2c/ov5640.c | 30 +++++++++++++++---------------
>  1 file changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
> index 6eeb50724195..2176fa0b8eae 100644
> --- a/drivers/media/i2c/ov5640.c
> +++ b/drivers/media/i2c/ov5640.c
> @@ -611,8 +611,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 160,
>  			.height	= 120,
>  		},
> -		.ppl		= 1896,
> -		.vblank_def	= 864,
> +		.ppl		= 1600,
> +		.vblank_def	= 878,

The total number of pixels is changed from 1896 * (120+864) = 1865664 to
1600 * (120+878) = 1596800. The latter produces 30.06fps with a 48 Mp/s
rate, which certainly seems better than the 25.73fps produced by the
format. I wonder, though, if this has always been wrong, or if the
incorrect frame rate got introduced earlier in this series.

Also, how did you pick a htot value of 1600 ?

>  		.reg_data	= ov5640_setting_QQVGA_160_120,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_QQVGA_160_120),
>  		.max_fps	= OV5640_30_FPS
> @@ -633,8 +633,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 176,
>  			.height	= 144,
>  		},
> -		.ppl		= 1896,
> -		.vblank_def	= 840,
> +		.ppl		= 1600,
> +		.vblank_def	= 854,
>  		.reg_data	= ov5640_setting_QCIF_176_144,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_QCIF_176_144),
>  		.max_fps	= OV5640_30_FPS
> @@ -655,8 +655,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 320,
>  			.height	= 240,
>  		},
> -		.ppl		= 1896,
> -		.vblank_def	= 744,
> +		.ppl		= 1600,
> +		.vblank_def	= 760,
>  		.reg_data	= ov5640_setting_QVGA_320_240,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_QVGA_320_240),
>  		.max_fps	= OV5640_30_FPS
> @@ -677,8 +677,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 640,
>  			.height	= 480,
>  		},
> -		.ppl		= 1896,
> -		.vblank_def	= 600,
> +		.ppl		= 1600,
> +		.vblank_def	= 520,
>  		.reg_data	= ov5640_setting_VGA_640_480,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_VGA_640_480),
>  		.max_fps	= OV5640_60_FPS
> @@ -700,7 +700,7 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.height	= 480,
>  		},
>  		.ppl		= 1896,
> -		.vblank_def	= 504,
> +		.vblank_def	= 1206,
>  		.reg_data	= ov5640_setting_NTSC_720_480,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_NTSC_720_480),
>  		.max_fps	= OV5640_30_FPS
> @@ -722,7 +722,7 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.height	= 576,
>  		},
>  		.ppl		= 1896,
> -		.vblank_def	= 408,
> +		.vblank_def	= 1110,
>  		.reg_data	= ov5640_setting_PAL_720_576,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_PAL_720_576),
>  		.max_fps	= OV5640_30_FPS
> @@ -744,7 +744,7 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.height	= 768,
>  		},
>  		.ppl		= 1896,
> -		.vblank_def	= 312,
> +		.vblank_def	= 918,
>  		.reg_data	= ov5640_setting_XGA_1024_768,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_XGA_1024_768),
>  		.max_fps	= OV5640_30_FPS
> @@ -765,8 +765,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 1280,
>  			.height	= 720,
>  		},
> -		.ppl		= 1896,
> -		.vblank_def	= 20,
> +		.ppl		= 1600,
> +		.vblank_def	= 560,
>  		.reg_data	= ov5640_setting_720P_1280_720,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_720P_1280_720),
>  		.max_fps	= OV5640_30_FPS
> @@ -787,8 +787,8 @@ ov5640_mode_data[OV5640_NUM_MODES] = {
>  			.width	= 1920,
>  			.height	= 1080,
>  		},
> -		.ppl		= 2500,
> -		.vblank_def	= 40,
> +		.ppl		= 2234,
> +		.vblank_def	= 24,
>  		.reg_data	= ov5640_setting_1080P_1920_1080,
>  		.reg_data_size	= ARRAY_SIZE(ov5640_setting_1080P_1920_1080),
>  		.max_fps	= OV5640_30_FPS

-- 
Regards,

Laurent Pinchart

  parent reply	other threads:[~2022-02-02 21:49 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-31 14:32 [PATCH 00/17] media: ov5640: Rework the clock tree programming for MIPI Jacopo Mondi
2022-01-31 14:32 ` [PATCH 01/21] media: ov5640: Add pixel rate to modes Jacopo Mondi
2022-02-01 14:52   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 02/21] media: ov5604: Re-arrange modes definition Jacopo Mondi
2022-02-01 14:20   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 03/21] media: ov5640: Add is_mipi() function Jacopo Mondi
2022-02-01 14:25   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 04/21] media: ov5640: Associate bpp with formats Jacopo Mondi
2022-02-01 14:27   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 05/21] media: ov5640: Update pixel_rate and link_freq Jacopo Mondi
2022-02-01 16:52   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 06/21] media: ov5640: Rework CSI-2 clock tree Jacopo Mondi
2022-02-01 17:27   ` Laurent Pinchart
2022-02-07 14:07     ` Jacopo Mondi
2022-01-31 14:32 ` [PATCH 07/21] media: ov5640: Rework timings programming Jacopo Mondi
2022-02-01 19:03   ` Laurent Pinchart
2022-02-07 14:37     ` Jacopo Mondi
2022-02-07 16:39       ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 08/21] media: ov5640: Re-sort per-mode register tables Jacopo Mondi
2022-02-01 19:05   ` Laurent Pinchart
2022-02-07 14:42     ` Jacopo Mondi
2022-01-31 14:32 ` [PATCH 09/21] media: ov5640: Remove ov5640_mode_init_data Jacopo Mondi
2022-02-01 19:07   ` Laurent Pinchart
2022-02-07 14:45     ` Jacopo Mondi
2022-01-31 14:32 ` [PATCH 10/21] media: ov5640: Add HBLANK control Jacopo Mondi
2022-02-02 21:20   ` Laurent Pinchart
2022-01-31 14:32 ` [PATCH 11/21] media: ov5640: Add VBLANK control Jacopo Mondi
2022-02-02 21:35   ` Laurent Pinchart
2022-02-07 15:09     ` Jacopo Mondi
2022-02-07 17:22       ` Laurent Pinchart
2022-02-03  7:58   ` Xavier Roumegue (OSS)
2022-02-07 15:12     ` Jacopo Mondi
2022-01-31 14:44 ` [PATCH 12/21] media: ov5640: Fix durations to comply with FPS Jacopo Mondi
2022-01-31 14:44   ` [PATCH 13/21] media: ov5640: Initialize try format Jacopo Mondi
2022-02-02 21:51     ` Laurent Pinchart
2022-01-31 14:44   ` [PATCH 14/21] media: ov5640: Implement get_selection Jacopo Mondi
2022-02-02 22:29     ` Laurent Pinchart
2022-02-07 15:47       ` Jacopo Mondi
2022-02-07 17:53         ` Laurent Pinchart
2022-02-08 14:18           ` Jacopo Mondi
2022-02-08 14:41             ` Laurent Pinchart
2022-01-31 14:44   ` [PATCH 15/21] media: ov5640: Limit format to FPS in DVP mode only Jacopo Mondi
2022-02-02 22:38     ` Laurent Pinchart
2022-02-07 15:49       ` Jacopo Mondi
2022-01-31 14:44   ` [PATCH 16/21] media: ov5640: Disable s_frame_interval in MIPI mode Jacopo Mondi
2022-02-02 22:40     ` Laurent Pinchart
2022-02-02 21:48   ` Laurent Pinchart [this message]
2022-02-07 15:58     ` [PATCH 12/21] media: ov5640: Fix durations to comply with FPS Jacopo Mondi
2022-01-31 14:45 ` [PATCH 17/21] media: ov5640: Register device properties Jacopo Mondi
2022-01-31 14:45   ` [PATCH 18/21] media: ov5640: Add RGB565_1X16 format Jacopo Mondi
2022-02-02 22:48     ` Laurent Pinchart
2022-01-31 14:45   ` [PATCH 19/21] media: ov5640: Add RGB888/BGR888 formats Jacopo Mondi
2022-02-02 22:49     ` Laurent Pinchart
2022-02-02 22:44   ` [PATCH 17/21] media: ov5640: Register device properties Laurent Pinchart
2022-01-31 14:45 ` [PATCH 20/21] media: ov5640: Restrict sizes to mbus code Jacopo Mondi
2022-01-31 14:45   ` [PATCH 21/21] media: ov5640: Adjust format to bpp in s_fmt Jacopo Mondi
2022-02-02 23:03     ` Laurent Pinchart
2022-02-07 16:07       ` Jacopo Mondi
2022-02-07 16:46         ` Laurent Pinchart
2022-02-02 22:57   ` [PATCH 20/21] media: ov5640: Restrict sizes to mbus code Laurent Pinchart

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=Yfr8RIRGiSs89D4z@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=aford173@gmail.com \
    --cc=eugen.hristev@microchip.com \
    --cc=festevam@gmail.com \
    --cc=hugues.fruchet@st.com \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=jacopo@jmondi.org \
    --cc=jbrunet@baylibre.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=mirela.rabulea@nxp.com \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=sakari.ailus@iki.fi \
    --cc=slongerbeam@gmail.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=xavier.roumegue@oss.nxp.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.