如何设置通过PMU的gpio来唤醒系统
来源:互联网 发布:pon网络组网方式 编辑:程序博客网 时间:2024/05/17 05:56
假设你要设置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_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{
1、修改linux-3.0/drivers/power/axp_power_axp-sply.h,这个文件里面定义了一个AXP20_NOTIFIER_ON这个变量,我们要加上跟GPIO3相关的内容上去:
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{
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)
- 如何设置通过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设置
- 练习maya python API jointChain中文标注
- sqlserver SET....ON命令
- Android--App缓存管理
- starting of process of android
- WCF开发框架形成之旅---WCF的几种寄宿方式 (转帖)
- 如何设置通过PMU的gpio来唤醒系统
- 网络子系统13_邻居子系统状态机
- 贪吃蛇的大概实现过程!
- 高并发高可用的通信框架实践
- SQL所有存储过程查看
- centos使用phpmailer发送邮件失败的解决办法
- 工具推荐:texturePacker & physicseditor
- AndroidManifest.xml文件综合详解
- 大家好!