diff --git a/pid/builder.cpp b/pid/builder.cpp
index 7b67795..58ef8df 100644
--- a/pid/builder.cpp
+++ b/pid/builder.cpp
@@ -30,13 +30,13 @@
 static constexpr bool deferSignals = true;
 static constexpr auto objectPath = "/xyz/openbmc_project/settings/fanctrl/zone";
 
-static std::string GetControlPath(int64_t zone)
+static std::string getControlPath(int64_t zone)
 {
     return std::string(objectPath) + std::to_string(zone);
 }
 
 std::unordered_map<int64_t, std::unique_ptr<PIDZone>>
-    BuildZones(std::map<int64_t, PIDConf>& zonePids,
+    buildZones(std::map<int64_t, PIDConf>& zonePids,
                std::map<int64_t, struct ZoneConfig>& zoneConfigs,
                SensorManager& mgr, sdbusplus::bus::bus& modeControlBus)
 {
@@ -65,7 +65,7 @@
         auto zone = std::make_unique<PIDZone>(
             zoneId, zoneConf->second.minthermalrpm,
             zoneConf->second.failsafepercent, mgr, modeControlBus,
-            GetControlPath(zi.first).c_str(), deferSignals);
+            getControlPath(zi.first).c_str(), deferSignals);
 
         std::cerr << "Zone Id: " << zone->getZoneId() << "\n";
 
diff --git a/pid/builder.hpp b/pid/builder.hpp
index 8891531..2b28663 100644
--- a/pid/builder.hpp
+++ b/pid/builder.hpp
@@ -8,6 +8,6 @@
 #include <unordered_map>
 
 std::unordered_map<int64_t, std::unique_ptr<PIDZone>>
-    BuildZones(std::map<int64_t, PIDConf>& zonePids,
+    buildZones(std::map<int64_t, PIDConf>& zonePids,
                std::map<int64_t, struct ZoneConfig>& zoneConfigs,
                SensorManager& mgr, sdbusplus::bus::bus& modeControlBus);
diff --git a/pid/builderconfig.cpp b/pid/builderconfig.cpp
index 4909713..665e2dd 100644
--- a/pid/builderconfig.cpp
+++ b/pid/builderconfig.cpp
@@ -28,7 +28,7 @@
 #include <unordered_map>
 
 std::unordered_map<int64_t, std::unique_ptr<PIDZone>>
-    BuildZonesFromConfig(const std::string& path, SensorManager& mgr,
+    buildZonesFromConfig(const std::string& path, SensorManager& mgr,
                          sdbusplus::bus::bus& modeControlBus)
 {
     using namespace libconfig;
@@ -149,5 +149,5 @@
         throw;
     }
 
-    return BuildZones(pidConfig, zoneConfig, mgr, modeControlBus);
+    return buildZones(pidConfig, zoneConfig, mgr, modeControlBus);
 }
diff --git a/pid/builderconfig.hpp b/pid/builderconfig.hpp
index a7f41f8..8390bee 100644
--- a/pid/builderconfig.hpp
+++ b/pid/builderconfig.hpp
@@ -9,5 +9,5 @@
 #include <unordered_map>
 
 std::unordered_map<int64_t, std::unique_ptr<PIDZone>>
-    BuildZonesFromConfig(const std::string& path, SensorManager& mgr,
+    buildZonesFromConfig(const std::string& path, SensorManager& mgr,
                          sdbusplus::bus::bus& modeControlBus);
diff --git a/pid/fancontroller.cpp b/pid/fancontroller.cpp
index 3a56f95..ce08185 100644
--- a/pid/fancontroller.cpp
+++ b/pid/fancontroller.cpp
@@ -34,7 +34,7 @@
     auto fan = std::make_unique<FanController>(id, inputs, owner);
     ec::pid_info_t* info = fan->getPIDInfo();
 
-    InitializePIDStruct(info, initial);
+    initializePIDStruct(info, initial);
 
     return fan;
 }
diff --git a/pid/pidthread.cpp b/pid/pidthread.cpp
index dc53bdb..7d27e42 100644
--- a/pid/pidthread.cpp
+++ b/pid/pidthread.cpp
@@ -25,7 +25,7 @@
 #include <thread>
 #include <vector>
 
-static void ProcessThermals(PIDZone* zone)
+static void processThermals(PIDZone* zone)
 {
     // Get the latest margins.
     zone->updateSensors();
@@ -37,7 +37,7 @@
     zone->determineMaxRPMRequest();
 }
 
-void PIDControlThread(PIDZone* zone)
+void pidControlThread(PIDZone* zone)
 {
     int ms100cnt = 0;
     /*
@@ -66,7 +66,7 @@
     zone->initializeLog();
 #endif
     zone->initializeCache();
-    ProcessThermals(zone);
+    processThermals(zone);
 
     while (true)
     {
@@ -86,7 +86,7 @@
         {
             ms100cnt = 0;
 
-            ProcessThermals(zone);
+            processThermals(zone);
         }
 
         // Run the fan PIDs every iteration.
diff --git a/pid/pidthread.hpp b/pid/pidthread.hpp
index 37c416a..94865c0 100644
--- a/pid/pidthread.hpp
+++ b/pid/pidthread.hpp
@@ -3,4 +3,4 @@
 #include "pid/zone.hpp"
 
 /* Given a zone, run through the loops. */
-void PIDControlThread(PIDZone* zone);
+void pidControlThread(PIDZone* zone);
diff --git a/pid/thermalcontroller.cpp b/pid/thermalcontroller.cpp
index cc6c1f9..5388823 100644
--- a/pid/thermalcontroller.cpp
+++ b/pid/thermalcontroller.cpp
@@ -35,7 +35,7 @@
     ec::pid_info_t* info = thermal->getPIDInfo();
     thermal->setSetpoint(setpoint);
 
-    InitializePIDStruct(info, initial);
+    initializePIDStruct(info, initial);
 
     return thermal;
 }
diff --git a/pid/util.cpp b/pid/util.cpp
index 8b24fb2..9d666ef 100644
--- a/pid/util.cpp
+++ b/pid/util.cpp
@@ -19,7 +19,7 @@
 #include <cstring>
 #include <iostream>
 
-void InitializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial)
+void initializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial)
 {
     std::memset(info, 0x00, sizeof(ec::pid_info_t));
 
@@ -36,7 +36,7 @@
     info->slew_pos = initial.slew_pos;
 }
 
-void DumpPIDStruct(ec::pid_info_t* info)
+void dumpPIDStruct(ec::pid_info_t* info)
 {
     std::cerr << " ts: " << info->ts << " p_c: " << info->p_c
               << " i_c: " << info->i_c << " ff_off: " << info->ff_off
diff --git a/pid/util.hpp b/pid/util.hpp
index a80e07f..c35f0b8 100644
--- a/pid/util.hpp
+++ b/pid/util.hpp
@@ -6,6 +6,6 @@
  * Given a configuration structure, fill out the information we use within the
  * PID loop.
  */
-void InitializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial);
+void initializePIDStruct(ec::pid_info_t* info, const ec::pidinfo& initial);
 
-void DumpPIDStruct(ec::pid_info_t* info);
+void dumpPIDStruct(ec::pid_info_t* info);
