[libcamera-devel] [PATCH 01/11] pipeline: ipu3: Check if sensor supports test pattern control
Daniel Scally
dan.scally at ideasonboard.com
Sun Mar 19 00:40:04 CET 2023
The IPU3 pipeline calls CameraSensor::setTestPatternMode() in ::start().
That control is not a libcamera mandatory control and so might not be
present for a sensor. Check for its presence before trying to set the
control to avoid uneccessary failures.
Fixes: acf8d028e ("libcamera: pipeline: ipu3: Apply a requested test pattern mode")
Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
---
I'll patch this control into the ov7251 driver upstream as the sensor does have
a test pattern mode, but still - it's not mandatory!
src/libcamera/pipeline/ipu3/ipu3.cpp | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 355cb0cb..d0d55651 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -722,10 +722,14 @@ int PipelineHandlerIPU3::start(Camera *camera, [[maybe_unused]] const ControlLis
int ret;
/* Disable test pattern mode on the sensor, if any. */
- ret = cio2->sensor()->setTestPatternMode(
- controls::draft::TestPatternModeEnum::TestPatternModeOff);
- if (ret)
- return ret;
+ const ControlInfoMap &sensorControls = cio2->sensor()->controls();
+
+ if (sensorControls.find(&controls::draft::TestPatternMode) != sensorControls.end()) {
+ ret = cio2->sensor()->setTestPatternMode(
+ controls::draft::TestPatternModeEnum::TestPatternModeOff);
+ if (ret)
+ return ret;
+ }
/* Allocate buffers for internal pipeline usage. */
ret = allocateBuffers(camera);
--
2.34.1
More information about the libcamera-devel
mailing list