diff --git a/tools/i2c/i2c.cpp b/tools/i2c/i2c.cpp
index 28cedf6..3c3d689 100644
--- a/tools/i2c/i2c.cpp
+++ b/tools/i2c/i2c.cpp
@@ -530,9 +530,9 @@
     return dev;
 }
 
-std::unique_ptr<I2CInterface>
-    create(uint8_t busId, uint8_t devAddr,
-           I2CInterface::InitialState initialState, int maxRetries)
+std::unique_ptr<I2CInterface> create(uint8_t busId, uint8_t devAddr,
+                                     I2CInterface::InitialState initialState,
+                                     int maxRetries)
 {
     return I2CDevice::create(busId, devAddr, initialState, maxRetries);
 }
diff --git a/tools/i2c/i2c.hpp b/tools/i2c/i2c.hpp
index 0f745c3..e3c34e3 100644
--- a/tools/i2c/i2c.hpp
+++ b/tools/i2c/i2c.hpp
@@ -227,10 +227,9 @@
      *
      * @return The unique_ptr holding the I2CInterface
      */
-    static std::unique_ptr<I2CInterface>
-        create(uint8_t busId, uint8_t devAddr,
-               InitialState initialState = InitialState::OPEN,
-               int maxRetries = 0);
+    static std::unique_ptr<I2CInterface> create(
+        uint8_t busId, uint8_t devAddr,
+        InitialState initialState = InitialState::OPEN, int maxRetries = 0);
 };
 
 } // namespace i2c
diff --git a/tools/i2c/test/mocked_i2c_interface.cpp b/tools/i2c/test/mocked_i2c_interface.cpp
index 4747490..7732d3d 100644
--- a/tools/i2c/test/mocked_i2c_interface.cpp
+++ b/tools/i2c/test/mocked_i2c_interface.cpp
@@ -5,9 +5,9 @@
 namespace i2c
 {
 
-std::unique_ptr<I2CInterface>
-    create(uint8_t /*busId*/, uint8_t /*devAddr*/,
-           I2CInterface::InitialState /*initialState*/, int /*maxRetries*/)
+std::unique_ptr<I2CInterface> create(
+    uint8_t /*busId*/, uint8_t /*devAddr*/,
+    I2CInterface::InitialState /*initialState*/, int /*maxRetries*/)
 {
     return std::make_unique<MockedI2CInterface>();
 }
diff --git a/tools/power-utils/aei_updater.cpp b/tools/power-utils/aei_updater.cpp
index 8bddea4..ffe2d1d 100644
--- a/tools/power-utils/aei_updater.cpp
+++ b/tools/power-utils/aei_updater.cpp
@@ -272,8 +272,8 @@
     return true;
 }
 
-std::unique_ptr<std::ifstream>
-    AeiUpdater::openFirmwareFile(const std::string& fspath)
+std::unique_ptr<std::ifstream> AeiUpdater::openFirmwareFile(
+    const std::string& fspath)
 {
     auto inputFile = updater::internal::openFirmwareFile(fspath);
     if (!inputFile)
diff --git a/tools/power-utils/utils.cpp b/tools/power-utils/utils.cpp
index 9517680..82e40b5 100644
--- a/tools/power-utils/utils.cpp
+++ b/tools/power-utils/utils.cpp
@@ -118,8 +118,8 @@
     return std::make_tuple(*i2cbus, *i2caddr);
 }
 
-std::unique_ptr<phosphor::pmbus::PMBusBase>
-    getPmbusIntf(std::uint64_t i2cBus, std::uint64_t i2cAddr)
+std::unique_ptr<phosphor::pmbus::PMBusBase> getPmbusIntf(std::uint64_t i2cBus,
+                                                         std::uint64_t i2cAddr)
 {
     std::stringstream ss;
     ss << std::hex << std::setw(4) << std::setfill('0') << i2cAddr;
diff --git a/tools/power-utils/utils.hpp b/tools/power-utils/utils.hpp
index 256ae60..17f3af4 100644
--- a/tools/power-utils/utils.hpp
+++ b/tools/power-utils/utils.hpp
@@ -55,8 +55,8 @@
  *
  * @return Pointer to PSU PMBus interface
  */
-std::unique_ptr<phosphor::pmbus::PMBusBase>
-    getPmbusIntf(std::uint64_t i2cBus, std::uint64_t i2cAddr);
+std::unique_ptr<phosphor::pmbus::PMBusBase> getPmbusIntf(std::uint64_t i2cBus,
+                                                         std::uint64_t i2cAddr);
 
 /**
  * @brief Reads a VPD value from PMBus, corrects size, and contents.
