3.1. IRQCHIP_DECLARE 所有的中断控制器初始化函数由IRQCHIP_DECLARE修饰,在链接时放到vmlinux的__irqchip_of_table段中。 通过搜索IRQCHIP_DECLARE,可以找到所有的中断控制器初始化函数。如下为gic相关的初始化函数。 # git grep --heading -Inw IRQCHIP_DECLARE drivers/irqchip/irq-gic* drivers/irqchip/irq-...
我们把节“__irqchip_of_table”称为中断控制器匹配表,里面每个表项的格式是结构体of_device_id。 drivers/irqchip/irq-gic.c IRQCHIP_DECLARE(gic_400, "arm,gic-400", gic_of_init); ... IRQCHIP_DECLARE(cortex_a15_gic, "arm,cortex-a15-gic", gic_of_init); IRQCHIP_DECLARE(cortex_a9_gic,...
在内核启动初始化中断的函数中,of_irq_init 函数会去查找设备节点信息,该函数的传入参数就是 __irqchip_of_table 段,由于 IRQCHIP_DECLARE 已经将信息填充好了,of_irq_init 函数会根据 “arm,gic-v3” 去查找对应的设备节点,并获取设备的信息。or_irq_init 函数中,最终会回调 IRQCHIP_DECLARE 声明的回调函数...
* irq_domain * @chip_data: platform-specific per-chip private data for the chip * methods, to allow shared chip implementations */structirq_data{ u32 mask;unsignedintirq;unsignedlonghwirq;structirq_common_data*common;structirq_chip*chip;structirq_domain*domain;#ifdefCONFIG_IRQ_DOMAIN_HIERARCHY...
在GIC驱动程序中,使用IRQCHIP_DECLARE 宏来声明结构信息,包括compatible 字段和回调函数,该宏会将这个结构放置到__irqchip_of_table 字段中; 在内核启动初始化中断的函数中,of_irq_init 函数会去查找设备节点信息,该函数的传入参数就是__irqchip_of_table ...
*(__irqchip_of_end)#endif 在内核启动初始化中断的函数中,of_irq_init 函数会去查找设备节点信息,该函数的传入参数就是 __irqchip_of_table 段,由于 IRQCHIP_DECLARE 已经将信息填充好了,of_irq_init 函数会根据 “arm,gic-v3” 去查找对应的设备节点,并获取设备的信息。or_irq_init 函数中,最终会回调...
IRQCHIP_DECLARE(gic_v3, "arm,gic-v3", gic_of_init); 这样的话,在内核启动时,会对这些定义的IRQCHIP_DECLARE宏下的回调函数调用,以对中断控制器初始化。 这里我们就是调用函数gic_of_init。 函数gic_of_init实现如下: static int __init gic_of_init(struct device_node *node, struct device_node *...
1、IRQCHIP_DECLARE() 功能:声明并初始化of_device_id结构体,并放到段__irqchip_of_table中。 宏IRQCHIP_DECLARE解析过程: ## 1.宏用法IRQCHIP_DECLARE(gic_v3,"arm,gic-v3",gic_of_init);## 2.宏定义#defineIRQCHIP_DECLARE(name, compat, fn) OF_DECLARE_2(irqchip, name, compat, fn)#defineOF...
1. irq chip driver 的声明: 代码语言:javascript 复制 IRQCHIP_DECLARE(gic_v3,"arm,gic-v3",gic_of_init); 定义IRQCHIP_DECLARE 之后,相应的内容会保存到 __irqchip_of_table 里边: 代码语言:javascript 复制 #defineIRQCHIP_DECLARE(name,compat,fn)OF_DECLARE_2(irqchip,name,compat,fn)#defineOF_DECL...
从中断控制器的#interrupt-cells属性知道,要描述一个中断需要4个参数,每一个参数的含义需要由中断控制器的驱动来解释,具体是由中断控制器的irq_domain_ops中的xlate来解释,对于s3c2440就是drivers/irqchip/irq-s3c24xx.c中的s3c24xx_irq_xlate_of,这个后面来介绍。