STRUCT SAMSUNG_PIN_CTRL(9)
πΈ NAME πΈ
struct samsung_pin_ctrl β represent a pin controller. π
okay so this is straight out of the Kernel API Manual, and it's the little struct that's basically the main character of a Samsung pin controller. she holds the receipts: which pin banks she's got, how many, her retention config, and all her platform-specific callback besties. π
β¨ SYNOPSIS β¨
struct samsung_pin_ctrl {
const struct samsung_pin_bank_data *pin_banks;
unsigned int nr_banks;
unsigned int nr_ext_resources;
const struct samsung_retention_data *retention_data;
int (*eint_gpio_init)(struct samsung_pinctrl_drv_data *);
int (*eint_wkup_init)(struct samsung_pinctrl_drv_data *);
void (*pud_value_init)(struct samsung_pinctrl_drv_data *drvdata);
void (*suspend)(struct samsung_pin_bank *bank);
void (*resume)(struct samsung_pin_bank *bank);
};
like, that's her. that's the whole vibe. nine lines of pure pin-controller energy. π₯
π Members π
pin_banksβ the list of pin banks included in this controller. her whole crew, lowkey. π«Άnr_banksβ number of pin banks. yes bestie, we're counting. π’nr_ext_resourcesβ number of the extra base address for pin banks. extra. base. address. she's giving "there's more than one address involved" and I respect it. β¨retention_dataβ configuration data for retention control. the β¨settingsβ¨ for keeping stuff alive, basically. πeint_gpio_initβ platform specific callback to setup the external gpio interrupts for the controller. gpio? handled. πeint_wkup_initβ platform specific callback to setup the external wakeup interrupts for the controller. wakeup duty, claimed. βpud_value_initβ ngl bestie, the manual literally does not describe this one π she's just sitting there in the struct with herstruct samsung_pinctrl_drv_data *drvdataargument and zero commentary. iconic of her honestly. πsuspendβ platform specific suspend callback, executed during pin controller device suspend, seesamsung_pinctrl_suspend. she goes to sleep on cue. π΄resumeβ platform specific resume callback, executed during pin controller device suspend, seesamsung_pinctrl_resume. yep, the manual says "suspend" right there in the resume description too β we're keeping it exactly as written, no notes. π
π¦ Description π¦
okay so here's the important part, pay attention: external wakeup interrupts must define at least eint_wkup_init, retention_data and suspend in order for proper suspend/resume to work. π¨
like, that's the requirement. all three. no skipping. if you're doing external wakeup interrupts, those three are non-negotiable bestie β otherwise your suspend/resume is gonna be a whole mess. π«Ά
π«Ά SEE ALSO π«Ά
kernel file ./drivers/pinctrl/samsung/pinctrl-samsung.h, plus the whole friend group:
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_pinctrl_drv_data(9)struct samsung_pinctrl_of_match_data(9)struct samsung_pin_group(9)struct samsung_pmx_func(9)
go read them all, they're lowkey obsessed with each other. π
and that's the page!! π source: ./drivers/pinctrl/samsung, dated October 2026 β slay, love that for us. periodt π
β¨
π¦ 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