12、通过OF函数获取中断资源
一、irq_of_parse_and_map 函数
该函数的主要功能是解析设备节点的"interrupts"属性, 并将对应的中断号映射到系统的中断号。 "interrupts"属性通常以一种特定的格式表示, 可以包含一个或多个中断号。 通过提供索引号, 可以获取对应的中断号。
::: 函数原型:
unsigned int irq_of_parse_and_map(struct device_node *dev, int index);
头文件:
#include <linux/of_irq.h>
函数作用:
从设备节点的"interrupts"属性中解析和映射对应的中断号
参数说明:
dev:设备节点,表示要解析的设备节点。
index:索引号,表示从"interrupts"属性中获取第几个中断号。
返回值:
是一个无符号整数,表示成功解析和映射的中断号。 :::
实现:
arch/sparc/kernel/of_device_common.c
填充:
postcore_initcall
是 Linux 内核中的一个函数,它是初始化系统核心代码的一部分。在 Linux 内核启动的早期阶段,会执行各种初始化函数来建立基本的系统环境。这些初始化函数按照一定的顺序执行,以确保系统的各个部分能够正确地初始化和交互。
二、irq_get_trigger_type 函数
该函数的主要功能是从给定的中断数据结构中提取中断触发类型。 中断触发类型描述了中断信号的触发条件, 例如边沿触发(edge-triggered) 或电平触发(level-triggered) 等。
::: 函数原型:
u32 irqd_get_trigger_type(struct irq_data *d);
头文件:
#include <linux/irq.h>
函数作用:
从中断数据结构(irq_data)中获取对应的中断触发类型。
参数说明:
d:中断数据结构(irq_data),表示要获取中断触发类型的中断。
返回值:
是一个无符号 32 位整数,表示成功获取的中断触发类型。 :::
三、irq_get_irq_data 函数
函数 irq_get_irq_data 的作用是根据中断号获取对应的中断数据结构(irq_data)。
::: 函数原型:
struct irq_data *irq_get_irq_data(unsigned int irq);
头文件:
#include <linux/irq.h>
函数作用:
根据中断号获取对应的中断数据结构。
参数说明:
irq:中断号,表示要获取中断数据结构的中断号。
返回值:
指向 irq_data 结构体的指针,表示成功获取的中断数据结构 :::
四、gpio_to_irq 函数
该函数的主要功能是将给定的 GPIO 编号转换为对应的中断号。在某些系统中,GPIO 可以配置为中断引脚,当特定事件发生时触发中断。通过该函数,可以根据 GPIO 编号获取与之关联的中断号,以便进行中断处理等操作。
::: 函数原型:
int gpio_to_irq(unsigned int gpio);
头文件:
#include <linux/gpio.h>
函数作用:
根据 GPIO 编号获取对应的中断号。
参数说明:
gpio:GPIO 编号,表示要获取中断号的 GPIO。
返回值:
是一个整数,表示成功获取的中断号。 :::
五、of_irq_get 函数
该函数的主要功能是从给定的设备节点的"interrupts"属性中解析并获取对应的中断号。
"interrupts"属性通常以一种特定的格式表示,可以包含一个或多个中断号。通过提供索引号,
可以获取对应的中断号
::: 函数原型:
int of_irq_get(struct device_node *dev, int index);
头文件:
#include <linux/of_irq.h>
函数作用:
是从设备节点的"interrupts"属性中获取对应的中断号。
参数说明:
dev:设备节点,表示要获取中断号的设备节点。
index:索引号,表示从"interrupts"属性中获取第几个中断号。
返回值:
是一个整数,表示成功获取的中断号。 :::
六、platform_get_irq 函数
platform_get_irq 函数的主要功能是根据给定的平台设备和索引号获取对应的中断号。平
台设备是指与特定硬件平台相关的设备。在某些情况下,平台设备可能具有多个中断号,通过
提供索引号,可以获取对应的中断号。
::: 函数原型:
int platform_get_irq(struct platform_device *dev, unsigned int num);
函数作用:
根据平台设备和索引号获取对应的中断号。
头文件:
linux/platform_device.h
参数说明:
dev:平台设备,表示要获取中断号的平台设备。
num:索引号,表示从中获取第几个中断号。
返回值:
是一个整数,表示成功获取的中断号。 :::
七、代码案例
案例1:
中断资源的获取
中断使用