diff --git a/analyzer/resolution.cpp b/analyzer/resolution.cpp
index 9d994ce..14842ad 100644
--- a/analyzer/resolution.cpp
+++ b/analyzer/resolution.cpp
@@ -1,11 +1,50 @@
 #include <analyzer/resolution.hpp>
+#include <util/pdbg.hpp>
+#include <util/trace.hpp>
 
 namespace analyzer
 {
 
-void HardwareCalloutResolution::resolve(ServiceData&) const
+void HardwareCalloutResolution::resolve(ServiceData& io_sd) const
 {
-    // TODO: Add location code to callout list and entity path to gard list.
+    // Get the chip target from the root cause signature.
+    auto trgt = util::pdbg::getTrgt(io_sd.getRootCause().getChip());
+    auto path = std::string{util::pdbg::getPath(trgt)};
+
+    // Get the unit target, if needed.
+    if (!iv_path.empty())
+    {
+        path += "/" + iv_path;
+        trgt = util::pdbg::getTrgt(path);
+        if (nullptr == trgt)
+        {
+            trace::err("Unable to find target for %s", path.c_str());
+            return; // can't continue
+        }
+    }
+
+    // Add location code to callout list.
+    auto locCode = util::pdbg::getLocationCode(trgt);
+    if (locCode.empty())
+    {
+        trace::err("Unable to find location code for %s", path.c_str());
+    }
+    else
+    {
+        io_sd.addCallout(
+            std::make_shared<HardwareCallout>(locCode, iv_priority));
+    }
+
+    // Add entity path to gard list.
+    auto entityPath = util::pdbg::getPhysDevPath(trgt);
+    if (entityPath.empty())
+    {
+        trace::err("Unable to find entity path for %s", path.c_str());
+    }
+    else
+    {
+        io_sd.addGuard(std::make_shared<Guard>(entityPath, iv_guard));
+    }
 }
 
 } // namespace analyzer
diff --git a/util/pdbg.cpp b/util/pdbg.cpp
index 03c8037..0ce56d6 100644
--- a/util/pdbg.cpp
+++ b/util/pdbg.cpp
@@ -23,6 +23,13 @@
 
 //------------------------------------------------------------------------------
 
+pdbg_target* getTrgt(const std::string& i_path)
+{
+    return pdbg_target_from_path(nullptr, i_path.c_str());
+}
+
+//------------------------------------------------------------------------------
+
 const char* getPath(pdbg_target* i_trgt)
 {
     return pdbg_target_path(i_trgt);
diff --git a/util/pdbg.hpp b/util/pdbg.hpp
index 9ad6d07..8de19cf 100644
--- a/util/pdbg.hpp
+++ b/util/pdbg.hpp
@@ -28,6 +28,9 @@
 /** @return The target associated with the given chip. */
 pdbg_target* getTrgt(const libhei::Chip& i_chip);
 
+/** @return The target associated with the given devtree path. */
+pdbg_target* getTrgt(const std::string& i_path);
+
 /** @return A string representing the given target's devtree path. */
 const char* getPath(pdbg_target* i_trgt);
 
