gpiochip_request_own_desc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ NAME πŸŽ€

okay bestie, we're in the Kernel API Manual and this page is gpiochip_request_own_desc(9). It's giving β€œthe GPIO chip wants to request its own descriptor” energy, and honestly? slay. πŸ’…

gpiochip_request_own_desc β€” allow a GPIO chip to request its own descriptor. The chip is the main character here, periodt. πŸ‘‘

✨ SYNOPSIS ✨

the signature, untouched and iconic:

struct gpio_desc * gpiochip_request_own_desc (struct gpio_chip *gc ,
       unsigned int hwnum , const char *label , enum gpio_lookup_flags lflags ,
       enum gpiod_flags dflags );

🫢 ARGUMENTS 🫢

  • gc β€” GPIO chip. The boss of the lines. πŸ‘‘
  • hwnum β€” hardware number of the GPIO for which to request the descriptor. literally the hardware number, no cap. πŸ”’
  • label β€” label for the GPIO. give it a name so it can live its truth. 🏷️
  • lflags β€” lookup flags for this GPIO or 0 if default, this can be used to specify things like line inversion semantics with the machine flags such as GPIO_OUT_LOW.
  • dflags β€” descriptor request flags for this GPIO or 0 if default, this can be used to specify consumer semantics such as open drain.

🌸 DESCRIPTION 🌸

Function allows GPIO chip drivers to request and use their own GPIO descriptors via the gpiolib API. so, like, the chip driver gets to handle its own lines through gpiolib β€” self-sufficient queen behavior. πŸ’–

the difference from gpiod_request is the whole plot twist: this function will not increase the reference count of the GPIO chip module. that means the GPIO chip module can be unloaded as needed. and yes, the assumption is baked in: we assume that the GPIO chip driver handles freeing the GPIOs it has requested. 🫢

πŸ”₯ RETURN πŸ”₯

return vibe: a pointer to the GPIO descriptor, or an ERR_PTR-encoded negative error code on failure. that's the tea. πŸ«–

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/gpio/gpiolib.c is the home base, and the whole related-API squad is: gpio_to_desc(9), gpio_device_get_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_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).


source/version tea: ./drivers/gpio · date: October 2026 · page: gpiochip_request_own_desc(9). footer done, periodt. 🫢✨

πŸ“¦ where this page comes from