• Gustavo Sousa's avatar
    drm/i915/xe2lpd: Support MDCLK:CDCLK ratio changes · c834a080
    Gustavo Sousa authored
    Commit 394b4b7d ("drm/i915/lnl: Add CDCLK table") and commit
    3d3696c0 ("drm/i915/lnl: Start using CDCLK through PLL") started
    adding support for CDCLK programming support for Xe2LPD. One final piece
    is missing, which is the programming necessary for changed in the ratio
    between MDCLK and CDCLK. Let's do that now.
    
    BSpec instructs us to update MBUS_CTL and DBUF_CTL_S* registers when the
    ratio between MDCLK and CDCLK changes. The updates must be done before
    changing the CDCLK when decreasing the frequency; or after it when
    increasing the frequency.
    
    Ratio-related updates to MBUS_CTL also depend on the state of MBus
    joining, so they are performed by either CDCLK change sequence or by
    changes in MBus joining. Since one might happen independently of the
    other, we need to make sure that both logics see the necessary state
    values when programming that register. MBus joining logic needs to know
    the MDCLK:CDCLK ratio and that's already provided via mdclk_cdclk_ratio
    field of struct intel_dbuf_state.
    
    For the CDCLK logic, we need to have something similar: we need to
    propagate the status of MBus joining to struct intel_cdclk_state. Do
    that by adding the field joined_mbus to struct intel_cdclk_config.
    (Preferably, that field would be added to intel_cdclk_state, however
    currently only intel_cdclk_config is passed down to the functions that
    do the register programming. We might revisit this decision if we find
    that refactoring the code to pass the whole intel_cdclk_state is worth
    it.)
    
    Bspec: 68864, 68868, 69090, 69482
    Reviewed-by: default avatarStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
    Signed-off-by: default avatarGustavo Sousa <gustavo.sousa@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240312163639.172321-7-gustavo.sousa@intel.comSigned-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
    c834a080
skl_watermark_regs.h 7.35 KB