From 55ead4647794072a4f4a866a65d18f8483c2998d Mon Sep 17 00:00:00 2001
From: Jacopo Mondi <jacopo@jmondi.org>
Date: Wed, 4 Mar 2020 23:45:59 +0100
Subject: libcamera: v4l2_controls: Support U8 array controls

Add support for array controls of type V4L2_CTRL_TYPE_U8.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/libcamera/v4l2_controls.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
index 4861f977..8e2415f2 100644
--- a/src/libcamera/v4l2_controls.cpp
+++ b/src/libcamera/v4l2_controls.cpp
@@ -60,6 +60,9 @@ std::string v4l2_ctrl_name(const struct v4l2_query_ext_ctrl &ctrl)
 ControlType v4l2_ctrl_type(const struct v4l2_query_ext_ctrl &ctrl)
 {
 	switch (ctrl.type) {
+	case V4L2_CTRL_TYPE_U8:
+		return ControlTypeByte;
+
 	case V4L2_CTRL_TYPE_BOOLEAN:
 		return ControlTypeBool;
 
@@ -119,6 +122,12 @@ V4L2ControlId::V4L2ControlId(const struct v4l2_query_ext_ctrl &ctrl)
 V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
 {
 	switch (ctrl.type) {
+	case V4L2_CTRL_TYPE_U8:
+		ControlInfo::operator=(ControlInfo(static_cast<uint8_t>(ctrl.minimum),
+						   static_cast<uint8_t>(ctrl.maximum),
+						   static_cast<uint8_t>(ctrl.default_value)));
+		break;
+
 	case V4L2_CTRL_TYPE_BOOLEAN:
 		ControlInfo::operator=(ControlInfo(static_cast<bool>(ctrl.minimum),
 						   static_cast<bool>(ctrl.maximum),
-- 
cgit v1.2.1