2022-06-15 Android Linux 触发中断时根据i2c设备的中断寄存器调用不同的处理函数,regmap_add_irq_chip、regmap_irq_get_virq等

本文详细介绍了如何利用regmap_add_irq_chip和regmap_irq_get_virq等函数处理I2C设备的PMIC_INT_L中断pin脚,实现接入和拔插充电器时调用不同处理函数的功能。通过配置dts中的中断脚,注册中断处理函数,以及分析中断标志位,确保充电器插拔的中断能够正确响应并查看中断注册状态。最终,文章展示了插拔充电器的中断处理日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下面这款I2C设备,只有一个PMIC_INT_L中断pin脚,当接入充电器、拔插充电器、按键按下松开等都是由这个中断pin触发。这里提出一个需求,接入充电器的时候调用一个处理函数,拔插充电器的时候调用另外一个处理函数。如何做到呢?这里就会用到regmap_add_irq_chip、regmap_irq_get_virq等封装好的函数。

二、这里就来分析一下接入充电器、拔插充电器的处理过程。

   1、中断脚是连接到cpu的gpio0a3.

   2、dts 里面定义这个pin脚

   3、调用regmap_add_irq_chip 注册这个中断

    4、regmap_irq_chip 就是用来定义中断寄存器的地址、个数。

 

     5、特别来看一下接入充电器、拔插充电器的中断标志位。

      6、 用regmap_irq_get_virq获取中断号,用devm_request_threaded_irq注册对应的中断处理函数

       7、充电器插拔产生的中断处理函数分别是rk817_plug_in_isr,rk817_plug_out_isr。

       8、执行cat /proc/interrupts 查看硬件中断是否注册成功.

        9、拔充电器的时候,对应的中断数有变化。

三、最后看一下插拔充电的器的log

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值