[Feature] merge MR3.0 because some files are missed
Change-Id: If3617f3442c7d439fde33aa66a4f769c39788b9b
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