From ea727e673ee06519baf71e9aee47441de65c79bc Mon Sep 17 00:00:00 2001 From: Admin Pupkin Date: Tue, 2 Jun 2026 11:10:51 +0300 Subject: [PATCH] =?UTF-8?q?intel:=20DPLL=20module=20header=20=E2=80=94=20a?= =?UTF-8?q?rchitecture=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document all 5 PLL architectures per generation: SKL/KBL/CFL: LCPLL1/2 + WRPLL1/2 ICL: LCPLL1/2 + DPLL for MG/Combo PHY TGL/ADL: LCPLL1/2 + WRPLL + TGL CFGCR MTL: DPLL_CTRL1 + DPLL_FREQ Xe2: DPLL_CTRL1/2 with power enable wrpll_compute() algorithm: 3 DCO central frequencies × 43 dividers with deviation minimization + p0×p1×p2 decomposition --- .../source/src/drivers/intel/display_dpll.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/local/recipes/gpu/redox-drm/source/src/drivers/intel/display_dpll.rs b/local/recipes/gpu/redox-drm/source/src/drivers/intel/display_dpll.rs index 42d5362e0d..917eff221e 100644 --- a/local/recipes/gpu/redox-drm/source/src/drivers/intel/display_dpll.rs +++ b/local/recipes/gpu/redox-drm/source/src/drivers/intel/display_dpll.rs @@ -7,6 +7,19 @@ use redox_driver_sys::memory::MmioRegion; use super::info::{IntelDeviceInfo, IntelGeneration}; use crate::driver::{DriverError, Result}; +// ── Intel Display PLL Manager — Ported from intel_dpll_mgr.c (7,509 lines) ─ +// Manages WRPLL, LCPLL, DPLL, and MG PLL clock sources for all display outputs. +// Each generation uses different PLL architectures: +// SKL/KBL/CFL (Gen9): LCPLL1/2 + WRPLL1/2 +// ICL (Gen11): LCPLL1/2 + DPLL for MG/Combo PHY +// TGL/ADL (Gen12): LCPLL1/2 + WRPLL1/2 + TGL-specific CFGCR +// MTL (Gen12.7): DPLL_CTRL1 + DPLL_FREQ register +// Xe2 (ARL/LNL/BMG): DPLL_CTRL1/2 with power enable +// +// The wrpll_compute() function implements the Linux skl_ddi_calculate_wrpll +// algorithm: DCO central frequency search across 3 frequencies × 43 dividers +// with deviation minimization, then p0×p1×p2 multiplier decomposition. + const LCPLL1_CTL: usize = 0x46010; const LCPLL2_CTL: usize = 0x46014; const WRPLL_CTL1: usize = 0x46040;