STRUCT RZG2L_PINCTRL_REG_CACHE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct rzg2l_pinctrl_reg_cache β€” Kernel API Manual, bestie edition πŸŽ€

okay so welcome to the Kernel API Manual entry for struct rzg2l_pinctrl_reg_cache(9) ✨ yes the title gets truncated in the header (it's giving struct rzg2l...rl_reg_cache(9), we don't talk about it πŸ™ˆ) but we're here, we're hydrated, and we're about to learn a struct.


✨ NAME ✨

struct rzg2l_pinctrl_reg_cache β€” it's the register cache structure, and its whole personality is that it's to be used in suspend/resume</> πŸ’€πŸ«Ά

Like, the kernel goes to sleep and this struct is the one holding onto everybody's values so nothing gets lost. main character energy, honestly πŸ‘‘


🌸 SYNOPSIS 🌸

struct rzg2l_pinctrl_reg_cache {
    u8 *p;
    u16 *pm;
    u8 *pmc;
    u32 *pfc;
    u32 *iolh[2];
    u32 *ien[2];
    u32 *pupd[2];
    u32 *smt[2];
    u32 *sr[2];
    u32 *nod[2];
    u32 clone;
    u8 sd_ch[2];
    u8 eth_poc[2];
    u8 oen;
    u8 other_poc;
    u8 qspi;
 };

no cap, that's the whole struct β€” every one of those pointers is a little cache with its own vibe, and yes bestie, iolh, ien, pupd, smt, sr and nod are all arrays of 2 πŸ”₯ (they said "two of everything" and they meant it).


πŸŽ€ Members πŸŽ€

Sit down, grab a strawberry πŸ“, we're going through every single one because nobody gets left behind:

  • p β€” the P registers</c> cache πŸ’–
  • pm β€” the PM registers</c> cache (note: this one's a u16 *, it's special like that, yk)
  • pmc β€” the PMC registers</c> cache
  • pfc β€” the PFC registers</c> cache
  • iolh β€” the IOLH registers</l> cache (u32 *iolh[2], two of 'em, always)
  • ien β€” the IEN registers</l> cache (u32 *ien[2])
  • pupd β€” the PUPD registers</l> cache (u32 *pupd[2]) β€” say it with me: pull-up pull-down πŸ’…
  • smt β€” the SMT registers</l> cache (u32 *smt[2])
  • sr β€” the SR registers</l> cache (u32 *sr[2])
  • nod β€” the NOD registers</l> cache (u32 *nod[2])
  • clone β€” the Clone register cache (a plain u32 clone, no pointer, she's lowkey low-maintenance)
  • sd_ch β€” the SD_CH registers cache (u8 sd_ch[2])
  • eth_poc β€” the ET_POC registers cache (u8 eth_poc[2]) β€” yes the member is eth_poc and the description says ET_POC, that's just how it is, we don't edit the lore 🫢
  • oen β€” the Output Enable register cache (u8 oen) β€” not oen[2], just oen. iconique, inconsistent, obsessed 😭
  • other_poc β€” the OTHER_POC register cache (u8 other_poc)
  • qspi β€” the QSPI registers cache (u8 qspi)
fr fr, if you're writing suspend/resume code for this driver, every field above is a thing you have to actually care about. no skipping. iykyk.

πŸ¦‹ SEE ALSO πŸ¦‹

go be nosy in the kernel file ./drivers/pinctrl/renesas/pinctrl-rzg2l.c β€” that's where the whole friend group lives:

  • struct rzg2l_register_offsets(9)
  • enum rzg2l_iolh_index(9)
  • struct rzg2l_hwcfg(9)
  • struct rzg2l_pinctrl_pin_settings(9)
  • rzg2l_oen_write_with_pwpr(9)

read them all in order, it's a whole saga, you'll be seated for it 🍿


and that's the page!! πŸ’œ this little beauty lives under ./drivers/pinctrl/renesas and the manual says October 2026 β€” so mark your calendar, screenshot the header, and stan struct rzg2l_pinctrl_reg_cache(9) like the suspend/resume icon it is. mwah πŸ’‹βœ¨πŸŒˆβ­

πŸ“¦ where this page comes from