gpiod_count(9)
π gpiod_count β bestie's guide to counting GPIOs
okay so this is a page from the Kernel API Manual (that's the manual name, we're not copying the header line, we're being cute about it β¨), and it's about gpiod_count, which is genuinely one of the most "wait, how many??" functions in the whole GPIO library. Let's get into it π«Ά
β¨ NAME β¨
gpiod_count β it returns the number of GPIOs associated with a device or a function. that's it, that's the whole job, and honestly? iconic for it π
πΈ SYNOPSIS πΈ
int gpiod_count (struct device *dev , const char *con_id );
that's the whole signature, no cap. two arguments, both pointers, and it hands you back an int.
π ARGUMENTS π
devβ this is the GPIO consumer, fr fr. it's astruct device *and yes, it can beNULLβ and if you do that, you get the system-global GPIOs instead. so like, no device? no problem, you're just playing on hard mode globally πcon_idβ the function within the GPIO consumer. aconst char *holding the name of the function you're asking about. it's the "which one tho" of the operation π
π₯ RETURN π₯
it returns the number of GPIOs associated with that device / function β a plain, satisfying int β¨
BUT if no GPIO has been assigned to the function you asked about, you get -ENOENT π so like, always vibe check your return value, because it's not always a happy little count. it could be a negative errno. check it. please. i'm begging π«Ά
π¦ SEE ALSO π¦
okay bestie this list is long, but every single one of these is a real friend of the family and i'm not skipping a single one, periodt. they all live 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_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)
like i said. long list. every name there though, not one dropped, i would never π
ok tiny note that this whole page is sourced from./drivers/gpio, and it's dated October 2026 π β and the manual we've been living in isgpiod_count(9). mwah, stan, go count some GPIOs bestie ππ
π¦ 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