gpiod_get_array_optional(9)
π gpiod_get_array_optional π
okay so real talk, this is a page from the Kernel API Manual β yes we're in kernel land, bestie, put your hair up β and it's about gpiod_get_array_optional, which grabs you multiple GPIOs from a multi-index GPIO function. icon behavior tbh π
β¨ SYNOPSIS β¨
struct gpio_descs * gpiod_get_array_optional (struct device *dev , const
char *con_id , enum gpiod_flags flags );
like, look at her. she's giving "i return a whole struct of descriptors" energy and honestly? slay π
πΈ ARGUMENTS πΈ
devβ the GPIO consumer. and get this: it can beNULLfor system-global GPIOs. so if you've got no device, no problem, she still ate πcon_idβ the function within the GPIO consumer. basically which function you're asking about, iykyk.flagsβ optional GPIO initialization flags. optional! she's flexible like that β¨
π¦ DESCRIPTION π¦
okay so this is literally the same as gpiod_get_array, no cap. same energy, same vibe, same everything β with exactly one iconic difference: when no GPIO was assigned to the requested function, she returns NULL instead of getting all dramatic about it. lowkey the most chill function in the whole gpio library ngl π«Ά
that's it. that's the whole personality. NULL = "no GPIOs were assigned bestie, we're good, not an error" β¨
π RETURN π
what you get back, in order of drama:
- the GPIO descriptors corresponding to the function
con_idof devicedevβ the main character outcome π NULLif no GPIO has been assigned to the requested function β the "it's fine, everything's fine" outcome πΈ- or another
IS_ERRcode if an error occurred while trying to acquire the GPIOs β the "okay something actually went wrong" outcome π
bestie please check that IS_ERR value, do not just rawdog the pointer fr fr
π SEE ALSO π
this list is long long, but we don't skip anything on this page, periodt. she's in the kernel file ./drivers/gpio/gpiolib.c:
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_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_put(9)gpiod_put_array(9)
like yeah. all of them. read them, memorise them, or at least know they exist π
π§ and when you're done using these descriptors, gpiod_put_array(9) is right there β free your GPIOs, bestie, don't leak them, that's not the vibe π
okay that's the whole page!! π this little gem lives in ./drivers/gpio, and the page itself is dated October 2026 β so yeah, she's from the future and still slaying. bye bestie, go grab your GPIO arrays πβ¨π
π¦ 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