• Radhakrishna Sripada's avatar
    drm/i915/mtl: Add Support for C10 PHY message bus and pll programming · 51390cc0
    Radhakrishna Sripada authored
    XELPDP has C10 and C20 phys from Synopsys to drive displays. Each phy
    has a dedicated PIPE 5.2 Message bus for configuration. This message
    bus is used to configure the phy internal registers.
    
    XELPDP has C10 phys to drive output to the EDP and the native output
    from the display engine. Add structures, programming hardware state
    readout logic. Port clock calculations are similar to DG2. Use the DG2
    formulae to calculate the port clock but use the relevant pll signals.
    Note: PHY lane 0 is always used for PLL programming.
    
    Add sequences for C10 phy enable/disable phy lane reset,
    powerdown change sequence and phy lane programming.
    
    Bspec: 64539, 64568, 64599, 65100, 65101, 65450, 65451, 67610, 67636
    
    v2: Squash patches related to C10 phy message bus and pll
        programming support (Jani)
        Move register definitions to a new file i.e. intel_cx0_reg_defs.h (Jani)
        Move macro definitions (Jani)
        DP rates as separate patch (Jani)
        Spin out xelpdp register definitions into a separate file (Jani)
        Replace macro to select registers based on phy lane with
        function calls (Jani)
        Fix styling issues (Jani)
        Call XELPDP_PORT_P2M_MSGBUS_STATUS() with port instead of phy (Lucas)
    v3: Move clear request flag into try-loop
    v4: On PHY idle change drm_err_once() as drm_dbg_kms() (Jani)
        use __intel_de_wait_for_register() instead of __intel_wait_for_register
        and uncomment intel_uncore.h (Jani)
        Add DP-alt support for PHY lane programming (Khaled)
    v4: Add tx and cmn on c10mpllb_state (Imre)
        Add missing waits for pending transactions between two message bus
        writes (Imre)
        General cleanups and simplifications (Imre)
    v5: Few nit cleanups from rev4 (imre)
        s/dev_priv/i915/ , s/c10mpllb/c10pll/ (RK)
        Rebase
    v6: Move the mtl code from intel_c10pll_calc_port_clock to mtl function
        Fix typo in comment for REG_FIELD_PREP8 definition(Imre)
    
    Cc: Mika Kahola <mika.kahola@intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Uma Shankar <uma.shankar@intel.com>
    Cc: Gustavo Sousa <gustavo.sousa@intel.com>
    Signed-off-by: default avatarRadhakrishna Sripada <radhakrishna.sripada@intel.com>
    Signed-off-by: default avatarMika Kahola <mika.kahola@intel.com>
    Reviewed-by: Imre Deak <imre.deak@intel.com> (v4)
    Link: https://patchwork.freedesktop.org/patch/msgid/20230413212443.1504245-4-radhakrishna.sripada@intel.com
    51390cc0
intel_cx0_phy.c 33.9 KB