diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 3cbdfb2..9a98663 100755
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -189,7 +189,6 @@
 static const char *cust_sn_cmdline = " androidboot.customer_serialno=";
 static const char *factory_sn_cmdline = " androidboot.factory_serialno=";
 static const char *UsbAdbEnable = " androidboot.adb_enable=1";
-static const char *UsbAdbEnableCTS = " androidboot.adb_enable_cts=0";
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 static const char *auth_kernel = " androidboot.authorized_kernel=true";
@@ -313,7 +312,7 @@
 static device_info device = {DEVICE_MAGIC,0,0,0,0,{0},{0},{0},1,{0},0,{0}};
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
-static prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0, 0};
+static prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0};
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -403,7 +402,6 @@
 char cust_sn_buf[PRODINFO_MAX_SSN_LEN + 1];
 char factory_sn_buf[PRODINFO_MAX_SSN_LEN + 1];
 char AdbEnable[MAX_RSP_SIZE];
-char AdbEnableCTS[MAX_RSP_SIZE];
 #endif
 #if defined(ENABLE_PRODINFO_ACCESS)
 char sn_buf[PRODINFO_MAX_ISN_LEN + 1];
@@ -571,7 +569,6 @@
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
 	int AdbEnable = 0;
-	int AdbEnableCTS = 0;
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 	bool warm_boot = false;
@@ -709,16 +706,11 @@
 	if (prod.is_adb_enabled) {
 		dprintf(CRITICAL, "Device will enable adb\n");
 
-		if (prod.is_adb_enabled_cts) {
-			prod.is_adb_enabled = 1;
-		} else {
-			prod.is_adb_enabled = 0;
-		}
+		prod.is_adb_enabled = 0;
 		write_prod_info(&prod);
 
 		AdbEnable = 1;
 		cmdline_len += strlen(UsbAdbEnable);
-		cmdline_len += strlen(UsbAdbEnableCTS);
 	}
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
@@ -1178,12 +1170,6 @@
 			if (have_cmdline) --dst;
 			while ((*dst++ = *src++));
 		}
-
-                if (AdbEnableCTS) {
-                        src = UsbAdbEnableCTS;
-                        if (have_cmdline) --dst;
-                        while ((*dst++ = *src++));
-                }
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -3303,7 +3289,6 @@
 			memcpy(info->isn, "No_Serial_Number", PRODINFO_MAX_ISN_LEN);
 			memcpy(info->ssn, "No_Custer_Serial_Number", PRODINFO_MAX_SSN_LEN);
 			info->is_adb_enabled = 0;
-			info->is_adb_enabled_cts = 0;
 			write_prod_info(info);
 		}
 		memcpy(dev, info, sizeof(prod_info));
@@ -5058,24 +5043,6 @@
 	write_prod_info(&prod);
 	fastboot_okay("");
 }
-
-void CmdOemEnableAdbCTS(const char *arg, void *data, unsigned size)
-{
-        dprintf(INFO, "Enabling Adb CTS\n");
-        prod.is_adb_enabled = 1;
-        prod.is_adb_enabled_cts = 1;
-        write_prod_info(&prod);
-        fastboot_okay("");
-}
-
-void CmdOemDisableAdbCTS(const char *arg, void *data, unsigned size)
-{
-        dprintf(INFO, "disabling Adb CTS\n");
-        prod.is_adb_enabled = 0;
-        prod.is_adb_enabled_cts = 0;
-        write_prod_info(&prod);
-        fastboot_okay("");
-}
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 
@@ -5623,8 +5590,6 @@
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
 						{"oem adb_enable", CmdOemEnableAdb},
-						{"oem adb_enable_cts", CmdOemEnableAdbCTS},
-						{"oem adb_disable_cts", CmdOemDisableAdbCTS},
 #endif
 /*[20200605][TracyChui] Implement get Serial Number end*/
 						};
diff --git a/app/aboot/devinfo.h b/app/aboot/devinfo.h
index 59342a4..d264250 100755
--- a/app/aboot/devinfo.h
+++ b/app/aboot/devinfo.h
@@ -74,7 +74,6 @@
 	unsigned char isn[PRODINFO_MAX_ISN_LEN];
 	unsigned char ssn[PRODINFO_MAX_SSN_LEN];
 	bool is_adb_enabled;
-	bool is_adb_enabled_cts;
 };
 
 void read_prod_info(prod_info *dev);
diff --git a/target/msm8953/init.c b/target/msm8953/init.c
index 7b2214f..7e1fe9f 100755
--- a/target/msm8953/init.c
+++ b/target/msm8953/init.c
@@ -423,7 +423,7 @@
 {
 /*[20200605][TracyChui] Implement get Serial Number start*/
 #if defined(ENABLE_PRODINFO_ACCESS)
-	prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0, 0};
+	prod_info prod = {PRODINFO_MAGIC, {0}, {0}, 0};
 	if (target_is_emmc_boot()) {
 		read_prod_info(&prod);
 		snprintf((char *)buf, PRODINFO_MAX_SSN_LEN + 1, "%s", prod.ssn);
