BCM2835 CPRMAN (CLOCK MANAGER FOR THE AUDIO DOMAIN)(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’– BCM2835 CPRMAN ๐Ÿ’–

okay so welcome to section 9 of the manuals, bestie โ€” this is the page for BCM2835 CPRMAN, aka the clock manager for the audio domain, and honestly it's giving "let me explain the whole clock tree to you in one breath" energy. ๐ŸŽ€


โœจ NAME โœจ

BCM2835 CPRMAN โ€” clock manager for the audio domain ๐Ÿ’… (yes, that's the whole name, no notes)


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

okay so picture this: the clock tree on the 2835 has several levels. levels on levels on levels, fr fr.

At the very top there's a root oscillator running at 19.2Mhz. that's the main character. โญ

After the oscillator you've got 5 PLLs, roughly divided as "camera", "ARM", "core", "DSI displays", and "HDMI displays". five of them. and those 5 PLLs each can divide their output to produce up to 4 channels โ€” so yeah, the math is mathing. ๐Ÿงฎโœจ

Finally, there's the level of clocks to be consumed by other hardware components (like "H264" or "HDMI state machine"), which divide off of some subset of the PLL channels. that's the bottom layer of the whole vibe. ๐Ÿซถ

and here's the part that's lowkey iconic: all of the clocks in the tree are exposed in the DT ๐Ÿ’€

why, you ask? bestie, two reasons:

  • the DT may want to make assignments of the final layer of clocks to the PLL channels
  • and some components of the hardware will actually skip layers of the tree โ€” for example, the pixel clock comes directly from the PLLH PIX channel without using a CM_*CTL clock generator. not me skipping the line. ๐Ÿ˜ญ

๐ŸŒธ SEE ALSO ๐ŸŒธ

  • Kernel file ./drivers/clk/bcm/clk-bcm2835.c โ€” go read it, iykyk ๐Ÿ‘‘

and that's the page, bestie!! this one's got the header date of October 2026, it lives in section 9, and the source/version line at the bottom is just the manual name <pink>BCM2835 CPR...er for the (audio")</pink> doing its little encore. no cap, that's it. slay ๐Ÿ’…โœจ๐ŸŽ€

๐Ÿ“ฆ where this page comes from