diff --git a/drm/drmconnector.cpp b/drm/drmconnector.cpp
index db3f9b6..7cde7cd 100644
--- a/drm/drmconnector.cpp
+++ b/drm/drmconnector.cpp
@@ -58,11 +58,6 @@
     ALOGE("Could not get CRTC_ID property\n");
     return ret;
   }
-  ret = drm_->GetConnectorProperty(*this, "EDID", &edid_property_);
-  if (ret) {
-    ALOGE("Could not get EDID property\n");
-    return ret;
-  }
   if (writeback()) {
     ret = drm_->GetConnectorProperty(*this, "WRITEBACK_PIXEL_FORMATS",
                                      &writeback_pixel_formats_);
@@ -196,10 +191,6 @@
   return crtc_id_property_;
 }
 
-const DrmProperty &DrmConnector::edid_property() const {
-  return edid_property_;
-}
-
 const DrmProperty &DrmConnector::writeback_pixel_formats() const {
   return writeback_pixel_formats_;
 }
diff --git a/drmhwctwo.cpp b/drmhwctwo.cpp
index 2b7f684..ab39144 100644
--- a/drmhwctwo.cpp
+++ b/drmhwctwo.cpp
@@ -953,43 +953,6 @@
   return *num_types ? HWC2::Error::HasChanges : HWC2::Error::None;
 }
 
-HWC2::Error DrmHwcTwo::HwcDisplay::GetDisplayIdentificationData(
-    uint8_t *outPort, uint32_t *outDataSize, uint8_t *outData) {
-  supported(__func__);
-
-  drmModePropertyBlobPtr blob;
-  int ret;
-  uint64_t blob_id;
-
-  std::tie(ret, blob_id) = connector_->edid_property().value();
-  if (ret) {
-    ALOGE("Failed to get edid property value.");
-    return HWC2::Error::Unsupported;
-  }
-
-  blob = drmModeGetPropertyBlob(drm_->fd(), blob_id);
-
-  outData = static_cast<uint8_t *>(blob->data);
-
-  *outPort = connector_->id();
-  *outDataSize = blob->length;
-
-  return HWC2::Error::None;
-}
-
-HWC2::Error DrmHwcTwo::HwcDisplay::GetDisplayCapabilities(
-    uint32_t *outNumCapabilities, uint32_t *outCapabilities) {
-  unsupported(__func__, outCapabilities);
-
-  if (outNumCapabilities == NULL) {
-    return HWC2::Error::BadParameter;
-  }
-
-  *outNumCapabilities = 0;
-
-  return HWC2::Error::None;
-}
-
 HWC2::Error DrmHwcTwo::HwcLayer::SetCursorPosition(int32_t x, int32_t y) {
   supported(__func__);
   cursor_x_ = x;
@@ -1312,16 +1275,6 @@
       return ToHook<HWC2_PFN_VALIDATE_DISPLAY>(
           DisplayHook<decltype(&HwcDisplay::ValidateDisplay),
                       &HwcDisplay::ValidateDisplay, uint32_t *, uint32_t *>);
-    case HWC2::FunctionDescriptor::GetDisplayIdentificationData:
-      return ToHook<HWC2_PFN_GET_DISPLAY_IDENTIFICATION_DATA>(
-          DisplayHook<decltype(&HwcDisplay::GetDisplayIdentificationData),
-                      &HwcDisplay::GetDisplayIdentificationData, uint8_t *,
-                      uint32_t *, uint8_t *>);
-    case HWC2::FunctionDescriptor::GetDisplayCapabilities:
-      return ToHook<HWC2_PFN_GET_DISPLAY_CAPABILITIES>(
-          DisplayHook<decltype(&HwcDisplay::GetDisplayCapabilities),
-                      &HwcDisplay::GetDisplayCapabilities, uint32_t *,
-                      uint32_t *>);
 
     // Layer functions
     case HWC2::FunctionDescriptor::SetCursorPosition:
diff --git a/include/drmconnector.h b/include/drmconnector.h
index dc64b38..c9fd7ab 100644
--- a/include/drmconnector.h
+++ b/include/drmconnector.h
@@ -62,7 +62,6 @@
 
   const DrmProperty &dpms_property() const;
   const DrmProperty &crtc_id_property() const;
-  const DrmProperty &edid_property() const;
   const DrmProperty &writeback_pixel_formats() const;
   const DrmProperty &writeback_fb_id() const;
   const DrmProperty &writeback_out_fence() const;
@@ -101,7 +100,6 @@
 
   DrmProperty dpms_property_;
   DrmProperty crtc_id_property_;
-  DrmProperty edid_property_;
   DrmProperty writeback_pixel_formats_;
   DrmProperty writeback_fb_id_;
   DrmProperty writeback_out_fence_;
diff --git a/include/drmhwctwo.h b/include/drmhwctwo.h
index 76e71b0..babe000 100644
--- a/include/drmhwctwo.h
+++ b/include/drmhwctwo.h
@@ -173,11 +173,6 @@
                                    uint32_t *num_elements, hwc2_layer_t *layers,
                                    int32_t *layer_requests);
     HWC2::Error GetDisplayType(int32_t *type);
-    HWC2::Error GetDisplayIdentificationData(uint8_t *outPort,
-                                             uint32_t *outDataSize,
-                                             uint8_t *outData);
-    HWC2::Error GetDisplayCapabilities(uint32_t *outNumCapabilities,
-                                       uint32_t *outCapabilities);
     HWC2::Error GetDozeSupport(int32_t *support);
     HWC2::Error GetHdrCapabilities(uint32_t *num_types, int32_t *types,
                                    float *max_luminance,
