pinctrl和gpio子系统获取 GPIO 编号失败(嵌入式linux)

gpioled major = 249, minor = 0
can’t find led gpio
gpioled major = 248, minor = 0
------------[ cut here ]------------
WARNING: CPU: 0 PID: 68 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()
sysfs: cannot create duplicate filename ‘/class/gpioled’
Modules linked in: gpioled(O+)
CPU: 0 PID: 68 Comm: modprobe Tainted: G O 4.1.15 #4

出现了类似问题是因为of_get_named_gpio 函数申请gpio的编号失败了
在这里插入图片描述

解决方案

打开dts设备树文件查看相应节点

gpioled{
		compatible = "guozhijiang,gpioled";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpioled>;
		led-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
		status = "okay";
	};
	
	pinctrl_gpioled: ledgrp {
			fsl,pins = <
				MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x10b0
			>;
		};

1.of_get_named_gpio的输入参数要和节点对应,比如图中
“led-gpios”为第二个输入参数,填错的话回导致查找失败
2.检查复用,也就是pinctrl设置,全局搜索一下GPIO1_IO03有没有在其他pinctrl里面被使用过,把他注释掉
3.检查gpio使用,全局搜索gpio1 3,会发现&tsc{}节点里面用到了gpio1 3。这是恩智浦板子触摸屏使用的,我们直接注释掉就好了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值