如何设置通过PMU的gpio来唤醒系统
来源:互联网 发布:ssh 命令行带端口号 编辑:程序博客网 时间:2024/05/21 17:17
原文出处:http://blog.csdn.net/tonywgx/article/details/12120913
假设你要设置pmu(axp209) 的gpio3来唤醒系统。
1、修改linux-3.0/drivers/power/axp_power_axp-sply.h,这个文件里面定义了一个AXP20_NOTIFIER_ON这个变量,我们要加上跟GPIO3相关的内容上去:
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{
if((event) & AXP20_IRQ_GPIO3TG>>32) { //这些是要添加的代码
axp_keydown(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
}
在axp_earlysuspend的最后加入一些代码:
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)
axp_keydown(charger);
}
if((event) & AXP20_IRQ_GPIO3TG>>32) {
axp_keyup(charger);
}
}
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)
0 0
- 如何设置通过PMU的gpio来唤醒系统
- 如何设置通过PMU的gpio来唤醒系统
- imx6系列--将一个gpio设置为可唤醒系统的外部中断流程
- 通过scheme来唤醒App
- linux系统中GPIO的设置
- 如何通过数字来判断linux系统分区的类型
- Android通过应用来设置系统时间
- 带唤醒功能GPIO上拉电阻供电对系统的影响
- 带唤醒功能GPIO上拉电阻供电对系统的影响
- 基于设备树的GPIO驱动(通过系统节点控制)
- 使用/sys/class/gpio对A31S的GPIO通过ADB进行设置
- 如何在QML应用中调用系统设置中的页面来设置我们的系统
- 如何记录并发现异常唤醒系统的中断源
- 关于89 jb2上的自动设置按键唤醒系统的功能以及L版本上设置唤醒键
- linux系统中如何通过程序来获知系统信息
- linux系统中如何通过程序来获知系统信息
- linux系统中如何通过程序来获知系统信息
- ARM的GPIO设置
- 黑马程序员-通讯录
- Kernel Density Estimation Toolbox for MATLAB---问题记录
- 英语学习
- NSRunloop的简单认识
- 我们该用i++还是i--来进行循环?
- 如何设置通过PMU的gpio来唤醒系统
- 政府采购电子办公系统总结-思路篇
- java多线程之阻塞队列BlockingQueue的简单应用
- spring mvc 数据绑定 400错误
- Class API
- 自适应网站开发
- Camshift算法原理及其Opencv实现
- struts的titles框架
- NSArray和NSMutableArray的相关总结