Add .get_hw_state hook to xe3plpd platform for dpll framework
and update intel_lt_phy_pll_readout_hw_state() function
accordingly to support dpll framework.

Signed-off-by: Mika Kahola <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_ddi.c      |  2 +-
 drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 13 +++++++++++++
 drivers/gpu/drm/i915/display/intel_lt_phy.c   | 11 ++++++-----
 drivers/gpu/drm/i915/display/intel_lt_phy.h   |  3 +--
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index f92323664162..57de15fe3446 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4249,7 +4249,7 @@ static void xe3plpd_ddi_get_config(struct intel_encoder 
*encoder,
 {
        struct intel_display *display = to_intel_display(encoder);
 
-       intel_lt_phy_pll_readout_hw_state(encoder, crtc_state, 
&crtc_state->dpll_hw_state.ltpll);
+       intel_lt_phy_pll_readout_hw_state(encoder, 
&crtc_state->dpll_hw_state.ltpll);
 
        if (crtc_state->dpll_hw_state.ltpll.tbt_mode)
                crtc_state->port_clock = intel_mtl_tbt_calc_port_clock(encoder);
diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c 
b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
index c1d7d9909544..6502916793f5 100644
--- a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
+++ b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
@@ -4571,7 +4571,20 @@ static const struct intel_dpll_mgr mtl_pll_mgr = {
        .compare_hw_state = mtl_compare_hw_state,
 };
 
+static bool xe3plpd_pll_get_hw_state(struct intel_display *display,
+                                    struct intel_dpll *pll,
+                                    struct intel_dpll_hw_state *dpll_hw_state)
+{
+       struct intel_encoder *encoder = get_intel_encoder(display, pll);
+
+       if (!encoder)
+               return false;
+
+       return intel_lt_phy_pll_readout_hw_state(encoder, 
&dpll_hw_state->ltpll);
+}
+
 static const struct intel_dpll_funcs xe3plpd_pll_funcs = {
+       .get_hw_state = xe3plpd_pll_get_hw_state,
 };
 
 static const struct dpll_info xe3plpd_plls[] = {
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.c 
b/drivers/gpu/drm/i915/display/intel_lt_phy.c
index 2d6cbfa79b5c..b1d95eb897db 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.c
@@ -2205,8 +2205,7 @@ static bool intel_lt_phy_pll_is_enabled(struct 
intel_encoder *encoder)
                             intel_lt_phy_get_pclk_pll_request(lane);
 }
 
-void intel_lt_phy_pll_readout_hw_state(struct intel_encoder *encoder,
-                                      const struct intel_crtc_state 
*crtc_state,
+bool intel_lt_phy_pll_readout_hw_state(struct intel_encoder *encoder,
                                       struct intel_lt_phy_pll_state *pll_state)
 {
        u8 owned_lane_mask;
@@ -2215,11 +2214,11 @@ void intel_lt_phy_pll_readout_hw_state(struct 
intel_encoder *encoder,
        int i, j, k;
 
        if (!intel_lt_phy_pll_is_enabled(encoder))
-               return;
+               return false;
 
        pll_state->tbt_mode = 
intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder));
        if (pll_state->tbt_mode)
-               return;
+               return false;
 
        owned_lane_mask = intel_lt_phy_get_owned_lane_mask(encoder);
        lane = owned_lane_mask & INTEL_LT_PHY_LANE0 ? : INTEL_LT_PHY_LANE1;
@@ -2240,6 +2239,8 @@ void intel_lt_phy_pll_readout_hw_state(struct 
intel_encoder *encoder,
        }
 
        intel_lt_phy_transaction_end(encoder, wakeref);
+
+       return true;
 }
 
 void intel_lt_phy_pll_state_verify(struct intel_atomic_state *state,
@@ -2265,7 +2266,7 @@ void intel_lt_phy_pll_state_verify(struct 
intel_atomic_state *state,
                return;
 
        encoder = intel_get_crtc_new_encoder(state, new_crtc_state);
-       intel_lt_phy_pll_readout_hw_state(encoder, new_crtc_state, 
&pll_hw_state);
+       intel_lt_phy_pll_readout_hw_state(encoder, &pll_hw_state);
 
        dig_port = enc_to_dig_port(encoder);
        if (intel_tc_port_in_tbt_alt_mode(dig_port))
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.h 
b/drivers/gpu/drm/i915/display/intel_lt_phy.h
index 597b671bd39d..ff3896a2cebe 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.h
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.h
@@ -33,8 +33,7 @@ void intel_lt_phy_dump_hw_state(struct drm_printer *p,
 bool
 intel_lt_phy_pll_compare_hw_state(const struct intel_lt_phy_pll_state *a,
                                  const struct intel_lt_phy_pll_state *b);
-void intel_lt_phy_pll_readout_hw_state(struct intel_encoder *encoder,
-                                      const struct intel_crtc_state 
*crtc_state,
+bool intel_lt_phy_pll_readout_hw_state(struct intel_encoder *encoder,
                                       struct intel_lt_phy_pll_state 
*pll_state);
 void intel_lt_phy_pll_state_verify(struct intel_atomic_state *state,
                                   struct intel_crtc *crtc);
-- 
2.43.0

Reply via email to