I.MX6 bq27441 GPOUT interrupt

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

 

时间: 2024-07-30 21:59:53

I.MX6 bq27441 GPOUT interrupt的相关文章

I.MX6 bq27441 driver porting

/************************************************************************** * I.MX6 bq27441 driver porting * 声明: * 本文主要记录bq27441电池检测芯片驱动遇到的一些问题以及解决方法. * * 2016-1-28 深圳 南山平山村 曾剑锋 ************************************************************************

I.MX6 bq27441 driver hacking

/************************************************************************* * I.MX6 bq27441 driver hacking * 声明: * 本文主要是记录对电池计量芯片bq27441芯片驱动注册过程进行代码跟踪. * * 2016-2-19 深圳 南山平山村 曾剑锋 ************************************************************************

I.MX6 Linux I2C device&amp; driver hacking

/******************************************************************************************* * I.MX6 Linux I2C device& driver hacking * 声明: * 1. 本文主要是对Linux I2C驱动进行代码跟踪,主要是为了能够对I2C驱动框架有个全面的了解: * 2. 本文源代码来自myzr_android4_2_2_1_1_0.tar.bz2: * 3. 如果你有兴趣,

I.MX6 ar1020 SPI device driver hacking

/************************************************************************************ * I.MX6 ar1020 SPI device driver hacking * 声明: * 1. 本文主要是解读I.MX6中ar1020 SPI设备注册,以及驱动调用流程: * 2. 本文主要使用了vim+ctags进行代码跟踪,所以几乎都是函数原型之间的调用: * * 2015-9-5 晴 深圳 南山平山村 曾剑锋 *

I.MX6 gpio-keys driver hacking

/**************************************************************************** * I.MX6 gpio-keys driver hacking * 说明: * 1. 本文解读gpio-keys驱动是如何注册,最终处理函数在哪里. * 2. 从最后生成的设备节点来看,我们直接可以通过操作该设备节点来来让系统 * 进行相关操作,譬如关机.挂起等操作. * * 2016-3-17 深圳 南山平山村 曾剑锋 *********

I.MX6 AW-NB177NF WIFI 驱动移植问题

/******************************************************************************** * I.MX6 AW-NB177NF WIFI 驱动移植问题 * 说明: * 之前驱动移植,但看不到有wlan设备产生,于是感觉是wifi驱动出了问题,于是开始 * 分析厂家提供的wifi驱动,发现id对应的信息不对,经过与FAE确认之后并验证,确实是 * 这个问题导致的. * * 2016-6-20 深圳 南山平山村 曾剑锋 ***

I.MX6 Goodix GT9xx touchscreen driver porting

/************************************************************************ * I.MX6 Goodix GT9xx touchscreen driver porting * 声明: * 本文主要是记录GT9xx电容Touch移植过程中遇到的一些问题. * * 2016-1-27 深圳 南山平山村 曾剑锋 ************************************************************

Java多线程:“基础篇”09之interrupt()和线程终止方式

1. interrupt()说明 在介绍终止线程的方式之前,有必要先对interrupt()进行了解. 关于interrupt(),java的djk文档描述如下: http://docs.oracle.com/javase/7/docs/api/ Interrupts this thread. Unless the current thread is interrupting itself, which is always permitted, the checkAccess method of

u boot-fsl i.mx6烧写启动烧写的android系统时出现了初始化错误!

问题描述 fsl i.mx6烧写启动烧写的android系统时出现了初始化错误! U-Boot 2009.08 ( 3??? 05 2013 - 17:20:28) CPU: Freescale i.MX6 family TO1.2 at 792 MHz Temperature: 34 C, calibration data 0x5774e769 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg