diff --git a/mmc/activation_mmc.cpp b/mmc/activation_mmc.cpp
index a50e99b..2192f8a 100644
--- a/mmc/activation_mmc.cpp
+++ b/mmc/activation_mmc.cpp
@@ -13,14 +13,11 @@
     return softwareServer::Activation::activation(value);
 }
 
-void ActivationMMC::startActivation()
-{}
+void ActivationMMC::startActivation() {}
 
-void ActivationMMC::unitStateChange(sdbusplus::message_t&)
-{}
+void ActivationMMC::unitStateChange(sdbusplus::message_t&) {}
 
-void ActivationMMC::finishActivation()
-{}
+void ActivationMMC::finishActivation() {}
 
 } // namespace updater
 } // namespace software
diff --git a/mmc/item_updater_mmc.cpp b/mmc/item_updater_mmc.cpp
index 3872b96..75ef284 100644
--- a/mmc/item_updater_mmc.cpp
+++ b/mmc/item_updater_mmc.cpp
@@ -58,8 +58,7 @@
     return true;
 }
 
-void ItemUpdaterMMC::processPNORImage()
-{}
+void ItemUpdaterMMC::processPNORImage() {}
 
 void ItemUpdaterMMC::reset()
 {
@@ -136,19 +135,16 @@
     return versionId == functionalVersionId;
 }
 
-void ItemUpdaterMMC::freePriority(uint8_t, const std::string&)
-{}
+void ItemUpdaterMMC::freePriority(uint8_t, const std::string&) {}
 
-void ItemUpdaterMMC::deleteAll()
-{}
+void ItemUpdaterMMC::deleteAll() {}
 
 bool ItemUpdaterMMC::freeSpace()
 {
     return true;
 }
 
-void ItemUpdaterMMC::updateFunctionalAssociation(const std::string&)
-{}
+void ItemUpdaterMMC::updateFunctionalAssociation(const std::string&) {}
 void GardResetMMC::enableInventoryItems()
 {
     (void)enableInventoryItemsHelper(
@@ -182,9 +178,9 @@
         response.read(objs);
         for (auto& obj : objs)
         {
-            auto method =
-                bus.new_method_call(service.c_str(), obj.c_str(),
-                                    "org.freedesktop.DBus.Properties", "Set");
+            auto method = bus.new_method_call(service.c_str(), obj.c_str(),
+                                              "org.freedesktop.DBus.Properties",
+                                              "Set");
             std::variant<bool> propertyVal{true};
             method.append("xyz.openbmc_project.Object.Enable", "Enabled",
                           propertyVal);
