文章目录

  • GICV3 irq-domain
    • irq domain 的左膀与右臂是怎么创建的
      • irq_domain_ops 创建时机
      • irq_domain_ops 的实现
      • irq_chip 的 绑定时机,在alloc实现中
      • irq_chip 的实现

GICV3 irq-domain

irq domain 的左膀与右臂是怎么创建的

  • 左膀:irq_chip
  • 右臂:irq_domain_ops

irq_domain_ops 创建时机

gic_of_initgic_init_basesgic_data.domain = irq_domain_create_tree(handle, &gic_irq_domain_ops, &gic_data);  // 此时创建的__irq_domain_addset_handle_irq(gic_handle_irq);

irq_domain_ops 的实现

1537 static const struct irq_domain_ops gic_irq_domain_ops = {
1538     .translate = gic_irq_domain_translate,
1539     .alloc = gic_irq_domain_alloc,
1540     .free = gic_irq_domain_free,
1541     .select = gic_irq_domain_select,
1542 };

irq_chip 的 绑定时机,在alloc实现中

// irq_data->chip = chip 这个时候绑定的
gic_irq_domain_allocgic_irq_domain_translate// get hwirqirq_domain_set_info irq_domain_set_hwirq_and_chipirq_data->hwirq = hwirq;irq_data->chip = chip ? chip : &no_irq_chip; // gic_chipirq_data->chip_data = chip_data;__irq_set_handlerirq_set_handler_data

irq_chip 的实现

1328 static struct irq_chip gic_chip = {
1329     .name           = "GICv3",
1330     .irq_mask       = gic_mask_irq,
1331     .irq_unmask     = gic_unmask_irq,
1332     .irq_eoi        = gic_eoi_irq,
1333     .irq_set_type       = gic_set_type,
1334     .irq_set_affinity   = gic_set_affinity,
1335     .irq_retrigger          = gic_retrigger,
1336     .irq_get_irqchip_state  = gic_irq_get_irqchip_state,
1337     .irq_set_irqchip_state  = gic_irq_set_irqchip_state,
1338     .irq_nmi_setup      = gic_irq_nmi_setup,
1339     .irq_nmi_teardown   = gic_irq_nmi_teardown,
1340     .ipi_send_mask      = gic_ipi_send_mask,
1341     .flags          = IRQCHIP_SET_TYPE_MASKED |
1342                   IRQCHIP_SKIP_SET_WAKE |
1343                   IRQCHIP_MASK_ON_SUSPEND,
1344 };

irq domain 分析 GICV3相关推荐

  1. linux IRQ Management(四)- IRQ Domain

    了解IRQ Domain(中断控制器) 1.如何理解中断号?   每个IRQ同时有"irq"和"hwirq"两个编号. "hwirq"是硬件 ...

  2. Linux kernel的中断子系统之(二):IRQ Domain介绍

    一.概述 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断: 1.IRQ number.CPU需要为每一个外设中断编号,我们称之IRQ Number.这个IRQ number ...

  3. irq domain介绍和代码导读

    补充IRQ Domain介绍 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断: 1.IRQ number.CPU需要为每一个外设中断编号,我们称之IRQ Number.这个 ...

  4. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析

    本系列文章将分析Linux对于OMAP的电源管理功能,以AM33XX作为实例(目前的硬件平台先主要关注AM335xStarterKit开发板),在必要时穿插其他相关内容. 在linux-3.8.1/a ...

  5. 设备树学习(十五、番外篇-中断子系统之IRQ Domain介绍)

    之前的文章分析过没使用设备树时,中断是如何初始化的 https://blog.csdn.net/qq_16777851/article/details/82556519 用一句话总结就是,启动过程,通 ...

  6. kernel power domain分析

    power domain 最近工作上接触到了kernel power domain framework,kernel文档对这块的解释不多,网上的参考资料也很少,不过还是得感谢wowo大神几年前的文章, ...

  7. Linux下的内核线程threaded irq机制分析与应用

    ⭐Linux发烧友

  8. GIC/ITS代码分析(2)GICv3驱动初始化

    这里我们介绍GICv3驱动的基础框架,后续再介绍GICv4的支持.GICv3驱动在文件drivers/irqchip/irq-gic-v3.c中.同时仅介绍ACPI方式下GICv3驱动. 该驱动由宏I ...

  9. ARM GICv3 GIC代码分析

    前言 在前一篇博文(ARM GICv3中断控制器)中, 介绍了GIC的一些基本概念,本文主要分析了linux kernel中GIC v3中断控制器的代码(drivers/irqchip/irq-gic ...

最新文章

  1. Win8 Metro(C#)数字图像处理--2.52图像K均值聚类
  2. 前沿科技山雨欲来,四大领域存创新机会
  3. javascript高级程序设计之引用类型
  4. 解决eclipse中java项目导出成jar包后读写UTF-8文件中文乱码问题
  5. 腐烂国度2巨霸版计算机学知识,《腐烂国度2巨霸版》新手攻略 新手入门玩法技巧大全...
  6. 又到中元节 应用宝教你如何打败各种鬼
  7. 浙江省2021年英语高考成绩查询,浙江高考成绩查询、志愿填报时间公布!
  8. Quartz2D知识点聚合案例
  9. .rpt文件内容读取java_Java 中读取文件内容的 n 中方式
  10. linux如何卸载telnet命令,linux安装telnet命令
  11. jsoup获取图片并下载
  12. WINCE下ActiveSync连接故障修复办法
  13. python删除文本框内容_js清除文本框内容
  14. 详解 JavaScript 的发展史
  15. Python画四张子图-导入数据
  16. 计算机专业新生创新思维研究,计算机基础与计算思维探究论文
  17. springboot框架下利用websocket实现即时通讯
  18. 程序员必备的11个Github优质项目
  19. 川土微电子8通道隔离式数字输入接收器
  20. 【网络安全】如何限制内网网速

热门文章

  1. FPGA软件篇——Modelsim使用
  2. 设计行业高效办公秘籍——趁手的设计软件
  3. python 魔法函数
  4. linux系统参数调优
  5. STM32+EMWIN电子日历
  6. 【Multisim】使用NE5532P系列运放仿真时必须注意的问题
  7. 库克自愿降薪超 40%,年薪减至 4900 万美元
  8. windows Embedded 7 一键还原攻略
  9. 费森VZ200和雅马哈F310对比哪款更适合初学者,你会怎么选择?
  10. 2022年中国一体化压铸行业概览:*引领潮流,*或成资本新宠