假设你要设置pmu(axp209)  的gpio3来唤醒系统。
1、修改linux-3.0/drivers/power/axp_power_axp-sply.h,这个文件里面定义了一个AXP20_NOTIFIER_ON这个变量,我们要加上跟GPIO3相关的内容上去:

const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
AXP20_IRQ_USBIN |
        AXP20_IRQ_USBRE |
      //AXP20_IRQ_USBLO |
      //AXP20_IRQ_ACOV |
      AXP20_IRQ_ACIN |
      AXP20_IRQ_ACRE |
      //AXP20_IRQ_TEMOV |
      //AXP20_IRQ_TEMLO |
      AXP20_IRQ_BATIN |
      AXP20_IRQ_BATRE |
      //AXP20_IRQ_PEKLO |
      //AXP20_IRQ_PEKSH |
      AXP20_IRQ_CHAST |
      AXP20_IRQ_PEKFE |
      AXP20_IRQ_CHAOV |
      AXP20_IRQ_GPIO3TG | //add by laotie121022 这个是我新添加i的
      AXP20_IRQ_PEKRE ;
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
AXP20_IRQ_USBIN |
        AXP20_IRQ_USBRE |
      //AXP20_IRQ_USBLO |
      //AXP20_IRQ_ACOV |
      AXP20_IRQ_ACIN |
      AXP20_IRQ_ACRE |
      //AXP20_IRQ_TEMOV |
      //AXP20_IRQ_TEMLO |
      AXP20_IRQ_BATIN |
      AXP20_IRQ_BATRE |
      //AXP20_IRQ_PEKLO |
      //AXP20_IRQ_PEKSH |
      AXP20_IRQ_CHAST |
      AXP20_IRQ_PEKFE |
      AXP20_IRQ_CHAOV |
      AXP20_IRQ_GPIO3TG | //add by laotie121022 这个是我新添加i的
      AXP20_IRQ_PEKRE ;
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
AXP20_IRQ_USBIN |
        AXP20_IRQ_USBRE |
      //AXP20_IRQ_USBLO |
      //AXP20_IRQ_ACOV |
      AXP20_IRQ_ACIN |
      AXP20_IRQ_ACRE |
      //AXP20_IRQ_TEMOV |
      //AXP20_IRQ_TEMLO |
      AXP20_IRQ_BATIN |
      AXP20_IRQ_BATRE |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
AXP20_IRQ_USBIN |
        AXP20_IRQ_USBRE |
      //AXP20_IRQ_USBLO |
      //AXP20_IRQ_ACOV |
      AXP20_IRQ_ACIN |
      AXP20_IRQ_ACRE |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |
const uint64_t AXP20_NOTIFIER_ON =
//AXP20_IRQ_USBOV |

const uint64_t AXP20_NOTIFIER_ON =
AXP20_IRQ_USBIN |
AXP20_IRQ_USBRE |
AXP20_IRQ_ACIN |
AXP20_IRQ_ACRE |
AXP20_IRQ_BATIN |
AXP20_IRQ_BATRE |
AXP20_IRQ_CHAST |
AXP20_IRQ_PEKFE |
AXP20_IRQ_CHAOV |
AXP20_IRQ_GPIO3TG |    //这个就是我们添加的
AXP20_IRQ_PEKRE ;

2、修改axp20-sply-cou.c(如果你使用ocv驱动就是axp20-sply.c)

static int axp_battery_event(struct notifier_block *nb, unsigned long event,void*data){
}
if((bool)data==0){
}
else{
//add by laotie121022 <<<
if((event) & AXP20_IRQ_GPIO3TG>>32) { //如果是这个时间,需要模拟一个powe键
axp_keydown(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
//add end >>>
}

static int axp_battery_event(struct notifier_block *nb, unsigned long event,void*data){
if((bool)data==0){
   其他代码省略
}else{

//add by laotie121022 <<<
if((event) & AXP20_IRQ_GPIO3TG>>32) { //如果是这个时间,需要模拟一个powe键
axp_keydown(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
//add end >>>
}
//add by laotie121022 <<<
if((event) & AXP20_IRQ_GPIO3TG>>32) { //这些是要添加的代码
axp_keydown(charger);
}

if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}

if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
}

在axp_earlysuspend加入:

在axp_earlysuspend的最后加入一些代码:

static void axp_earlysuspend(struct early_suspend *h)
{

static void axp_earlysuspend(struct early_suspend *h)
{
其他代码省略
axp_read(axp_charger->master,0x44, &tmp);
tmp |= 0x08;//GPIO3 中断使能
axp_write(axp_charger->master,0x44, tmp);
axp_set_bits(axp_charger->master,0x95,0x44);//95H 设置GPIO3为wakeup功能
}

在axp_lateresume的最后加入一些代码:
static void axp_lateresume(struct early_suspend *h)
{
其他代码省略
axp_read(axp_charger->master,0x44, &tmp);
tmp &= ~0x08;
axp_write(axp_charger->master,0x44, tmp);
axp_clr_bits(axp_charger->master,0x95,0x44);

}

3、修改axp-mfd.h

把#define AXP20_IRQ_GPIO3TG     ( 1 << 35)
改为
#define AXP20_IRQ_GPIO3TG     ( (uint64_t)1 << 35)

如何设置通过PMU的gpio来唤醒系统相关推荐

  1. EFM32片内外设--GPIO EM4唤醒

    EFM32的EM3虽然功耗很低,0.6uA,但是在一些场合仍然显得浪费,特别是那种一次性消费的电池供电产品,客户的想法仍然是越低越好,最好是不耗电.所以,很多时候,就只能让MCU进入EM4状态. 当E ...

  2. 关于89 jb2上的自动设置按键唤醒系统的功能以及L版本上设置唤醒键

    [Description] 目前89 jb2版本上是默认实现打电话状态下实现按键唤醒系统的功能的,这样可以满足电话过程中的音量键有效等需求, 但是这套机制同时限制了一般状态下的按键唤醒系统的实现,因此 ...

  3. Android设置唤醒键唤醒系统的功能

    [FAQ05859][keypad]关于89 jb2上的自动设置按键唤醒系统的功能以及L版本上设置唤醒键 [Description] 目前89 jb2版本上是默认实现打电话状态下实现按键唤醒系统的功能 ...

  4. CM3计算板RTC闹钟唤醒系统

    1.前言 一个周期性控制系统的核心为CM3计算板,在电池供电情况下要求尽可能提高使用时长.由于系统空闲时长较多,因此在考虑低功耗的情况下将系统关机以进一步降低功耗.需要注意的是,系统关机后需要在指定时 ...

  5. alarm唤醒系统过程分析

    Android的aralm可以唤醒系统,先看ararm调用过程 http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/java/andro ...

  6. win7如何设置通电自动开机_如何通过BIOS设置电脑接通电源就自动启动进入系统...

    ‍ 在电脑的BIOS中可以进行很多功能的设置,如果想要将电脑设置为接通电源就自动启动并进入系统的话,就需要进入BIOS界面来进行设置.那么,具体应该如何操作才能实现接通电源电脑自动启动呢?大家可以按照 ...

  7. 命令唤醒计算机,Win10技巧:唤醒系统设备和任务查看命令大全

    出于节能的考虑,电脑一般都开启了电源管理,这会让设备在闲置一段时间后进入睡眠状态,或者让某些设备进入待机,例如显示器和硬盘等.广义上说,开机本身也是唤醒设备,只不过唤醒之前设备休息的比较踏实.要想让电 ...

  8. 命令唤醒计算机,电脑Win10怎么使用命令查看唤醒系统设备和任务的软件的方法...

    通常出于节能的考虑,电脑一般都开启了电源管理,这会让设备在闲置一段时间后进入睡眠状态,或者让某些设备进入待机,例如显示器和硬盘等.广义上说,开机本身也是唤醒设备,只不过唤醒之前设备休息的比较踏实.下面 ...

  9. 公司计算机d盘怎么设置共享,大神教您win7系统共享D盘的解决教程

    随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统共享D盘进行设置,如果我们需要对win7系统共享D盘进行设置时,要怎么处理win7系统共享D盘的设置方法非常简单,只需要 1.在win7纯净 ...

最新文章

  1. 致青春VS杜蕾斯,用QQ空间电影大数据解读关联性
  2. 【Matlab 控制】求左右特征向量
  3. sentinel里的双检锁
  4. 消费流程图_SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)
  5. Angular.js 页面里的按钮点击事件处理
  6. 使用html5+的plus清除缓存的文件
  7. XShell技巧收集
  8. 思杰技术的论坛网址(转)
  9. Oracle体系结构三(学习笔记)
  10. Magic Odd Square 思维
  11. java---servlet与filter的联系与区别
  12. 「SAP技术」SAP MM 启用了MPN物料管理的物料,物料主数据与源清单数据有啥不同?
  13. matlab浮点转定点的函数,FPGA基础知识17(Matlab中滤波器的定点化 浮点运算转换为定点运算)...
  14. 英汉词典 JaVa_一个Java编写的英汉词典
  15. Vuforia入门之简单图片识别案例(一)
  16. 杂谈|数据分析虽火但并不适合每一个人!浅谈如何利用自身优势转行数据分析
  17. Vue学习笔记02——Vue路由
  18. 根据url读取html文件
  19. #ASM 翻译系列第二十五弹:ASM 高级知识 When will my rebalance complete
  20. codeblocks的下载、安装与创建

热门文章

  1. 用P、V操作解决进程同步问题的解题步骤
  2. 对视频文件进行简单的加密
  3. 【贪心】Songs Compression
  4. 511遇见易语言逍遥模拟器模块封装调用示范
  5. ever 逾期_4ever的完整形式是什么?
  6. 什么是长尾关键词?长尾关键词优化方法和技巧
  7. 分享几个实用的神器APP系列(三)
  8. 什么是做空 什么是做空期权波动率?
  9. java+vue实现onlyoffice协同办公
  10. Rounded Numbers