概述

设备树不仅仅描述常规硬件信息,还可以描述中断,GPIO,DMA,PINCTRL,时钟,电源管理等内核基础设施信息及其使用情况,下面重点介绍中断,GPIO等结点属性

中断控制器

对于中断控制器结点,它提供如下属性:

interrupt-controller 表明自己的身份为中断控制器

interrupt-cells
该属性与#address-cells属性相似,它声明了设备结点interrupt cells的个数。对于ARM GIC中断控制器而言#interrupt-cells = <3>

具体含义如下:

第一个cell表示中断类型,0代表SPI interrupts,1代表PPI interrupts

第二个cell表示中断号码,SPI interrupts的中断号范围是0 ~ 987,而PPI interrupts的中断号范围是0 ~ 15

第三个cell表示中断触发方式,它有4个值,分别为1,2,4,8

1表示上升沿触发

2表示下降沿触发

4表示高电平触发

8表示低电平触发

上图为典型的中断控制器结点

从上图可知:

该中断控制器包含4组寄存器,设备结点interrupt cells的个数为3

第一个cell表示中断类型,第二个cell表示中断号码,第三个cell表示中断触发方式

irq_clr_reg = of_iomap(pdev->dev.of_node, 0);读取设备树中reg节点值对应地址值;

irq = platform_get_irq(pdev, 0);获取中断号;

status = devm_request_irq(&pdev->dev, irq, siglent_reg_handler, IRQF_TRIGGER_RISING,
            "siglent_vnc", pdev);

当这个函数初始化中断触发方式强制为上升源中断时,则设备树中的配置无效;

设备结点与中断相关的属性

interrupt-parent

指定设备结点所依附的中断控制器,当结点没有指定interrupt-parent时,则从父结点继承

interrupts

指定设备结点的中断号和触发方式,该属性cell个数,由它依附的中断控制器#interrupt-cells决定,另外某些设备还可以使用多个中断号

比如:某设备结点中断类型为SPI interrupts,中断号为168和169,高电平触发,该设备结点的中断属性定义为

interrupts-parents = <&gic>;

interrupts = <0 168 4>, <0 169 4>;

上图为watchdog结点信息,使用SPI interrupts方式,中断号为75,高电平触发

GPIO控制器

对于GPIO控制器结点,它提供如下属性:

gpio-controller 表明自己的身份为gpio控制器

gpio-cells

该属性与#address-cells相似,它声明了设备结点gpio cells的个数。

一般gpio控制器#gpio-cells = <2>

第一个cell表示gpio号,第二个cell表示gpio有效电平

上图为典型的gpio控制器结点

从上图可知:

设备结点gpio cells的个数为2

第一个cell表示gpio号,第二个cell表示gpio有效电平

设备结点与gpio相关的属性

上图4为mmc1结点信息,该结点定义了cd-gpios属性,该属性表示使用219号gpio引脚(32*6+27)作为热插拔探测引脚,有效电平为低电平。

在mmc控制器驱动中会通过如下方法获取cd-gpios值

of_get_named_gpio(np, “cd-gpios”, 0);

设备树之GPIO和中断实例相关推荐

  1. 【Device Tree】设备树(一)——GPIO

    以RK3328为例,介绍设备树在GPIO方面的应用. 引脚图如下 一.首先在DTS文件中增加GPIO资源描述: gpio_demo: gpio_demo {status = "okay&qu ...

  2. 基于设备树的TQ2440的中断(2)

    下面以按键中断为例看看基于设备数的中断的用法: 设备树: tq2440_key {compatible = "tq2440,key";interrupt-parent = < ...

  3. 基于设备树的中断实现 (24x0平台)

    文章目录 一.平台信息 1. 平台信息 二.中断的驱动实现方式 2. 不使用设备树的中断实现 2.1 mach-mini2440.c文件中注册中断 2.2 注册中断 3. 使用设备树的中断实现 设备树 ...

  4. Zynq SOC学习笔记之设备树

    一. 概述 DTS即DeviceTree Source 设备树源码,是一种描述硬件的数据结构 以树状节点的方式描述一个设备的各种硬件信息细节:CPU.GPIO.时钟.中断.内存等,形成类似文本文件dt ...

  5. Linux下按键设备驱动开发以及对中断的上半部分和下半部分详细介绍

    文章目录 一.编写并且加载设备树插件 (1)检测管脚是否占用 (2)添加设备树插件 (3)加载设备树插件 二.中断相关函数 (1)request_irq中断注册函数 (2)free_irq中断注销函数 ...

  6. 【驱动】GPIO 作为按键时的 设备树 配置

    #[驱动]GPIO作为按键时的 设备树 配置 0.设备树 0.0 别名 imx6ul.dtsi 什么作用??? /*************开始/ / { aliases {- gpio0 = &am ...

  7. 5.3中断系统中的设备树——中断号的演变与irq_domain

    通过上一节我们知道,在内核中有一个irq_desc数组,数组里面的每一项对应一个中断,数组的下标就是对应中断的虚拟中断号(virq). 假设只有一个中断控制器,有32个中断,那么中断和irq_desc ...

  8. Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍

    文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...

  9. A40i使用笔记:GPIO操作方式(用于测试设备io驱动性能)(传统方式、设备树方式、寄存器方式操作GPIO)

    一.前言 前文介绍了文件io的驱动方式,可以用于led点灯灭灯或者一些简单的不需求时序控制的ic操作,但是用于功能类ic,如AD采集芯片等时序控制需求高的,就不行了,这时候就需求高速io去实现指定的芯 ...

最新文章

  1. 安卓手机也能跑YOLOv5了!
  2. explain ref_你必须要掌握的MySQL命令:explain
  3. [Swift]LeetCode463. 岛屿的周长 | Island Perimeter
  4. mysql事务中怎么更改空值_MySQL事务
  5. 《线程管理:传递参数、确定线程数量、线程标识》
  6. 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
  7. 【转】并查集算法和路径压缩
  8. PyTorch:距离度量
  9. Git_Eclipse:[2]Git初始化配置
  10. linux下wps的字体缺失解决方法
  11. Centos7.x 安装JDK、Jenkins、Jmeter、ant
  12. 19款国产手机无一幸免:15分钟破解人脸识别!
  13. 自我实现型的人的五个特质
  14. lingo入门——从河北省第三届研究生建模竞赛B题开始
  15. 讲述:一个月薪 12000 的北京程序员的真实生活
  16. 李开复创办创新工场的发言稿及访谈
  17. mysql统计分数段人数_mysql 按分数段,每个专业分数段统计人数
  18. 我们为什么来到这个世界上?
  19. 有关java的演讲稿_有关超级演说家励志的演讲稿
  20. 做为中层管理者的你,应该扮演什么角色

热门文章

  1. Django1.5 自定义用户模型(总结)
  2. date制作电子时钟
  3. Oracle KFED 和 KFOD 工具说明
  4. 正确理解RESET类型的INPUT控件实现重置效果的机制
  5. 程序员面试【Brainteasers】
  6. UA MATH564 概率论 依概率收敛的题目
  7. 在测试者的易用性测试工具套装中他们需要什么(译)
  8. generator (2)
  9. CSDN代码块显示颜色
  10. webpack搭建自己的项目