gpiod_get() - How to get GPIO from chip & offset?
Ian Pilcher
arequipeno at gmail.com
Sun Aug 7 10:55:32 EDT 2022
I am trying to figure out how to use gpiod_get(), or one of its
variants, to get the descriptor (struct gpio_desc *) for a specific
GPIO. Getting a reference to the GPIO chip (struct gpio_chip *) is
straightforward, and it provides a pointer to the device (.parent), but
I absolutely cannot figure out what I am supposed to pass as the
*con_id* argument.
I know the offset of the GPIO on the chip, but I can't figure out how to
use that.
Ultimately, my goal is to set the direction of the GPIO from within a
"board setup" module.
BACKGROUND
I maintain an out-of-tree "board" module[1] that sets up the GPIOs and
LEDs on my Thecus NAS. I am in the process of upgrading the OS on the
NAS, which will require me to change the user-space daemon from the old
sysfs GPIO interface to the new (non-ancient?) gpiod interface.
One significant difference between the sysfs and gpiod interfaces, is
that the new interface does not seem to provide an easy way to set a
GPIO's direction (input/output) from a shell script[2]. Thus, I would
like the board module to do that, along with the other setup.
[1] https://github.com/ipilcher/n5550/blob/master/modules/n5550_board.c
[2] It may be possible to change a GPIO's direction from user space with
the C API, but doing it in the kernel module, which does all of the
other hardware configuration, seems like the most appropriate way.
--
========================================================================
Google Where SkyNet meets Idiocracy
========================================================================
More information about the Kernelnewbies
mailing list