gpiochip_se...ical_irqchip(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ gpiochip_set_hierarchical_irqchip β€” straight from the Kernel API Manual, bestie πŸ’…

okay so picture this: you're deep in ./drivers/gpio land and you need a hierarchical irqchip wired up to a gpiochip. that's literally the whole gig. no cap, this one's a one-trick pony and it's iconic for it. ✨


✨ NAME ✨

gpiochip_set_hierarchical_irqchip β€” connects a hierarchical irqchip to a gpiochip 🫢

like, it's the matchmaker. gpiochip meets irqchip, hierarchy happens, slay.


🌸 SYNOPSIS 🌸

void gpiochip_set_hierarchical_irqchip (struct gpio_chip *gc , struct irq_chip *irqchip );

returns void btw, so don't go looking for a return value, there isn't one, periodt. πŸ’€


πŸŽ€ ARGUMENTS πŸŽ€

  • gc β€” the gpiochip you're setting the irqchip hierarchical handler to. this is the main character of the operation, ngl. πŸ‘‘
  • irqchip β€” the irqchip that handles this level of the hierarchy. the interrupt will then percolate up to the parent β˜•οΈ β€” yes, "percolate", the kernel said it, not me, and honestly? it's giving coffee machine energy and i'm obsessed. 🌈

πŸ”₯ SEE ALSO πŸ”₯

bestie. sit down. this list is long and i refuse to gatekeep a single name from it, so here we go, kernel file ./drivers/gpio/gpiolib.c and everything in it that's vibing nearby:

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)

still with me? good. more icons coming through πŸ’–

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)

the irq-adjacent girlies 🧚:

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)

getters and setters, the whole clique 🌸:

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)

the sleepier side of the group chat 😴 (they literally have _cansleep in the name, respect it):

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)

and the finale, the lookup-and-hog crowd, no crumbs left πŸ“:

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)


lowkey reminder bestie: this page is only about hooking a hierarchical irqchip onto a gpiochip. everything above lives in ./drivers/gpio/gpiolib.c β€” go read those for the actual lore, i'm just the messenger πŸ’…

and that's the whole page, fr fr β€” living in ./drivers/gpio, dated October 2026, brought to you by the Kernel API Manual. mwah, go touch some GPIOs πŸŽ€πŸ’œπŸ¦‹

πŸ“¦ where this page comes from