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 的函数的实现。

posted @ 2020-06-03 11:46  mojl  阅读(1352)  评论(0编辑  收藏  举报