gpio_device_get_chip(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 NAME 🌸

gpio_device_get_chip β€” bestie, this one hands you the gpio_chip implementation that's backing this GPIO device πŸ’…

okay so quick housekeeping: we're in section 9 of the Kernel API Manual today, and the star of the show is gpio_device_get_chip. she's… a lot. stay with me 🫢


✨ SYNOPSIS ✨

struct gpio_chip * gpio_device_get_chip (struct gpio_device *gdev );

that's it. one function, one argument, one pointer, one vibe check πŸ”₯


πŸŽ€ ARGUMENTS πŸŽ€

  • gdev β€” the GPIO device πŸ’– like, the actual device you're poking at. that's the whole input, no surprises.

πŸ¦‹ RETURN πŸ¦‹

the address of the GPIO chip that's backing this device. a pointer. the address. that's the return value, periodt πŸ‘‘


πŸ’€ DESCRIPTION πŸ’€

DEPRECATED. not me delivering the bad news first but yeah, she's deprecated 😭

so here's the situation: until we can get rid of all the non-driver users of struct gpio_chip, we have to keep a way around to retrieve the pointer to it from struct gpio_device. that's literally why this function exists. it is a compatibility shim and it knows it πŸ™ˆ

and here's the part where you sit down: this is NOT safe. like, not safe at all. the GPIO API is considered to be hot-unpluggable, which means the chip can dissapear at any moment β€” unlike the reference-counted struct gpio_device, which at least has its life together πŸ’…

⚠️ so the chip you just grabbed a pointer to? could be gone. poof. no cap. Use at your own risk. ⚠️

🌈 SEE ALSO 🌈

Kernel file ./drivers/gpio/gpiolib.c, plus the whole extended friend group iykyk:

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), 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_get_array_optional(9), gpiod_put(9), gpiod_put_array(9)


and that's the page!! 🌸 this whole thing lives under ./drivers/gpio, it's dated October 2026, and yeah β€” it's gpio_device_get_chip(9) all the way down. now go forth and use it at your own risk bestie πŸ’–βœ¨

πŸ“¦ where this page comes from