STRUCT SAMSUNG_PINCTRL_DRV_DATA(9)
π 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'ssamsung_pin_bank->pctl_baseand is used on legacy platforms (likeS3C24XXorS3C64XX) which have to access the base throughsamsung_pinctrl_drv_data, notsamsung_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, seesamsung_pinctrl_suspend.resumeβ platform specific resume callback, executed during pin controller device suspend, seesamsung_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
- 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