Я хочу использовать libgpiod
для управления несколькими GPIO через пользовательское пространство на настраиваемой плате. У меня есть процессор i.MX6UL, у которого сотни контактов, я буду использовать только 8 из них (как GPIO).
Я читал о libgpiod
, поскольку он заменяет старый sysfs API, и я рад, что вы можете указать метки для каждого GPIO. Блок GPIO процессора выглядит как следующий блок кода и уже имеет свойство gpio-controller
. (Взято из ядра Linux v4.14)
gpio2: gpio@20a0000 {
compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
reg = <0x020a0000 0x4000>;
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
gpio-ranges = <&iomuxc 0 49 16>, <&iomuxc 16 111 6>;
};
Я хочу использовать один вывод этого контроллера, поэтому добавил следующий блок:
&gpio2 {
resetl0 {
//gpio-hog;
output-high;
line-name = "COBO0_ResetL";
gpios = <15 1>;
};
};
Без свойства gpio-hog
инструмент gpioinfo
не может показать мне метки, то же самое, если я опущу высокий / низкий выход. С помощью свойства метка отображается правильно, но gpio помечен как used
, поэтому я не могу управлять из пользовательского пространства. (Устройство или ресурс заняты)
Короче говоря: мне нужен способ установить метку в дереве устройств, которую я могу читать из пользовательского пространства и управлять gpios. Я уже видел gpio-line-names
в дереве устройств RPi, но я не хочу указывать весь банк как NC при использовании только одного. Возможно ли это с libgpiod
? Как?