[libcamera-devel,v4,1/5] libcamera: camera_sensor: Make VBLANK mandatory
diff mbox series

Message ID 20210129111616.1047483-2-naush@raspberrypi.com
State Accepted
Headers show
Series
  • Raspberry Pi: FrameDurations control refinements
Related show

Commit Message

Naushir Patuck Jan. 29, 2021, 11:16 a.m. UTC
From: Jacopo Mondi <jacopo@jmondi.org>

Add the V4L2_CID_VBLANK control to the list of mandatory controls
the sensor driver has to report and document the new requirement.

The vertical blanking control is used to calculate the frame duration.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Naushir Patuck <naush@raspberrypi.com>
---
 Documentation/sensor_driver_requirements.rst | 6 ++++--
 src/libcamera/camera_sensor.cpp              | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Laurent Pinchart Feb. 4, 2021, 7:12 p.m. UTC | #1
Hi Naush,

Thank you for the patch.

On Fri, Jan 29, 2021 at 11:16:12AM +0000, Naushir Patuck wrote:
> From: Jacopo Mondi <jacopo@jmondi.org>
> 
> Add the V4L2_CID_VBLANK control to the list of mandatory controls
> the sensor driver has to report and document the new requirement.
> 
> The vertical blanking control is used to calculate the frame duration.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> Reviewed-by: Naushir Patuck <naush@raspberrypi.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  Documentation/sensor_driver_requirements.rst | 6 ++++--
>  src/libcamera/camera_sensor.cpp              | 1 +
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/sensor_driver_requirements.rst b/Documentation/sensor_driver_requirements.rst
> index 6dcd4e68d64d..590797f054ce 100644
> --- a/Documentation/sensor_driver_requirements.rst
> +++ b/Documentation/sensor_driver_requirements.rst
> @@ -27,18 +27,20 @@ The sensor driver shall support the following V4L2 controls:
>  * `V4L2_CID_EXPOSURE`_
>  * `V4L2_CID_HBLANK`_
>  * `V4L2_CID_PIXEL_RATE`_
> +* `V4L2_CID_VBLANK`_
>  
>  .. _V4L2_CID_EXPOSURE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html
>  .. _V4L2_CID_HBLANK: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
>  .. _V4L2_CID_PIXEL_RATE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-process.html
> +.. _V4L2_CID_VBLANK: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
>  
>  While V4L2 doesn't specify a unit for the `EXPOSURE` control, libcamera requires
>  it to be expressed as a number of image lines. Camera sensor drivers that do not
>  comply with this requirement will need to be adapted or will produce incorrect
>  results.
>  
> -The `HBLANK` and `PIXEL_RATE` controls are used to compute the sensor output
> -timings.
> +The `HBLANK`, `PIXEL_RATE` and `VBLANK` controls are used to compute the sensor
> +output timings.
>  
>  Optional Requirements
>  ---------------------
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index ca33c0094088..ab315bdc468c 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -244,6 +244,7 @@ int CameraSensor::validateSensorDriver()
>  		V4L2_CID_EXPOSURE,
>  		V4L2_CID_HBLANK,
>  		V4L2_CID_PIXEL_RATE,
> +		V4L2_CID_VBLANK,
>  	};
>  
>  	ControlList ctrls = subdev_->getControls(mandatoryControls);

Patch
diff mbox series

diff --git a/Documentation/sensor_driver_requirements.rst b/Documentation/sensor_driver_requirements.rst
index 6dcd4e68d64d..590797f054ce 100644
--- a/Documentation/sensor_driver_requirements.rst
+++ b/Documentation/sensor_driver_requirements.rst
@@ -27,18 +27,20 @@  The sensor driver shall support the following V4L2 controls:
 * `V4L2_CID_EXPOSURE`_
 * `V4L2_CID_HBLANK`_
 * `V4L2_CID_PIXEL_RATE`_
+* `V4L2_CID_VBLANK`_
 
 .. _V4L2_CID_EXPOSURE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html
 .. _V4L2_CID_HBLANK: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
 .. _V4L2_CID_PIXEL_RATE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-process.html
+.. _V4L2_CID_VBLANK: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
 
 While V4L2 doesn't specify a unit for the `EXPOSURE` control, libcamera requires
 it to be expressed as a number of image lines. Camera sensor drivers that do not
 comply with this requirement will need to be adapted or will produce incorrect
 results.
 
-The `HBLANK` and `PIXEL_RATE` controls are used to compute the sensor output
-timings.
+The `HBLANK`, `PIXEL_RATE` and `VBLANK` controls are used to compute the sensor
+output timings.
 
 Optional Requirements
 ---------------------
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index ca33c0094088..ab315bdc468c 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -244,6 +244,7 @@  int CameraSensor::validateSensorDriver()
 		V4L2_CID_EXPOSURE,
 		V4L2_CID_HBLANK,
 		V4L2_CID_PIXEL_RATE,
+		V4L2_CID_VBLANK,
 	};
 
 	ControlList ctrls = subdev_->getControls(mandatoryControls);