gpiod_get_index_optional(9)
β¨ gpiod_get_index_optional β¨
okay so bestie, welcome to the Kernel API Manual π
this is the page for gpiod_get_index_optional(9) and honestly? it's giving "i handle optional things so you don't have to" β¨
πΈ NAME πΈ
gpiod_get_index_optional β obtain an optional GPIO from a multi-index GPIO function π
π¦ SYNOPSIS π¦
struct gpio_desc * gpiod_get_index_optional (struct device *dev , const
char *con_id , unsigned int index , enum gpiod_flags flags );
π ARGUMENTS π
devβ the GPIO consumer, and yes bestie it can beNULLfor system-global GPIOs πcon_idβ the function within the GPIO consumer, like which vibe this GPIO is serving πindexβ the index of the GPIO to obtain in the consumer, iykyk π§flagsβ optional GPIO initialization flags, the little settings bestie π
π₯ DESCRIPTION π₯
So this function is literally equivalent to gpiod_get_index, except β and this is the main character moment β when no GPIO with the specified index was assigned to the requested function, it will return NULL π
That's it. That's the whole flex. It's convenient for drivers that need to handle optional GPIOs, so like, if the GPIO isn't there? no drama, no crash, just NULL and you move on with your life β¨
Not me being obsessed with how chill that is π«Ά
β RETURN β
so what do you get back, bestie? a few possibilities:
- A valid GPIO descriptor π (slay)
NULLif no GPIO has been assigned to the requested function and/orindexπ (the optional vibe check failing, no cap)- or another
IS_ERRcode if an error occurred while trying to acquire the GPIO π (something went wrong, fr fr)
ok but seriously β don't just check forNULL, check forIS_ERRtoo, because errors are a whole different thing and you don't want to be caught lacking π
π SEE ALSO π
okay so this list is LONG but every single one of these is important so we're listing them all, periodt π
the kernel file is ./drivers/gpio/gpiolib.c and here is the whole friend group:
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_hog(9), gpiochip_free_hogs(9), gpiod_get_array(9), gpiod_get_array_optional(9), gpiod_put(9), gpiod_put_array(9)
like, that's the whole contact list bestie, all the GPIO besties you could ever need π
and that's the page! π from ./drivers/gpio, Kernel API Manual, dated October 2026 β go get your optional GPIOs bestie, you got this, periodt β¨π
π
π¦ 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