Linux kernel gpiod-在devicetree中使用标签

Linux kernel gpiod-在devicetree中使用标签,linux-kernel,embedded-linux,gpio,device-tree,Linux Kernel,Embedded Linux,Gpio,Device Tree,我想使用libgpiod通过自定义板上的用户空间控制几个GPIO。我有一个I.MX6UL处理器,它有数百个引脚,我将只使用其中的8个(作为GPIO) 我读到了关于libgpiod的内容,因为它正在取代旧的sysfsapi,我很高兴您可以为每个GPIO指定标签。处理器的GPIO块看起来像下面的代码块,并且已经设置了GPIO控制器属性。(摘自Linux内核v4.14) gpio2:gpio@20a0000 { compatible=“fsl,imx6ul gpio”,“fsl,imx35 gpio”

我想使用
libgpiod
通过自定义板上的用户空间控制几个GPIO。我有一个I.MX6UL处理器,它有数百个引脚,我将只使用其中的8个(作为GPIO)

我读到了关于
libgpiod
的内容,因为它正在取代旧的sysfsapi,我很高兴您可以为每个GPIO指定标签。处理器的GPIO块看起来像下面的代码块,并且已经设置了
GPIO控制器
属性。(摘自Linux内核v4.14)

gpio2:gpio@20a0000 {
compatible=“fsl,imx6ul gpio”,“fsl,imx35 gpio”;
reg=;
中断=,
;
gpio控制器;
#gpio细胞=;
中断控制器;
#中断单元=;
gpio范围=;
};
我想使用此控制器的单个引脚,因此我添加了以下块:

&gpio2{
重置10{
//gpio猪;
产量高;
行名称=“COBO0\u restel”;
gpios=;
};
};
如果没有
gpio hog
属性,那么
gpioinfo
工具将无法向我显示标签,如果我忽略了输出高/低,也是如此。使用该属性,标签可以正确显示,但gpio标记为
已使用
,因此我无法从用户空间进行控制。(设备或资源忙)

简言之:
我需要一种在设备树中设置标签的方法,我可以从用户空间读取标签并控制GPIO。我已经在RPi设备树中看到了
gpio行名称
,但我不想在只使用一个行时将整个行指定为NC。是否可以使用
libgpiod
?如何测试?

我在Odroid-N2内核v5.4上进行了测试

介子-g12b-odroid-n2.dts

&gpio{
gpio行名称=
/*GPIOZ*/
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
/*GPIOH*/
"", "", "", "", "", "", "", "",
"",
/*靴子*/
"", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "",
/*GPIOC*/
"", "", "", "", "", "", "", "",
/*GPIOA*/
"44", "46", "45", "47",
"26", "",   "",   "",
"",   "",   "",   "42",
"32", "7",  "27", "28",
/*GPIOX*/
"16", "18", "22", "11",
"13", "33", "35", "15",
"19", "21", "24", "23",
"8",  "0",  "29", "31",
"12", "3",  "5",  "36";
usb集线器{
gpio猪;
gpios=;
产量高;
line name=“usb集线器重置”;
};
};
gpioinfo的输出

gpiochip0-85行:
...
第20行:未命名的“usb集线器复位”输入激活高电平[已使用]
...
第49行:“44”未使用输入激活高电平
第50行:“46”未使用输入激活高电平
第51行:“45”未使用输入激活高电平
第52行:“47”未使用输入激活高电平
第53行:“26”未使用输入激活高电平
...
第60行:“42”未使用输入激活高电平
第61行:“32”未使用输入激活高电平
第62行:“7”未使用输入激活高电平
第63行:“27”未使用输入激活高电平
第64行:“28”未使用输入激活高电平
第65行:“16”未使用输入激活高电平
第66行:“18”未使用输入激活高电平
第67行:“22”未使用输入激活高电平
第68行:“11”未使用输入激活高电平
第69行:“13”未使用输入激活高电平
第70行:“33”未使用输入激活高电平
第71行:“35”未使用输入激活高电平
第72行:“15”未使用输入激活高电平
第73行:“19”未使用输入激活高电平
第74行:“21”未使用输入激活高电平
第75行:“24”未使用输入激活高电平
第76行:“23”未使用输入激活高电平
第77行:“8”未使用输入激活高电平
第78行:“0”未使用输入激活高电平
第79行:“29”未使用输入激活高电平
第80行:“31”未使用输入激活高电平
第81行:“12”未使用输入激活高电平
第82行:“3”未使用输入激活高电平
第83行:“5”未使用输入激活高电平
第84行:“36”未使用输入激活高电平
...

gpioinfo
将“gpio行名称”显示为名称,将“行名称”显示为使用者。

行的标签是提供者的属性,而不是使用者的属性。因此,您必须在GPIO控制器设备节点中定义标签。是的,这就是我在
GPIO行名称中提到的,但这是否意味着我必须为整个gpio2 IO库定义标签?谢谢,我最终得到了与我的案例相同的解决方案,尽管我觉得这不是一个好的解决方案。我更喜欢一种也适用于单针的方法。