diff --git a/liboverlay/overlayWriteback.cpp b/liboverlay/overlayWriteback.cpp
index 50aa337..fdead74 100644
--- a/liboverlay/overlayWriteback.cpp
+++ b/liboverlay/overlayWriteback.cpp
@@ -75,7 +75,7 @@
 }
 
 //=========== class Writeback =================================================
-Writeback::Writeback() : mXres(0), mYres(0), mOpFmt(-1) {
+Writeback::Writeback() : mXres(0), mYres(0), mOpFmt(-1), mSecure(false) {
     int fbNum = Overlay::getFbForDpy(Overlay::DPY_WRITEBACK);
     if(!utils::openDev(mFd, fbNum, Res::fbPath, O_RDWR)) {
         ALOGE("%s failed to init %s", __func__, Res::fbPath);
@@ -136,8 +136,8 @@
     return true;
 }
 
-bool Writeback::configureMemory(uint32_t size, bool isSecure) {
-    if(!mWbMem.manageMem(size, isSecure)) {
+bool Writeback::configureMemory(uint32_t size) {
+    if(!mWbMem.manageMem(size, mSecure)) {
         ALOGE("%s failed, memory failure", __func__);
         return false;
     }
@@ -215,6 +215,22 @@
     return mOpFmt;
 }
 
+bool Writeback::setSecure(bool isSecure) {
+    if(isSecure != mSecure) {
+        // Call IOCTL to set WB interface as secure
+        struct msmfb_metadata metadata;
+        memset(&metadata, 0 , sizeof(metadata));
+        metadata.op = metadata_op_wb_secure;
+        metadata.data.secure_en = isSecure;
+        if (ioctl(mFd.getFD(), MSMFB_METADATA_SET, &metadata) < 0) {
+            ALOGE("Error setting MDP WB secure");
+            return false;
+        }
+        mSecure = isSecure;
+    }
+    return true;
+}
+
 //static
 
 Writeback *Writeback::getInstance() {
diff --git a/liboverlay/overlayWriteback.h b/liboverlay/overlayWriteback.h
index 9785b64..ebd319f 100644
--- a/liboverlay/overlayWriteback.h
+++ b/liboverlay/overlayWriteback.h
@@ -62,7 +62,7 @@
 public:
     ~Writeback();
     bool configureDpyInfo(int xres, int yres);
-    bool configureMemory(uint32_t size, bool isSecure);
+    bool configureMemory(uint32_t size);
     /* Blocking write. (queue, commit, dequeue)
      * This class will do writeback memory management.
      * This class will call display-commit on writeback mixer.
@@ -87,6 +87,7 @@
     int getFbFd() const { return mFd.getFD(); }
     int getOutputFormat();
     bool setOutputFormat(int mdpFormat);
+    bool setSecure(bool isSecure);
 
     static Writeback* getInstance();
     static void configBegin() { sUsed = false; }
@@ -108,6 +109,7 @@
     int mXres;
     int mYres;
     int mOpFmt;
+    bool mSecure;
 
     static bool sUsed;
     static Writeback *sWb;
