dtsi需要配置硬件中断号

dtsi需要配置硬件中断号,第1张

GIC的外设中断(除去SGI)类型有两类:

SPI,共享外设中断(由GIC内部的distributor来分发到相关CPU),中断号:32~1019

PPI,私有外设中断(指定CPU接收),中断号:16~31

Linux Device Tree中定义了很多和中断相关的属性,这些属性之间的关系错综复杂。

exynos4412的GIC中断控制器(interrupt controller)通过中断类型、中断号、中断触发方式这三个要素可以描述一个唯一指定的中断。这种能够描述出系统中唯一中断的要素组合称为interrupt specifier

Linux内核中可使用 platform_get_irq() 函数获取 dts 文件中设置的中断号。

函数原型: int platform_get_irq(struct platform_device *dev, unsigned int num)

定义文件: drivers\base\platform.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、驱动函数

文件: drivers\gpu\drm\rockchip\dw_hdmi-rockchip.c

此时, irq 返回值为55。

后续会介绍 GIC 和中断注册等实现函数。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8791734.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存