mtk上电开机记录

1.preloader

a.vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/k65v1_64_bsp/inc/cust_rtc.h

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/k65v1_64_bsp/inc/cust_rtc.h
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/k65v1_64_bsp/inc/cust_rtc.h
@@ -45,6 +45,6 @@
 #define RTC_DEFAULT_YEA                2010
 #define RTC_DEFAULT_MTH                1
 #define RTC_DEFAULT_DOM                1
-#define RTC_2SEC_REBOOT_ENABLE  1
+#define RTC_2SEC_REBOOT_ENABLE  0
 #define RTC_2SEC_MODE          2
 #endif /* __CUST_RTC_H__ */

b.vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/default.mak

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/default.mak
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/default.mak
@@ -104,8 +104,8 @@ CFG_STACK_USAGE_CHECK :=1

 CFG_WORLD_PHONE_SUPPORT :=1

-ONEKEY_REBOOT_NORMAL_MODE_PL :=1
-KPD_PMIC_LPRST_TD :=1
+#ONEKEY_REBOOT_NORMAL_MODE_PL :=1
+KPD_PMIC_LPRST_TD :=0

 CFG_USB_AUTO_DETECT :=0
 CFG_USB_AUTO_DETECT_TIMEOUT_MS :=1000*3

c.vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/platform.c

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/platform.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/platform.c
@@ -1776,7 +1776,7 @@ void platform_error_handler(void)
     pal_log_info("PL delay for Long Press Reboot\n");
     for ( i=3; i > 0;i-- ) {
         if (mtk_detect_key(PL_PMIC_PWR_KEY)) {
-            platform_wdt_kick();
+            //platform_wdt_kick();
             mdelay(5000);   //delay 5s/per kick,
         } else {
             break; //Power Key Release,

d.vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/pmic.c

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/pmic.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/pmic.c
@@ -230,31 +230,16 @@ U32 upmu_is_chr_det(void)
 #endif
        return val;
 }

+#define KPD_PMIC_LPRST_TD 0
 void PMIC_enable_long_press_reboot(void)
 {
-#if !CFG_FPGA_PLATFORM
-#if !CFG_EVB_PLATFORM
-#if KPD_PMIC_LPRST_TD!=0
-       #if ONEKEY_REBOOT_NORMAL_MODE_PL
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_EN_ADDR, 0x01, PMIC_RG_PWRKEY_RST_EN_MASK, PMIC_RG_PWRKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_HOMEKEY_RST_EN_ADDR, 0x00, PMIC_RG_HOMEKEY_RST_EN_MASK, PMIC_RG_HOMEKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_TD_ADDR, (U32)KPD_PMIC_LPRST_TD,
-               PMIC_RG_PWRKEY_RST_TD_MASK, PMIC_RG_PWRKEY_RST_TD_SHIFT);
-       #else
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_EN_ADDR, 0x01, PMIC_RG_PWRKEY_RST_EN_MASK, PMIC_RG_PWRKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_HOMEKEY_RST_EN_ADDR, 0x01, PMIC_RG_HOMEKEY_RST_EN_MASK, PMIC_RG_HOMEKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_TD_ADDR, (U32)KPD_PMIC_LPRST_TD, PMIC_RG_PWRKEY_RST_TD_MASK, PMIC_RG_PWRKEY_RST_TD_SHIFT
-       #endif
-#else
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_EN_ADDR, 0x00, PMIC_RG_PWRKEY_RST_EN_MASK, PMIC_RG_PWRKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_HOMEKEY_RST_EN_ADDR, 0x00, PMIC_RG_HOMEKEY_RST_EN_MASK, PMIC_RG_HOMEKEY_RST_EN_SHIFT);
-#endif
-#endif
-#else
-       pmic_config_interface(PMIC_RG_PWRKEY_RST_EN_ADDR, 0x00, PMIC_RG_PWRKEY_RST_EN_MASK, PMIC_RG_PWRKEY_RST_EN_SHIFT);
-       pmic_config_interface(PMIC_RG_HOMEKEY_RST_EN_ADDR, 0x00, PMIC_RG_HOMEKEY_RST_EN_MASK, PMIC_RG_HOMEKEY_RST_EN_SHIFT);
-#endif
+    //disable long press reboot mbling 2024.09.06
+    pmic_config_interface(PMIC_RG_PWRKEY_RST_EN_ADDR, 0x00, PMIC_RG_PWRKEY_RST_EN_MASK, PMIC_RG_PWRKEY_RST_EN_SHIFT);
+    pmic_config_interface(PMIC_RG_HOMEKEY_RST_EN_ADDR, 0x00, PMIC_RG_HOMEKEY_RST_EN_MASK, PMIC_RG_HOMEKEY_RST_EN_SHIFT);
+    //pmic_config_interface(PMIC_RG_PWRKEY_RST_TD_ADDR, 0x00, PMIC_RG_PWRKEY_RST_TD_MASK, PMIC_RG_PWRKEY_RST_TD_SHIFT);
 }

 U32 PMIC_VUSB_EN(void)

e.vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/mt6370.c(有mt6370就需要修改)

--- a/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/mt6370.c
+++ b/vendor/mediatek/proprietary/bootable/bootloader/preloader/platform/mt6765/src/drivers/mt6370.c
@@ -188,6 +188,9 @@ static int mtk_ext_chgdet_pre_init(void)
        /* MT6372 end */

        Charger_Detect_Init();

+       mt6370_set_bit(0x2A,0x80);

        /* Toggle chgdet flow */
        ret = mt6370_enable_chgdet_flow(false);

2.kernel

a:走kernel-4.19/drivers/input/keyboardmtk-pmic-keys.c方式的就修改如下:

--- a/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsi
+++ b/kernel-4.19/arch/arm64/boot/dts/mediatek/mt6357.dtsi
@@ -30,7 +30,7 @@

        mt6357keys: mt6357keys {
                compatible = "mediatek,mt6357-keys";
-               mediatek,long-press-mode = <1>;
+               mediatek,long-press-mode = <0>;
                power-off-time-sec = <0>;

                power {

b:走alps/kernel-4.9/drivers/input/keyboard/mediatek/mt6765/hal_kpd.c这种方式的修改如下:

--- a/alps/kernel-4.9/drivers/input/keyboard/mediatek/mt6765/hal_kpd.c
+++ b/alps/kernel-4.9/drivers/input/keyboard/mediatek/mt6765/hal_kpd.c
@@ -22,7 +22,8 @@
 #include 
 
 #ifdef CONFIG_MTK_PMIC_NEW_ARCH
-static int kpd_enable_lprst = 1;
+//static int kpd_enable_lprst = 1;
+static int kpd_enable_lprst = 0;
 #endif
 static u16 kpd_keymap_state[KPD_NUM_MEMS] = {
        0xffff, 0xffff, 0xffff, 0xffff, 0x00ff
@@ -58,6 +59,13 @@ void kpd_get_keymap_state(u16 state[])
 
 void long_press_reboot_function_setting(void)
 {
+       //disable long press reboot why 2022.04.19
+       pmic_set_register_value(PMIC_RG_PWRKEY_RST_EN, 0x00);
+       pmic_set_register_value(PMIC_RG_HOMEKEY_RST_EN, 0x00);
+       //pmic_set_register_value(PMIC_RG_PWRKEY_RST_TD,0x00);
+       printk("whuiyuan -- disable long press reboot!\n");
+       return ;
+       
 #ifdef CONFIG_MTK_PMIC_NEW_ARCH /*for pmic not ready*/

c:有mt6370就修改如下:

--- a/kernel-4.19/drivers/misc/mediatek/pmic/mt6370/mt6370_pmu_charger.c
+++ b/kernel-4.19/drivers/misc/mediatek/pmic/mt6370/mt6370_pmu_charger.c
@@ -4764,6 +4764,22 @@ static int mt6370_pmu_charger_probe(struct platform_device *pdev)
                          mt6370_pmu_chg_mivr_dwork_handler);

        /* Do initial setting */
+
+    dev_err(chg_data->dev, "%s: start MT6370_PMU_REG_CHGPUMP\n", __func__);
+    ret = mt6370_pmu_reg_set_bit(chg_data->chip,MT6370_PMU_REG_CHGPUMP, 0xE0);
+    if (ret < 0) {
+        dev_err(chg_data->dev, "%s: sw init failed\n", __func__);
+        goto err_chg_init_setting;
+    }
+    ret = mt6370_pmu_reg_read(chg_data->chip,MT6370_PMU_REG_CHGPUMP);
+    if (ret < 0)
+        dev_err(chg_data->dev, "%s: read reg0x2A failed\n",__func__);
+    else
+        dev_err(chg_data->dev, "%s: reg0x2A = 0x%02X\n",__func__, ret);
+    dev_err(chg_data->dev, "%s: end MT6370_PMU_REG_CHGPUMP\n", __func__);
+
        ret = mt6370_chg_init_setting(chg_data);
        if (ret < 0) {
                dev_err(chg_data->dev, "%s: sw init failed\n", __func__);

你可能感兴趣的:(linux,驱动开发)