LINUX.ORG.RU

Драйвер cp210x.c - управление GPIO из userspace

 ,


0

0

День добрый. В ядре есть драйвер cp210x.c в котором есть функции для работы с gpio (начинаются с cp210x_gpio_). Они нужны для для управления gpio-выходами преобразователей USB-to-UART, в моём случае это CP2102N. Судя по тому, что в файл дефайнится <linux/gpio/driver.h>, должен быть какой-то стандартный способ. Но при подключении CP2102N новый gpiochip в /sys/class/gpio/ не появляется, новомодный uapi - то же самое, устройство gpiochip в /dev/ не появляется. Утилиты lsgpio/gpiodetect/gpioinfo видят только 2 устройства, относящиеся к материнской плате. Система - десктопная Ubuntu, ядро 4.15, CONFIG_GPIOLIB включен. Вопрос - а как до этих функций достучаться из userspace, чтобы поуправлять gpio?

День добрый. В ядре есть драйвер cp210x.c в котором есть функции для работы с gpio

/*
 * This function is for configuring GPIO using shared pins, where other signals
 * are made unavailable by configuring the use of GPIO. This is believed to be
 * only applicable to the cp2105 at this point, the other devices supported by
 * this driver that provide GPIO do so in a way that does not impact other
 * signals and are thus expected to have very different initialisation.
 */

Я так понял, что это только для cp2105

arson ★★★★★ ()
Ответ на: комментарий от arson

Это примечание к функции cp2105_shared_gpio_init, т.к. она специфична для cp2105 (у неё gpio объединены с DTR/DSR). Для остальных чипов используются функции, начинающиеся с cp210x_gpio_*

arhiv_6 ()
Ответ на: комментарий от arhiv_6

Для остальных чипов они, судя по всему, вообще не используются, например cp210x_gpio_request()

есть только в cp2105_shared_gpio_init()

которая вызывается из cp210x_attach()

только если (priv->partnum == CP210X_PARTNUM_CP2105)

alx777 ()
Ответ на: комментарий от arhiv_6

Пока не попало в мейнлайн, а руками патчить ядро ради этого дела обычно очень не хочется. Да и не всегда есть банально возможность.

ncrmnt ★★★★★ ()
Последнее исправление: ncrmnt (всего исправлений: 1)