gpio_device_get_desc(9)
π gpio_device_get_desc(9) β like, the Kernel API Manual page, bestie
okay so picture this: you're deep in the kernel, you've got a GPIO device in your hands, and you need to turn a plain old hardware number into a real, actual descriptor. that's this function. it's giving "library card lookup but for pins" and honestly? iconic. β¨
πΈ NAME πΈ
gpio_device_get_desc β get the GPIO descriptor corresponding to the given hardware number for this GPIO device. literally it just hands you the descriptor for that chip, no drama π
π SYNOPSIS π
struct gpio_desc * gpio_device_get_desc (struct gpio_device *gdev ,
unsigned int hwnum );
π¦ ARGUMENTS π¦
gdevβ the GPIO device you're pulling the descriptor from. like, the chip in question π«Άhwnumβ the hardware number of the GPIO for this chip. the raw pin number, no filter, no vibes, just the number β¨
β RETURN β
a pointer to the GPIO descriptor π or EINVAL if no GPIO exists in the given chip for the specified hardware number or ENODEV if the underlying chip already vanished π (rip, it's gone, nothing we can do).
π₯ DESCRIPTION π₯
so here's the tea, and this part is important, do not skip: the reference count of struct gpio_device is *NOT* increased like when the GPIO is being requested for exclusive usage. not increased. not. at. all. π
it's up to the caller β that's you, bestie, yes you β to make sure the GPIO device will stay alive together with the descriptor returned by this function.
β οΈ no cap: this function does not keep gdev alive for you. the caller has to guarantee the GPIO device stays alive alongside the returned descriptor. if it vanishes, that's on you, not on the API. π
π SEE ALSO π
the whole friend group, fr fr. kernel file ./drivers/gpio/gpiolib.c plus all of these cuties:
gpio_to_desc(9), desc_to_gpio(9), gpiod_hwgpio(9), gpiod_to_chip(9),
gpiod_to_gpio_device(9), gpio_device_get_base(9),
gpio_device_get_label(9), gpio_device_get_chip(9),
gpiochip_find_base_unlocked(9), gpiod_is_equal(9),
gpiod_get_direction(9), gpiod_is_single_ended(9),
gpiochip_query_valid_mask(9), gpiochip_get_data(9), gpiochip_remove(9),
gpio_device_find(9), gpio_device_find_by_label(9),
gpio_device_find_by_fwnode(9), gpio_device_get(9), gpio_device_put(9),
gpio_device_to_device(9), gpiochip_set_hierarchical_irqchip(9),
gpiochip_irq_domain_activate(9), gpiochip_irq_domain_deactivate(9),
gpiochip_irq_map(9), gpiochip_add_irqchip(9), gpiochip_irqchip_remove(9),
gpiochip_irqchip_add_domain(9), gpiochip_generic_request(9),
gpiochip_generic_free(9), gpiochip_generic_config(9),
gpiochip_add_pingroup_range(9), gpiochip_add_pin_range_with_pins(9),
gpiochip_remove_pin_ranges(9), gpiochip_dup_line_label(9),
gpiochip_request_own_desc(9), gpiochip_free_own_desc(9),
gpio_set_debounce_timeout(9), gpiod_direction_input(9),
gpiod_direction_output_raw(9), gpiod_direction_output(9),
gpiod_enable_hw_timestamp_ns(9), gpiod_disable_hw_timestamp_ns(9),
gpiod_set_config(9), gpiod_set_debounce(9), gpiod_set_transitory(9),
gpiod_is_active_low(9), gpiod_toggle_active_low(9),
gpiod_get_raw_value(9), gpiod_get_value(9),
gpiod_get_raw_array_value(9), gpiod_get_array_value(9),
gpiod_set_raw_value(9), gpiod_set_value_nocheck(9), gpiod_set_value(9),
gpiod_set_raw_array_value(9), gpiod_set_array_value(9), gpiod_cansleep(9),
gpiod_set_consumer_name(9), gpiod_is_shared(9), gpiod_to_irq(9),
gpiochip_lock_as_irq(9), gpiochip_unlock_as_irq(9),
gpiod_get_raw_value_cansleep(9), gpiod_get_value_cansleep(9),
gpiod_get_raw_array_value_cansleep(9), gpiod_get_array_value_cansleep(9),
gpiod_set_raw_value_cansleep(9), gpiod_set_value_cansleep(9),
gpiod_set_raw_array_value_cansleep(9), gpiod_add_lookup_tables(9),
gpiod_set_array_value_cansleep(9), gpiod_add_lookup_table(9),
gpiod_remove_lookup_table(9), fwnode_gpiod_get_index(9), gpiod_count(9),
gpiod_get(9), gpiod_get_optional(9), gpiod_configure_flags(9),
gpiod_get_index(9), gpiod_get_index_optional(9), gpiod_hog(9),
gpiochip_free_hogs(9), gpiod_get_array(9), gpiod_get_array_optional(9),
gpiod_put(9), gpiod_put_array(9)
and that's the whole page bb, you ate that π«Άβ¨
this lil beauty lives in ./drivers/gpio, dated October 2026, and it's literally titled gpio_device_get_desc(9) β go forth and get those descriptors responsibly π
π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms