diff --git a/src/libcamera/include/v4l2_controls.h b/src/libcamera/include/v4l2_controls.h
index 89cc74485e6f..133f5262febf 100644
--- a/src/libcamera/include/v4l2_controls.h
+++ b/src/libcamera/include/v4l2_controls.h
@@ -31,14 +31,10 @@ public:
 	V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl);
 
 	const ControlId &id() const { return id_; }
-	size_t size() const { return size_; }
-
 	const ControlRange &range() const { return range_; }
 
 private:
 	V4L2ControlId id_;
-	size_t size_;
-
 	ControlRange range_;
 };
 
diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
index c45d3fda2e1f..dcf31b7a8f26 100644
--- a/src/libcamera/v4l2_controls.cpp
+++ b/src/libcamera/v4l2_controls.cpp
@@ -127,8 +127,6 @@ V4L2ControlId::V4L2ControlId(const struct v4l2_query_ext_ctrl &ctrl)
 V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
 	: id_(ctrl)
 {
-	size_ = ctrl.elem_size * ctrl.elems;
-
 	if (ctrl.type == V4L2_CTRL_TYPE_INTEGER64)
 		range_ = ControlRange(static_cast<int64_t>(ctrl.minimum),
 				      static_cast<int64_t>(ctrl.maximum));
@@ -143,12 +141,6 @@ V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
  * \return The V4L2 control ID
  */
 
-/**
- * \fn V4L2ControlInfo::size()
- * \brief Retrieve the control value data size (in bytes)
- * \return The V4L2 control value data size
- */
-
 /**
  * \fn V4L2ControlInfo::range()
  * \brief Retrieve the control value range
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp
index b47ba448f354..54cc214ecce9 100644
--- a/src/libcamera/v4l2_device.cpp
+++ b/src/libcamera/v4l2_device.cpp
@@ -8,11 +8,13 @@
 #include "v4l2_device.h"
 
 #include <fcntl.h>
+#include <iomanip>
 #include <string.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
 
 #include "log.h"
+#include "utils.h"
 #include "v4l2_controls.h"
 
 /**
@@ -360,6 +362,13 @@ void V4L2Device::listControls()
 		    ctrl.flags & V4L2_CTRL_FLAG_DISABLED)
 			continue;
 
+		if (ctrl.elems != 1 || ctrl.nr_of_dims) {
+			LOG(V4L2, Debug)
+				<< "Array control " << utils::hex(ctrl.id)
+				<< " not supported";
+			continue;
+		}
+
 		switch (ctrl.type) {
 		case V4L2_CTRL_TYPE_INTEGER:
 		case V4L2_CTRL_TYPE_BOOLEAN:
@@ -371,8 +380,9 @@ void V4L2Device::listControls()
 			break;
 		/* \todo Support compound controls. */
 		default:
-			LOG(V4L2, Debug) << "Control type '" << ctrl.type
-					 << "' not supported";
+			LOG(V4L2, Debug)
+				<< "Control " << utils::hex(ctrl.id)
+				<< " has unsupported type " << ctrl.type;
 			continue;
 		}
 
