STRUCT SAMSUNG_PINCTRL_DRV_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay so this is the struct samsung_pinctrl_drv_data(9) page from the Kernel API Manual β€” the header is all shy and shows struct sams...trl_drv_data(9), but it's her, the full name is struct samsung_pinctrl_drv_data πŸ’…

and what does she do? she's literally the wrapper for holding driver data together. that's the whole job. main character energy for samsung pinctrl driver data, periodt.


✨ SYNOPSIS ✨

struct samsung_pinctrl_drv_data {
    struct list_head                node;
    void __iomem                    *virt_base;
    struct device                   *dev;
    int irq;
    struct clk                      *pclk;
    struct pinctrl_desc             pctl;
    struct pinctrl_dev              *pctl_dev;
    const struct samsung_pin_group  *pin_groups;
    unsigned int                    nr_groups;
    const struct samsung_pmx_func   *pmx_functions;
    unsigned int                    nr_functions;
    struct samsung_pin_bank         *pin_banks;
    unsigned int                    nr_banks;
    unsigned int                    nr_pins;
    unsigned int                    pud_val[PUD_MAX];
    struct samsung_retention_ctrl   *retention_ctrl;
    void (*suspend)(struct samsung_pin_bank *bank);
    void (*resume)(struct samsung_pin_bank *bank);
 };

πŸŽ€ Members πŸŽ€

  • node β€” global list node. she links the whole vibe into the global list, lowkey essential.
  • virt_base β€” register base address of the controller. this will be equal to each bank's samsung_pin_bank->pctl_base and is used on legacy platforms (like S3C24XX or S3C64XX) which have to access the base through samsung_pinctrl_drv_data, not samsung_pin_bank. iconic legacy behavior, no cap.
  • dev β€” device instance representing the controller. main character device energy.
  • irq β€” the interrpt number used by the controller to notify gpio interrupts. (yes, "interrpt" is what the page says, and we're keeping it 🫢)
  • pclk β€” optional bus clock if required for accessing registers. only if she needs it, ngl.
  • pctl β€” pin controller descriptor registered with the pinctrl subsystem. she's registered, she's official.
  • pctl_dev β€” cookie representing pinctrl device instance. a whole cookie, iykyk.
  • pin_groups β€” list of pin groups available to the driver.
  • nr_groups β€” number of such pin groups. count them, bestie.
  • pmx_functions β€” list of pin functions available to the driver.
  • nr_pins β€” number of pins supported by the controller.
  • retention_ctrl β€” retention control runtime data.
  • suspend β€” platform specific suspend callback, executed during pin controller device suspend, see samsung_pinctrl_suspend.
  • resume β€” platform specific resume callback, executed during pin controller device suspend, see samsung_pinctrl_resume. (the original says suspend here too β€” copy-paste ate, but we're not fixing it πŸ’€)

also chillin' in the struct from the synopsis: nr_functions, pin_banks, nr_banks, and pud_val[PUD_MAX] β€” the original Members section doesn't give them their own blurbs, so we're not inventing any πŸ’…


🌈 SEE ALSO 🌈

all the siblings and references, from the Kernel file ./drivers/pinctrl/samsung/pinctrl-samsung.h:

  • enum pincfg_type(9)
  • enum eint_type(9)
  • struct samsung_pin_bank_type(9)
  • struct samsung_pin_bank_data(9)
  • struct samsung_pin_bank(9)
  • struct samsung_retention_data(9)
  • struct samsung_pin_ctrl(9)
  • struct samsung_pinctrl_of_match_data(9)
  • struct samsung_pin_group(9)
  • struct samsung_pmx_func(9)

that's the whole page, bestie. source path: ./drivers/pinctrl/samsung; date: October 2026; and the footer is out here rocking that struct sams...trl_drv_data(9) look again. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from