MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题

PMIC:MT6323

 

1.     侧按键硬件设计

我们设备左边侧按键定义为F7,连接到PMIC MT6323的FCHR_ENB引脚,右边1个电源按键直接接到PMIC的PWRKEY,右边的另一个按键(我们定义为F6)连接到CPU的KCOL0和KROW0引脚

 

2.     DrvGen配置codegen.dws文件

mediatek\dct\DrvGen.exe

mediatek\custom\itek82_wet_kk\kernel\dct\dct\codegen.dws

MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题_第1张图片

图1

实际上F7是连接到PMIC的FCHR_ENB,而这里的KEYPAD setting是属于CPU键盘矩阵的配置的,但如果这里不配置F7,那DownloadKey、Mode Key就不能选择F7,而且这里F7我们选择在Row7和Column2交叉处,对应的HW keycode=65,恰好就是KEY_F7对应的scan code值(linux驱动和内核用到)

 

上图配置好后选择“确定”,然后选择Gen Code,再选择Save,如下图:

MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题_第2张图片

图2

更新的文件有mediatek\custom\itek82_wet_kk\kernel\dct\dct\pmic_drv.h和cust_kpd.h。

 

然后编译

./mk r lk k

./mk bootimage

跟新lk.bin和boot.img即可。

 

3.     遇到的问题

3.1   无法进入recovery mode问题

更新后,开机同时按下power+F7无法进入recovery mode,而是normal mode,根据MTK_on_line_FAQ_SW_ALPS文档给出的方法,如下:

[FAQ11302][keypad]使用FCHR_ENB为VOLUMEDOWN

KEY,如何进工厂模式

[DESCRIPTION]

使用FCHR_ENB为VOLUMEDOWNKEY,如何进工厂模式

[SOLUTION]

(1)  在“mediatek\custom\$(Project_Name)\kernel\kpd\kpd\mtk_kpd.h” 內的下列定义

“#define KPD_PMIC_RSTKEY_MAPKEY_VOLUMEDOWN//客制化的按键”
“#define MT65XX_PMIC_RST_KEYKEY_VOLUMEDOWN//客制化的按键”

(2)  alps\mediatek\platform\mt65XX\lk\mtk_key.c

BOOL mtk_detect_key(unsigned short key) /*key: HW keycode */
{
unsigned short idx, bit, din;
// if (key >= KPD_NUM_KEYS)
// return FALSE;
if (key % 9 == 8)
key = 8;
……
}

我的修改如下:

(1)  mtk_kpd.h

#define KPD_PMIC_RSTKEY_MAP KEY_F7
#define MT65XX_PMIC_RST_KEY KEY_F7

(2)  如上面

 

但还是无法进入,下面先来看坚持启动模式的流程

MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题_第3张图片

图3

MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题_第4张图片

图4

虽然在mediatek\custom\itek82_wet_kk\kernel\kpd\kpd\mtk_kpd.h

#define KPD_PMIC_RSTKEY_MAP KEY_F7
#define MT65XX_PMIC_RST_KEY KEY_F7

但是经过验证

mtk_detect_key()的第112行是不知道定义了MT65XX_PMIC_RST_KEY的,我们看到mtk_key.c下有#include<target/cust_key.h>此文件位于mediatek\custom\itek82_wet_kk\lk\include\target目录下,恰好看到这里有注释掉MT65XX_PMIC_RST_KEY的定义,重新打开并修改为KEY_F7就可以了。

 

3.2   进入recovery mode只看到图标,没有看到显示的recovery菜单

 

[Description]

目前在JB2版本上,关机状态的手机按(PowerOn + Volume Up)键进入Recovery Mode时

,出现的画面是机器人倒地,不会直接显示主菜单。对于一些客户来说,机器人倒地意味着什么他

们并不清楚,导致无从下手。所以,就有了『直接显示主菜单』的需求。

[Solution]

待修改文件路径:alps/bootable/recovery/recovery.cpp

修改处:

main(){
.......
原来是:
if (status != INSTALL_SUCCESS ||ui->IsTextVisible()) {
prompt_and_wait(device, status);
}
改为:
if (status != INSTALL_SUCCESS &&!(ui->WasTextEverVisible()) || ui-
>IsTextVisible()) {
ui->ShowText(true); //Added
prompt_and_wait(device, status);
}
........
}
编译命令

./mk recoveryimage

然后更新recovery.img即可。

 

3.3   recovery mode后F6和F7无效问题

(1)  根据帮忙文档,查找到到相关的解决办法

 

[FAQ07808][keypad]进入recover模式后音量按键

功能失效

[DESCRIPTION]

在正常开机或者Factory mode下开机音量键是正常的,在使用LK作为boot loader,且打开LK_HAVE_TEXT_MENU宏后(默

认打开)时,Power key+Vol up后进入recovery模式会出现的多模式选择菜单:recoveryfactory normal

normal+ftrace等,

提示

Select Boot Mode:

[Volume_Up to select,Volume Down is OK.]

此时音量按键失效的问题。

[SOLUTION]

客制化修改mediatek\custom\$(project)\lk\include\target\cust_key.h

1.如果音量键是用的矩阵键盘:

根据DCT tool在矩阵键盘里设置的Vol+是rowX1,colY1;Vol-是rowX2,colY2.设定对应的HW scan code

example:

#define MT65xx_PMIC_RST_KEY 1000 //invalidkey
#define MT65XX_BOOT_MENU_KEY 0 //Vol+ (row0,col0时)//修改成您自己的row col
#define MT65XX_MENU_OK_KEY 1 //Vol- (row0,col1时)//修改成您自己的row col

2.如果音量键中有使用到了PMIC的homekey

example:vol-用PMIC homekey,vol+还是矩阵键盘里的

#define MT65xx_PMIC_RST_KEYMT65XX_FACTORY_KEY//或者具体的HW scan code
#define MT65XX_BOOT_MENU_KEY 0 //Vol+ (row0,col0)//修改成您自己的row col
#define MT65XX_MENU_OK_KEY MT65xx_PMIC_RST_KEY//Vol
 
修改前:
//#define MT65XX_PMIC_RST_KEY       11
#define MT65XX_MENU_OK_KEY         2 /* KEY_VOLUMEDOWN */
修改后:
#define MT65XX_PMIC_RST_KEY (KEY_F7)
#define MT65XX_MENU_OK_KEY         MT65XX_PMIC_RST_KEY /* KEY_VOLUMEDOWN*/
修改验证还是无效

(2)  mediatek\custom\itek82_wet_kk\recovery\inc\cust_keys.h

修改cust_keys.h文件

//修改之前
/*
#define RECOVERY_KEY_DOWN     KEY_VOLUMEDOWN
#define RECOVERY_KEY_UP       KEY_VOLUMEDOWN
#define RECOVERY_KEY_ENTER    KEY_VOLUMEUP
*/
//修改之后
#define RECOVERY_KEY_DOWN     KEY_F6
#define RECOVERY_KEY_UP       KEY_F7
#define RECOVERY_KEY_ENTER    KEY_POWER
#define RECOVERY_KEY_MENU     KEY_POWER
然后编译和更新

./mk r k

./mk recoveryimage

更新recovery.img就解决了此问题

 

3.4   进入recovery mode后power按键响应不正常问题

 

上面的问题解决了,但是按power按键要调用对应的功能时,本来是可以看到recovery菜单的,按一下power按键就隐藏起来,再按一下就重新显示,而不是执行对应的功能,

 

修改      mediatek\custom\itek82_wet_kk\recovery\inc\cust_keys.h解决了此问题

修改前
#define RECOVERY_KEY_MENU     KEY_POWER
修改后
#define RECOVERY_KEY_MENU     KEY_MENU//KEY_POWER

3.5   进入factory mode后F7按键问题

修改mediatek\custom\itek82_wet_kk\factory\inc\cust_keys.h

修改前:
#define CUST_KEY_UP             KEY_UP
修改后
#define CUST_KEY_UP             KEY_F7//KEY_UP

./mk mm mediate/factory

./mk snod这会生成生成system.img

更新system.img即可

 

 

你可能感兴趣的:(MTK6582+Android4.4.2之bootloader recovery 和factory mode等问题)