diff --git a/src/libcamera/media_object.cpp b/src/libcamera/media_object.cpp
index ce77a72..a2e6a0d 100644
--- a/src/libcamera/media_object.cpp
+++ b/src/libcamera/media_object.cpp
@@ -115,7 +115,8 @@ LOG_DECLARE_CATEGORY(MediaDevice)
  */
 int MediaLink::setEnabled(bool enable)
 {
-	unsigned int flags = enable ? MEDIA_LNK_FL_ENABLED : 0;
+	unsigned int flags = (flags_ & ~MEDIA_LNK_FL_ENABLED)
+			   			| (enable ? MEDIA_LNK_FL_ENABLED : 0);
 
 	int ret = dev_->setupLink(this, flags);
 	if (ret)
