1. 30 10月, 2019 1 次提交
  2. 12 7月, 2019 2 次提交
  3. 05 7月, 2019 1 次提交
    • V
      drm/i915/ehl: Add support for DPLL4 (v10) · eef037ea
      Vivek Kasireddy 提交于
      This patch adds support for DPLL4 on EHL that include the
      following restrictions:
      
      - DPLL4 cannot be used with DDIA (combo port A internal eDP usage).
        DPLL4 can be used with other DDIs, including DDID
        (combo port A external usage).
      
      - DPLL4 cannot be enabled when DC5 or DC6 are enabled.
      
      - The DPLL4 enable, lock, power enabled, and power state are connected
        to the MGPLL1_ENABLE register.
      
      v2: (suggestions from Bob Paauwe)
      - Rework ehl_get_dpll() function to call intel_find_shared_dpll() and
        iterate twice: once for Combo plls and once for MG plls.
      
      - Use MG pll funcs for DPLL4 instead of creating new ones and modify
        mg_pll_enable to include the restrictions for EHL.
      
      v3: Fix compilation error
      
      v4: (suggestions from Lucas and Ville)
      - Treat DPLL4 as a combo phy PLL and not as MG PLL
      - Disable DC states when this DPLL is being enabled
      - Reuse icl_get_dpll instead of creating a separate one for EHL
      
      v5: (suggestion from Ville)
      - Refcount the DC OFF power domains during the enabling and disabling
        of this DPLL.
      
      v6: rebase
      
      v7: (suggestion from Imre)
      - Add a new power domain instead of iterating over the domains
        assoicated with DC OFF power well.
      
      v8: (Ville and Imre)
      - Rename POWER_DOMAIN_DPLL4 TO POWER_DOMAIN_DPLL_DC_OFF
      - Grab a reference in intel_modeset_setup_hw_state() if this
        DPLL was already enabled perhaps by BIOS.
      - Check for the port type instead of the encoder
      
      v9: (Ville)
      - Move the block of code that grabs a reference to the power domain
        POWER_DOMAIN_DPLL_DC_OFF to intel_modeset_readout_hw_state() to ensure
        that there is a reference present before this DPLL might get disabled.
      
      v10: rebase
      
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Signed-off-by: NVivek Kasireddy <vivek.kasireddy@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190703230353.24059-1-vivek.kasireddy@intel.com
      eef037ea
  4. 01 7月, 2019 3 次提交
    • I
      drm/i915: Keep the TypeC port mode fixed when the port is active · 24a7bfe0
      Imre Deak 提交于
      The TypeC port mode needs to stay fixed whenever the port is active. Do
      that by introducing a tc_link_refcount to account for active ports,
      avoiding changing the port mode if a reference is held.
      
      During the modeset commit phase we also have to reset the port mode and
      update the active PLL reflecting the new port mode. We can do this only
      once the port and its old PLL has been already disabled. Add the new
      encoder update_prepare/complete hooks that are called around the whole
      enabling sequence. The TypeC specific hooks of these will reset the port
      mode, update the active PLL if the port will be active and ensure that
      the port mode will stay fixed for the duration of the whole enabling
      sequence by holding a tc_link_refcount.
      
      During the port enabling, the pre_pll_enable/post_pll_disable hooks will
      take/release a tc_link_refcount to ensure the port mode stays fixed
      while the port is active.
      
      Changing the port mode should also be avoided during connector detection
      and AUX transfers if the port is active, we'll do that by checking the
      port's tc_link_refcount.
      
      When resetting the port mode we also have to take into account the
      maximum lanes provided by the FIA. It's guaranteed to be 4 in TBT-alt
      and legacy modes, but there may be less lanes available in DP-alt mode,
      in which case we have to fall back to TBT-alt mode.
      
      While at it also update icl_tc_phy_connect()'s code comment, reflecting
      the current way of switching the port mode.
      
      v2:
      - Add the update_prepare/complete hooks to the encoder instead of the
        connector. (Ville)
      - Simplify intel_connector_needs_modeset() by removing redundant if.
        (Ville)
      v3:
      - Fix sparse warning, marking static functions as such.
      v4:
      - Rebase on drm-tip.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190628143635.22066-21-imre.deak@intel.com
      24a7bfe0
    • I
      drm/i915/icl: Reserve all required PLLs for TypeC ports · eea72c4c
      Imre Deak 提交于
      When enabling a TypeC port we need to reserve all the required PLLs for
      it, the TBT PLL for TBT-alt and the MG PHY PLL for DP-alt/legacy sinks.
      We can select the proper PLL for the current port mode from the reserved
      PLLs only once we selected and locked down the port mode for the whole
      duration of the port's active state. Resetting and locking down the port
      mode can in turn happen only during the modeset commit phase once we
      disabled the given port and the PLL it used.
      
      To support the above reserve-and-select PLL semantic we store the
      reserved PLLs along with their HW state in the CRTC state and provide a
      way to select the active PLL from these. The selected PLL along with its
      HW state will be pointed at by crtc_state->shared_dpll/dpll_hw_state as
      in the case of other port types.
      
      Besides reserving all required PLLs no functional changes.
      
      v2:
      - Fix releasing the ICL PLLs, not clearing the PLLs from the old
        crtc_state.
      - Init port_dpll to ICL_PORT_DPLL_DEFAULT closer to where port_dpll is
        used for symmetry with the corresponding ICL_PORT_DPLL_MG_PHY init.
        (Ville)
      v3:
      - Add FIXME: for clearing the ICL port PLLs from the new crtc state.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190628143635.22066-20-imre.deak@intel.com
      eea72c4c
    • I
      drm/i915: Sanitize the shared DPLL reserve/release interface · 866955fa
      Imre Deak 提交于
      For consistency s/intel_get_shared_dpll()/intel_reserve_shared_dplls()/
      to better match intel_release_shared_dplls(). Also, pass to the
      reserve/release and get_dplls/put_dplls hooks the intel_atomic_state and
      CRTC object, that way these functions can look up the old or new state
      as needed.
      
      Also release the PLLs from the atomic state via a new
      put_dplls->intel_unreference_shared_dpll() call chain for better
      symmetry with the reservation via the
      get_dplls->intel_reference_shared_dpll() call chain.
      
      Since nothing uses the PLL returned by intel_reserve_shared_dplls(),
      make it return only a bool.
      
      While at it also clarify the reserve/release function docbook headers
      making it clear that multiple DPLLs will be reserved/released and
      whether the new or old atomic CRTC state is affected.
      
      This refactoring is also a preparation for a follow-up change that needs
      to reserve multiple DPLLs.
      
      Kudos to Ville for the idea to pass intel_atomic_state around, to make
      things clearer locally where an object's old/new atomic state is
      required.
      
      No functional changes.
      
      v2:
      - Fix checkpatch issue: typo in code comment.
      v3:
      - Rebase on drm-tip.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190628143635.22066-17-imre.deak@intel.com
      866955fa
  5. 17 6月, 2019 1 次提交
  6. 10 6月, 2019 1 次提交
  7. 04 6月, 2019 1 次提交
  8. 30 4月, 2019 1 次提交
  9. 19 3月, 2019 2 次提交
  10. 30 1月, 2019 1 次提交
  11. 17 1月, 2019 1 次提交
  12. 17 10月, 2018 2 次提交
  13. 05 10月, 2018 1 次提交
  14. 04 9月, 2018 1 次提交
  15. 22 6月, 2018 1 次提交
  16. 15 6月, 2018 1 次提交
  17. 02 6月, 2018 1 次提交
  18. 08 5月, 2018 1 次提交
    • P
      drm/i915/icl: add basic support for the ICL clocks · c27e917e
      Paulo Zanoni 提交于
      This commit introduces the definitions for the ICL clocks and adds the
      basic functions to the shared DPLL framework. It adds code for the
      Enable and Disable sequences for some PLLs, but it does not have the
      code to compute the actual PLL values, which are marked as TODO
      comments and should be introduced as separate commits.
      
      Special thanks to James Ausmus for investigating and fixing a bug with
      the placement of icl_unmap_plls_to_ports() function.
      
      v2:
       - Rebase around dpll_lock changes.
      v3:
       - The spec now says what the timeouts should be.
       - Touch DPCLKA_CFGCR0_ICL at the appropriate time so we don't freeze
         the machine.
       - Checkpatch found a white space problem.
       - Small adjustments before upstreaming.
      v4:
       - Move the ICL checks out of the *map_plls_to_ports() functions
        (James)
       - Add extra encoder check (James)
       - Call icl_unmap_plls_to_ports() later (James)
      v5:
       - Rebase after the pll struct changes.
      v6:
       - Properly make the unmap function based on encoders_post_disable()
         with regarding to checks and iterators.
       - Address checkpatch comment on "min = max = x()".
      
      Cc: James Ausmus <james.ausmus@intel.com>
      Signed-off-by: NPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: NJames Ausmus <james.ausmus@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180427231436.9353-1-paulo.r.zanoni@intel.com
      c27e917e
  19. 28 3月, 2018 7 次提交
  20. 13 6月, 2017 1 次提交
  21. 10 2月, 2017 1 次提交
  22. 30 12月, 2016 6 次提交
  23. 10 9月, 2016 1 次提交
  24. 08 9月, 2016 1 次提交