diff --git a/extensions/openpower-pels/device_callouts.cpp b/extensions/openpower-pels/device_callouts.cpp
index 44226c9..c0a4749 100644
--- a/extensions/openpower-pels/device_callouts.cpp
+++ b/extensions/openpower-pels/device_callouts.cpp
@@ -101,12 +101,71 @@
                                                    const nlohmann::json& json)
 {
     std::vector<Callout> callouts;
+    fs::path path;
 
-    // TODO
+    // Gives the /sys/devices/platform/ path
+    try
+    {
+        path = fs::canonical(devPath);
+    }
+    catch (const fs::filesystem_error& e)
+    {
+        // Path not there, still try to do the callout
+        path = devPath;
+    }
+
+    switch (util::getCalloutType(path))
+    {
+        case util::CalloutType::i2c:
+            // callouts = calloutI2CUsingPath(errnoValue, path, json);
+            break;
+        case util::CalloutType::fsi:
+            // callouts = calloutFSI(errnoValue, path, json);
+            break;
+        case util::CalloutType::fsii2c:
+            // callouts = calloutFSII2C(errnoValue, path, json);
+            break;
+        case util::CalloutType::fsispi:
+            // callouts = calloutFSISPI(errnoValue, path, json);
+            break;
+        default:
+            std::string msg =
+                "Could not get callout type from device path: " + path.string();
+            throw std::invalid_argument{msg.c_str()};
+            break;
+    }
 
     return callouts;
 }
 
+CalloutType getCalloutType(const std::string& devPath)
+{
+    if ((devPath.find("fsi-master") != std::string::npos) &&
+        (devPath.find("i2c-") != std::string::npos))
+    {
+        return CalloutType::fsii2c;
+    }
+
+    if ((devPath.find("fsi-master") != std::string::npos) &&
+        (devPath.find("spi") != std::string::npos))
+    {
+        return CalloutType::fsispi;
+    }
+
+    // Treat anything else FSI related as plain FSI
+    if (devPath.find("fsi-master") != std::string::npos)
+    {
+        return CalloutType::fsi;
+    }
+
+    if (devPath.find("i2c-bus/i2c-") != std::string::npos)
+    {
+        return CalloutType::i2c;
+    }
+
+    return CalloutType::unknown;
+}
+
 } // namespace util
 
 std::vector<Callout> getCallouts(const std::string& devPath,
diff --git a/extensions/openpower-pels/device_callouts.hpp b/extensions/openpower-pels/device_callouts.hpp
index 2945f25..1f559c2 100644
--- a/extensions/openpower-pels/device_callouts.hpp
+++ b/extensions/openpower-pels/device_callouts.hpp
@@ -1,7 +1,5 @@
 #pragma once
 
-#include "pel_types.hpp"
-
 #include <filesystem>
 #include <nlohmann/json.hpp>
 #include <string>
@@ -123,6 +121,18 @@
 {
 
 /**
+ * @brief The different callout path types
+ */
+enum class CalloutType
+{
+    i2c,
+    fsi,
+    fsii2c,
+    fsispi,
+    unknown
+};
+
+/**
  * @brief Returns the path to the JSON file to look up callouts in.
  *
  * @param[in] compatibleList - The list of compatible names for this
@@ -145,5 +155,16 @@
 std::vector<device_callouts::Callout>
     calloutI2C(size_t i2CBus, uint8_t i2cAddress,
                const nlohmann::json& calloutJSON);
+
+/**
+ * @brief Determines the type of the path (FSI, I2C, etc) based
+ *        on tokens in the device path.
+ *
+ * @param[in] devPath - The device path
+ *
+ * @return CalloutType - The callout type
+ */
+CalloutType getCalloutType(const std::string& devPath);
+
 } // namespace util
 } // namespace openpower::pels::device_callouts
