STRUCT INTEL_COMMUNITY(9)
π struct intel_community(9) β like, the whole vibe of an Intel pin community π
okay so bestie, welcome to the struct intel_community(9) page from the Kernel API Manual β¨ this is the little struct that describes one Intel pin community, and honestly? it's giving "lowkey load-bearing" π«Ά
πΈ SYNOPSIS πΈ
struct intel_community {
unsigned int barno;
unsigned int padown_offset;
unsigned int padcfglock_offset;
unsigned int hostown_offset;
unsigned int is_offset;
unsigned int ie_offset;
unsigned int features;
unsigned int pin_base;
size_t npins;
unsigned int gpp_size;
unsigned int gpp_num_padown_regs;
const struct intel_padgroup *gpps;
size_t ngpps;
const unsigned int *pad_map;
unsigned short nirqs;
unsigned short acpi_space_id;
void __iomem *regs;
void __iomem *pad_regs;
};
β¨ Members β¨
barnoβ the MMIO BAR number where this community's registers live π that's the house, fr fr.padown_offsetβ register offset of thePAD_OWNregister fromregs. if it's0, there's no owner support at all β no PAD_OWN era, we don't know her πpadcfglock_offsetβ register offset ofPADCFGLOCKfromregs. if it's0then locking is literally not supported ππhostown_offsetβ register offset ofHOSTSW_OWNfromregs. if it's0, the driver assumes the host owns the pin (rather than ACPI) β so like, host said "mine" πis_offsetβ register offset ofGPI_ISfromregsβ¨ie_offsetβ register offset ofGPI_IEfromregsβ¨featuresβ extra features the hardware has going on π additional features supported by the hardware, no cap.pin_baseβ the starting pin of the pins in this community π± where the pin party begins.npinsβ number of pins in this community π’gpp_sizeβ maximum number of pads in each group (thinkPADCFGLOCK,HOSTSW_OWN,GPI_IS,GPI_IE). used whengppsisNULLπgpp_num_padown_regsβ number of pad registers each pad group consumes at minimum. also used whengppsisNULLπ«Άgppsβ pad groups, for when the controller has variable size pad groups π¦ (the "it's complicated" option).ngppsβ number of pad groups in this community π’β¨pad_mapβ optional non-linear mapping of the pads πΊοΈ optional, bestie, so don't come for her if she'sNULL.nirqsβ optional total number of IRQs this community can generate β‘ optional again!acpi_space_idβ optional address space ID for the ACPI OpRegion handler π·οΈ optional x3, she's flexible.regsβ community specific common registers π§ reserved for core driver β hands off, that's core driver's business πpad_regsβ community specific pad registers π§ also reserved for core driver, same energy.
π Description π
okay so here's the tea β in the older Intel GPIO host controllers this driver supports, every pad group is the same size (except the last one, she's special π). in that case the driver can literally just fill in the gpp_size and gpp_num_padown_regs fields and let the core driver handle the rest. easy, iconic, minimal effort, we love a low-effort slay β¨
but in the newer Intel GPIO host controllers, each pad group is of variable size π so the client driver can pass custom gpps and ngpps instead. it's giving "we do things differently now" π
periodt.
π SEE ALSO π
- Kernel file
./drivers/pinctrl/intel/pinctrl-intel.hstructintel_pingroup(9),struct intel_function(9),struct intel_padgroup(9),enum (anonymous)(9),PIN_GROUP(9),struct intel_pinctrl_soc_data(9),struct intel_pinctrl_context(9),struct intel_pinctrl(9)
like, go read those too, they're all in the same friend group fr fr π«Άβ¨
k bye bestie!! π¦ this page came from ./drivers/pinctrl/intel, dated October 2026, and it's part of the Kernel API Manual π go forth and pin responsibly π
β¨
π¦ 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