RK Android7.1 使用POWER按键才能开机
KrisFei [RK3399][Android7.1] Uboot启动过程小结
在board_fbt_preboot中 检测power键的状态
u-boot\board\rockchip\common\rkloader\key.c
__maybe_unused static key_config key_rockusb;
__maybe_unused static key_config key_recovery;
__maybe_unused static key_config key_fastboot;
__maybe_unused static key_config key_power;
开机就循环 检测key_power
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | diff --git a/u-boot/board/rockchip/common/rkboot/fastboot.c b/u-boot/board/rockchip/common/rkboot/fastboot.c index ce6a0a1..5c07172 100755 --- a/u-boot/board/rockchip/common/rkboot/fastboot.c +++ b/u-boot/board/rockchip/common/rkboot/fastboot.c @@ - 429 , 6 + 429 , 12 @@ static void board_fbt_low_power_off( void ) } #endif /* CONFIG_RK_POWER */ +#define POWER_ON_KEY_DECT_BOOT + +#ifdef POWER_ON_KEY_DECT_BOOT +extern void PowerOnKeyDectBoot( void ); +#endif + bool board_fbt_exit_uboot_charge( void ) { int ret; @@ - 459 , 6 + 465 , 7 @@ bool board_fbt_exit_uboot_charge( void ) return false ; } + /* * Determine if we should enter fastboot mode based on board specific * key press or parameter left in memory from previous boot. @@ -470,6 +477,7 @@ bool board_fbt_exit_uboot_charge(void) void board_fbt_preboot(void) { enum fbt_reboot_type frt; + int frt2 = 0; __maybe_unused bool charge_enable = false; #ifdef CONFIG_UBOOT_CHARGE int charge_node; /*device node*/ @@ - 483 , 6 + 491 , 7 @@ void board_fbt_preboot( void ) #endif frt = board_fbt_get_reboot_type(); + frt2 = frt; /* cold boot */ if (frt == FASTBOOT_REBOOT_UNKNOWN) charge_enable = true ; @@ - 498 , 6 + 507 , 15 @@ void board_fbt_preboot( void ) board_fbt_set_reboot_type(FASTBOOT_REBOOT_NORMAL); } +printf( "board_fbt_preboot:%d\n" ,frt); + + if (frt2 == FASTBOOT_REBOOT_UNKNOWN) + { + #ifdef POWER_ON_KEY_DECT_BOOT + PowerOnKeyDectBoot(); + #endif + } + #ifdef CONFIG_RK_POWER board_fbt_low_power_check(); #endif diff --git a/u-boot/board/rockchip/common/rkloader/key.c b/u-boot/board/rockchip/common/rkloader/key.c index 3dcb758..0a14c0b 100755 --- a/u-boot/board/rockchip/common/rkloader/key.c +++ b/u-boot/board/rockchip/common/rkloader/key.c @@ - 163 , 6 + 163 , 17 @@ __maybe_unused static void FastbootKeyInit( void ) key_fastboot.key.adc.ctrl = SARADC_BASE + 8 ; } + void PowerOnKeyDectBoot( void ) +{ + int state= 1 ; + + while ( 1 ) + { + state = gpio_get_value(key_power.key.ioint.gpio); + if (state == 0 ) + break ; + } +} __maybe_unused static void PowerKeyInit( void ) { |
分类:
RockChip
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2020-08-26 RK:系统手势监听