OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6787|回复: 3

关于gpio_request 和gpio_direction_input函数疑问

[复制链接]

6

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2020-6-8
在线时间
28 小时
发表于 2021-1-5 10:53:56 | 显示全部楼层 |阅读模式
5金钱
1、在给函数传参是,只传入gpio的标号,哪函数如何确定是gpio1还是gpio5的呢。
2、还是说在同一个设备树
    eg:cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;cd-gpios只能存在gpio1的引脚;
          gpio5的引脚需要新的一个描述。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-1-6 01:39:48 | 显示全部楼层
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2021-1-6 11:48:25 | 显示全部楼层
传统的GPIO接口是从0开始排数字,取决于一组GPIO有8个或16个或32个端口,你需要自己手动计算需要的号码。
比如我的芯片一组GPIO有8个端口,那么GPIO5_4的号码就是44(=5*8+4),如图:

  1. ~ # ls -l /sys/class/gpio/
  2. total 0
  3. --w-------    1 root     root          4096 Jan  1  1970 export
  4. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip0 -> ../../devices/soc/soc:amba/12140000.gpio_chip/gpio/gpiochip0
  5. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip104 -> ../../devices/soc/soc:amba/1214d000.gpio_chip/gpio/gpiochip104
  6. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip112 -> ../../devices/soc/soc:amba/1214e000.gpio_chip/gpio/gpiochip112
  7. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip128 -> ../../devices/soc/soc:amba/12150000.gpio_chip/gpio/gpiochip128
  8. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip16 -> ../../devices/soc/soc:amba/12142000.gpio_chip/gpio/gpiochip16
  9. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip24 -> ../../devices/soc/soc:amba/12143000.gpio_chip/gpio/gpiochip24
  10. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip32 -> ../../devices/soc/soc:amba/12144000.gpio_chip/gpio/gpiochip32
  11. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip40 -> ../../devices/soc/soc:amba/12145000.gpio_chip/gpio/gpiochip40
  12. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip48 -> ../../devices/soc/soc:amba/12146000.gpio_chip/gpio/gpiochip48
  13. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip56 -> ../../devices/soc/soc:amba/12147000.gpio_chip/gpio/gpiochip56
  14. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip64 -> ../../devices/soc/soc:amba/12148000.gpio_chip/gpio/gpiochip64
  15. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip72 -> ../../devices/soc/soc:amba/12149000.gpio_chip/gpio/gpiochip72
  16. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip8 -> ../../devices/soc/soc:amba/12141000.gpio_chip/gpio/gpiochip8
  17. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip80 -> ../../devices/soc/soc:amba/1214a000.gpio_chip/gpio/gpiochip80
  18. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip88 -> ../../devices/soc/soc:amba/1214b000.gpio_chip/gpio/gpiochip88
  19. lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpiochip96 -> ../../devices/soc/soc:amba/1214c000.gpio_chip/gpio/gpiochip96
  20. --w-------    1 root     root          4096 Jan  1  1970 unexport
  21. ~ #
复制代码


新版的Linux一般不建议用这种方式使用GPIO,而是改用设备树管理,用到时根据名字去申请,比如:
  1. my_cd_gpio = devm_gpiod_get(&pdev->dev, "cd");
复制代码

意思是申请这个设备下属的名为"cd"的gpio,会得到struct gpio_desc *的结构,后续可以用gpiod_set_value/gpiod_direction_input等新版gpiod_*系列接口操作它
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
482
金钱
482
注册时间
2021-1-16
在线时间
52 小时
发表于 2021-3-3 15:13:42 | 显示全部楼层
楼上正解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 22:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表