与 gpio相关的OF函数

一.  简介

前面在设备树文件中,创建了 Led设备节点。如下所示:

    gpioled{compatible = "alientek, gpioled";pinctrl-names = "default";pinctrl-0 = <&pinctrl_gpioled>;led-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;status = "okay";};
这里Led设备节点中,定义了一个名为 “led-gpio” 的属性,led-gpio属性描述了 gpioled 这个设备所使用的 GPIO。在驱动程序中需要读取 gpio 属性内容,Linux 内核提供了几个与 GPIO 有关的 OF 函数。

二. 与 gpio子系统相关的OF函数

1、of_gpio_named_count 函数

of_gpio_named_count 函数用于获取设备树某个属性里面定义了几个 GPIO 信息。此函数原型如下:
int of_gpio_named_count(struct device_node *np, const char *propname)
函数参数和返回值含义如下:
np :设备节点。
propname :要统计的 GPIO 属性。
返回值: 正值,统计到的 GPIO 数量;负值,失败。
要注意的是,当为 空的 GPIO 信息时,of_gpio_named_count 函数也会统计到,比如:
gpios = <0&gpio1 1 20&gpio2 3 4>;
上述代码的 “ gpios ” 节点一共定义了 4 GPIO ,但是有 2 个是空的,没有实际的含义。 通过 of_gpio_named_count 函数统计出来的 GPIO 数量就是 4 个。

2、of_gpio_count 函数

of_gpio_named_count 函数一样,但是不同的地方在于,此函数统计的是“ gpios ”这个属性的 GPIO 数量,而 of_gpio_named_count 函数可以统计任意属性的 GPIO 信息,函数原型如下 所示:
int of_gpio_count(struct device_node *np)
函数参数和返回值含义如下:
np :设备节点。
返回值: 正值,统计到的 GPIO 数量;负值,失败。

3、of_get_named_gpio 函数

此函数获取 GPIO 编号,因为 Linux 内核中关于 GPIO API 函数都要使用 GPIO 编号, 此函数会将设备树中类似 <&gpio5 7 GPIO_ACTIVE_LOW> 的属性信息转换为对应的 GPIO 号。
注意:此函数在驱动中使用很频繁!
函数原型如下:
int of_get_named_gpio(struct device_node *np, const char *propname, int index)
函数参数和返回值含义如下:
np :设备节点。
propname :包含要获取 GPIO 信息的属性名。
index GPIO 索引,因为一个属性里面可能包含多个 GPIO ,此参数指定要获取哪个 GPIO的编号,如果只有一个 GPIO 信息的话此参数为 0
返回值: 正值,获取到的 GPIO 编号;负值,失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/660375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断当前设备是不是安卓或者IOS?

代码(重要点): 当前文件要是 xxx.js文件,就需要写好代码后调用才会执行: // 判断是不是安卓 const isAndroid () > {return /android/.test(navigator.userAgent.toLowerCase()); }// 判断是不是ios const isIOS () > {return /iphone|ipad|ipod/.test(navigator.use…

《Pandas 简易速速上手小册》第1章:Pandas入门(2024 最新版)

文章目录 1.1 Pandas 简介1.1.1 基础知识1.1.2 案例&#xff1a;气候变化数据分析1.1.3 拓展案例一&#xff1a;金融市场分析1.1.4 拓展案例二&#xff1a;社交媒体情感分析 1.2 安装和配置 Pandas1.2.1 基础知识1.2.2 案例&#xff1a;个人财务管理1.2.3 拓展案例一&#xff1…

【IMAX6U移植OpenCV】

IMAX6U移植OpenCV V1.3 一 安装通用交叉编译器1.1 下载通用交叉编译器1.2 安装通用交叉编译器1.3 验证通用交叉编译器 二 搭建 OpenCV 3.4.1 的编译环境2.1 下载 OpenCV 3.4.1 源码2.2 配置 OpenCV 环境2.3 编译 OpenCV 源码 三 Qt 项目中加入OpenCV3.1 Qt 项目的 pro 文件Open…

【Spark系列1】DAG中Stage和Task的划分全流程

一、整体流程 每个Aciton操作会创建一个JOB&#xff0c;JOB会提交给DAGScheduler&#xff0c;DAGScheduler根据RDD依赖的关系划分为多个Stage&#xff0c;每个Stage又会创建多个TaskSet&#xff0c;每个TaskSet包含多个Task&#xff0c;这个Task就是每个分区的并行计算的任务。…

数灵通外链工具如何实现回传功能?

在数字营销的世界里&#xff0c;了解用户行为是至关重要的。数灵通提供了一个强大的回传功能&#xff0c;能够让我们在用户完成某个动作后&#xff0c;获取到这个动作的数据反馈。利用这个功能&#xff0c;企业可以更好地了解用户需求和行为&#xff0c;从而优化营销策略&#…

Docker Compose下载

使用插件版本&#xff1a; 进行安装 乌班图的安装方式参考&#xff1a;centos 的安装方式参考&#xff1b; sudo yum update sudo yum install docker-compose-plugin通过检查版本来验证 Docker Compose 是否已正确安装。 docker compose version 预期输出&#xff1a; Dock…

编译LVGL遇到的问题及解决方式

问题1: 编译选项报错, 未识别 -Wshift-negative-value 选项 Building project file: main/src/main.c Building project file: main/src/mouse_cursor_icon.c cc: error: unrecognized command line option ‘-Wshift-negative-value’ cc: error: unrecognized command line …

【目标跟踪】3D点云跟踪

文章目录 一、前言二、代码目录三、代码解读3.1、文件描述3.2、代码框架 四、关联矩阵计算4.1、ComputeLocationDistance4.2、ComputeDirectionDistance4.3、ComputeBboxSizeDistance4.4、ComputePointNumDistance4.5、ComputePointNumDistance4.6、result_distance 五、结果 一…

Node.js 文件系统操作指南

文章目录 Node.js 文件系统操作完全指南一、引言二、基本文件操作2.1 读取文件2.2 写入文件2.3 追加内容到文件 三、文件与目录的创建与删除3.1 创建文件3.2 创建目录3.3 删除文件3.4 删除目录 四、文件与目录的信息查询4.1 检查文件或目录是否存在4.2 获取文件信息4.3 获取目录…

main函数、_tmain函数和wmain函数的区别

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 今天碰到一个问题&#xff0c;算是彻底搞明白了main函数、_tmain函数和wmain函数的区别。就是使用vs2015新建一个控制台工程&#xff0c;如果入口函数是设…

C++ 11新特性之完美转发

概述 在C编程语言的演进过程中&#xff0c;C 11标准引入了一系列重大革新&#xff0c;其中之一便是“完美转发”机制。这一特性使得模板函数能够无损地传递任意类型的实参给其他函数或构造函数&#xff0c;从而极大地增强了C在泛型编程和资源管理方面的灵活性与效率。 完美转发…

探究HMAC算法:消息认证与数据完整性的完美结合

Hash-based Message Authentication Code&#xff08;基于哈希的消息认证码&#xff0c;简称HMAC&#xff09;算法作为一种广泛应用的消息认证码&#xff08;MAC&#xff09;算法&#xff0c;在现代信息安全领域起着至关重要的作用。本文将从算法原理、优缺点、实际应用等方面&…

20240128周报-网络太杂,Tomcat太难

今天来做个小总结吧&#xff0c;之前说想用几个月的时间将Java生态给整理一遍&#xff0c;该工作已经进入第三周了。先和各位老老板汇报一下上一周的工作&#xff0c;然后说一下本周的计划和后面的计划。 1.上周工作 上周的计划是将网络和Tomcat的内容梳理一番&#xff0c;但…

亚马逊要怎么运营?亚马逊运营主要运营内容有哪些?

一个店铺的成长发展少不了运营&#xff0c;而店铺的运营必须要有相关运营经验&#xff0c;才能将店铺做好&#xff0c;近几年亚马逊电商平台在不断的发展&#xff0c;亚马逊的运营模式非常独特&#xff0c;它借助于多种技术解决方案来提供最佳的客户体验。那么亚马逊要怎么运营…

你的MiniFilter安全吗?

简介 筛选器管理器 (FltMgr.sys)是Windows系统提供的内核模式驱动程序, 用于实现和公开文件系统筛选器驱动程序中通常所需的功能; 第三方文件系统筛选器开发人员可以使用FltMgr的功能可以更加简单的编写文件过滤驱动, 这种驱动我们通常称为MiniFilter, 下面是MiniFilter的基本…

python21-Python的字符串查找、替换相关方法

str还提供了如下常用的执行查找、替换等操作的方法。 startswith():判断字符串是否以指定子串开头。 endswith():判断字符串是否以指定子串结尾 find():查找指定子串在字符串中出现的位置&#xff0c;如果没有找到指定子串&#xff0c;则返回-1。 index():查找指定子串在字…

Java多线程--解决单例模式中的懒汉式的线程安全问题

文章目录 一、单例设计模式的线程安全问题&#xff08;1&#xff09;饿汉式没有线程安全问题&#xff08;2&#xff09;懒汉式线程安全问题1、案例2、方式1-同步方法3、方式2-同步代码块4、优化 二、代码&#xff08;1&#xff09;实现线程安全的懒汉式&#xff08;2&#xff0…

猫什么时候发腮?公认发腮效果好的生骨肉冻干推荐

猫什么时候发腮是许多猫主人非常关心的问题。在猫咪的成长过程中&#xff0c;发腮是一项重要的体征&#xff0c;也是猫咪成熟的标志。想要让猫咪拥有可爱的肉嘟嘟脸型&#xff0c;主人需要在适龄的年龄段加强营养补给&#xff0c;不要错失最佳发腮期。那么&#xff0c;猫咪的最…

pytorch交换数组元素坑

写 PermutePatch 时遇到一个 bug&#xff1a;在试图交换 PyTorch 数组的两个元素时&#xff0c;两个位置都变成同一个元素&#xff01;具体见测试代码。本文兼测几种交换情况&#xff1a; 两个 python 变量list 两个元素numpy 数组两个元素pytorch 数组两个元素 import numpy…

api接口1688商品详情接口采集商品详情数据商品价格详情页数据可支持高并发调用演示示例

接入1688商品详情API接口的步骤如下&#xff1a; 注册账号&#xff1a;首先&#xff0c;你需要在1688开放平台注册一个账号。 创建应用&#xff1a;登录后&#xff0c;在控制台中找到“我的应用”&#xff0c;点击“创建应用”。 获取API密钥&#xff1a;创建应用后&#xff…