I.MX6 bq27441 GPOUT interrupt
2016-07-15 15:23
218 查看
/******************************************************************** * I.MX6 bq27441 GPOUT interrupt * 说明: * 由于目前的bq27441驱动中没有GPOUT中断驱动,所以需要另外加上,其 * 中有参考TI的驱动,但是内核版本不一致,所以处理方式也不一致。 * * 2016-7-15 深圳 南山平山村 曾剑锋 *******************************************************************/ 一、参考文档: a reasonable example of a work queue? http://www.spinics.net/lists/newbies/msg27303.html 二、修改drivers/power/bq27x00_battery.c ...... #include <linux/interrupt.h> #include <linux/gpio.h> #define SABRESD_UAUGE_PIN IMX_GPIO_NR(1, 29) ...... static void battery_irq(struct work_struct *unused); static DECLARE_DELAYED_WORK(battery_irq_work, battery_irq); struct bq27x00_device_info *battery_irq_work_di = NULL; static void battery_irq(struct work_struct *unused) { if (battery_irq_work_di != NULL) bq27x00_update(battery_irq_work_di); } static irqreturn_t bq27xxx_battery_irq_handler_thread(int irq, void *data) { struct bq27x00_device_info *di = data; battery_irq_work_di = di; schedule_delayed_work(&battery_irq_work, 0); return IRQ_HANDLED; } ...... static int __init bq27x00_battery_probe(struct i2c_client *client, const struct i2c_device_id *id) { ...... gpio_request(SABRESD_UAUGE_PIN, "sabresd_uauge_pin"); gpio_direction_input(SABRESD_UAUGE_PIN); unsigned int irq = gpio_to_irq(SABRESD_UAUGE_PIN); int ret = request_irq(irq, bq27xxx_battery_irq_handler_thread, IRQF_TRIGGER_RISING, "sabresd_uauge_pin", di); enable_irq_wake(irq); ...... }
相关文章推荐
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- MD5加密算法(16位,32位)的C#,VB的实现
- 22. Generate Parentheses
- RabbitMQ基础概念详细介绍
- java基本运算符
- [新手必读] 既然有了Swing, 那为什么还要SWT?
- 实现多个下拉框同一批option,选中其一其他框里去除选中的项(不可选择已选过的项)--js
- Java高并发漫谈
- 2.运算符
- android:descendantFocusability用法简析
- 关于hibernate中取消懒加载问题
- python【2】python3 的CSV数据规整化1
- Java-IO之CipherInputStream和CipherOutputStream
- Mybatis各种查询,一对一,一对多,嵌套
- OS 导出 ipa 包时 四个选项的意义
- 突出一个简单粗暴!Android Activity泄漏问题解决方案
- 关于Zabbix3版本发送微信报警配置
- iOS开发从入门到精通--UIView基础
- 用程序解密爱因斯坦经典难题(C++)
- android ndk开发之 android.mk