diff --git a/st21nfc/adaptation/i2clayer.cc b/st21nfc/adaptation/i2clayer.cc
index 6eb3fed..c7b1300 100644
--- a/st21nfc/adaptation/i2clayer.cc
+++ b/st21nfc/adaptation/i2clayer.cc
@@ -44,6 +44,9 @@
 #define ST21NFC_SET_POLARITY_FALLING _IOR(ST21NFC_MAGIC, 0x04, unsigned int)
 #define ST21NFC_SET_POLARITY_HIGH _IOR(ST21NFC_MAGIC, 0x05, unsigned int)
 #define ST21NFC_SET_POLARITY_LOW _IOR(ST21NFC_MAGIC, 0x06, unsigned int)
+#define ST21NFC_CLK_ENABLE _IOR(ST21NFC_MAGIC, 0x11, unsigned int)
+#define ST21NFC_CLK_DISABLE _IOR(ST21NFC_MAGIC, 0x12, unsigned int)
+#define ST21NFC_CLK_STATE _IOR(ST21NFC_MAGIC, 0x13, unsigned int)
 
 #define LINUX_DBGBUFFER_SIZE 300
 
@@ -55,6 +58,8 @@
 static pthread_t threadHandle = (pthread_t)NULL;
 pthread_mutex_t i2ctransport_mtx = PTHREAD_MUTEX_INITIALIZER;
 
+unsigned long hal_ctrl_clk = 0;
+
 /**************************************************************************************************
  *
  *                                      Private API Declaration
@@ -282,6 +287,15 @@
     return false;
   }
 
+  GetNumValue(NAME_STNFC_CONTROL_CLK, &hal_ctrl_clk, sizeof(hal_ctrl_clk));
+
+  if (hal_ctrl_clk) {
+    if (ioctl(fidI2c, ST21NFC_CLK_DISABLE, NULL) < 0) {
+      char msg[LINUX_DBGBUFFER_SIZE];
+      strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+      STLOG_HAL_E("ST21NFC_CLK_DISABLE failed errno %d(%s)", errno, msg);
+    }
+  }
   i2cSetPolarity(fidI2c, false, false);
   i2cResetPulse(fidI2c);
 
@@ -404,13 +418,51 @@
   int retries = 0;
   int result = 0;
   int halfsecs = 0;
+  int clk_state = -1;
+  char msg[LINUX_DBGBUFFER_SIZE];
+
+  if (hal_ctrl_clk && length >= 4 && pvBuffer[0] == 0x20 &&
+      pvBuffer[1] == 0x09) {
+    if (0 > (clk_state = ioctl(fid, ST21NFC_CLK_STATE, NULL))) {
+      strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+      STLOG_HAL_E("ST21NFC_CLK_STATE failed errno %d(%s)", errno, msg);
+      clk_state = -1;
+    }
+    STLOG_HAL_D("ST21NFC_CLK_STATE = %d", clk_state);
+    if (clk_state == 1 && (pvBuffer[3] == 0x01 || pvBuffer[3] == 0x03)) {
+      // screen off cases
+      if (ioctl(fid, ST21NFC_CLK_DISABLE, NULL) < 0) {
+        strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+        STLOG_HAL_E("ST21NFC_CLK_DISABLE failed errno %d(%s)", errno, msg);
+      } else if (0 > (clk_state = ioctl(fid, ST21NFC_CLK_STATE, NULL))) {
+        strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+        STLOG_HAL_E("ST21NFC_CLK_STATE failed errno %d(%s)", errno, msg);
+        clk_state = -1;
+      }
+      if (clk_state != 0) {
+        STLOG_HAL_E("CLK_DISABLE STATE ERROR clk_state = %d", clk_state);
+      }
+    } else if (clk_state == 0 && (pvBuffer[3] == 0x02 || pvBuffer[3] == 0x00)) {
+      // screen on cases
+      if (ioctl(fid, ST21NFC_CLK_ENABLE, NULL) < 0) {
+        strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+        STLOG_HAL_E("ST21NFC_CLK_ENABLE failed errno %d(%s)", errno, msg);
+      } else if (0 > (clk_state = ioctl(fid, ST21NFC_CLK_STATE, NULL))) {
+        strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
+        STLOG_HAL_E("ST21NFC_CLK_STATE failed errno %d(%s)", errno, msg);
+        clk_state = -1;
+      }
+      if (clk_state != 1) {
+        STLOG_HAL_E("CLK_ENABLE STATE ERROR clk_state = %d", clk_state);
+      }
+    }
+  }
 
 redo:
   while (retries < 3) {
     result = write(fid, pvBuffer, length);
 
     if (result < 0) {
-      char msg[LINUX_DBGBUFFER_SIZE];
 
       strerror_r(errno, msg, LINUX_DBGBUFFER_SIZE);
       STLOG_HAL_W("! i2cWrite!!, errno is '%s'", msg);
diff --git a/st21nfc/include/android_logmsg.h b/st21nfc/include/android_logmsg.h
index 7be148f..e6fbbc5 100644
--- a/st21nfc/include/android_logmsg.h
+++ b/st21nfc/include/android_logmsg.h
@@ -49,6 +49,7 @@
 #define NAME_STNFC_FW_BIN_NAME "STNFC_FW_BIN_NAME"
 #define NAME_STNFC_FW_DEBUG_ENABLED "STNFC_FW_DEBUG_ENABLED"
 #define NAME_CORE_CONF_PROP "CORE_CONF_PROP"
+#define NAME_STNFC_CONTROL_CLK "STNFC_CONTROL_CLK"
 
 /* #######################
  * Set the logging level
