STRUCT SPMI_PMIC_ARB_BUS(9)
π struct spmi_pmic_arb_bus(9)
okay so bestie, welcome to the Kernel API Manual β today's main character is struct spmi_pmic_arb_bus, the SPMI PMIC Arbiter Bus object. yes it's a struct, yes it's iconic, no you cannot skip it π«Ά
β¨ NAME β¨
struct spmi_pmic_arb_bus β the SPMI PMIC Arbiter Bus object, fr fr πΈ
π SYNOPSIS π
like, here's the whole vibe, character for character, do not touch:
struct spmi_pmic_arb_bus {
struct spmi_pmic_arb *pmic_arb;
struct irq_domain *domain;
void __iomem *intr;
void __iomem *cnfg;
void __iomem *apid_owner;
struct spmi_controller *spmic;
raw_spinlock_t lock;
u16 base_apid;
int apid_count;
u32 *mapping_table;
unsigned long mapping_table_valid[BITS_TO_LONGS(
PMIC_ARB_MAX_PERIPHS)];
u16 *ppid_to_apid;
u16 last_apid;
struct apid_data *apid_data;
u16 min_apid;
u16 max_apid;
int irq;
u8 id;
};
she's got range, she's got pointers, she's got a bitmap. periodt π
π Members π
time for the member-by-member breakdown, iykyk β every single one, no skipping π₯
pmic_arbβ the SPMI PMIC Arbiter that this bus belongs to. like, her home base πdomainβ the irq domain object for the PMIC IRQ domain β¨intrβ address of the SPMI interrupt control registers. yes, an address, and yes it'svoid __iomemπcnfgβ address of the PMIC Arbiter configuration registers π¦apid_ownerβ on v8: address of the APID owner mapping table registers πspmicβ the spmi controller registered for this bus πΈlockβ lock to synchronize accesses.raw_spinlock_t, no cap, she's keeping things orderly πbase_apidβ on v7 and v8: minimum APID associated with the particular SPMI bus instance βapid_countβ on v5, v7 and v8: number of APIDs associated with the particular SPMI bus instance πmapping_tableβ in-memory copy of the PPID -> APID mapping table π§mapping_table_validβ bitmap containing valid-only periphs βppid_to_apidβ in-memory copy of the PPID -> APID mapping table (yes bestie, this is a second in-memory copy of the PPID -> APID mapping table, that's literally what it says, i don't make the rules π)last_apidβ Highest value APID in use π₯apid_dataβ Table of data for all APIDs πmin_apidβ minimum APID (used for bounding IRQ search) πmax_apidβ maximum APID πirqβ the PMIC ARB interrupt πidβ unique ID of the bus, her little signature π
ngl thebase_apid/apid_countversion tags? lowkey important. v5, v7, v8 are doing different things and the docs said what they said, so i'm passing it along verbatim π
π¦ SEE ALSO π¦
go read these next, bestie, they're all in the kernel file ./drivers/spmi/spmi-pmic-arb.c:
struct spmi_pmic_arb(9)struct pmic_arb_ver_ops(9)pmic_arb_read_data(9)pmic_arb_write_data(9)
and that's the page!! π this little beauty lives in ./drivers/spmi, dated October 2026, and it's filed under struct spmi_pmic_arb_bus(9) in the Kernel API Manual. slay, go read some C π§β¨π
π¦ 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