diff --git a/src/bsp/lk/platform/mt2735/drivers/auxadc/plat_auxadc.c b/src/bsp/lk/platform/mt2735/drivers/auxadc/plat_auxadc.c
new file mode 100644
index 0000000..3df3084
--- /dev/null
+++ b/src/bsp/lk/platform/mt2735/drivers/auxadc/plat_auxadc.c
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright (c) 2021 MediaTek Inc.
+ *
+ * Use of this source code is governed by a MIT-style
+ * license that can be found in the LICENSE file or at
+ * https://opensource.org/licenses/MIT
+ */
+#include <auxadc.h>
+#include <debug.h>
+#include <platform/sec_devinfo.h>
+#include <stdlib.h>
+
+#define ADC_OE_A_SHIFT      0
+#define ADC_OE_A_MASK       (0x3ff << ADC_OE_A_SHIFT)
+#define ADC_GE_A_SHIFT      10
+#define ADC_GE_A_MASK       (0x3ff << ADC_GE_A_SHIFT)
+#define ADC_CALI_EN_A_SHIFT 20
+#define ADC_CALI_EN_A_MASK  (0x1 << ADC_CALI_EN_A_SHIFT)
+
+struct auxadc_platform_info_t {
+    uint32_t                            is_init;
+    enum auxadc_platform_info_flag_t    flags;
+    uint32_t                            cali_data;
+    uint32_t                            cali_ge_a;
+    uint32_t                            cali_oe_a;
+    int32_t                             cali_ge;
+    int32_t                             cali_oe;
+};
+
+struct auxadc_platform_info_t auxadc_platform_info = {0};
+
+void auxadc_get_platform_data(void)
+{
+    uint32_t cali_data;
+    uint32_t cali_ge_a = 0, cali_oe_a = 0;
+    int32_t cali_ge, cali_oe;
+
+    if (auxadc_platform_info.is_init)
+        return;
+
+    cali_data = get_devinfo_with_index(62);
+
+    if (((cali_data & ADC_CALI_EN_A_MASK) >> ADC_CALI_EN_A_SHIFT) != 0) {
+        cali_oe_a = (cali_data & ADC_OE_A_MASK) >> ADC_OE_A_SHIFT;
+        cali_ge_a = ((cali_data & ADC_GE_A_MASK) >> ADC_GE_A_SHIFT);
+        cali_ge = cali_ge_a - 512;
+        cali_oe = cali_oe_a - 512;
+        dprintf(INFO, "[AUXADC]: cali_ge = 0x%x, cali_oe = 0x%x\n",
+            cali_ge, cali_oe);
+    } else {
+        cali_oe = 0;
+        cali_ge = 0;
+        dprintf(INFO, "[AUXADC]: No efuse data\n");
+    }
+
+    auxadc_platform_info.is_init = 1;
+    auxadc_platform_info.flags |= AUXADC_CALI_EN;
+
+    auxadc_platform_info.cali_data = cali_data;
+    auxadc_platform_info.cali_ge_a = cali_ge_a;
+    auxadc_platform_info.cali_oe_a = cali_oe_a;
+    auxadc_platform_info.cali_ge = cali_ge;
+    auxadc_platform_info.cali_oe = cali_oe;
+}
+
+enum auxadc_platform_info_flag_t auxadc_get_platform_flag(void)
+{
+    auxadc_get_platform_data();
+    return auxadc_platform_info.flags;
+}
+
+int32_t auxadc_get_platform_cali(int32_t *cali_ge, int32_t *cali_oe)
+{
+    if ((!cali_ge) || (!cali_ge))
+        return -1;
+
+    auxadc_get_platform_data();
+    *cali_ge = auxadc_platform_info.cali_ge;
+    *cali_oe = auxadc_platform_info.cali_oe;
+
+    return 0;
+
+}
diff --git a/src/bsp/lk/platform/mt2735/drivers/auxadc/rules.mk b/src/bsp/lk/platform/mt2735/drivers/auxadc/rules.mk
new file mode 100644
index 0000000..e9511a6
--- /dev/null
+++ b/src/bsp/lk/platform/mt2735/drivers/auxadc/rules.mk
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: MIT
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+MODULE := $(LOCAL_DIR)
+
+MODULE_SRCS += $(LOCAL_DIR)/plat_auxadc.c
+
+$(info [PH] log on platform mk)
+
+MODULE_DEPS += \
+	platform/mediatek/common/drivers/auxadc
+
+include make/module.mk
+
diff --git a/src/bsp/lk/platform/mt2735/drivers/clkbuf/clkbuf_ctl.c b/src/bsp/lk/platform/mt2735/drivers/clkbuf/clkbuf_ctl.c
index df3cd89..7058a94 100644
--- a/src/bsp/lk/platform/mt2735/drivers/clkbuf/clkbuf_ctl.c
+++ b/src/bsp/lk/platform/mt2735/drivers/clkbuf/clkbuf_ctl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: MIT
 /*
  * Copyright (c) 2019 MediaTek Inc.
  *
@@ -80,6 +81,7 @@
 #else
 #define PMIC_CW00_INIT_VAL			0x1D /* 0001 1101 */
 #define PMIC_CW00_H_INIT_VAL			0x4E /* 0100 1110 */
+#define PMIC_CW00_H_INIT_VAL_TCXO		0x4C /* 0100 1100 */
 #define PMIC_CW09_INIT_VAL			0xF0 /* 1111 0000 */
 #define PMIC_CW09_H_INIT_VAL			0x51 /* 0101 0001 */
 #endif
@@ -309,8 +311,13 @@
 
 	pmic_config_interface(PMIC_XO_EXTBUF1_MODE_ADDR, PMIC_CW00_INIT_VAL,
 				PMIC_REG_MASK, PMIC_REG_SHIFT);
+#ifdef ENABLE_TCXO //tcxo
+	pmic_config_interface(PMIC_XO_EXTBUF3_EN_M_ADDR, PMIC_CW00_H_INIT_VAL_TCXO,
+				PMIC_REG_MASK, PMIC_REG_SHIFT);
+#else //normal case
 	pmic_config_interface(PMIC_XO_EXTBUF3_EN_M_ADDR, PMIC_CW00_H_INIT_VAL,
 				PMIC_REG_MASK, PMIC_REG_SHIFT);
+#endif
 	pmic_config_interface(PMIC_XO_EXTBUF7_MODE_ADDR, PMIC_CW09_H_INIT_VAL,
 				PMIC_REG_MASK, PMIC_REG_SHIFT);
 
@@ -404,6 +411,17 @@
 				PMIC_TMA_KEY_H_MASK, PMIC_TMA_KEY_H_SHIFT);
 
 	/* disable clock buffer by DCT setting */
+
+#ifdef ENABLE_TCXO  //tcxo
+	pmic_config_interface(PMIC_DCXO_CW00_CLR_ADDR,
+				      PMIC_XO_EXTBUF2_MODE_MASK,
+				      PMIC_XO_EXTBUF2_MODE_MASK,
+				      PMIC_XO_EXTBUF2_MODE_SHIFT);
+	pmic_config_interface(PMIC_DCXO_CW00_CLR_ADDR,
+				      PMIC_XO_EXTBUF2_EN_M_MASK,
+				      PMIC_XO_EXTBUF2_EN_M_MASK,
+				      PMIC_XO_EXTBUF2_EN_M_SHIFT);
+#else //normal case
 	if (CLK_BUF2_STATUS_PMIC == CLOCK_BUFFER_DISABLE) {
 		pmic_config_interface(PMIC_DCXO_CW00_CLR_ADDR,
 				      PMIC_XO_EXTBUF2_MODE_MASK,
@@ -414,6 +432,7 @@
 				      PMIC_XO_EXTBUF2_EN_M_MASK,
 				      PMIC_XO_EXTBUF2_EN_M_SHIFT);
 	}
+#endif
 
 	if (CLK_BUF3_STATUS_PMIC == CLOCK_BUFFER_DISABLE) {
 		pmic_config_interface(PMIC_DCXO_CW00_CLR_ADDR,
diff --git a/src/bsp/lk/platform/mt2735/drivers/rules.mk b/src/bsp/lk/platform/mt2735/drivers/rules.mk
index adbdbb7..b1bf5cb 100644
--- a/src/bsp/lk/platform/mt2735/drivers/rules.mk
+++ b/src/bsp/lk/platform/mt2735/drivers/rules.mk
@@ -120,5 +120,7 @@
 	$(LOCAL_DIR)/sspm/sspm_expdb.c
 endif
 
+MODULE_DEPS += $(LOCAL_DIR)/auxadc
+
 include make/module.mk
 include $(LOCAL_DIR)/audio/rules.mk
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
index d5286da..8190779 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-mt6330.c
@@ -828,7 +828,8 @@
 	return err;
 }
 
-static int mtk_rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
+static int mtk_rtc_ioctl(struct device *dev,
+	unsigned int cmd, unsigned long arg)
 {
 	void __user *uarg = (void __user *) arg;
 	int err = 0;
diff --git a/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c b/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
index a1dc393..fa36f45 100644
--- a/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
+++ b/src/kernel/linux/v4.19/drivers/rtc/rtc-sysfs.c
@@ -280,9 +280,9 @@
 	retval = kstrtos64(buf_ptr, 0, &alarm);
 	if (retval)
 		return retval;
-	if (adjust) {
+	if (adjust)
 		alarm += now;
-	}
+
 	if (alarm > now || push) {
 		/* Avoid accidentally clobbering active alarms; we can't
 		 * entirely prevent that here, without even the minimal
