STRUCT AT91_PINCTRL_MUX_OPS(9)
π struct at91_pinctrl_mux_ops β the AT91 mux ops glow-up
okay bestie, welcome to the Kernel API Manual, section 9. today's main character is struct at91_pinctrl_mux_ops, and honestly? it's giving "the glow-up era of AT91 pinctrl." β¨
π¦ NAME
struct at91_pinctrl_mux_ops β describes an AT91 mux ops group on new IP. with support for periph C and D, the way to mux in periph A and B has changed, so provide the right call back. if a callback isn't present, that means the IP does not support it. periodt. π
πΈ SYNOPSIS
struct at91_pinctrl_mux_ops {
enum at91_mux (*get_periph)(void __iomem *pio, unsigned mask);
void (*mux_A_periph)(void __iomem *pio, unsigned mask);
void (*mux_B_periph)(void __iomem *pio, unsigned mask);
void (*mux_C_periph)(void __iomem *pio, unsigned mask);
void (*mux_D_periph)(void __iomem *pio, unsigned mask);
bool (*get_deglitch)(void __iomem *pio, unsigned pin);
void (*set_deglitch)(void __iomem *pio, unsigned mask, bool is_on);
bool (*get_debounce)(void __iomem *pio, unsigned pin, u32 *div);
void (*set_debounce)(void __iomem *pio, unsigned mask, bool is_on, u32 div);
bool (*get_pulldown)(void __iomem *pio, unsigned pin);
void (*set_pulldown)(void __iomem *pio, unsigned mask, bool is_on);
bool (*get_schmitt_trig)(void __iomem *pio, unsigned pin);
void (*disable_schmitt_trig)(void __iomem *pio, unsigned mask);
unsigned (*get_drivestrength)(void __iomem *pio, unsigned pin);
void (*set_drivestrength)(void __iomem *pio, unsigned pin, u32 strength);
unsigned (*get_slewrate)(void __iomem *pio, unsigned pin);
void (*set_slewrate)(void __iomem *pio, unsigned pin, u32 slewrate);
int (*irq_type)(struct irq_data *d, unsigned type);
};
like, look at all those function pointers. it's a whole roster. a whole squad. π«Ά
π Members
here's the cast, bestie β every single one, no skips:
get_periphβ return the periph mode configured.mux_A_periphβ mux as periph A.mux_B_periphβ mux as periph B.mux_C_periphβ mux as periph C.mux_D_periphβ mux as periph D.get_deglitchβ get deglitch status.set_deglitchβ enable/disable deglitch.get_debounceβ get debounce status.set_debounceβ enable/disable debounce.get_pulldownβ get pulldown status.set_pulldownβ enable/disable pulldown.get_schmitt_trigβ get schmitt trigger status.disable_schmitt_trigβ disable schmitt trigger.get_drivestrengthβ get driver strength.set_drivestrengthβ set driver strength.get_slewrateβ get slew rate.set_slewrateβ set slew rate.irq_typeβ return irq type.
π©· remember the NAME-section rule: if a call back is not present, that means the IP does not support it. no callback = no vibes for that feature, and that's not a bug, that's just the hardware.
π₯ SEE ALSO
go read these, iykyk:
- Kernel file
./drivers/pinctrl/pinctrl-at91.c struct at91_gpio_chip(9)struct at91_pmx_func(9)struct at91_pmx_pin(9)struct at91_pin_group(9)
that's the whole page, bestie π this icon lived in ./drivers/pinctrl, dated October 2026, and it will forever be struct at91_pinctrl_mux_ops(9) in our hearts. mwah. ππ¦π
π¦ 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