STRUCT ABX500_PINCTRL_SOC_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct abx500_pinctrl_soc_data(9) πŸ’–

okay bestie, so this is a page from the Kernel API Manual and it's literally all about struct abx500_pinctrl_soc_data β€” the per-SoC config for the ABx500 pin controller. yeah. we're doing pin controllers today. slay πŸŽ€


✨ NAME ✨

struct abx500_pinctrl_soc_data β€” the ABx500 pin controller's per-SoC configuration. it's giving "every chip brings its own vibe" πŸ¦‹


🌸 SYNOPSIS 🌸

struct abx500_pinctrl_soc_data {
    const struct abx500_pinrange *gpio_ranges;
    unsigned gpio_num_ranges;
    const struct pinctrl_pin_desc *pins;
    unsigned npins;
    const struct abx500_function *functions;
    unsigned nfunctions;
    const struct abx500_pingroup *groups;
    unsigned ngroups;
    struct alternate_functions *alternate_functions;
    struct abx500_gpio_irq_cluster *gpio_irq_cluster;
    unsigned ngpio_irq_cluster;
    int irq_gpio_rising_offset;
    int irq_gpio_falling_offset;
    int irq_gpio_factor;
};

like, that's the whole struct. iconic. no cap πŸ’…


πŸ‘‘ Members πŸ‘‘

🌈 the array-and-counts portion

  • gpio_ranges β€” an array of the GPIO ranges for this SoC. it's the map, bestie πŸ—ΊοΈ
  • gpio_num_ranges β€” how many GPIO ranges this SoC has, i.e. how long that array is.
  • pins β€” an array describing all the pins the pin controller touches. ⚠️ important detail: every pin that's also a GPIO has to be listed first in this array, and its numbering must match the GPIO controller's numbering exactly. like, identical. do not freestyle this one 😭
  • npins β€” the number of entries in pins.
  • functions β€” the functions that are supported on this SoC. it's giving "what this chip can actually do" ✨
  • groups β€” an array describing all the pin groups this pin SoC supports.
  • ngroups β€” the number of entries in groups.
btw, nfunctions is sitting right there in the struct above and the man page doesn't give it its own little description. so don't come for me β€” I'm not gonna make one up πŸ’€ what you see in the SYNOPSIS is what you get.

πŸ¦‹ the alternates-and-interrupts portion

  • alternate_functions β€” an array describing which pins support an alternate, and how to set it. the "and how to set it" part is doing a lot of work here, lowkey πŸŽ€
  • gpio_irq_cluster β€” an array of the GPIO interrupt–capable stuff for this SoC.
  • ngpio_irq_cluster β€” the number of GPIO interrupt–capable entries for this SoC. (the man page spells it "inetrrupt" and honestly? relatable typo, we've all been there πŸ™ˆ)
  • irq_gpio_rising_offset β€” interrupt offset used as the base for computing the specific setting strategy of the rising interrupt line πŸ“ˆ
  • irq_gpio_falling_offset β€” interrupt offset used as the base for computing the specific setting strategy of the falling interrupt line πŸ“‰
  • irq_gpio_factor β€” the factor used to compute the specific setting strategy of the interrupt line. it's the multiplier. it's the moment. ⭐

πŸ’œ SEE ALSO πŸ’œ

go peek at the kernel file ./drivers/pinctrl/nomadik/pinctrl-abx500.h, and then go read up on all these cuties:

  • struct abx500_function(9)
  • struct abx500_pingroup(9)
  • struct alternate_functions(9)
  • struct abx500_gpio_irq_cluster(9)
  • struct abx500_pinrange(9)

and that's the page!! 🫢 it lives over in ./drivers/pinctrl/nomadik, it's dated October 2026, and the header/footer vibe is struct abx50...trl_soc_data(9) β€” yes the truncation is canon, we don't fix it, we respect it πŸ’– mwah, go configure some pins πŸ§šβ€β™€οΈπŸŒΈ

πŸ“¦ where this page comes from