gpio 输出模式不生效


在高通平台遇到的一个问题:

一个gpio 63, 在 dts 中配置了,在驱动中能读到这个 gpio , 然后 gpio_request, gpio_direction_output, 都检查返回值,没有报错,但是 通过

gpio_get_value 得到的值就是不生效。

首先 检查函数的返回值, 比如 gpio_request,可能这是只能表示 这个 gpio 被其他模块占用,功能还是gpio, 设置output 应该可以生效。

在 dts 中搜索 tlmm 63, 确实也没有其他模块占用。

然后,应该是 pinmux 配置不对, 找到 msm8998-pinctrl.dtsi,搜索 gpio63, 配置不正确,修改为 gpio 配置后 ok。

 

结论: 设置gpio 需要先配置 pinmux, 再 检查 有没有被其它模块占用, 然后在 代码中 添加 该 gpio 的操作函数。另外,不同的平台设置

有可能不一样,我看 rk 平台的文档,里面说明 通过 gpio_request 这个函数设置首先会把 pinmux 配置为gpio,当时在 rk 平台用过

几个 gpio ,确实没有注意pinmux 的配置,就生效了,需要看 gpio_request 的函数的实现。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM