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);
        ......
    }

 

目录
相关文章
|
4天前
|
Android开发
Android JNI 报错(signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr )
Android JNI 报错(signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr )
70 1
|
Linux
handle_level_irq 与handle_edge_irq 的区别【转】
转自:http://blog.csdn.net/xavierxiao/article/details/6087277 版权声明:本文为博主原创文章,未经博主允许不得转载。 Linux 里, handle_level_irq  *    Level type interrupts a...
1094 0
|
Linux 芯片
I.MX6 Busybox watchdog
/************************************************************************* * I.MX6 Busybox watchdog * 说明: * 使用Busybox watchdog设置-t 60参数,结果会自动重启,不知道为什么, * 去看了一下源代码,重新理解了一下-T、-t参数的意思才知道仅仅设置-t参数, * 那么就不能大于等于60。
1598 0
I.MX6 KEY_ROW4 can&#39;t as GPIO pin
/********************************************************************** * I.MX6 KEY_ROW4 can't as GPIO pin * 说明: * Tony遇到KEY_ROW4作为GPIO口时无法设置高、低电平问题,后来通过在 * 相关patch中找到方法,很特殊。
788 0
I.MX6 PLL5 clock hakcing
/************************************************************************** * I.MX6 PLL5 clock hakcing * 说明: * 由于需要调整I.MX6的PLL5工作clock,所以需要了解I.MX6的PLL5 clock设置 * 细节。
1197 0
I.MX6 AW-NB177NF wifi reset
/*********************************************************************** * I.MX6 AW-NB177NF wifi reset * 说明: * 发现AW-NB177NF要两次上电才有效,第一次上电无效,第二次上电才能生成 * 对应的wlan0、p2p0设备,最后发现是因为上电后没有进行reset操作,本来尝试 * 通过chip enable去操作,发现还是不行,最后通过sdio reset来进行reset才 * 解决。
658 0
|
Android开发
I.MX6 AW-NB177NF p2p support
/***************************************************************************** *           I.MX6 AW-NB177NF p2p support * 说明: * 由于之前调试的过程中一直不能生成p2p的设备,所以无法进行Android层的调试。
1053 0
|
Linux
I.MX6 driver goto 使用
/************************************************************************** * I.MX6 driver goto 使用 * 说明: * 在绝大多数地方,我们都被告诉尽可能不要用goto,甚至都没学过goto,但 * 这种语法却在内核驱动中普遍使用。
913 0
I.MX6 wm8962 0-001a: DC servo timed out
/******************************************************************************* * I.MX6 wm8962 0-001a: DC servo timed out * 说明: * 本文主要记录修复I.MX6 中的wm8962 DC servo timed out内核报错。
1366 0