diff --git a/phosphor-power-sequencer/src/config_file_parser.cpp b/phosphor-power-sequencer/src/config_file_parser.cpp
index 83754b1..e8d68d5 100644
--- a/phosphor-power-sequencer/src/config_file_parser.cpp
+++ b/phosphor-power-sequencer/src/config_file_parser.cpp
@@ -31,9 +31,9 @@
 const std::filesystem::path standardConfigFileDirectory{
     "/usr/share/phosphor-power-sequencer"};
 
-std::filesystem::path
-    find(const std::vector<std::string>& compatibleSystemTypes,
-         const std::filesystem::path& configFileDir)
+std::filesystem::path find(
+    const std::vector<std::string>& compatibleSystemTypes,
+    const std::filesystem::path& configFileDir)
 {
     fs::path pathName, possiblePath;
     std::string fileName;
diff --git a/phosphor-power-sequencer/src/config_file_parser.hpp b/phosphor-power-sequencer/src/config_file_parser.hpp
index fef3f53..7b28f2f 100644
--- a/phosphor-power-sequencer/src/config_file_parser.hpp
+++ b/phosphor-power-sequencer/src/config_file_parser.hpp
@@ -155,8 +155,8 @@
  * @param element JSON element
  * @return vector of Rail objects
  */
-std::vector<std::unique_ptr<Rail>>
-    parseRailArray(const nlohmann::json& element);
+std::vector<std::unique_ptr<Rail>> parseRailArray(
+    const nlohmann::json& element);
 
 /**
  * Parses the JSON root element of the entire configuration file.
diff --git a/phosphor-power-sequencer/src/pmbus_driver_device.cpp b/phosphor-power-sequencer/src/pmbus_driver_device.cpp
index cb08476..ea92a8e 100644
--- a/phosphor-power-sequencer/src/pmbus_driver_device.cpp
+++ b/phosphor-power-sequencer/src/pmbus_driver_device.cpp
@@ -217,8 +217,8 @@
     return isLabel;
 }
 
-std::optional<uint8_t>
-    PMBusDriverDevice::readPageFromLabelFile(const std::string& fileName)
+std::optional<uint8_t> PMBusDriverDevice::readPageFromLabelFile(
+    const std::string& fileName)
 {
     std::optional<uint8_t> page;
     try
diff --git a/phosphor-power-sequencer/src/pmbus_driver_device.hpp b/phosphor-power-sequencer/src/pmbus_driver_device.hpp
index c8754db..6823907 100644
--- a/phosphor-power-sequencer/src/pmbus_driver_device.hpp
+++ b/phosphor-power-sequencer/src/pmbus_driver_device.hpp
@@ -218,8 +218,8 @@
      * @param fileName voltage label file within the sysfs hwmon directory
      * @return PMBus page number
      */
-    virtual std::optional<uint8_t>
-        readPageFromLabelFile(const std::string& fileName);
+    virtual std::optional<uint8_t> readPageFromLabelFile(
+        const std::string& fileName);
 
     /**
      * I2C bus for the device.
diff --git a/phosphor-power-sequencer/src/power_sequencer_device.hpp b/phosphor-power-sequencer/src/power_sequencer_device.hpp
index 4b3ada6..a133f41 100644
--- a/phosphor-power-sequencer/src/power_sequencer_device.hpp
+++ b/phosphor-power-sequencer/src/power_sequencer_device.hpp
@@ -151,9 +151,9 @@
      * @return error that should be logged if a pgood fault was found, or an
      *         empty string if no pgood fault was found
      */
-    virtual std::string
-        findPgoodFault(Services& services, const std::string& powerSupplyError,
-                       std::map<std::string, std::string>& additionalData) = 0;
+    virtual std::string findPgoodFault(
+        Services& services, const std::string& powerSupplyError,
+        std::map<std::string, std::string>& additionalData) = 0;
 };
 
 } // namespace phosphor::power::sequencer
diff --git a/phosphor-power-sequencer/src/services.hpp b/phosphor-power-sequencer/src/services.hpp
index d573743..2f38008 100644
--- a/phosphor-power-sequencer/src/services.hpp
+++ b/phosphor-power-sequencer/src/services.hpp
@@ -84,9 +84,9 @@
      * @param severity Severity property of the error log entry
      * @param additionalData AdditionalData property of the error log entry
      */
-    virtual void
-        logError(const std::string& message, Entry::Level severity,
-                 std::map<std::string, std::string>& additionalData) = 0;
+    virtual void logError(
+        const std::string& message, Entry::Level severity,
+        std::map<std::string, std::string>& additionalData) = 0;
 
     /**
      * Returns whether the hardware with the specified inventory path is
@@ -183,16 +183,16 @@
     }
 
     /** @copydoc Services::logError() */
-    virtual void
-        logError(const std::string& message, Entry::Level severity,
-                 std::map<std::string, std::string>& additionalData) override;
+    virtual void logError(
+        const std::string& message, Entry::Level severity,
+        std::map<std::string, std::string>& additionalData) override;
 
     /** @copydoc Services::isPresent() */
     virtual bool isPresent(const std::string& inventoryPath) override;
 
     /** @copydoc Services::getGPIOValues() */
-    virtual std::vector<int>
-        getGPIOValues(const std::string& chipLabel) override;
+    virtual std::vector<int> getGPIOValues(
+        const std::string& chipLabel) override;
 
     /** @copydoc Services::createPMBus() */
     virtual std::unique_ptr<PMBusBase> createPMBus(
diff --git a/phosphor-power-sequencer/src/standard_device.hpp b/phosphor-power-sequencer/src/standard_device.hpp
index 245af38..227e3bc 100644
--- a/phosphor-power-sequencer/src/standard_device.hpp
+++ b/phosphor-power-sequencer/src/standard_device.hpp
@@ -93,8 +93,8 @@
      *
      * @param services System services like hardware presence and the journal
      */
-    virtual void
-        prepareForPgoodFaultDetection([[maybe_unused]] Services& services)
+    virtual void prepareForPgoodFaultDetection(
+        [[maybe_unused]] Services& services)
     {}
 
     /**
@@ -163,9 +163,9 @@
      * @param values GPIO values obtained from the device (if any)
      * @param additionalData Additional data to include in an error log
      */
-    virtual void
-        storeGPIOValues(Services& services, const std::vector<int>& values,
-                        std::map<std::string, std::string>& additionalData);
+    virtual void storeGPIOValues(
+        Services& services, const std::vector<int>& values,
+        std::map<std::string, std::string>& additionalData);
 
     /**
      * Device name.
