diff --git a/include/estoraged.hpp b/include/estoraged.hpp
index 8e4ceb7..871fdca 100644
--- a/include/estoraged.hpp
+++ b/include/estoraged.hpp
@@ -43,6 +43,7 @@
      *  @param[in] lifeTime - percent of lifetime remaining for a drive
      *  @param[in] partNumber - part number for the storage device
      *  @param[in] serialNumber - serial number for the storage device
+     *  @param[in] locationCode - location code for the storage device
      *  @param[in] cryptInterface - (optional) pointer to CryptsetupInterface
      *    object
      *  @param[in] fsInterface - (optional) pointer to FilesystemInterface
@@ -52,6 +53,7 @@
               const std::string& configPath, const std::string& devPath,
               const std::string& luksName, uint64_t size, uint8_t lifeTime,
               const std::string& partNumber, const std::string& serialNumber,
+              const std::string& locationCode,
               std::unique_ptr<CryptsetupInterface> cryptInterface =
                   std::make_unique<Cryptsetup>(),
               std::unique_ptr<FilesystemInterface> fsInterface =
@@ -141,9 +143,12 @@
     /** @brief D-Bus interface for the physical drive. */
     std::shared_ptr<sdbusplus::asio::dbus_interface> driveInterface;
 
-    /** @brief D-Bus interface for the location of the drive. */
+    /** @brief D-Bus interface for the location type of the drive. */
     std::shared_ptr<sdbusplus::asio::dbus_interface> embeddedLocationInterface;
 
+    /** @brief D-Bus interface for the location code of the drive. */
+    std::shared_ptr<sdbusplus::asio::dbus_interface> locationCodeInterface;
+
     /** @brief D-Bus interface for the asset information. */
     std::shared_ptr<sdbusplus::asio::dbus_interface> assetInterface;
 
diff --git a/include/util.hpp b/include/util.hpp
index a6af6ed..ff38cdd 100644
--- a/include/util.hpp
+++ b/include/util.hpp
@@ -52,7 +52,8 @@
  */
 bool findDevice(const StorageData& data, const std::filesystem::path& searchDir,
                 std::filesystem::path& deviceFile,
-                std::filesystem::path& sysfsDir, std::string& luksName);
+                std::filesystem::path& sysfsDir, std::string& luksName,
+                std::string& locationCode);
 
 } // namespace util
 
diff --git a/src/estoraged.cpp b/src/estoraged.cpp
index 3a6a8bb..95f3057 100644
--- a/src/estoraged.cpp
+++ b/src/estoraged.cpp
@@ -37,6 +37,7 @@
                      const std::string& luksName, uint64_t size,
                      uint8_t lifeTime, const std::string& partNumber,
                      const std::string& serialNumber,
+                     const std::string& locationCode,
                      std::unique_ptr<CryptsetupInterface> cryptInterface,
                      std::unique_ptr<FilesystemInterface> fsInterface) :
     devPath(devPath),
@@ -106,6 +107,14 @@
     embeddedLocationInterface = objectServer.add_interface(
         objectPath, "xyz.openbmc_project.Inventory.Connector.Embedded");
 
+    if (!locationCode.empty())
+    {
+        locationCodeInterface = objectServer.add_interface(
+            objectPath, "xyz.openbmc_project.Inventory.Decorator.LocationCode");
+        locationCodeInterface->register_property("LocationCode", locationCode);
+        locationCodeInterface->initialize();
+    }
+
     /* Add Asset interface. */
     assetInterface = objectServer.add_interface(
         objectPath, "xyz.openbmc_project.Inventory.Decorator.Asset");
@@ -135,6 +144,11 @@
     objectServer.remove_interface(embeddedLocationInterface);
     objectServer.remove_interface(assetInterface);
     objectServer.remove_interface(association);
+
+    if (locationCodeInterface != nullptr)
+    {
+        objectServer.remove_interface(locationCodeInterface);
+    }
 }
 
 void EStoraged::formatLuks(const std::vector<uint8_t>& password,
diff --git a/src/main.cpp b/src/main.cpp
index db3173a..d278724 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -70,9 +70,10 @@
             /* Look for the device file. */
             const std::filesystem::path blockDevDir{"/sys/block"};
             std::filesystem::path deviceFile, sysfsDir;
-            std::string luksName;
-            bool found = estoraged::util::findDevice(
-                data, blockDevDir, deviceFile, sysfsDir, luksName);
+            std::string luksName, locationCode;
+            bool found = estoraged::util::findDevice(data, blockDevDir,
+                                                     deviceFile, sysfsDir,
+                                                     luksName, locationCode);
             if (!found)
             {
                 lg2::error("Device not found for path {PATH}", "PATH", path,
@@ -96,7 +97,7 @@
             /* Create the storage object. */
             storageObjects[path] = std::make_unique<estoraged::EStoraged>(
                 objectServer, path, deviceFile, luksName, size, lifeleft,
-                partNumber, serialNumber);
+                partNumber, serialNumber, locationCode);
             lg2::info("Created eStoraged object for path {PATH}", "PATH", path,
                       "REDFISH_MESSAGE_ID",
                       std::string("OpenBMC.0.1.CreateStorageObjects"));
diff --git a/src/test/estoraged_test.cpp b/src/test/estoraged_test.cpp
index ca0e21f..bd6db0d 100644
--- a/src/test/estoraged_test.cpp
+++ b/src/test/estoraged_test.cpp
@@ -44,6 +44,7 @@
     const uint8_t testLifeTime = 25;
     const std::string testPartNumber = "12345678";
     const std::string testSerialNumber = "ABCDEF1234";
+    const std::string testLocationCode = "U102020";
     std::ofstream testFile;
     std::string passwordString;
     std::vector<uint8_t> password;
@@ -88,7 +89,7 @@
         esObject = std::make_unique<estoraged::EStoraged>(
             *objectServer, testConfigPath, testFileName, testLuksDevName,
             testSize, testLifeTime, testPartNumber, testSerialNumber,
-            std::move(cryptIface), std::move(fsIface));
+            testLocationCode, std::move(cryptIface), std::move(fsIface));
     }
 
     void TearDown() override
diff --git a/src/test/util_test.cpp b/src/test/util_test.cpp
index b85fca0..5f8dca5 100644
--- a/src/test/util_test.cpp
+++ b/src/test/util_test.cpp
@@ -107,6 +107,8 @@
     data.emplace(std::string("Type"),
                  estoraged::BasicVariantType("EmmcDevice"));
     data.emplace(std::string("Name"), estoraged::BasicVariantType("emmc"));
+    data.emplace(std::string("LocationCode"),
+                 estoraged::BasicVariantType("U102020"));
 
     /* Create a dummy device. */
     std::filesystem::create_directories("abc/device");
@@ -128,14 +130,16 @@
 
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
-    std::string luksName;
+    std::string luksName, locationCode;
     EXPECT_TRUE(estoraged::util::findDevice(data, std::filesystem::path("./"),
-                                            deviceFile, sysfsDir, luksName));
+                                            deviceFile, sysfsDir, luksName,
+                                            locationCode));
 
     /* Validate the results. */
     EXPECT_EQ("/dev/mmcblk0", deviceFile.string());
     EXPECT_EQ("./mmcblk0/device", sysfsDir.string());
     EXPECT_EQ("luks-mmcblk0", luksName);
+    EXPECT_EQ("U102020", locationCode);
 
     /* Delete the dummy files. */
     EXPECT_EQ(3U, std::filesystem::remove_all("mmcblk0"));
@@ -171,9 +175,10 @@
 
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
-    std::string luksName;
+    std::string luksName, locationCode;
     EXPECT_FALSE(estoraged::util::findDevice(data, std::filesystem::path("./"),
-                                             deviceFile, sysfsDir, luksName));
+                                             deviceFile, sysfsDir, luksName,
+                                             locationCode));
 
     /* Delete the dummy files. */
     EXPECT_EQ(3U, std::filesystem::remove_all("mmcblk0"));
@@ -211,9 +216,10 @@
 
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
-    std::string luksName;
+    std::string luksName, locationCode;
     EXPECT_FALSE(estoraged::util::findDevice(data, std::filesystem::path("./"),
-                                             deviceFile, sysfsDir, luksName));
+                                             deviceFile, sysfsDir, luksName,
+                                             locationCode));
 
     /* Delete the dummy files. */
     EXPECT_EQ(3U, std::filesystem::remove_all("mmcblk0"));
@@ -244,9 +250,10 @@
 
     /* Look for the device file. */
     std::filesystem::path deviceFile, sysfsDir;
-    std::string luksName;
+    std::string luksName, locationCode;
     EXPECT_FALSE(estoraged::util::findDevice(data, std::filesystem::path("./"),
-                                             deviceFile, sysfsDir, luksName));
+                                             deviceFile, sysfsDir, luksName,
+                                             locationCode));
 
     /* Delete the dummy files. */
     EXPECT_EQ(3U, std::filesystem::remove_all("abc"));
diff --git a/src/util.cpp b/src/util.cpp
index 8aad066..2f32c02 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -144,7 +144,8 @@
 
 bool findDevice(const StorageData& data, const std::filesystem::path& searchDir,
                 std::filesystem::path& deviceFile,
-                std::filesystem::path& sysfsDir, std::string& luksName)
+                std::filesystem::path& sysfsDir, std::string& luksName,
+                std::string& locationCode)
 {
     /* Check what type of storage device this is. */
     estoraged::BasicVariantType typeVariant;
@@ -160,6 +161,18 @@
         return false;
     }
 
+    /* Check if location code/ silkscreen name is provided for the drive. */
+    auto findLocationCode = data.find("LocationCode");
+    if (findLocationCode != data.end())
+    {
+        const std::string* locationCodePtr =
+            std::get_if<std::string>(&findLocationCode->second);
+        if (locationCodePtr != nullptr)
+        {
+            locationCode = *locationCodePtr;
+        }
+    }
+
     /*
      * Currently, we only support eMMC, so report an error for any other device
      * types.
