summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi
AgeCommit message (Collapse)Author
2022-08-02ipa: raspberrypi: Reset embedded data parser on configureDavid Plowman
When we switch camera mode following a pipeline reconfiguration, the embedded data parser should be "reset" to discard any data that it may have cached and that might now be invalid. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-29ipa: raspberry: awb: Include <functional>Jacopo Mondi
Building on gcc8 on Debian 10 fails with asyncThread_ = std::thread(std::bind(&Awb::asyncFunc, this)); ../src/ipa/raspberrypi/controller/rpi/awb.cpp:177:34: note: ‘std::bind’ is defined in header ‘<functional>’; did you forget to ‘#include <functional>’? Fix that by including <functional> in awb.cpp. Fixes: c1597f989654 ("ipa: raspberrypi: Use YamlParser to replace dependency on boost") Reported-by: https://buildbot.libcamera.org/#/builders/6/builds/414 Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
2022-07-28ipa: raspberrypi: Add functional include to pwl.hEric Curtin
The Pwl class uses std::function, defined in <functional>, without including the header directly. This results in a compilation error with the Fedora 36 compiler toolchain (gcc 12.1.1): In file included from ../src/ipa/raspberrypi/controller/rpi/awb.h:14, from ../src/ipa/raspberrypi/controller/rpi/awb.cpp:14: ../src/ipa/raspberrypi/controller/rpi/../pwl.h:97:18: error: 'std::function' has not been declared 97 | void map(std::function<void(double x, double y)> f) const; | ^~~ Fix it by including <functional>. Fixes: c1597f989654 ("ipa: raspberrypi: Use YamlParser to replace dependency on boost") Signed-off-by: Eric Curtin <ecurtin@redhat.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-28ipa: raspberrypi: Remove unused Controller constructorNaushir Patuck
The Controller(char const *jsonFilename) is not valid anymore since Controller::read() can now return an error on a failure. Additionally, this constructor is not actually used, so remove it. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-28ipa: raspberrypi: agc: Use YamlObject::getList()Laurent Pinchart
Replace the manual implementation of the readList() functions with YamlObject::getList(). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
2022-07-28ipa: raspberrypi: Convert existing cameara tuning files to version 2.0Naushir Patuck
Use the convert_tuning.py script to convert all existing tuning files to version 2.0. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
2022-07-28ipa: raspberrypi: Introduce version 2.0 format for the camera tuning fileNaushir Patuck
The existing tuning file format (version 1.0) requires the controller algorithms to run in the same order as listed in the JSON structure. The JSON specification does not mandate any such ordering, but the Boost JSON parser would maintain this order. In order to remove this reliance on the parser to provide ordering, introduce a new version 2.0 format for the camera tuning file. In this version, the algorithms are specified in a top level list node ("algorithms"), which does require strict ordering of the elements. A "version" node is added to distinguish between the version 1.0 and 2.0 formats. The absence of the "version" node implies version 1.0. A "target" node is also added to specify the target platform for this configuration. Update the controller to support either version of the tuning file by looking at the version node. CreateAlgorithm member function to now load and configure each algorithm. Additionally, make CreateAlgorithm a private member, it does not get called externally. If a version 1.0 format tuning file is used, throw a warning message indicating it will be soon deprecated. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-28ipa: raspberrypi: Use YamlParser to replace dependency on boostLaurent Pinchart
The Raspberry Pi IPA module depends on boost only to parse the JSON tuning data files. As libcamera depends on libyaml, use the YamlParser class to parse those files and drop the dependency on boost. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> /** * \struct IPCMessage::Header * \brief Container for an IPCMessage header * * Holds a cmd code for the IPC message, and a cookie. */ /** * \var IPCMessage::Header::cmd * \brief Type of IPCMessage * * Typically used to carry a command code for an RPC. */ /** * \var IPCMessage::Header::cookie * \brief Cookie to identify the message and
2022-07-28ipa: raspberrypi: Propagate errors from AGC metering tuning data readLaurent Pinchart
Update the AGC metering functions that deal with reading tuning data to propagate errors to the caller, using std::tie and std::tuple to group the error code and return value. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
2022-07-28ipa: raspberrypi: Return an error code from Algorithm::read()Laurent Pinchart
When encountering errors, the Algorithm::read() function either uses LOG(Fatal) or throws exceptions from the boost property_tree functions. To prepare for replacing boost JSON parse with the YamlParser class, give the Algorithm::read() function the ability to return an error code, and propagate it all the way to the IPA module init() function. All algorithm classes return a hardcoded 0 value for now, subsequent commits will change that. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
2022-07-28ipa: raspberrypi: Replace tabs with spaces in tuning data filesLaurent Pinchart
Tuning data files mostly use spaces for indentation, with occasional stray tabs. Use spaces consistently. This allows parsing the tuning files with libyaml, preparing to replace the dependency on boost. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Tested-by: Naushir Patuck <naush@raspberrypi.com>
2022-07-27ipa: raspberrypi: agc: Fix log message prefixesNaushir Patuck
Remove "Agc:" as that gets prefixed by the logging system. s/AgcConfig/AgcMeteringMode/ and s/AgcConfig/AgcMeteringMode where appropriate. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-27ipa: raspberrypi: Remove #define constantsNaushir Patuck
Replace all #define constant values with equivalent constexpr definitions. As a drive-by, remove the CAMERA_MODE_NAME_LEN constant as it is unused. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-27ipa: raspberryip: Remove all exception throw statementsNaushir Patuck
Replace all exception throw statements with LOG(RPi*, Fatal) error messages. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-27raspberrypi: Update Copyright statement in all Raspberry Pi source filesNaushir Patuck
s/Raspberry Pi (Trading) Limited/Raspberry Pi Ltd/ to reflect the new Raspberry Pi entity name. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-27ipa: raspberrypi: Rename header files from *.hpp to *.hNaushir Patuck
As per the libcamera coding guidelines, rename all .hpp header files to .h. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart < memcpy(payload.data.data(), &header_, sizeof(Header)); if (data_.size() > 0) { /* \todo Make this work without copy */ memcpy(payload.data.data() + sizeof(Header), data_.data(), data_.size()); } for (const SharedFD &fd : fds_) payload.fds.push_back(fd.get()); return payload; } /** * \fn IPCMessage::header() * \brief Returns a reference to the header */ /** * \fn IPCMessage::data() * \brief Returns a reference to the byte vector containing data */ /** * \fn IPCMessage::fds() * \brief Returns a reference to the vector containing file descriptors */ /** * \fn IPCMessage::header() const * \brief Returns a const reference to the header */ /** * \fn IPCMessage::data() const * \brief Returns a const reference to the byte vector containing data */ /** * \fn IPCMessage::fds() const * \brief Returns a const reference to the vector containing file descriptors */ /** * \class IPCPipe * \brief IPC message pipe for IPA isolation * * Virtual class to model an IPC message pipe for use by IPA proxies for IPA * isolation. sendSync() and sendAsync() must be implemented, and the recvMessage * signal must be emitted whenever new data is available. */ /** * \brief Construct an IPCPipe instance */ IPCPipe::IPCPipe() : connected_(false) { } IPCPipe::~IPCPipe() { } /** * \fn IPCPipe::isConnected() * \brief Check if the IPCPipe instance is connected * * An IPCPipe instance is connected if IPC is successfully set up. * * \return True if the IPCPipe is connected, false otherwise */ /** * \fn IPCPipe::sendSync() * \brief Send a message over IPC synchronously * \param[in] in Data to send * \param[in] out IPCMessage instance in which to receive data, if applicable * * This function will not return until a response is received. The event loop * will still continue to execute, however. * * \return Zero on success, negative error code otherwise * * \todo Determine if the event loop should limit the types of messages it * processes, to avoid reintrancy in the caller, and carefully document what * the caller needs to implement to make this safe. */ /** * \fn IPCPipe::sendAsync() * \brief Send a message over IPC asynchronously * \param[in] data Data to send * * This function will return immediately after sending the message. * * \return Zero on success, negative error code otherwise */ /** * \var IPCPipe::recv * \brief Signal to be emitted when a message is received over IPC * * When a message is received over IPC, this signal shall be emitted. Users must * connect to this to receive messages. */ /** * \var IPCPipe::connected_ * \brief Flag to indicate if the IPCPipe instance is connected * * An IPCPipe instance is connected if IPC is successfully set up. * * This flag can be read via IPCPipe::isConnected(). * * Implementations of the IPCPipe class should set this flag upon successful * connection. */ } /* namespace libcamera */
dded data buffer and add it to the DeviceStatus structure in CamHelperImx477::PopulateMetadata(). Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-06-29ipa: raspberrypi: Add sensor temperature to DeviceStatusNaushir Patuck Add an optional sensor_temperature field to the DeviceStatus structure. If a temperature measurement is available for a frame, the value is returned out through the SensorTemperature control in the Request metadata. Additionally, provide the sensor temperature value from the std::ostream &operator<< overload. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-05-10libcamera: raspberrypi: Fetch correct value for SensorSensitivityDavid Plowman These changes retrieve the correct value for sensitivity of the mode selected for the sensor. This value is known to the CamHelper which passes it across to the pipeline handler so that it can be set correctly in the camera properties. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-05-09ipa: raspberrypi: Demote noisy message to DebugLaurent Pinchart The message that prints all controls in a request in IPARPi::queueRequest() is noisy. Demote it from Info to Debug. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> 2022-04-14ipa: RPi: Move the IPA to the ipa::RPi namespaceJean-Michel Hautbois Simplify name-spacing of the RPi components by placing it in the ipa::RPi namespace directly. It also aligns the RPi IPA with the other ones (ipa::ipu3 and ipa::rkisp1) which already have this applied. Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-04-06pipeline: raspberrypi: Add a Unicam dequeue timeoutNaushir Patuck Enable the V4L2VideoDevice dequeue timeout for the Unicam Image node, and connect the timeout signal to a slot in the pipeline handler. This slot will log an error message informing the user of a possible hardware stall. The timeout is calculated as 2x the maximum frame length possible for a given mode, returned by the IPA. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-04-06ipa: raspberrypi: alsc: Limit the calculated lambda valuesNaushir Patuck Under the right circumstances, the alsc calculations could spread the colour errors across the entire image as lambda remains unbound. This would cause the corrected image chroma values to slowly drift to incorrect values. This change adds a config parameter (alsc.lambda_bound) that provides an upper and lower bound to the lambda value at every stage of the calculation. With this change, we now adjust the lambda values so that the average across the entire grid is 1 instead of normalising to the minimum value. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-03-23ipa: raspberrypi: Add tuning file for IMX296 sensorNaushir Patuck The Sony IMX296 exists in two versions, colour (Bayer) and monochrome. The tuning file corresponds to the monochrome version. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> 2022-03-23ipa: raspberrypi: Add camera helper for Sony IMX296 sensorNaushir Patuck The Sony IMX296 sensor has an exponential gain model, and adds a fixed 14.26µs offset to the exposure time expressed in line units. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-03-23ipa: raspberrypi: cam_helper: Make exposure conversion functions virtualNaushir Patuck Some sensors (namely the Sony IMX296, whose support will be added shortly) require different conversion formulas between exposure time and exposure lines. Make the Exposure() and ExposureLines() functions virtual to allow this. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2022-03-23ipa: raspberrypi: awb: Fix typo in AWB mode conversion tableDavid Plowman The AwbAuto mode is defined in all the JSON tuning files as "auto", not "normal". The effect of this was that you couldn't switch back to "auto" mode once you had switched away. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-02-10ipa: raspberrypi: Reduce the controller rate to 30fpsNaushir Patuck With the controller algorithms running at 60fps, there are some dropped frames when running at very high famerates. Reducing this to 30fps eliminates all these drops without any noticeable changes to the image quality. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-02-08ipa: raspberrypi: awb: Better handling of how we disable AWBDavid Plowman We now handle disabling ("pausing") AWB in the same way as AEC/AGC. Instead of letting the pause flag be set so that the code never runs at all, we instead fix the manual settings to the current values (but continue to be called). The algorithm does not restart any calculations in this state, but continues to add AWB metadata to every frame. Therefore certain other algorithms that want to know it (CCM and ALSC, for example) can still find it. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-02-03ipa: raspberrypi: config: Increase the max gain in the exposure profilesNaushir Patuck Increase the maximum allowable gain from 6.0 to 8.0 in the normal and short exposure profiles for all camera sensors. Increase this limit to 12.0 for the long exposure profiles for sensors where this has been defined. The 6.0x value was somewhat arbitrarily chosen, and does limit the total exposure in dark conditions. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2022-02-03ipa: raspberrypi: Limit the maximum sensor gain usedNaushir Patuck Limit the gain code to the maximum value reported by the sensor controls when sending to DelayedControls. The AGC algorithm will handle a lower gain used by the sensor, provided it knows the actual gain used. This change ensures that DelayedControls will never report an unclipped gain used. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2021-12-04libcamera: base: shared_fd: Rename fd() to get()Laurent Pinchart For consistency with UniqueFD, rename the fd() function to get(). Renaming UniqueFD::get() to fd() would have been another option, but was rejected to keep as close as possible to the std::shared_ptr<> and std::unique_ptr<> APIs. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> 2021-12-04libcamera: base: Rename FileDescriptor to SharedFDLaurent Pinchart Now that we have a UniqueFD class, the name FileDescriptor is ambiguous. Rename it to SharedFD. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> 2021-12-03libcamera: Move file_descriptor.h to base/Laurent Pinchart The FileDescriptor class is a generic helper that matches the criteria for the base library. Move it there. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> 2021-11-25ipa: raspberrypi: Update documentation urlsNaushir Patuck Update the urls in the README file for building/running libcamera on the Raspberry Pi platforms. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2021-11-02libcamera: ipa: raspberrypi: Add support for imx519 sensorArducam info The necessary tuning file and CamHelper is added for the imx519 sensor. The imx519 is a 16MP rolling shutter sensor. To enable it, please add dtoverlay=imx519 to the /boot/config.txt file and reboot the Pi. Signed-off-by: Lee Jackson <info@arducam.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2021-10-15ipa: raspberrypi: agc: Remove using namespace in agc.hppHirokazu Honda "using namespace" in a header file propagates the namespace to the files including the header file. So it should be avoided. This removes "using namespace" in agc.hpp. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2021-10-07pipeline: raspberrypi: Create empty control lists correctlyDavid Plowman When the pipeline handler start() method is supplied with a NULL list of controls, we send an empty control list to the IPA. When the IPA is running in isolated mode the control list goes through the data serializer, for which it must be marked correctly as a list of "controls::controls", otherwise the IPA process will abort. The IPA has a similar problem returning a control list in its configure() method. We must be careful to initialise it properly even when empty. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2021-08-31libcamera: mapped_framebuffer: Rename maps() to planes()Hirokazu Honda MappedFrameBuffer::maps() returns planes_. This renames the function name to planes(). Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2021-08-17ipa: raspberrypi: Fix bcm2835-isp inclusion type.Kieran Bingham The bcm2835-isp.h is included with quotes rather than angle brackets. Quoted includes is reserved for internal includes, while the linux/bcm2835-isp.h header is exported from the Linux kernel. Fix the inclusion type. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> 2021-08-14raspberrypi: ipa: Add tuning files for "NOIR" ov5647, imx219, imx477 modulesDavid Plowman "NOIR" modules are ones that have had the IR filters removed but are otherwise identical. The same tuning can be used as for the regular version except that the colour calibration supplied to the AWB algorithm no longer works. Instead we need to switch the algorithm to its basic "grey world" method. Users with "NOIR" modules can switch to the matching "xxx_noir.json" tuning file by using the LIBCAMERA_RPI_TUNING_FILE environment variable. Signed-off-by: David Plowman <david.plowman@raspberypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 2021-08-10libcamera: MappedFrameBuffer: Use typed Flags<MapModes>Kieran Bingham Remove the need for callers to reference PROT_READ/PROT_WRITE directly from <sys/mman.h> by instead exposing the Read/Write mapping options as flags from the MappedFrameBuffer class itself. While here, introduce the <stdint.h> header which is required for the uint8_t as part of the Plane. Reviewed-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>