diff --git a/drmdisplaycomposition.cpp b/drmdisplaycomposition.cpp
index 2af9d5a..3880a26 100644
--- a/drmdisplaycomposition.cpp
+++ b/drmdisplaycomposition.cpp
@@ -113,7 +113,7 @@
 }
 
 int DrmDisplayComposition::AddPlaneDisable(DrmPlane *plane) {
-  composition_planes_.emplace_back(DrmCompositionPlaneType::kDisable, plane,
+  composition_planes_.emplace_back(DrmCompositionPlane::Type::kDisable, plane,
                                    crtc_);
   return 0;
 }
@@ -150,7 +150,7 @@
 }
 
 void DrmDisplayComposition::EmplaceCompositionPlane(
-    DrmCompositionPlaneType type, std::vector<DrmPlane *> *primary_planes,
+    DrmCompositionPlane::Type type, std::vector<DrmPlane *> *primary_planes,
     std::vector<DrmPlane *> *overlay_planes) {
   DrmPlane *plane = TakePlane(crtc_, primary_planes, overlay_planes);
   if (plane == NULL) {
@@ -172,7 +172,7 @@
         "remaining");
     return;
   }
-  composition_planes_.emplace_back(DrmCompositionPlaneType::kLayer, plane,
+  composition_planes_.emplace_back(DrmCompositionPlane::Type::kLayer, plane,
                                    crtc_, source_layer);
 }
 
@@ -281,7 +281,7 @@
   }
 
   for (const DrmCompositionPlane &plane : composition_planes_) {
-    if (plane.type() == DrmCompositionPlaneType::kLayer) {
+    if (plane.type() == DrmCompositionPlane::Type::kLayer) {
       for (auto i : plane.source_layers()) {
         DrmHwcLayer *source_layer = &layers_[i];
         comp_layers.emplace(source_layer);
@@ -459,7 +459,7 @@
                             overlay_planes);
 
   if (layers_remaining.size() > 0) {
-    EmplaceCompositionPlane(DrmCompositionPlaneType::kPrecomp, primary_planes,
+    EmplaceCompositionPlane(DrmCompositionPlane::Type::kPrecomp, primary_planes,
                             overlay_planes);
     SeparateLayers(layers_.data(), layers_remaining.data(),
                    layers_remaining.size(), protected_layers.data(),
@@ -468,7 +468,7 @@
   }
 
   if (use_squash_framebuffer) {
-    EmplaceCompositionPlane(DrmCompositionPlaneType::kSquash, primary_planes,
+    EmplaceCompositionPlane(DrmCompositionPlane::Type::kSquash, primary_planes,
                             overlay_planes);
   }
 
@@ -638,16 +638,16 @@
          << " plane=" << (comp_plane.plane() ? comp_plane.plane()->id() : -1)
          << " type=";
     switch (comp_plane.type()) {
-      case DrmCompositionPlaneType::kDisable:
+      case DrmCompositionPlane::Type::kDisable:
         *out << "DISABLE";
         break;
-      case DrmCompositionPlaneType::kLayer:
+      case DrmCompositionPlane::Type::kLayer:
         *out << "LAYER";
         break;
-      case DrmCompositionPlaneType::kPrecomp:
+      case DrmCompositionPlane::Type::kPrecomp:
         *out << "PRECOMP";
         break;
-      case DrmCompositionPlaneType::kSquash:
+      case DrmCompositionPlane::Type::kSquash:
         *out << "SQUASH";
         break;
       default:
