mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From ff1d105eefb06d24996cfdfd35d907e080710f38 Mon Sep 17 00:00:00 2001
 | |
| From: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | |
| Date: Tue, 4 Jan 2022 14:46:01 +0000
 | |
| Subject: [PATCH 376/726] media: i2c: ov9281: Increase diff between VTS and max
 | |
|  exposure
 | |
| 
 | |
| The driver did allow the exposure to go up to VTS - 4 lines,
 | |
| but this would produce a visible line on 1280x800, and a stall of
 | |
| the sensor at 640x480.
 | |
| 
 | |
| Whilst it appears to work with a difference of 5, the datasheet states
 | |
| there should be at least 25 lines difference between VTS and exposure,
 | |
| so use that value.
 | |
| 
 | |
| Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | |
| ---
 | |
|  drivers/media/i2c/ov9281.c | 11 ++++++++---
 | |
|  1 file changed, 8 insertions(+), 3 deletions(-)
 | |
| 
 | |
| diff --git a/drivers/media/i2c/ov9281.c b/drivers/media/i2c/ov9281.c
 | |
| index 041171e3a0c5..36ead3b3b584 100644
 | |
| --- a/drivers/media/i2c/ov9281.c
 | |
| +++ b/drivers/media/i2c/ov9281.c
 | |
| @@ -52,7 +52,11 @@
 | |
|  #define OV9281_REG_EXPOSURE		0x3500
 | |
|  #define	OV9281_EXPOSURE_MIN		4
 | |
|  #define	OV9281_EXPOSURE_STEP		1
 | |
| -#define OV9281_VTS_MAX			0x7fff
 | |
| +/*
 | |
| + * Number of lines less than frame length (VTS) that exposure must be.
 | |
| + * Datasheet states 25, although empirically 5 appears to work.
 | |
| + */
 | |
| +#define OV9281_EXPOSURE_OFFSET		25
 | |
|  
 | |
|  #define OV9281_REG_GAIN_H		0x3508
 | |
|  #define OV9281_REG_GAIN_L		0x3509
 | |
| @@ -69,6 +73,7 @@
 | |
|  #define OV9281_TEST_PATTERN_DISABLE	0x0
 | |
|  
 | |
|  #define OV9281_REG_VTS			0x380e
 | |
| +#define OV9281_VTS_MAX			0x7fff
 | |
|  
 | |
|  /*
 | |
|   * OV9281 native and active pixel array size.
 | |
| @@ -967,7 +972,7 @@ static int ov9281_set_ctrl(struct v4l2_ctrl *ctrl)
 | |
|  	switch (ctrl->id) {
 | |
|  	case V4L2_CID_VBLANK:
 | |
|  		/* Update max exposure while meeting expected vblanking */
 | |
| -		max = ov9281->cur_mode->height + ctrl->val - 4;
 | |
| +		max = ov9281->cur_mode->height + ctrl->val - OV9281_EXPOSURE_OFFSET;
 | |
|  		__v4l2_ctrl_modify_range(ov9281->exposure,
 | |
|  					 ov9281->exposure->minimum, max,
 | |
|  					 ov9281->exposure->step,
 | |
| @@ -1062,7 +1067,7 @@ static int ov9281_initialize_controls(struct ov9281 *ov9281)
 | |
|  					   OV9281_VTS_MAX - mode->height, 1,
 | |
|  					   vblank_def);
 | |
|  
 | |
| -	exposure_max = mode->vts_def - 4;
 | |
| +	exposure_max = mode->vts_def - OV9281_EXPOSURE_OFFSET;
 | |
|  	ov9281->exposure = v4l2_ctrl_new_std(handler, &ov9281_ctrl_ops,
 | |
|  					     V4L2_CID_EXPOSURE,
 | |
|  					     OV9281_EXPOSURE_MIN, exposure_max,
 | |
| -- 
 | |
| 2.33.1
 | |
| 
 |