设备树之GPIO和中断实例
概述
设备树不仅仅描述常规硬件信息,还可以描述中断,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和中断实例相关推荐
- 【Device Tree】设备树(一)——GPIO
以RK3328为例,介绍设备树在GPIO方面的应用. 引脚图如下 一.首先在DTS文件中增加GPIO资源描述: gpio_demo: gpio_demo {status = "okay&qu ...
- 基于设备树的TQ2440的中断(2)
下面以按键中断为例看看基于设备数的中断的用法: 设备树: tq2440_key {compatible = "tq2440,key";interrupt-parent = < ...
- 基于设备树的中断实现 (24x0平台)
文章目录 一.平台信息 1. 平台信息 二.中断的驱动实现方式 2. 不使用设备树的中断实现 2.1 mach-mini2440.c文件中注册中断 2.2 注册中断 3. 使用设备树的中断实现 设备树 ...
- Zynq SOC学习笔记之设备树
一. 概述 DTS即DeviceTree Source 设备树源码,是一种描述硬件的数据结构 以树状节点的方式描述一个设备的各种硬件信息细节:CPU.GPIO.时钟.中断.内存等,形成类似文本文件dt ...
- Linux下按键设备驱动开发以及对中断的上半部分和下半部分详细介绍
文章目录 一.编写并且加载设备树插件 (1)检测管脚是否占用 (2)添加设备树插件 (3)加载设备树插件 二.中断相关函数 (1)request_irq中断注册函数 (2)free_irq中断注销函数 ...
- 【驱动】GPIO 作为按键时的 设备树 配置
#[驱动]GPIO作为按键时的 设备树 配置 0.设备树 0.0 别名 imx6ul.dtsi 什么作用??? /*************开始/ / { aliases {- gpio0 = &am ...
- 5.3中断系统中的设备树——中断号的演变与irq_domain
通过上一节我们知道,在内核中有一个irq_desc数组,数组里面的每一项对应一个中断,数组的下标就是对应中断的虚拟中断号(virq). 假设只有一个中断控制器,有32个中断,那么中断和irq_desc ...
- Linux设备模型、平台设备驱动、设备树(device tree)、GPIO子系统以及pinctrl子系统介绍
文章目录 一.Linux设备模型介绍 (1)设备驱动模型总体介绍 (2)设备驱动模型文件表现 (3)设备驱动模型工作原理 [1]总线 [2]设备 [3]驱动 [4]注册流程 二.平台设备驱动介绍 (1 ...
- A40i使用笔记:GPIO操作方式(用于测试设备io驱动性能)(传统方式、设备树方式、寄存器方式操作GPIO)
一.前言 前文介绍了文件io的驱动方式,可以用于led点灯灭灯或者一些简单的不需求时序控制的ic操作,但是用于功能类ic,如AD采集芯片等时序控制需求高的,就不行了,这时候就需求高速io去实现指定的芯 ...
最新文章
- 安卓手机也能跑YOLOv5了!
- explain ref_你必须要掌握的MySQL命令:explain
- [Swift]LeetCode463. 岛屿的周长 | Island Perimeter
- mysql事务中怎么更改空值_MySQL事务
- 《线程管理:传递参数、确定线程数量、线程标识》
- 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
- 【转】并查集算法和路径压缩
- PyTorch:距离度量
- Git_Eclipse:[2]Git初始化配置
- linux下wps的字体缺失解决方法
- Centos7.x 安装JDK、Jenkins、Jmeter、ant
- 19款国产手机无一幸免:15分钟破解人脸识别!
- 自我实现型的人的五个特质
- lingo入门——从河北省第三届研究生建模竞赛B题开始
- 讲述:一个月薪 12000 的北京程序员的真实生活
- 李开复创办创新工场的发言稿及访谈
- mysql统计分数段人数_mysql 按分数段,每个专业分数段统计人数
- 我们为什么来到这个世界上?
- 有关java的演讲稿_有关超级演说家励志的演讲稿
- 做为中层管理者的你,应该扮演什么角色