在目前的Qualcom平台B系列芯片组上,我们使用pinctrl框架来控制内核的gpio。
无法控制gpio的问题。 需要按照下面的步骤来解释原因。
1.首先添加下面的调试代码,看是否有一些未知的模块是控制gpio的,这里以gpio38作为exmaple
如果有调试信息有控制gpio的调用堆栈,那么你需要检查不应该控制gpio的代码并删除它
2.如果没有明显的控制gpio输出的调试信息,那么我认为你需要删除/ firmware / images下的所有image再次测试。 如果你可以控制gpio,那么意味着一些子系统正在控制这个gpio,然后你逐个添加删除image来找出哪个子系统正在控制它。
3.如果你仍然无法控制这个GPIO,那么我认为首先你需要检查你是否添加了不使用pinctrl来控制GPIO的代码, 如果你确认没有添加任何旁路pinctrl的代码,请移动到下一个。
4.由于所有软件控制路径都已经过验证,所以现在需要删除此GPIO上的所有连接以再次测试GPIO。 如果你可以控制的GPIO。那么你需要联系你的硬件团队来检查你的硬件,并让你的硬件团队知道你的gpio配置(方向/拉式/驱动程序的强度)。 如果你仍然无法控制gpio,那么你需要读取芯片组的gpio寄存器软件界面(通常TLMM部分)来加倍你的gio配置。
5.一个特别的,请确认你的gpio是否只能在电源崩溃后才能控制,如果是的话,请先禁用free_io进行测试, 这只是测试,如果工作的话需要和你的硬件小组核对是否需要外部拉动
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25391 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!