OpenEdv-开源电子网

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

of_get_named_gpio与gpio_request的疑问

[复制链接]

5

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-3-27
在线时间
127 小时
发表于 2019-11-19 09:32:47 | 显示全部楼层 |阅读模式
1金钱
如图文档说明说明。实际使用中LED实验和Key实验对比:        获取设备树中的gpio属性,得到LED所使用的LED编号 */        gpioled.led_gpio = of_get_named_gpio(gpioled.nd, "led-gpio", 0);
        if(gpioled.led_gpio < 0) {
                printk("can't get led-gpio");
                return -EINVAL;
        }

/* 提取GPIO */
        for (i = 0; i < KEY_NUM; i++) {
                keyinputdev.irqkeydesc.gpio = of_get_named_gpio(keyinputdev.nd ,"key-gpio", i);
                if (keyinputdev.irqkeydesc.gpio < 0) {
                        printk("can't get key%d\r\n", i);
                }
        }
        /* 初始化key所使用的IO,并且设置成中断模式 */
        for (i = 0; i < KEY_NUM; i++) {
                memset(keyinputdev.irqkeydesc.name, 0, sizeof(name));        /* 缓冲区清零 */
                sprintf(keyinputdev.irqkeydesc.name, "KEY%d", i);                /* 组合名字 */
                gpio_request(keyinputdev.irqkeydesc.gpio, name);
                gpio_direction_input(keyinputdev.irqkeydesc.gpio);       
                keyinputdev.irqkeydesc.irqnum = irq_of_parse_and_map(keyinputdev.nd, i);
        }


在LED实验中并没有申请,而在key实验中进行了申请。因此有疑问



Snipaste_2019-11-19_09-27-09.png

最佳答案

查看完整内容[请看2#楼]

led实验忘记加上gpio_request,但是原子在设备树中删除了跟这个GPIO有冲突的所有其他使用,所以不会有影响的。这里就是原子的教程说的一定要“检查pin是否被其他外设所使用,如果有则删除它”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2019-11-19 09:32:48 | 显示全部楼层
led实验忘记加上gpio_request,但是原子在设备树中删除了跟这个GPIO有冲突的所有其他使用,所以不会有影响的。这里就是原子的教程说的一定要“检查pin是否被其他外设所使用,如果有则删除它”
回复

使用道具 举报

5

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-3-27
在线时间
127 小时
 楼主| 发表于 2019-11-19 10:30:04 | 显示全部楼层
szczyb1314 发表于 2019-11-19 09:42
led实验忘记加上gpio_request,但是原子在设备树中删除了跟这个GPIO有冲突的所有其他使用,所以不会有影响的 ...

哦,明白了,gpio_request相当于验证当前io是否已经被占用,谢谢了。
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-20 16:00:11 | 显示全部楼层
帮顶         
成功没有捷径
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2020-5-8
在线时间
28 小时
发表于 2020-10-27 10:15:27 | 显示全部楼层
szczyb1314 发表于 2019-11-19 09:32
led实验忘记加上gpio_request,但是原子在设备树中删除了跟这个GPIO有冲突的所有其他使用,所以不会有影响的 ...

那gpio_request(keyinputdev.irqkeydesc.gpio,   name)中的name在函数里都没有赋值,是不是可以取任何名字?还是要和设备树中的label的值一致?
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-10-27 10:36:26 | 显示全部楼层
p城伽蓝院士 发表于 2020-10-27 10:15
那gpio_request(keyinputdev.irqkeydesc.gpio,   name)中的name在函数里都没有赋值,是不是可以取任何名 ...

应该是想用(keyinputdev.irqkeydesc.name来着,这里的name都没有赋值过,系统应该会用默认值吧,你可以试试来着
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
161
金钱
161
注册时间
2020-5-8
在线时间
28 小时
发表于 2020-10-29 19:44:31 | 显示全部楼层
szczyb1314 发表于 2020-10-27 10:36
应该是想用(keyinputdev.irqkeydesc.name来着,这里的name都没有赋值过,系统应该会用默认值吧,你可以试 ...

感谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 18:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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