gic_irq_domain_xlate

在dts文件中,我们经常看到下面的code
interrupts = <0,120,6>
解析的code 是
static int gic_irq_domain_xlate(struct irq_domain *d,
612                                 struct device_node *controller,
613                                 const u32 *intspec, unsigned int intsize,
614                                 unsigned long *out_hwirq, unsigned int *out_type)
615 {
616         if (d->of_node != controller)
617                 return -EINVAL;
618         if (intsize < 3)
619                 return -EINVAL;
620 
621         switch(intspec[0]) {
622         case 0:                 /* SPI */
623                 *out_hwirq = intspec[1] + 32;
624                 break;
625         case 1:                 /* PPI */
626                 *out_hwirq = intspec[1] + 16;
627                 break;
628         default:
629                 return -EINVAL;
630         }
631 
632         *out_type = intspec[2] & IRQ_TYPE_SENSE_MASK;
633         return 0;
634 }


可知0代表是SPI 中断,1代表的是PPI中断。interrupts 第二个参数代表中断号,第三个代表中断类型.
636 static const struct irq_domain_ops gic_irq_domain_ops = {
637         .map = gic_irq_domain_map,
638         .xlate = gic_irq_domain_xlate,
639 };


而domain是在gic_of_init 中设置的.
ic_data.domain = irq_domain_add_tree(node, &gic_irq_domain_ops,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值