libcamera: camera_sensor: Initialize VIMC properties

The VIMC driver does not yet support all the features required
for all sensor drivers. As it is the main testing platforms and the
driver changes might take a long time to land in the developments
and testing platforms, temporary close the gap by skipping driver
validation and initializing properties with static information such
as the sensor resolution.

Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi 2021-01-05 13:12:38 +01:00
parent a1a20998ac
commit db6a3bfa6e
2 changed files with 27 additions and 0 deletions

View file

@ -70,6 +70,7 @@ protected:
private:
int generateId();
int validateSensorDriver();
void initVimcDefaultProperties();
int initProperties();
const MediaEntity *entity_;

View file

@ -6,6 +6,7 @@
*/
#include "libcamera/internal/camera_sensor.h"
#include "libcamera/internal/media_device.h"
#include <algorithm>
#include <float.h>
@ -207,6 +208,21 @@ int CameraSensor::init()
*/
resolution_ = sizes_.back();
/*
* VIMC is a bit special, as it does not yet support all the mandatory
* requirements regular sensors have to respect.
*
* Do not validate the driver if it's VIMC and initialize the sensor
* properties with static information.
*
* \todo Remove the special case once the VIMC driver has been
* updated in all test platforms.
*/
if (entity_->device()->driver() == "vimc") {
initVimcDefaultProperties();
return initProperties();
}
ret = validateSensorDriver();
if (ret)
return ret;
@ -304,6 +320,16 @@ int CameraSensor::validateSensorDriver()
return 0;
}
/*
* \brief Initialize properties that cannot be intialized by the
* regular initProperties() function for VIMC
*/
void CameraSensor::initVimcDefaultProperties()
{
pixelArraySize_ = resolution();
activeArea_ = Rectangle(pixelArraySize_);
}
int CameraSensor::initProperties()
{
/*