diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
index caab09b00..5042950cf 100644
--- a/src/libcamera/pipeline/simple/simple.cpp
+++ b/src/libcamera/pipeline/simple/simple.cpp
@@ -251,20 +251,22 @@ struct SimplePipelineInfo {
 	 * The Software ISP can't be used together with the converters.
 	 */
 	bool swIspEnabled;
+	/* Flags controlling Software ISP behavior. */
+	SoftwareIsp::SoftwareIspFlags swIspFlags;
 };
 
 namespace {
 
 static const SimplePipelineInfo supportedDevices[] = {
-	{ "dcmipp", {}, false },
-	{ "imx7-csi", { { "pxp", 1 } }, true },
-	{ "intel-ipu6", {}, true },
-	{ "intel-ipu7", {}, true },
-	{ "j721e-csi2rx", {}, true },
-	{ "mtk-seninf", { { "mtk-mdp", 3 } }, false },
-	{ "mxc-isi", {}, false },
-	{ "qcom-camss", {}, true },
-	{ "sun6i-csi", {}, false },
+	{ "dcmipp", {}, false, {} },
+	{ "imx7-csi", { { "pxp", 1 } }, true, SoftwareIsp::SoftwareIspFlag::AllocCmaDmaBuffers },
+	{ "intel-ipu6", {}, true, {} },
+	{ "intel-ipu7", {}, true, {} },
+	{ "j721e-csi2rx", {}, true, SoftwareIsp::SoftwareIspFlag::AllocCmaDmaBuffers },
+	{ "mtk-seninf", { { "mtk-mdp", 3 } }, false, {} },
+	{ "mxc-isi", {}, false, {} },
+	{ "qcom-camss", {}, true, {} },
+	{ "sun6i-csi", {}, false, {} },
 };
 
 bool isRaw(const StreamConfiguration &cfg)
@@ -427,6 +429,7 @@ public:
 	V4L2Subdevice *subdev(const MediaEntity *entity);
 	std::shared_ptr<MediaDevice> converter() { return converter_; }
 	bool swIspEnabled() const { return swIspEnabled_; }
+	SoftwareIsp::SoftwareIspFlags swIspFlags() const { return swIspFlags_; }
 
 protected:
 	int queueRequestDevice(Camera *camera, Request *request) override;
@@ -460,6 +463,7 @@ private:
 
 	std::shared_ptr<MediaDevice> converter_;
 	bool swIspEnabled_;
+	SoftwareIsp::SoftwareIspFlags swIspFlags_;
 };
 
 /* -----------------------------------------------------------------------------
@@ -616,7 +620,7 @@ int SimpleCameraData::init()
 	 */
 	if (!converter_ && pipe->swIspEnabled()) {
 		swIsp_ = std::make_unique<SoftwareIsp>(pipe, sensor_.get(),
-						       SoftwareIsp::SoftwareIspFlag::AllocCmaDmaBuffers,
+						       pipe->swIspFlags(),
 						       &controlInfo_);
 		if (!swIsp_->isValid()) {
 			LOG(SimplePipeline, Warning)
@@ -1883,6 +1887,7 @@ bool SimplePipelineHandler::matchDevice(std::shared_ptr<MediaDevice> media,
 	}
 
 	swIspEnabled_ = info.swIspEnabled;
+	swIspFlags_ = info.swIspFlags;
 	const GlobalConfiguration &configuration = cameraManager()->_d()->configuration();
 	for (const ValueNode &entry :
 	     configuration.configuration()["pipelines"]["simple"]["supported_devices"]
