diff --git a/libqservice/IQService.h b/libqservice/IQService.h
index 16ea704..c877d06 100644
--- a/libqservice/IQService.h
+++ b/libqservice/IQService.h
@@ -59,7 +59,7 @@
         /* Enable/Disable/Set refresh rate dynamically */
         CONFIGURE_DYN_REFRESH_RATE = 18,
         SET_PARTIAL_UPDATE = 19,   // Preference on partial update feature
-        TOGGLE_SCREEN_UPDATE = 20, // Provides ability to disable screen updates
+        CONTROL_BACKLIGHT = 20, // Provides ability to control backlight
         SET_FRAME_DUMP_CONFIG = 21,  // Provides ability to set the frame dump config
         SET_S3D_MODE = 22, // Set the 3D mode as specified in msm_hdmi_modes.h
         CONNECT_HDMI_CLIENT = 23,  // Connect HDMI CEC HAL Client
diff --git a/libqservice/QServiceUtils.h b/libqservice/QServiceUtils.h
index 62ee0d1..b677188 100644
--- a/libqservice/QServiceUtils.h
+++ b/libqservice/QServiceUtils.h
@@ -74,8 +74,9 @@
     return sendSingleParam(qService::IQService::SCREEN_REFRESH, 1);
 }
 
+// TODO(user): Need to rename this wrapper name
 inline android::status_t toggleScreenUpdate(uint32_t on) {
-    return sendSingleParam(qService::IQService::TOGGLE_SCREEN_UPDATE, on);
+    return sendSingleParam(qService::IQService::CONTROL_BACKLIGHT, on);
 }
 
 inline android::status_t setPartialUpdate(uint32_t enable) {
diff --git a/sdm/libs/hwc/hwc_session.cpp b/sdm/libs/hwc/hwc_session.cpp
index 878ff4c..885a732 100644
--- a/sdm/libs/hwc/hwc_session.cpp
+++ b/sdm/libs/hwc/hwc_session.cpp
@@ -503,6 +503,10 @@
   case qService::IQService::SET_VIEW_FRAME:
     break;
 
+  case qService::IQService::CONTROL_BACKLIGHT:
+    status = ControlBackLight(input_parcel);
+    break;
+
   case qService::IQService::QDCM_SVC_CMDS:
     status = QdcmCMDHandler(*input_parcel, output_parcel);
     break;
@@ -515,6 +519,45 @@
   return status;
 }
 
+android::status_t HWCSession::ControlBackLight(const android::Parcel *input_parcel) {
+  uint32_t display_status = UINT32(input_parcel->readInt32());
+  HWCDisplay *display = hwc_display_[HWC_DISPLAY_PRIMARY];
+
+  DLOGI("Primary Display display_status = %d", display_status);
+
+  int fd = open("/sys/class/leds/lcd-backlight/brightness", O_RDWR);
+  const char *bl_brightness = "0";
+
+  if (fd < 0) {
+    DLOGE("unable to open brightness node err = %d errstr = %s", errno, strerror(errno));
+    return -1;
+  }
+
+  if (display_status == 0) {
+    // Read backlight and store it internally. Set backlight to 0 on primary.
+    if (read(fd, brightness_, sizeof(brightness_)) > 0) {
+      DLOGI("backlight brightness is %s", brightness_);
+      ssize_t ret = write(fd, bl_brightness, sizeof(bl_brightness));
+      if (ret < 0) {
+        DLOGE("Failed to write backlight node err = %d errstr = %s", errno, strerror(errno));
+        close(fd);
+        return -1;
+      }
+    }
+  } else {
+    // Restore backlight to original value.
+    ssize_t ret = write(fd, brightness_, sizeof(brightness_));
+    if (ret < 0) {
+      DLOGE("Failed to write backlight node err = %d errstr = %s", errno, strerror(errno));
+      close(fd);
+      return -1;
+    }
+  }
+  close(fd);
+
+  return display->SetDisplayStatus(display_status);
+}
+
 android::status_t HWCSession::SetSecondaryDisplayStatus(const android::Parcel *input_parcel) {
   uint32_t display_id = UINT32(input_parcel->readInt32());
   uint32_t display_status = UINT32(input_parcel->readInt32());
diff --git a/sdm/libs/hwc/hwc_session.h b/sdm/libs/hwc/hwc_session.h
index b3cbb70..c8550d5 100644
--- a/sdm/libs/hwc/hwc_session.h
+++ b/sdm/libs/hwc/hwc_session.h
@@ -87,6 +87,7 @@
   android::status_t SetMaxMixerStages(const android::Parcel *input_parcel);
   android::status_t SetDisplayMode(const android::Parcel *input_parcel);
   android::status_t SetSecondaryDisplayStatus(const android::Parcel *input_parcel);
+  android::status_t ControlBackLight(const android::Parcel *input_parcel);
   android::status_t ConfigureRefreshRate(const android::Parcel *input_parcel);
   android::status_t QdcmCMDHandler(const android::Parcel &in, android::Parcel *out);
 
@@ -100,8 +101,8 @@
   const char *uevent_thread_name_;
   HWCBufferAllocator *buffer_allocator_;
   HWCBufferSyncHandler *buffer_sync_handler_;
-
   HWCColorManager *color_mgr_;
+  char brightness_[64];
 };
 
 }  // namespace sdm
