为MTK andorid系统添加adb reboot factory命令

news/2024/10/18 12:28:05/

    此添加方法,通过重启命令的参数修改RTC模块的的一个端口的一位寄存器,待重新启动后通过读取改为的值来选择进入normal模式还是factory模式。

(1)mediatek/platform/mt6582/kernel/core/include/mach/mt_rtc_hw.h文件修改:

 添加代码:

            #define RTC_PDN1_FACTORY            (1U<<5) //将RTC_PDN1口的第五位设置成命令标志位

(2)mediatek/kernel/kernel/system.c文件修改:

         在函数void arch_reset(char mode, const char *cmd)的定义内添加:

         if(cmd && !strcmp(cmd,"factory")){

          rtc_mark_factory();

          }                                       //cmd即adb reboot 后面的参数,当参数为factory时,通过rtc_mark_factory()修改命令标志位。

(3)mediatek/kernel/include/mach/mtk_rtc.h文件修改:

添加代码:

          extern void rtc_mark_factory(void);

(4)mediatek/kernel/drivers/rtc/mtk_rtc_common.c文件修改:

添加代码:

          vodi rtc_mark_factory(void)

          {       unsigned long flags:

                   spin_lock_irqsave(&rtc)lock,flags);

                   hal_rtc_mark_mode("fact");

                   spin_unlock_irqrestore(&rtc_lock,flags);

          }

(5)mediatek/platform/mt6582/kernel/drivers/rtc/mtk_rtc_hal.c文件修改:

 在函数 void hal_rtc_mark_mode(const char *cmd)的定义中添加:

            if(!strcmp(cmd,"fact")){

             pdn1 = rtc_read(RTC_PDN1) & (~RTC_PDN1_FACTROY);

             rtc_write(RTC_PDN1,pdn1 |  RTC_PDN1_FACTORY);

           }   //真正修改标志位,置RTC_PDN1_BIT5标志位为1

 

以上5步,是命令发出后,手机重启前进行相关操作所涉及的修改

(6)mediatek/platform/mt6582/lk/facotry.c文件修改:

  在函数 bool factory_detection(void)函数的定义中添加:

             #if  1

                     if(Check_RTC_PDN1_bit5())

                    {

                             dprintf(INFO,"[FACTORY] reboot to factory mode \n");

                             g_boot_mode = FACTORY_BOOT;

                             Set_Clr_RTC_PDN1_bit5(false);

                             return TRUE;

                      }

            #endif                 //  确认RTC_PDN1_bit5标志位,进入factory mode

(7)mediatek/platform/mt6582/lk/include/platform/mt_rtc.h文件修改:

添加代码:

  extern void Set_Clr_RTC_PDN1_bit5(bool flag);

 extern void bool Check_RTC_PDN1_bit5(void);

(8)mediatek/platform/mt6582/lk/mt_rtc.c文件修改:

添加代码:

           void Set_Clr_RTC_PDN1_bit5(bool flag)

{           U16 pdn1;

             rtc_writeif_unlock();

            //use PDN BIT 5 for LK

            pdn1 = RTC_Read(RTC_PDN1);

            if (flag == true)

                   pdn1 = pdn1 | RTC_PDN1_FACTORY;

           else if (flag == false)

                  pdn1 = pdn1 & ~RTC_PDN1_FACTORY;}

            RTC_Write(RTC_PDN1,pdn1);

           rtc_write_trigger();

}

 

bool Check_RTC_PDN1_bit5(void)

{

            U16 pdn1;

            pdn1 = RTC_Read(RTC_PDN1);

            if(pdn1 & RTC_PDN1_FACTORY)

                              return true;

            else

                              return false;

}

 (9)最后,修改/mediatek/config/$project$/ProjectConfig.mk

添加代码: MTK_USER_ROOT_SWITCH=yes   、//打开重启开关


http://www.ppmy.cn/news/394793.html

相关文章

按Volume Down进Factory Mode的修改:

按Volume Down进Factory Mode的修改&#xff1a; 将alps/mtk/src/custom/moba16_a10y/uboot/config/inc/moba16_a10y.h中 #define MT6516_FACTORY_KEY 0 改为19 即与 alps/mtk/src/custom/moba16_a10y/kernel/dct/dct/cust_kpd.h中KEY_VOLUMEDOWN键值一致即可

[FAQ07665][Camera Drv]摄像头工厂模式(factory Mode)测试失败或者预览画面不吐出动态图像

[DESCRIPTION] 1&#xff0c;进入factory mode之后&#xff0c;自动测试结果camera 部分fail&#xff1b; 2&#xff0c;进入factory mode之后&#xff0c;进入单项测试&#xff0c;预览画面图像固定&#xff0c;抓main log&#xff0c;发现CRC校验fail&#xff1b; 3&#xff…

关于Factory mode test item cannot display的原因

Factory mode test item cannot display 如果factory mode的测项不能正常显示&#xff0c;请首先参考检查以下原因&#xff1a; 原因一&#xff1a;factory.c的ftm_test_item[]中未定义该测项 请务必确定alps/mediatek/factory/src/factory.c中ftm_test_item[]数组中定义了该测…

Android 如何修改factory mode下FM的默认测试频点及阀值

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载&#xff0c;但请保留文章原始出处&#xff1a; CSDN&#xff1a;http://www.csdn.net 雨季o莫忧离&#xff1a;http://blog.csdn.net/luckkof 正文 Factory mode下测试FM会默认测试…

MTK 增加Factory模式命令

因为客户需要增加factory mode&#xff0c;而且只能用命令进入&#xff0c;而不让用户感知这个模式的存在&#xff0c;所以决定在系统中增加命令: reboot factory&#xff0c;从而进入factory mode 先看一下reboot命令是如何实现的。 我们在串口输入或者在cmd命令行输入 rebo…

关于简单的factorymode

工厂模式是设计模式里面最基础的&#xff0c;也是最经典的&#xff0c;同时也是最常用的一种模式。它的基本思想就是不管你是什么类型&#xff0c;是要你实现了某个接口&#xff0c;我会在工厂里面进行加工统一处理&#xff0c; 通过某个参数得到需要的实现类。下面给出一个简单…

1_1 FactoryMode 工厂模式

// 定义:定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类&#xff0c; // 工厂模式使得一个类的实例化延迟到了子类 // // 模式举例: // // 模式特点:该模式主要用途是类实例化的延迟&#xff0c;缺点是如果产品 // 过多对应的工厂也会过多&#…

android factorymode下回路测试无声音问题解析

一、 问题描述&#xff1a; 进入factory mode后在进行回路测试项时&#xff0c;第一次测试可以听到声音&#xff0c;但之后再进行测试时无法听到声音。 二、 factory回路测试项代码流程&#xff1a; 主要涉及代码为&#xff1a; mediatek/factory/sr…