diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 0bd0e09ae44c..51eccdce064e 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -852,7 +852,16 @@ const PixelFormatInfo &PixelFormatInfo::info(const PixelFormat &format)
  */
 const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
 {
-	return info(format.toPixelFormat());
+	const auto &info = std::find_if(pixelFormatInfo.begin(), pixelFormatInfo.end(),
+					[&format](auto &pair) {
+						const auto &formats = pair.second.v4l2Formats;
+						return std::find(formats.begin(), formats.end(), format)
+							!= formats.end();
+					});
+	if (info == pixelFormatInfo.end())
+		return pixelFormatInfoInvalid;
+
+	return info->second;
 }

 /**
