共享中断 IRQF_SHARED 使用方法

 在board-8064.c中寻找
sis_i2c_info如下:

static struct i2c_board_info sis_i2c_info[] __initdata = {
    {
        I2C_BOARD_INFO(SIS_I2C_NAME, SIS_SLAVE_ADDR),
        .platform_data = &sis_pdata,
        .irq = MSM_GPIO_TO_INT(7),
    },
};

在这里 7 代 触发中断得偏移量 (通过MSM_GPIO_TO_INT计算偏移 ,不许要管)
 

static struct i2c_board_info __initdata enterprise_nuvoton_microp[] = {
        {
            I2C_BOARD_INFO("microp", 0x15),
            .irq=MSM_GPIO_TO_INT(7),
            .platform_data    = &nuvoton_microp_pdata,
        },
};


,两者得中断偏移一样, 中断触发时会同时触发两者得中断处理函数


这边说得  share IRQ 就是指在probe函数中 申请中断时得第四个参数为:IRQF_SHARED

IRQF_SHARED
 ret = request_irq(client->irq, microP_irq_handler,
                    IRQF_TRIGGER_FALLING | IRQF_SHARED , client->name, info);

  IRQF_SHARED 介绍为:

 第三个参数可以取IRQF_DISABLED、IRQF_SHARED和 IRQF_SAMPLE_RANDOM之一 
其中取 IRQF_SHARED,该标志表示多个设备共享一条IRQ线,因此相应的每个设备都需要各自的中断服务例程。

第四个参数是请求中断的设备的名称。

第五个参数为一个指针型变量。在IRQF_SHARED标志时使用,目 的是为即将要释放中断处理程序提供唯一标志。因为多个设备共享一条中断线,因此要释放某个中断处理程序时,必须通过此标志来唯一指定这个中断 处理程序。

要做到多个设备共享一条中断线需要多个设备用 的是同一个中断号(在设备信息中定义)


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值