fwnode_gpiod_get_index(9)
π fwnode_gpiod_get_index(9) β Kernel API Manual π
β¨ NAME β¨
fwnode_gpiod_get_index β obtain a GPIO from firmware node. That's literally the whole name vibe, bestie: it grabs a GPIO from a firmware node.
π SYNOPSIS π
struct gpio_desc * fwnode_gpiod_get_index (struct fwnode_handle *fwnode
, const char *con_id , int index , enum gpiod_flags flags , const char
*label );
π ARGUMENTS π
fwnodeβ handle of the firmware node.con_idβ function within the GPIO consumer.indexβ index of the GPIO to obtain for the consumer.flagsβ GPIO initialization flags.labelβ label to attach to the requested GPIO.
π¦ DESCRIPTION π¦
Okay so this function is for drivers that get their configuration from opaque firmware. Very mysterious, very main character energy.
The function properly finds the corresponding GPIO using whatever is the underlying firmware interface, and then makes sure that the GPIO descriptor is requested before it is returned to the caller. Like, it does the finding and the requesting, and only then hands it over. Obsessed with the follow-through. π«Ά
In case of error an ERR_PTR is returned. Yep, that's the tea.
πΈ RETURN πΈ
On successful request the GPIO pin is configured in accordance with provided flags. Slay. That's the successful-request situation, and the flags are the ones calling the shots.
Reminder from the DESCRIPTION bestie: in case of error an ERR_PTR is returned.
π₯ SEE ALSO π₯
Kernel file ./drivers/gpio/gpiolib.c plus the whole linked bestie squad, in the exact order we stan:
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),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)
Cute sign-off time: source/version is ./drivers/gpio, date is October 2026, and this iconic page is fwnode_gpiod_get_index(9) ππ
π¦ 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