概述
前段时间在新平台上写一个自定义的驱动模块,里面包含多个中断线, 在编写驱动的时候找device tree里面定义和驱动程序中获取中断资源的
api选择上花了点时间。
device tree 里面一个节点有多个中断线,定义方式:
interrupts = <0 29 1>, <0 30 1>, <0 32 1>;
这里第三个参数表示的是中断触发方式, 但是实际调试时, 虽然这里设置了,但是没有真正起作用, 这真起作用的地方是在request_irq(...)
第三个参数决定的。
如果模块中只有单一中断线, 则获取中断资源的api一般可用
platform_get_resource(...)
对于我遇到的有多个中断线的情况则不行, 后面查的可用
irq_of_parse_and_map(struct device_node *dev, int index)
index这个参数是个序号, 和device tree 里面 interrupts属性里面定义的中断线对应(第一个资源对应的index是0, 紧接着是1, 以此类推)。
最后
以上就是干净篮球为你收集整理的内核驱动编程------一个模块包含多个中断线资源的全部内容,希望文章能够帮你解决内核驱动编程------一个模块包含多个中断线资源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复