diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index c9d41f93cff5b81710b76592303f1e0d10697326..8fc2d7310c5c6e08b3eff6cc575c221d21c1131f 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -57,11 +57,6 @@ static constexpr utils::Duration kMaxExposureTime = 60ms;
 /* Histogram constants */
 static constexpr uint32_t knumHistogramBins = 256;
 
-Agc::Agc()
-	: minExposureTime_(0s), maxExposureTime_(0s)
-{
-}
-
 /**
  * \brief Initialise the AGC algorithm from tuning files
  * \param[in] context The shared IPA context
@@ -101,10 +96,6 @@ int Agc::configure(IPAContext &context,
 	stride_ = configuration.grid.stride;
 	bdsGrid_ = configuration.grid.bdsGrid;
 
-	minExposureTime_ = configuration.sensor.minExposureTime;
-	maxExposureTime_ = std::min(configuration.sensor.maxExposureTime,
-				    kMaxExposureTime);
-
 	minAnalogueGain_ = std::max(configuration.sensor.minAnalogueGain, kMinAnalogueGain);
 	maxAnalogueGain_ = configuration.sensor.maxAnalogueGain;
 
@@ -117,10 +108,10 @@ int Agc::configure(IPAContext &context,
 
 	AgcMeanLuminance::SensorConfiguration sensorConfig;
 	sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
-	sensorConfig.minExposureTime = minExposureTime_;
+	sensorConfig.minExposureTime = configuration.sensor.minExposureTime;
 	sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
-	sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
-	sensorConfig.maxExposureTime = maxExposureTime_;
+	sensorConfig.maxFrameDuration = std::min(context.configuration.sensor.maxFrameDuration,
+						 kMaxExposureTime);
 	sensorConfig.minAnalogueGain = minAnalogueGain_;
 	sensorConfig.maxAnalogueGain = maxAnalogueGain_;
 
diff --git a/src/ipa/ipu3/algorithms/agc.h b/src/ipa/ipu3/algorithms/agc.h
index 890c271b44627f337c0d8a85853e1ecc3bae1318..4c2e4e3e5913d87a5af420b17f6c487aeb6cc37a 100644
--- a/src/ipa/ipu3/algorithms/agc.h
+++ b/src/ipa/ipu3/algorithms/agc.h
@@ -27,7 +27,6 @@ namespace ipa::ipu3::algorithms {
 class Agc : public Algorithm, public AgcMeanLuminance
 {
 public:
-	Agc();
 	~Agc() = default;
 
 	int init(IPAContext &context, const YamlObject &tuningData) override;
@@ -42,9 +41,6 @@ private:
 	Histogram parseStatistics(const ipu3_uapi_stats_3a *stats,
 				  const ipu3_uapi_grid_config &grid);
 
-	utils::Duration minExposureTime_;
-	utils::Duration maxExposureTime_;
-
 	double minAnalogueGain_;
 	double maxAnalogueGain_;
 
diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp
index 47ae750f0ddb859e1a08e75e255b8decacd730a1..4281ffba5f7fc841e47132986631c0ee44c898ff 100644
--- a/src/ipa/ipu3/ipa_context.cpp
+++ b/src/ipa/ipu3/ipa_context.cpp
@@ -111,9 +111,6 @@ namespace libcamera::ipa::ipu3 {
  * \var IPASessionConfiguration::agc.minExposureTime
  * \brief Minimum exposure time supported with the configured sensor
  *
- * \var IPASessionConfiguration::agc.maxExposureTime
- * \brief Maximum exposure time supported with the configured sensor
- *
  * \var IPASessionConfiguration::agc.minAnalogueGain
  * \brief Minimum analogue gain supported with the configured sensor
  *
diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h
index 33f3fe3ae1b503d47887873046def0835cd53894..11b9c286d56ac6f30d446e3721f7e5db4364a6fb 100644
--- a/src/ipa/ipu3/ipa_context.h
+++ b/src/ipa/ipu3/ipa_context.h
@@ -38,7 +38,6 @@ struct IPASessionConfiguration {
 		utils::Duration lineDuration;
 		Size size;
 		utils::Duration minExposureTime;
-		utils::Duration maxExposureTime;
 		utils::Duration minFrameDuration;
 		utils::Duration maxFrameDuration;
 		double minAnalogueGain;
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index 0c8651c5235f9e4e9944eb88595aeef41f016310..61e8030d722f430e702a8b8f7e2880caa961fa8e 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -206,7 +206,6 @@ void IPAIPU3::updateSessionConfiguration(const IPACameraSensorInfo &sensorInfo,
 
 	const ControlInfo &v4l2Exposure = sensorControls.find(V4L2_CID_EXPOSURE)->second;
 	int32_t minExposure = v4l2Exposure.min().get<int32_t>();
-	int32_t maxExposure = v4l2Exposure.max().get<int32_t>();
 
 	const ControlInfo &v4l2Gain = sensorControls.find(V4L2_CID_ANALOGUE_GAIN)->second;
 	int32_t minGain = v4l2Gain.min().get<int32_t>();
@@ -226,7 +225,6 @@ void IPAIPU3::updateSessionConfiguration(const IPACameraSensorInfo &sensorInfo,
 	 * \todo take VBLANK into account for maximum exposure time
 	 */
 	context_.configuration.sensor.minExposureTime = minExposure * context_.configuration.sensor.lineDuration;
-	context_.configuration.sensor.maxExposureTime = maxExposure * context_.configuration.sensor.lineDuration;
 	context_.configuration.sensor.minFrameDuration = frameHeights[0] *
 							 context_.configuration.sensor.lineDuration;
 	context_.configuration.sensor.maxFrameDuration = frameHeights[1] *
diff --git a/src/ipa/libipa/agc_mean_luminance.cpp b/src/ipa/libipa/agc_mean_luminance.cpp
index 725a23ef2f6f612c6d3408701246db7415fd8327..b930e1f7240d4936aa8dc850657bbbf9c2f3a11f 100644
--- a/src/ipa/libipa/agc_mean_luminance.cpp
+++ b/src/ipa/libipa/agc_mean_luminance.cpp
@@ -115,9 +115,6 @@ static constexpr double kMaxRelativeLuminanceTarget = 0.95;
  * \var AgcMeanLuminance::SensorConfiguration::minExposureTime
  * \brief The sensor minimum exposure time in microseconds
  *
- * \var AgcMeanLuminance::SensorConfiguration::maxExposureTime
- * \brief The sensor maximum exposure time in microseconds
- *
  * \var AgcMeanLuminance::SensorConfiguration::minFrameDuration
  * \brief The sensor minimum frame duration in microseconds
  *
@@ -372,7 +369,6 @@ void AgcMeanLuminance::configure(const SensorConfiguration &config,
 		ExposureModeHelper::SensorConfiguration sensorConfig;
 		sensorConfig.lineDuration_ = config.lineDuration;
 		sensorConfig.minExposureTime_ = config.minExposureTime;
-		sensorConfig.maxExposureTime_ = config.maxExposureTime;
 		sensorConfig.minFrameDuration_ = config.minFrameDuration;
 		sensorConfig.maxFrameDuration_ = config.maxFrameDuration;
 		sensorConfig.minGain_ = config.minAnalogueGain;
diff --git a/src/ipa/libipa/agc_mean_luminance.h b/src/ipa/libipa/agc_mean_luminance.h
index acbefc4e5765413bc803417eae1dbd0a943bc95e..93a0959bbd9e0d6ec42248f2d3b19253ad389ae6 100644
--- a/src/ipa/libipa/agc_mean_luminance.h
+++ b/src/ipa/libipa/agc_mean_luminance.h
@@ -45,7 +45,6 @@ public:
 	struct SensorConfiguration {
 		utils::Duration lineDuration;
 		utils::Duration minExposureTime;
-		utils::Duration maxExposureTime;
 		utils::Duration minFrameDuration;
 		utils::Duration maxFrameDuration;
 		double minAnalogueGain;
diff --git a/src/ipa/mali-c55/algorithms/agc.cpp b/src/ipa/mali-c55/algorithms/agc.cpp
index 91b1438f7e5ca0498373c86fd75b91f9c5a81c3f..a0b55694aad292f8a080d8266470797ac0cc2c25 100644
--- a/src/ipa/mali-c55/algorithms/agc.cpp
+++ b/src/ipa/mali-c55/algorithms/agc.cpp
@@ -176,7 +176,6 @@ int Agc::configure(IPAContext &context,
 	AgcMeanLuminance::SensorConfiguration sensorConfig;
 	sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
 	sensorConfig.minExposureTime = context.configuration.sensor.minShutterSpeed;
-	sensorConfig.maxExposureTime = context.configuration.sensor.maxShutterSpeed;
 	sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
 	sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
 	sensorConfig.minAnalogueGain = context.configuration.sensor.minAnalogueGain;
diff --git a/src/ipa/mali-c55/ipa_context.h b/src/ipa/mali-c55/ipa_context.h
index 3b64cb7571729d4af162def5b2316331b3561af1..828103f21451d9f7f4998c3faedc8fb6a1e7a2ec 100644
--- a/src/ipa/mali-c55/ipa_context.h
+++ b/src/ipa/mali-c55/ipa_context.h
@@ -29,7 +29,6 @@ struct IPASessionConfiguration {
 		utils::Duration lineDuration;
 		uint32_t blackLevel;
 		utils::Duration minShutterSpeed;
-		utils::Duration maxShutterSpeed;
 		utils::Duration minFrameDuration;
 		utils::Duration maxFrameDuration;
 		double minAnalogueGain;
diff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp
index 491ae71a06dbede967bfbe1bcdcab25d177ad691..02f5dfb76eae073858ec688746b7e12ec072e567 100644
--- a/src/ipa/mali-c55/mali-c55.cpp
+++ b/src/ipa/mali-c55/mali-c55.cpp
@@ -170,7 +170,6 @@ void IPAMaliC55::updateSessionConfiguration(const IPACameraSensorInfo &info,
 
 	const ControlInfo &v4l2Exposure = sensorControls.find(V4L2_CID_EXPOSURE)->second;
 	int32_t minExposure = v4l2Exposure.min().get<int32_t>();
-	int32_t maxExposure = v4l2Exposure.max().get<int32_t>();
 	int32_t defExposure = v4l2Exposure.def().get<int32_t>();
 
 	const ControlInfo &v4l2Gain = sensorControls.find(V4L2_CID_ANALOGUE_GAIN)->second;
@@ -191,7 +190,6 @@ void IPAMaliC55::updateSessionConfiguration(const IPACameraSensorInfo &info,
 	utils::Duration lineDuration = info.minLineLength * 1.0s / info.pixelRate;
 	context_.configuration.sensor.lineDuration = lineDuration;
 	context_.configuration.sensor.minShutterSpeed = minExposure * lineDuration;
-	context_.configuration.sensor.maxShutterSpeed = maxExposure * lineDuration;
 	context_.configuration.sensor.minFrameDuration = frameHeights[0] * lineDuration;
 	context_.configuration.sensor.maxFrameDuration = frameHeights[1] * lineDuration;
 	context_.configuration.sensor.minAnalogueGain = context_.camHelper->gain(minGain);
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index b9a94ba03c910f73420579dd6737d8d46b26e576..a2ecd5c46a1fbcb728e23ed83b37b89fcdb80d84 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -203,8 +203,6 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)
 	AgcMeanLuminance::SensorConfiguration sensorConfig;
 	sensorConfig.lineDuration = context.configuration.sensor.lineDuration;
 	sensorConfig.minExposureTime = context.configuration.sensor.minExposureTime;
-	sensorConfig.maxExposureTime = context.configuration.sensor.maxExposureTime;
-	sensorConfig.minFrameDuration = context.configuration.sensor.minFrameDuration;
 	sensorConfig.maxFrameDuration = context.configuration.sensor.maxFrameDuration;
 	sensorConfig.minAnalogueGain = context.configuration.sensor.minAnalogueGain;
 	sensorConfig.maxAnalogueGain = context.configuration.sensor.maxAnalogueGain;
diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
index 15cb0afe9fe8d266d645a27cc3a3e440a0dd2413..40c5d244cf524e9ca3455183ee02237892e70312 100644
--- a/src/ipa/rkisp1/ipa_context.cpp
+++ b/src/ipa/rkisp1/ipa_context.cpp
@@ -89,9 +89,6 @@ namespace libcamera::ipa::rkisp1 {
  * \var IPASessionConfiguration::sensor.minExposureTime
  * \brief Minimum exposure time supported with the sensor
  *
- * \var IPASessionConfiguration::sensor.maxExposureTime
- * \brief Maximum exposure time supported with the sensor
- *
  * \var IPASessionConfiguration::sensor.minAnalogueGain
  * \brief Minimum analogue gain supported with the sensor
  *
diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
index 5fe727bd0b508617d993d226ae785056a3771ce0..52764dbc0a8f579332f0785baf86ba7a1f6db9e2 100644
--- a/src/ipa/rkisp1/ipa_context.h
+++ b/src/ipa/rkisp1/ipa_context.h
@@ -61,7 +61,6 @@ struct IPASessionConfiguration {
 
 	struct {
 		utils::Duration minExposureTime;
-		utils::Duration maxExposureTime;
 		utils::Duration minFrameDuration;
 		utils::Duration maxFrameDuration;
 		double minAnalogueGain;
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index f25e477f0fb77241bd1ccddb7778205e58bdc8a9..4da7cf36400df897ef4392fb264b1f6401391ad0 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -269,7 +269,6 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,
 	 * on the sensor, update it with the controls.
 	 */
 	context_.configuration.sensor.minExposureTime = minExposure * lineDuration;
-	context_.configuration.sensor.maxExposureTime = maxExposure * lineDuration;
 	context_.configuration.sensor.minFrameDuration = frameHeights[0] * lineDuration;
 	context_.configuration.sensor.maxFrameDuration = frameHeights[1] * lineDuration;
 	context_.configuration.sensor.minAnalogueGain = context_.camHelper->gain(minGain);
