gpio-0设置成输出失败的原因

原因

spi驱动先设置gpio-0成了输出;

但是后面其他驱动,使用of_property_read_u32获取设备树节点的属性时,没去判断返回值;而直接使用参数返回的0,导致gpio-0又被设置成了输入

实例

正常的如下,gpio显示为输出

不正常如下,gpio显示为输入

 

 影响代码如下:of_property_read_u32返回0是找到节点里的属性了,返回负数是没找到;不然没有这个属性的话,out_value会返回0 ;而且没对gpio_request做返回判断,如果有冲突的情况,这个地方还设置了gpio0为输入---那就异常了,该输出的gpio,被异常设置成了输入。

static int init_device(struct platform_device *pdev, int dev_num)
{....of_property_read_u32(pdev->dev.of_node,"edge_detect_gpio", &uedevice->gpio);if (uedevice->gpio >= 0) {gpio_request(uedevice->gpio, uedevice->name);gpio_direction_input(uedevice->gpio);}
}

修改如下:所以对接口的返回值做判断很重要,能避免一些奇葩的bug

static int init_device(struct platform_device *pdev, int dev_num)
{....int ret = -1;ret = of_property_read_u32(pdev->dev.of_node,"edge_detect_gpio", &uedevice->gpio);if (ret ) {dev_err(uedevice->dev, "failed to of_property_read_u32 wakeup.\n");goto out;}ret = gpio_request(uedevice->gpio, uedevice->name);if (ret < 0) {dev_err(uedevice->dev, "failed to gpio_request wakeup.\n");goto out;}gpio_direction_input(uedevice->gpio);out:return -1;
}

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

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

相关文章

入职3年-我如何做一名AI产品经理(文末福利)

引言 从2021年校招加入京东开始&#xff0c;我一直从事AI产品经理的工作&#xff0c;有幸见证了AI行业的热情从一台台服务器烧到了全世界各个角落&#xff0c;也见证了京东AI中台团队的影响力如何一步步的扩大。从21年的迷茫到24年的坚定&#xff0c;很庆幸我正走在适合自己的…

【C++】类的默认成员函数

类的默认成员函数 类的六个默认成员函数构造函数构造函数的概念构造函数的特性 析构函数析构函数的概念析构函数的特性 构造函数与析构函数的调用顺序拷贝构造拷贝构造的概念拷贝构造的特性赋值运算符重载运算符重载赋值运算符重载前置与后置重载输入输出流重载 const修饰成员实…

高精度减法

高精度减法 两个高精度整数的减法题目思路实现代码实现 两个任意符号的高精度加减法 两个高精度整数的减法 高精度指的是数字的大小非常非常大&#xff0c;最多能有10的5次方 的 位数。 本次计算的两个数均为 正数&#xff0c;如何求负数会在最后提到。 题目 给定两个正整数…

解决浏览器缩放的时候,重新设置滚动条的位置,使页面滚动条固定悬浮在页面底部

项目场景&#xff1a; 浏览器调试页面兼容页面时&#xff0c;缩放页面宽度&#xff0c;整体超出时滚动条出现在页面最底部&#xff0c;不是悬浮在页面下面&#xff0c;只有滚动到最底部才出现&#xff0c;需要的是悬浮在页面底部&#xff0c;不是滚动到最下面才出现 解决方案…

java面试整合全套

什么是Java &#xff08;定义 优点&#xff09; java是一个平台&#xff0c;由jvm和Java应用编程接口构成的一门面向编程语言。 不仅吸收了C语言的各种优点&#xff0c;还摒弃了c语言里面的多继承,指针等概念&#xff0c;因此java的特征主要有功能强大和简单易用的特征。 jav…

uniapp chooseVideo和uploadFile 选择视频或照片上传抖快平台踩坑

先贴代码 uni.chooseVideo({sourceType: [album],fail:(err)>{console.log(TAG, "chooseVideo-failerr:", err)page.resetUploadFileField()if (err.errNo 10200 || chooseVideo:fail take video fail err.errMsg || chooseVideo:fail auth deny err.errMsg) …

排序-插入排序

基本介绍 插入排序属于内部排序算法&#xff0c;是对于排序的元素以插入的方式找寻该元素的适当位置&#xff0c;以达到排序的日的。 插入排序(Insertion Sorting)的基本思想 把n个待排序的元素看成为一个有序表和一个无序表&#xff0c;开始时有序表中只包含一个元素&#xff…

架构设计-如何安全地传输密码

java web 项目中经常会遇到登录或注册的场景,如果查看浏览器的 network 网络请求时,用户的密码以明文方式传输,会造成很多安全隐患,这就涉及到密码如何安全传输的问题。 数据加密的重要性不言而喻,通用的加密技术有 哈希散列、对称加密、非对称加密。 哈希散列 哈希散列是…

论徐州高防IP的作用有哪些?

高防IP是一个专门解决大流量攻击的安全防护产品&#xff0c;能够支持网站和非网站类业务的DDOS防护和CC防护&#xff0c;是保护企业网络安全的重要手段&#xff0c;大部分的企业网站会选择应用高防IP&#xff0c;来保障企业业务的稳定可用性。 接下来小万就来介绍一下高防IP的作…

如何有效限制IP多次重新访问网站

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;在如今的网络世界中&#xff0c;有时候我们需要限制某些IP地址多次重新访问网站&#xff0c;以保护网站的安全性和用户体验。这一期淼淼将介绍一些常见的方法&#xff0c;帮助你有效地限制IP多次重新访问…

FPGA Verilog模块化设计入门篇一

随着电子技术的快速发展&#xff0c;现场可编程门阵列&#xff08;FPGA&#xff09;已成为现代电子系统设计中不可或缺的一部分。FPGA的灵活性、可重构性和高性能使得它成为处理复杂算法、加速数据处理和实现特定功能的理想选择。然而&#xff0c;随着系统复杂性的增加&#xf…

【npm】一款时间日期工具库,你可以使用它来实现精美日历或欢迎页

时间转换工具 author: Vincamailbox: 237690966qq.comUpdateTime: 2024/6/13 15:29:18 安装 npm install v_datejs引用 import v from "v_datejs";使用 html&#xff1a; <template><code>{{ v.tm() }}</code> </template>js&#xff…

go-zero整合Excelize并实现Excel导入导出

go-zero整合Excelize并实现Excel导入导出 本教程基于go-zero微服务入门教程&#xff0c;项目工程结构同上一个教程。 本教程主要实现go-zero框架整合Excelize&#xff0c;并暴露接口实现Excel模板下载、Excel导入、Excel导出。 go-zero微服务入门教程&#xff1a;https://blo…

Mysql学习(九)——存储引擎

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 七、存储引擎7.1 MySQL体系结构7.2 存储引擎简介7.3 存储引擎特点7.4 存储引擎选择7.5 总结 七、存储引擎 7.1 MySQL体系结构 连接层&#xff1a;最上层是一些客户…

Web前端大结局:揭秘四重境界、五大法则、六大技巧与七大未来趋势

Web前端大结局&#xff1a;揭秘四重境界、五大法则、六大技巧与七大未来趋势 在浩瀚无垠的互联网世界中&#xff0c;Web前端技术以其独特的魅力&#xff0c;吸引着无数开发者投身其中。今天&#xff0c;我们将一起揭开Web前端的大结局&#xff0c;深入探讨其四重境界、五大法则…

自然语言处理领域的重大挑战:解码器 Transformer 的局限性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

MFC四种方法编写多线程

本文以四个demo为例&#xff0c;对MFC的多线程进行学习。学习的过程中写了四个demo&#xff0c;将其做成笔记&#xff0c;发布在csdn上面。 mfc多线程demo1 volatile BOOL m_bRun; CEdit* edit; void ThreadFunc(){CTime time;CString strTime;m_bRun true;while(m_bRun){ti…

聚焦赛宁网安竞赛平台+赛事服务,引领网络安全竞赛新潮流

第八届XCTF总决赛将在2024年6月22日于中国成都震撼开启&#xff0c;本届总决赛分为个人Live Solo和团队KOH巅峰对决两个赛道&#xff0c;从个人和团队多角度全方位考察参赛人员的竞技水平。 巅峰对决 智慧的火花在此碰撞 个人Live Solo赛制 Live Solo赛分为晋级赛和Solo赛。…

贝壳APP渗透测试WP

前期配置 环境说明 使用PIXEL 4手机&#xff0c;为Android 12系统 APP名为贝壳找房&#xff0c;包名com.lianjia.beike&#xff0c;版本号3.01.10&#xff0c;截至2024/05/07为最新版&#xff0c;小米应用市场下载 绕过反Frida机制 可以参考往期推送&#xff0c;《绕过最新…

2分钟用手机开发一个ChatBot

前言&#xff1a; 在上一期&#xff0c;我们测评了CodeFlying&#xff0c;用它开发出了一个复杂推文管理系统&#xff0c;然后体验了一下它的热门应用&#xff1a;AI智能机器人。今天咱就继续用CodeFlying来开发一个属于我们自己的聊天机器人。 老规矩&#xff0c;我们先在手机…