diff --git a/src/libcamera/control_serializer.cpp b/src/libcamera/control_serializer.cpp
index d42840cddecb..f1245ea620ab 100644
--- a/src/libcamera/control_serializer.cpp
+++ b/src/libcamera/control_serializer.cpp
@@ -105,7 +105,7 @@ size_t ControlSerializer::binarySize(const ControlValue &value)
 
 size_t ControlSerializer::binarySize(const ControlInfo &info)
 {
-	return binarySize(info.min()) + binarySize(info.max());
+	return binarySize(info.min()) + binarySize(info.max()) + binarySize(info.def());
 }
 
 /**
@@ -158,6 +158,7 @@ void ControlSerializer::store(const ControlInfo &info, ByteStreamBuffer &buffer)
 {
 	store(info.min(), buffer);
 	store(info.max(), buffer);
+	store(info.def(), buffer);
 }
 
 /**
@@ -346,8 +347,9 @@ ControlInfo ControlSerializer::loadControlInfo(ControlType type,
 
 	ControlValue min = loadControlValue(type, b);
 	ControlValue max = loadControlValue(type, b);
+	ControlValue def = loadControlValue(type, b);
 
-	return ControlInfo(min, max);
+	return ControlInfo(min, max, def);
 }
 
 /**
diff --git a/src/libcamera/ipa_controls.cpp b/src/libcamera/ipa_controls.cpp
index fb98cda30ede..c3489bbff646 100644
--- a/src/libcamera/ipa_controls.cpp
+++ b/src/libcamera/ipa_controls.cpp
@@ -108,17 +108,19 @@
  *           +-------------------------+       .
  *         / | ...                     |       | entry[n].offset
  *         | +-------------------------+ <-----´
- *    Data | | minimum value (#n)      | \
- * section | +-------------------------+ | Entry #n
- *         | | maximum value (#n)      | /
+ *         | | minimum value (#n)      | \
+ *    Data | +-------------------------+ |
+ * section | | maximum value (#n)      | | Entry #n
+ *         | +-------------------------+ |
+ *         | | default value (#n)      | /
  *         | +-------------------------+
  *         \ | ...                     |
  *           +-------------------------+
  * ~~~~
  *
- * The minimum and maximum value are stored in the platform's native data
- * format. The ipa_control_info_entry::offset field stores the offset from the
- * beginning of the data section to the info data.
+ * The minimum, maximum and default values are stored in the platform's native
+ * data format. The ipa_control_info_entry::offset field stores the offset from
+ * the beginning of the data section to the info data.
  *
  * Info data in the data section shall be stored in the same order as the
  * entries array, shall be aligned to a multiple of 8 bytes, and shall be
