COMMON PRIMARY TIMING GENERATOR (CMTG)(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 Common Primary Timing Generator (CMTG) 🌸

okay so this is a page from the Kernel API Manual, and bestie, it's about the CMTG β€” literally the Common Primary Timing Generator β€” and I promise it's more iconic than the name suggests πŸ’…


πŸ’– NAME πŸ’–

The CMTG β€” short for Common Primary Timing Generator β€” is a timing generator that runs in parallel to the transcoders timing generators (TG), and its whole thing is being the synchronization mechanism where the CMTG acts as primary and the transcoder TGs act as secondary to it πŸ”₯

✨ DESCRIPTION ✨

okay so picture this: the CMTG is out here outputting its TG start and frame sync signals to the transcoders that are configured as secondary, and those transcoders use those signals to sync their own timing with the CMTG's. it's giving main character energy with a group chat of secondaries following along 🫢

the CMTG can be used only with eDP or MIPI command mode, no cap, and it supports the following use cases:

  • Dual eDP β€” the CMTG can be used to keep two eDP TGs in sync when you're on a dual eDP configuration (with or without PSR/PSR2 enabled) 😌
  • Single eDP as secondary β€” ngl, it's also possible to use a single eDP configuration with the transcoder TG as secondary to the CMTG. that would allow a flow that would not require a modeset on the existing eDP when a new eDP is added for a dual eDP configuration with CMTG. the way that saves you a modeset… obsessed πŸ’œ
  • DC6v β€” in DC6v, the transcoder might be off but the CMTG keeps running to maintain frame timings πŸ’€ and when exiting DC6v, the transcoder TG then is synced back to the CMTG. iconic behavior, fr fr
okay so heads up πŸŽ€ β€” currently, the driver does not use the CMTG, but we need to make sure that we disable it in case we inherit a display configuration with it enabled. like, don't get caught with someone else's CMTG still running, that's not the vibe πŸ™ˆ

πŸ¦‹ SEE ALSO πŸ¦‹

  • Kernel file ./drivers/gpu/drm/i915/display/intel_cmtg.c β€” go read it, iykyk πŸ“–

and that's the whole page, bestie πŸ’– this cutie lives in ./drivers/gpu/drm/i915/display, dated October 2026, and it's filed under the Kernel API Manual as Common Primary Timing Generator (CMTG)(9) β€” slay, go sync something 🌈⭐

πŸ“¦ where this page comes from