linux如何通过设备树获取到中断号irq

念念有余 2018-02-08 06:10:28
这几天看linux的中断,有很多不明白,向大神们请教。
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)

对于中断申请函数中的第一个参数,irq,自己原本理解的是硬件手册上的中断号,后来发现不对,应该是linux内核中的IRQ号。
例如对于三星exynos4412芯片中的GPX1_1和GPX1_2对应的硬件中断号为25,26


在使用request_irq时第一个参数需要有个转换的过程,如下

 request_irq(IRQ_EINT(9),key_handler,IRQF_TRIGGER_FALLING,"KEY1",NULL);

完成对中断的申请。

现在不理解的是,在设备树形式下,如何来完成的,我是参考的这篇博客上http://blog.csdn.net/zqixiao_09/article/details/50916212(设备树)和http://blog.csdn.net/zqixiao_09/article/details/50908125(中断驱动)
设备树下的中断如下

驱动获取中断如下

代码的64 65行获取设备资源,然后67 68行拿出了资源的res->start就能直接赋值给irq参数了?platform_get_resource已经把硬件中断号转换为linux的中断号了吗?我理解的不知道对不对,如果是的话,这中间是个什么过程呢?
...全文
3992 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JT同学 2019-05-03
  • 打赏
  • 举报
回复
https://blog.csdn.net/weixin_42462202/article/details/86751040
melo_fang 2019-02-25
  • 打赏
  • 举报
回复 3
先回答,IORESOURCE_IRQ这个属性取出的就是已经分配好的中断号。

平台不一样,但是思路大致相同吧。
设备树里配置中断常见的两种:1.interrupts属性 2.自定义一个gpio,在驱动里处理
定义为interrupts属性的节点会在kernel起来的时候,优先被处理中断相关的属性:
我没记错的话
start_kernel->init_IRQ->irqchip_init->of_irq_init
这个是高通的流程,在of_irq_init里会扫描设备树的中断控制器节点并初始化
我不确定你们有没有经典的gpio_to_irq这个API,这个函数追一下,再按照上面的流程追一下,应该能对整个处理理解深刻一点。
念念有余 2018-02-09
  • 打赏
  • 举报
回复
没人回答吗 自己顶一下,
念念有余 2018-02-08
  • 打赏
  • 举报
回复
有大神给解释一下不,不明白啊
#### 收益: 学习《optee系统开发精讲 》套餐的收益如下:1、全体系的掌握optee的核心知识点(多核多线程、启动流程、各类API、TA/PTA/STA、driver、service、各类设计思想、内存管理、中断管理...);2、掌握TEE OS的设计核心思想(不限与optee,对其它TEE也是如此),能够进入软件架构层次的各项设计;3、快速熟悉大系统软件的各项组件,能够进行大系统软件之间的设计或排查问题4、学习和理解理解Armv8/Armv9架构、Trustzone架构5、技术水平提升N个level, 掌握快速的学习方法;#### 课程简介和大纲 该课程包含但不限与以下章节:optee的组件介绍optee os启动流程optee os的初始化流程optee os线程向量表及其作用进入optee os的八种方式optee os的异常向量表和设计模型optee os对irq中断的处理optee os对fiq中断的处理optee os的内存管理optee os的MMU的使用optee os的根密钥(信任根)optee os的RPC机制optee os的存储系统optee os的SFS系统optee os的RPMB机制的实现optee os的Timer实现optee os中实现的GP APIoptee os中的系统调度optee os中密码学函数的支持optee os中的线程调度CA/TA的开发模型optee os中的serviceoptee os中的 PTAoptee os中的 secure driveroptee os中的 Early TAoptee中spinlock的实现原理详解optee中mutex的实现方式optee的栈指针和栈内存的介绍optee中使用虚函数(平台客制化)的设计模型共享内存的介绍optee os的标准错误码TA的签名和验签TA链接静态库的方法

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧