sdm: Handle concurrency of LTM and panel mode switch.

Enable PU when panel supports and LTM is not enabled.

Change-Id: I60bdf696e96007145b6be20e26b304f8536b1165
CRs-Fixed: 2564347
diff --git a/sdm/libs/core/display_builtin.cpp b/sdm/libs/core/display_builtin.cpp
index b567a80..4e9e7d1 100644
--- a/sdm/libs/core/display_builtin.cpp
+++ b/sdm/libs/core/display_builtin.cpp
@@ -535,6 +535,12 @@
     return kErrorNotSupported;
   }
 
+  if (dpps_info_.disable_pu_ && enable) {
+    // Nothing to be done.
+    DLOGI("partial update is disabled by DPPS for display id = %d", display_id_);
+    return kErrorNotSupported;
+  }
+
   *pending = 0;
   if (enable == partial_update_control_) {
     DLOGI("Same state transition is requested.");
@@ -596,6 +602,7 @@
         break;
       }
       enable = *(reinterpret_cast<bool *>(payload));
+      dpps_info_.disable_pu_ = !enable;
       ControlPartialUpdate(enable, &pending);
       event_handler_->HandleEvent(kInvalidateDisplay);
       event_handler_->Refresh();
diff --git a/sdm/libs/core/display_builtin.h b/sdm/libs/core/display_builtin.h
index b59752e..8329b66 100644
--- a/sdm/libs/core/display_builtin.h
+++ b/sdm/libs/core/display_builtin.h
@@ -39,6 +39,7 @@
   void Init(DppsPropIntf *intf, const std::string &panel_name);
   void Deinit();
   void DppsNotifyOps(enum DppsNotifyOps op, void *payload, size_t size);
+  bool disable_pu_ = false;
 
  private:
   const char *kDppsLib_ = "libdpps.so";