STRUCT AT91_PINCTRL_MUX_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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