I.MX6 bq27441 GPOUT interrupt

简介: /******************************************************************** * I.MX6 bq27441 GPOUT interrupt * 说明: * 由于目前的bq27441驱动中没有GPOUT中断驱动,所以需要另外加上,其 * 中有参考TI的驱动,但是内核版本不一致,所以处理方式也不一致。
/********************************************************************
 *                  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);
        ......
    }

 

目录
相关文章
|
3天前
|
Android开发 开发者 Windows
这是我设计的一种不关机,然后改造操作系统的软件设计思路2.0版本
本文介绍了在不重启系统的情况下实现操作系统改造的两种方案。第一种方案通过SLFM Recovery模式,在独立于操作系统的最高权限环境下完成系统更新与改造,并支持断电恢复与失败回滚。第二种方案采用多分区机制,通过SLFM套件在独立分区中完成系统改造,适用于可中断与不可中断服务场景,确保系统更新过程的安全与稳定。
218 132
|
10天前
|
人工智能 算法 测试技术
轻量高效,8B 性能强劲书生科学多模态模型Intern-S1-mini开源
继 7 月 26 日开源『书生』科学多模态大模型 Intern-S1 之后,上海人工智能实验室(上海AI实验室)在8月23日推出了轻量化版本 Intern-S1-mini。
349 51
|
20天前
|
人工智能 JavaScript 前端开发
实战使用 Qwen3-coder 低代码开发 HTML 个人网站
阿里巴巴开源的Qwen3-coder模型,凭借强大性能和低代码能力,助力用户快速搭建个人网站。本文详解环境配置、提示词设计与部署流程,适合编程新手快速上手,掌握AI辅助开发技能。
1350 8