diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h
index bf83d53134bf..a662807ab504 100644
--- a/include/libcamera/internal/camera_sensor.h
+++ b/include/libcamera/internal/camera_sensor.h
@@ -20,6 +20,7 @@
 
 namespace libcamera {
 
+class BayerFormat;
 class MediaEntity;
 
 struct CameraSensorInfo {
@@ -89,6 +90,7 @@ private:
 
 	Size pixelArraySize_;
 	Rectangle activeArea_;
+	const BayerFormat *bayerFormat_;
 
 	ControlList properties_;
 };
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 2d15043431aa..35312857ff90 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -133,7 +133,8 @@ LOG_DEFINE_CATEGORY(CameraSensor)
  * Once constructed the instance must be initialized with init().
  */
 CameraSensor::CameraSensor(const MediaEntity *entity)
-	: entity_(entity), pad_(UINT_MAX), properties_(properties::properties)
+	: entity_(entity), pad_(UINT_MAX), bayerFormat_(nullptr),
+	  properties_(properties::properties)
 {
 }
 
@@ -223,6 +224,15 @@ int CameraSensor::init()
 		return initProperties();
 	}
 
+	/* Get the color filter array pattern (only for RAW sensors). */
+	for (unsigned int mbusCode : mbusCodes_) {
+		const BayerFormat &bayerFormat = BayerFormat::fromMbusCode(mbusCode);
+		if (bayerFormat.isValid()) {
+			bayerFormat_ = &bayerFormat;
+			break;
+		}
+	}
+
 	ret = validateSensorDriver();
 	if (ret)
 		return ret;
@@ -405,14 +415,9 @@ int CameraSensor::initProperties()
 	properties_.set(properties::PixelArrayActiveAreas, { activeArea_ });
 
 	/* Color filter array pattern, register only for RAW sensors. */
-	for (const auto &format : formats_) {
-		unsigned int mbusCode = format.first;
-		BayerFormat bayerFormat = BayerFormat::fromMbusCode(mbusCode);
-		if (!bayerFormat.isValid())
-			continue;
-
+	if (bayerFormat_) {
 		int32_t cfa;
-		switch (bayerFormat.order) {
+		switch (bayerFormat_->order) {
 		case BayerFormat::BGGR:
 			cfa = properties::draft::BGGR;
 			break;
@@ -428,7 +433,6 @@ int CameraSensor::initProperties()
 		}
 
 		properties_.set(properties::draft::ColorFilterArrangement, cfa);
-		break;
 	}
 
 	return 0;
