linux中断号
发布时间: 2025-03-24 07:41:34
⑴ Linux内核中断之获取中断号
Linux内核中可使用 platform_get_irq() 函数获取 dts 文件中设置的中断号。
函数原型: int platform_get_irq(struct platform_device *dev, unsigned int num)
定义文件: driversaseplatform.c
中断号获取函数 platform_get_irq() 调用流程如下:
rk3399 使用的是 GICv3 ,对应 irq_domain->name 。
文件: drivers/irqchip/irq-gic-v3.c 。
translate() 函数实现如下:
以 RockPI 4A 单板 Debian 系统Linux 4.4内核中的获取 HDMI 中断号为例。
1、查找中断号
从手册“Rockchip RK3399 TRM V1.3 Part1.pdf”中,可以查到 HDMI_IRQ 中断号,即55。
2、 dts 配置
文件: arch/arm64/boot/dts/rockchip/rk3399.dtsi
hdmi 使用的是 GIC_SPI 中断,按照 gic_irq_domain_translate() 函数中处理,需要将中断号55减去32,得到 dts 中的中断号23。
注: interrupts = <中断类型 中断号 中断触发类型 中断分区(对应哪个CPU cluster,PPI类型中断特有)>
3、驱动函数
文件: driversgpudrm ockchipdw_hdmi-rockchip.c
此时, irq 返回值为55。
后续会介绍 GIC 和中断注册等实现函数。
热点内容