diff --git a/util/meson.build b/util/meson.build
index 1258b1f..e4f94c0 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -11,6 +11,10 @@
     libpdbg_dep,
 ]
 
+if get_option('phal').enabled()
+    util_deps += dependency('libdt-api')
+endif
+
 # Create static library.
 util_lib = static_library(
     'util_lib',
diff --git a/util/pdbg.cpp b/util/pdbg.cpp
index 605df77..03c8037 100644
--- a/util/pdbg.cpp
+++ b/util/pdbg.cpp
@@ -4,6 +4,10 @@
 #include <util/pdbg.hpp>
 #include <util/trace.hpp>
 
+#ifdef CONFIG_PHAL_API
+#include <attribute_info.H>
+#endif
+
 namespace util
 {
 
@@ -226,6 +230,64 @@
 
 //------------------------------------------------------------------------------
 
+std::string getLocationCode(pdbg_target* trgt)
+{
+    if (nullptr == trgt)
+    {
+        // Either the path is wrong or the attribute doesn't exist.
+        return std::string{};
+    }
+
+#ifdef CONFIG_PHAL_API
+
+    ATTR_LOCATION_CODE_Type val;
+    if (DT_GET_PROP(ATTR_LOCATION_CODE, trgt, val))
+    {
+        // Get the immediate parent in the devtree path and try again.
+        return getLocationCode(pdbg_target_parent(nullptr, trgt));
+    }
+
+    // Attribute found.
+    return std::string{val};
+
+#else
+
+    return std::string{getPath(trgt)};
+
+#endif
+}
+
+//------------------------------------------------------------------------------
+
+std::string getPhysDevPath(pdbg_target* trgt)
+{
+    if (nullptr == trgt)
+    {
+        // Either the path is wrong or the attribute doesn't exist.
+        return std::string{};
+    }
+
+#ifdef CONFIG_PHAL_API
+
+    ATTR_PHYS_DEV_PATH_Type val;
+    if (DT_GET_PROP(ATTR_PHYS_DEV_PATH, trgt, val))
+    {
+        // Get the immediate parent in the devtree path and try again.
+        return getPhysDevPath(pdbg_target_parent(nullptr, trgt));
+    }
+
+    // Attribute found.
+    return std::string{val};
+
+#else
+
+    return std::string{getPath(trgt)};
+
+#endif
+}
+
+//------------------------------------------------------------------------------
+
 } // namespace pdbg
 
 } // namespace util
diff --git a/util/pdbg.hpp b/util/pdbg.hpp
index 5d6314d..9ad6d07 100644
--- a/util/pdbg.hpp
+++ b/util/pdbg.hpp
@@ -2,6 +2,7 @@
 
 #include <libpdbg.h>
 
+#include <string>
 #include <vector>
 
 // Forward reference to avoid pulling the libhei library into everything that
@@ -83,6 +84,26 @@
  */
 bool queryHardwareAnalysisSupported();
 
+/**
+ * @return A string containing the FRU location code of the given chip. An empty
+ *         string indicates the target was null or the attribute does not exist
+ *         for this target.
+ * @note   This function requires PHAL APIs that are only available in certain
+ *         environments. If they do not exist the devtree path of the target is
+ *         returned.
+ */
+std::string getLocationCode(pdbg_target* trgt);
+
+/**
+ * @return A string containing the physical device path (entity path) of the
+ *         given chip. An empty string indicates the target was null or the
+ *         attribute does not exist for this target.
+ * @note   This function requires PHAL APIs that are only available in certain
+ *         environments. If they do not exist the devtree path of the target is
+ *         returned.
+ */
+std::string getPhysDevPath(pdbg_target* trgt);
+
 } // namespace pdbg
 
 } // namespace util
