diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index bf46200..6e87b71 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -203,11 +203,17 @@
   V3,
 };
 
+enum struct SmartDMARevision {
+  V1,
+  V2,
+};
+
 /* Per CRTC Resource Info*/
 struct DRMCrtcInfo {
   bool has_src_split;
   uint32_t max_blend_stages;
   QSEEDVersion qseed_version;
+  SmartDMARevision smart_dma_rev;
 };
 
 enum struct DRMPlaneType {
@@ -223,6 +229,8 @@
 };
 
 struct DRMPlaneTypeInfo {
+  DRMPlaneType type;
+  uint32_t master_plane_id;
   // FourCC format enum and modifier
   std::vector<std::pair<uint32_t, uint64_t>> formats_supported;
   uint32_t max_linewidth;
@@ -232,13 +240,8 @@
   uint32_t max_vertical_deci;
 };
 
-/* All DRM Planes Info*/
-struct DRMPlanesInfo {
-  // Plane id and plane type sorted by highest to lowest priority
-  std::vector<std::pair<uint32_t, DRMPlaneType>> planes;
-  // Plane type and type info
-  std::map<DRMPlaneType, DRMPlaneTypeInfo> types;
-};
+// All DRM Planes as map<Plane_id , plane_type_info> listed from highest to lowest priority
+typedef std::vector<std::pair<uint32_t, DRMPlaneTypeInfo>>  DRMPlanesInfo;
 
 enum struct DRMTopology {
   UNKNOWN,  // To be compat with driver defs in sde_kms.h
diff --git a/sdm/include/private/hw_info_types.h b/sdm/include/private/hw_info_types.h
index 3ccf454..1f8090b 100644
--- a/sdm/include/private/hw_info_types.h
+++ b/sdm/include/private/hw_info_types.h
@@ -119,6 +119,7 @@
 struct HWPipeCaps {
   PipeType type = kPipeTypeUnused;
   uint32_t id = 0;
+  uint32_t master_pipe_id = 0;
   uint32_t max_rects = 1;
 };
 
@@ -141,6 +142,11 @@
   uint32_t max_scale_up = 1;
 };
 
+enum SmartDMARevision {
+  V1,
+  V2,
+};
+
 struct HWResourceInfo {
   uint32_t hw_version = 0;
   uint32_t hw_revision = 0;
@@ -191,7 +197,7 @@
   HWDestScalarInfo hw_dest_scalar_info;
   bool has_avr = false;
   bool has_hdr = false;
-
+  SmartDMARevision smart_dma_rev = SmartDMARevision::V1;
   void Reset() { *this = HWResourceInfo(); }
 };
 
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index cbd585b..48464e9 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -254,85 +254,72 @@
   hw_resource->is_src_split = info.has_src_split;
   hw_resource->has_qseed3 = (info.qseed_version == sde_drm::QSEEDVersion::V3);
   hw_resource->num_blending_stages = info.max_blend_stages;
+  hw_resource->smart_dma_rev = (info.smart_dma_rev == sde_drm::SmartDMARevision::V2) ?
+    SmartDMARevision::V2 : SmartDMARevision::V1;
 }
 
 void HWInfoDRM::GetHWPlanesInfo(HWResourceInfo *hw_resource) {
-  DRMPlanesInfo info;
-  drm_mgr_intf_->GetPlanesInfo(&info);
-  for (auto &pipe_obj : info.planes) {
+  DRMPlanesInfo planes;
+  drm_mgr_intf_->GetPlanesInfo(&planes);
+  for (auto &pipe_obj : planes) {
     HWPipeCaps pipe_caps;
     string name = {};
-    switch (pipe_obj.second) {
-      case DRMPlaneType::RGB:
-        pipe_caps.type = kPipeTypeRGB;
-        hw_resource->num_rgb_pipe++;
-        name = "RGB";
+    switch (pipe_obj.second.type) {
+      case DRMPlaneType::DMA:
+        name = "DMA";
+        pipe_caps.type = kPipeTypeDMA;
+        if (!hw_resource->num_dma_pipe) {
+          PopulateSupportedFmts(kHWDMAPipe, pipe_obj.second, hw_resource);
+        }
+        hw_resource->num_dma_pipe++;
         break;
       case DRMPlaneType::VIG:
-        pipe_caps.type = kPipeTypeVIG;
-        hw_resource->num_vig_pipe++;
         name = "VIG";
-        break;
-      case DRMPlaneType::DMA:
-        pipe_caps.type = kPipeTypeDMA;
-        hw_resource->num_dma_pipe++;
-        name = "DMA";
+        pipe_caps.type = kPipeTypeVIG;
+        if (!hw_resource->num_vig_pipe) {
+          PopulatePipeCaps(pipe_obj.second, hw_resource);
+          PopulateSupportedFmts(kHWVIGPipe, pipe_obj.second, hw_resource);
+        }
+        hw_resource->num_vig_pipe++;
         break;
       case DRMPlaneType::CURSOR:
-        pipe_caps.type = kPipeTypeCursor;
-        hw_resource->num_cursor_pipe++;
         name = "CURSOR";
-        break;
+        pipe_caps.type = kPipeTypeCursor;
+        if (!hw_resource->num_cursor_pipe) {
+          PopulateSupportedFmts(kHWCursorPipe, pipe_obj.second, hw_resource);
+          hw_resource->max_cursor_size = pipe_obj.second.max_linewidth;
+        }
+        hw_resource->num_cursor_pipe++;
       default:
-        break;
+        continue;  // Not adding any other pipe type
     }
     pipe_caps.id = pipe_obj.first;
-    pipe_caps.max_rects = 1;
-    DLOGI("%s Pipe : Id %d", name.c_str(), pipe_obj.first);
+    pipe_caps.master_pipe_id = pipe_obj.second.master_plane_id;
+    DLOGI("Adding %s Pipe : Id %d", name.c_str(), pipe_obj.first);
     hw_resource->hw_pipes.push_back(std::move(pipe_caps));
   }
+}
 
-  for (auto &pipe_type : info.types) {
-    vector<LayerBufferFormat> supported_sdm_formats = {};
-    for (auto &fmts : pipe_type.second.formats_supported) {
-      GetSDMFormat(fmts.first, fmts.second, &supported_sdm_formats);
+void HWInfoDRM::PopulatePipeCaps(const sde_drm::DRMPlaneTypeInfo &info,
+                                    HWResourceInfo *hw_resource) {
+  hw_resource->max_pipe_width = info.max_linewidth;
+  hw_resource->max_scale_down = info.max_downscale;
+  hw_resource->max_scale_up = info.max_upscale;
+  hw_resource->has_decimation = info.max_horizontal_deci > 1 && info.max_vertical_deci > 1;
+}
+
+void HWInfoDRM::PopulateSupportedFmts(HWSubBlockType sub_blk_type,
+                                      const sde_drm::DRMPlaneTypeInfo  &info,
+                                      HWResourceInfo *hw_resource) {
+  vector<LayerBufferFormat> sdm_formats = {};
+  FormatsMap &fmts_map = hw_resource->supported_formats_map;
+
+  if (fmts_map.find(sub_blk_type) == fmts_map.end()) {
+    for (auto &fmts : info.formats_supported) {
+      GetSDMFormat(fmts.first, fmts.second, &sdm_formats);
     }
 
-    HWSubBlockType sub_blk_type = kHWSubBlockMax;
-    switch (pipe_type.first) {
-      case DRMPlaneType::RGB:
-        sub_blk_type = kHWRGBPipe;
-        // These properties are per plane but modeled in SDM as system-wide.
-        hw_resource->max_pipe_width = pipe_type.second.max_linewidth;
-        hw_resource->max_scale_down = pipe_type.second.max_downscale;
-        hw_resource->max_scale_up = pipe_type.second.max_upscale;
-        hw_resource->has_decimation =
-            pipe_type.second.max_horizontal_deci > 1 && pipe_type.second.max_vertical_deci > 1;
-        break;
-      case DRMPlaneType::VIG:
-        sub_blk_type = kHWVIGPipe;
-        // These properties are per plane but modeled in SDM as system-wide.
-        hw_resource->max_pipe_width = pipe_type.second.max_linewidth;
-        hw_resource->max_scale_down = pipe_type.second.max_downscale;
-        hw_resource->max_scale_up = pipe_type.second.max_upscale;
-        hw_resource->has_decimation =
-            pipe_type.second.max_horizontal_deci > 1 && pipe_type.second.max_vertical_deci > 1;
-        break;
-      case DRMPlaneType::DMA:
-        sub_blk_type = kHWDMAPipe;
-        break;
-      case DRMPlaneType::CURSOR:
-        sub_blk_type = kHWCursorPipe;
-        hw_resource->max_cursor_size = pipe_type.second.max_linewidth;
-        break;
-      default:
-        break;
-    }
-
-    if (sub_blk_type != kHWSubBlockMax) {
-      hw_resource->supported_formats_map.erase(sub_blk_type);
-      hw_resource->supported_formats_map.insert(make_pair(sub_blk_type, supported_sdm_formats));
-    }
+    fmts_map.insert(make_pair(sub_blk_type, sdm_formats));
   }
 }
 
diff --git a/sdm/libs/core/drm/hw_info_drm.h b/sdm/libs/core/drm/hw_info_drm.h
index b955e63..91829cb 100644
--- a/sdm/libs/core/drm/hw_info_drm.h
+++ b/sdm/libs/core/drm/hw_info_drm.h
@@ -60,6 +60,10 @@
   void GetRotatorFormatsForType(int fd, uint32_t type,
                                 std::vector<LayerBufferFormat> *supported_formats);
   DisplayError GetRotatorSupportedFormats(uint32_t v4l2_index, HWResourceInfo *hw_resource);
+  void PopulateSupportedFmts(HWSubBlockType sub_blk_type, const sde_drm::DRMPlaneTypeInfo  &info,
+                             HWResourceInfo *hw_resource);
+  void PopulatePipeCaps(const sde_drm::DRMPlaneTypeInfo &info, HWResourceInfo *hw_resource);
+
 
   sde_drm::DRMManagerInterface *drm_mgr_intf_ = {};
   bool default_mode_ = false;
