diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6eb21d6..d46a9fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -34,6 +34,12 @@
   - Remove `__attribute__((packed))` from
     `struct pldm_base_multipart_receive_req`
 
+- platform: Rename symbols:
+  - `struct pldm_file_descriptor_pdr` to
+    `struct pldm_platform_file_descriptor_pdr`
+  - `decode_pldm_file_descriptor_pdr()` to
+    `decode_pldm_platform_file_descriptor_pdr()`
+
 ### Deprecated
 
 ### Removed
diff --git a/include/libpldm/platform.h b/include/libpldm/platform.h
index cc696a4..ff66853 100644
--- a/include/libpldm/platform.h
+++ b/include/libpldm/platform.h
@@ -950,13 +950,13 @@
 	uint8_t effecter_names[1];
 } __attribute__((packed));
 
-/** @struct pldm_file_descriptor_pdr
+/** @struct pldm_platform_file_descriptor_pdr
  *
  *  Structure representing PLDM File Descriptor PDR for unpacked value
  *  Refer to: DSP0248_1.3.0: 28.30 Table 108
  */
 
-struct pldm_file_descriptor_pdr {
+struct pldm_platform_file_descriptor_pdr {
 	struct pldm_value_pdr_hdr hdr;
 	uint16_t terminus_handle;
 	uint16_t file_identifier;
@@ -2719,8 +2719,9 @@
  *          -EOVERFLOW if the original length of the data buffer is smaller
  *          than the target extract length
  */
-int decode_pldm_file_descriptor_pdr(const void *data, size_t data_length,
-				    struct pldm_file_descriptor_pdr *pdr);
+int decode_pldm_platform_file_descriptor_pdr(
+	const void *data, size_t data_length,
+	struct pldm_platform_file_descriptor_pdr *pdr);
 
 /** @brief Decode SetNumericSensorEnable request
  *
diff --git a/src/dsp/platform.c b/src/dsp/platform.c
index 297a033..9af2d67 100644
--- a/src/dsp/platform.c
+++ b/src/dsp/platform.c
@@ -3473,8 +3473,9 @@
 }
 
 LIBPLDM_ABI_TESTING
-int decode_pldm_file_descriptor_pdr(const void *data, size_t data_length,
-				    struct pldm_file_descriptor_pdr *pdr)
+int decode_pldm_platform_file_descriptor_pdr(
+	const void *data, size_t data_length,
+	struct pldm_platform_file_descriptor_pdr *pdr)
 {
 	PLDM_MSGBUF_DEFINE_P(buf);
 	int rc;
diff --git a/tests/dsp/platform.cpp b/tests/dsp/platform.cpp
index 4427cbc..6f4c517 100644
--- a/tests/dsp/platform.cpp
+++ b/tests/dsp/platform.cpp
@@ -6188,10 +6188,10 @@
     const char expectFileName[] = "File1";
     const char expectOEMClassificationName[] = "OEM File";
 
-    struct pldm_file_descriptor_pdr decodedPdr = {};
+    struct pldm_platform_file_descriptor_pdr decodedPdr = {};
 
-    auto rc =
-        decode_pldm_file_descriptor_pdr(pdr1.data(), pdr1.size(), &decodedPdr);
+    auto rc = decode_pldm_platform_file_descriptor_pdr(pdr1.data(), pdr1.size(),
+                                                       &decodedPdr);
 
     ASSERT_EQ(0, rc);
     EXPECT_EQ(1, decodedPdr.terminus_handle);
@@ -6258,12 +6258,14 @@
         0x00, // File Name = "File1\NULL"
     };
 
-    struct pldm_file_descriptor_pdr decodedPdr = {};
+    struct pldm_platform_file_descriptor_pdr decodedPdr = {};
 
-    rc = decode_pldm_file_descriptor_pdr(nullptr, pdr1.size(), &decodedPdr);
+    rc = decode_pldm_platform_file_descriptor_pdr(nullptr, pdr1.size(),
+                                                  &decodedPdr);
     EXPECT_EQ(-EINVAL, rc);
 
-    rc = decode_pldm_file_descriptor_pdr(pdr1.data(), pdr1.size(), nullptr);
+    rc = decode_pldm_platform_file_descriptor_pdr(pdr1.data(), pdr1.size(),
+                                                  nullptr);
     EXPECT_EQ(-EINVAL, rc);
 }
 #endif
@@ -6299,10 +6301,10 @@
         0x00, // File Name = "File1\NULL"
     };
 
-    struct pldm_file_descriptor_pdr decodedPdr = {};
+    struct pldm_platform_file_descriptor_pdr decodedPdr = {};
 
     /* Expect error: Invalid input data length*/
-    rc = decode_pldm_file_descriptor_pdr(pdr1.data(), 1, &decodedPdr);
+    rc = decode_pldm_platform_file_descriptor_pdr(pdr1.data(), 1, &decodedPdr);
     EXPECT_EQ(-EOVERFLOW, rc);
 }
 #endif
@@ -6339,13 +6341,14 @@
         0x00, // File Name = "File1\NULL"
     };
 
-    struct pldm_file_descriptor_pdr decodedPdr = {};
+    struct pldm_platform_file_descriptor_pdr decodedPdr = {};
 
     /*
      * Expect error: The original length of the data buffer is larger than
      * the target extract length.
      */
-    rc = decode_pldm_file_descriptor_pdr(pdr1.data(), pdr1.size(), &decodedPdr);
+    rc = decode_pldm_platform_file_descriptor_pdr(pdr1.data(), pdr1.size(),
+                                                  &decodedPdr);
     EXPECT_EQ(-EBADMSG, rc);
 }
 
@@ -6383,13 +6386,14 @@
         0x00 // OEM File Classification Name = "OEM File\NULL"
     };
 
-    struct pldm_file_descriptor_pdr decodedPdr = {};
+    struct pldm_platform_file_descriptor_pdr decodedPdr = {};
 
     /*
      * Expect error: The original length of the data buffer is smaller than
      * the target extract length.
      */
-    rc = decode_pldm_file_descriptor_pdr(pdr1.data(), pdr1.size(), &decodedPdr);
+    rc = decode_pldm_platform_file_descriptor_pdr(pdr1.data(), pdr1.size(),
+                                                  &decodedPdr);
     EXPECT_EQ(-EOVERFLOW, rc);
 }
 #endif
