[libcamera-devel] [IPU3-IPA PATCH] ipu3: ipa: Update to latest IPACameraSensorInfo

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Oct 19 01:13:13 CEST 2022


In libcamera commit e5fc0132f80d ("camera_sensor: Add minimum and
maximum line length to IPACameraSensorInfo"), the IPU3 IPA interface is
updated to provide both minimum and maximum line lengths, replacing the
existing lineLenght field.

Update the ipu3-ipa to use IPACameraSensorInfo::minLineLength instead of
IPACameraSensorInfo::lineLength, as logically we will always want to use
the fastest sensor readout by default.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 aiq/aiq_input_parameters.cpp | 2 +-
 ipu3.cpp                     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/aiq/aiq_input_parameters.cpp b/aiq/aiq_input_parameters.cpp
index 7a6a1fac8a37..1639b61b1831 100644
--- a/aiq/aiq_input_parameters.cpp
+++ b/aiq/aiq_input_parameters.cpp
@@ -79,7 +79,7 @@ void AiqInputParameters::reset()
 int AiqInputParameters::configure(const IPAConfigInfo &configInfo)
 {
 	sensorDescriptor.pixel_clock_freq_mhz = configInfo.sensorInfo.pixelRate / 1000000;
-	sensorDescriptor.pixel_periods_per_line = configInfo.sensorInfo.lineLength;
+	sensorDescriptor.pixel_periods_per_line = configInfo.sensorInfo.minLineLength;
 	sensorDescriptor.line_periods_per_field = configInfo.sensorInfo.minFrameLength;
 	sensorDescriptor.line_periods_vertical_blanking = 106; /* default */
 	//INFO: fine integration is not supported by v4l2
diff --git a/ipu3.cpp b/ipu3.cpp
index 7ecd377346f0..f3c65c7c142d 100644
--- a/ipu3.cpp
+++ b/ipu3.cpp
@@ -118,7 +118,7 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo,
 	 * exposure min, max and default and convert it from lines to
 	 * microseconds.
 	 */
-	double lineDuration = sensorInfo.lineLength / (sensorInfo.pixelRate / 1e6);
+	double lineDuration = sensorInfo.minLineLength / (sensorInfo.pixelRate / 1e6);
 	const ControlInfo &v4l2Exposure = sensorControls.find(V4L2_CID_EXPOSURE)->second;
 	int32_t minExposure = v4l2Exposure.min().get<int32_t>() * lineDuration;
 	int32_t maxExposure = v4l2Exposure.max().get<int32_t>() * lineDuration;
-- 
2.34.1



More information about the libcamera-devel mailing list