diff --git a/src/ipa/rpi/cam_helper/cam_helper.cpp b/src/ipa/rpi/cam_helper/cam_helper.cpp
index 6493e88232a4..1422a02e9953 100644
--- a/src/ipa/rpi/cam_helper/cam_helper.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper.cpp
@@ -156,6 +156,11 @@ void CamHelper::setCameraMode(const CameraMode &mode)
 	}
 }
 
+void CamHelper::setHwConfig(const Controller::HardwareConfig &hwConfig)
+{
+	hwConfig_ = hwConfig;
+}
+
 void CamHelper::getDelays(int &exposureDelay, int &gainDelay,
 			  int &vblankDelay, int &hblankDelay) const
 {
diff --git a/src/ipa/rpi/cam_helper/cam_helper.h b/src/ipa/rpi/cam_helper/cam_helper.h
index 4a4ab5e68cba..fb7eb3202e79 100644
--- a/src/ipa/rpi/cam_helper/cam_helper.h
+++ b/src/ipa/rpi/cam_helper/cam_helper.h
@@ -76,6 +76,7 @@ public:
 	CamHelper(std::unique_ptr<MdParser> parser, unsigned int frameIntegrationDiff);
 	virtual ~CamHelper();
 	void setCameraMode(const CameraMode &mode);
+	void setHwConfig(const Controller::HardwareConfig &hwConfig);
 	virtual void prepare(libcamera::Span<const uint8_t> buffer,
 			     Metadata &metadata);
 	virtual void process(StatisticsPtr &stats, Metadata &metadata);
@@ -108,6 +109,7 @@ protected:
 
 	std::unique_ptr<MdParser> parser_;
 	CameraMode mode_;
+	Controller::HardwareConfig hwConfig_;
 
 private:
 	/*
diff --git a/src/ipa/rpi/common/ipa_base.cpp b/src/ipa/rpi/common/ipa_base.cpp
index b3656cbc730b..a7d27ef66ec4 100644
--- a/src/ipa/rpi/common/ipa_base.cpp
+++ b/src/ipa/rpi/common/ipa_base.cpp
@@ -161,6 +161,7 @@ int32_t IpaBase::init(const IPASettings &settings, const InitParams &params, Ini
 	lensPresent_ = params.lensPresent;
 
 	controller_.initialise();
+	helper_->setHwConfig(controller_.getHardwareConfig());
 
 	/* Return the controls handled by the IPA */
 	ControlInfoMap::Map ctrlMap = ipaControls;
