STRUCT ABX500_PINCTRL_SOC_DATA(9)
π 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 inpins.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 ingroups.
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
- 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