Readout lane count back from HW. Reuse existing function
for Cx0 for LT PHY case with minor modification to add
lanes as function parameters.

Signed-off-by: Mika Kahola <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_cx0_phy.c | 10 ++++++----
 drivers/gpu/drm/i915/display/intel_cx0_phy.h |  1 +
 drivers/gpu/drm/i915/display/intel_lt_phy.c  |  2 ++
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c 
b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
index 6a471c021c0e..7e59409bbf01 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
@@ -2180,7 +2180,7 @@ static int intel_c10pll_calc_state(const struct 
intel_crtc_state *crtc_state,
        return 0;
 }
 
-static int readout_enabled_lane_count(struct intel_encoder *encoder)
+int intel_readout_lane_count(struct intel_encoder *encoder, int lane0, int 
lane1)
 {
        struct intel_display *display = to_intel_display(encoder);
        u8 enabled_tx_lane_count = 0;
@@ -2212,7 +2212,7 @@ static int readout_enabled_lane_count(struct 
intel_encoder *encoder)
                max_tx_lane_count = round_up(max_tx_lane_count, 2);
 
        for (tx_lane = 0; tx_lane < max_tx_lane_count; tx_lane++) {
-               u8 phy_lane_mask = tx_lane < 2 ? INTEL_CX0_LANE0 : 
INTEL_CX0_LANE1;
+               u8 phy_lane_mask = tx_lane < 2 ? lane0 : lane1;
                int tx = tx_lane % 2 + 1;
                u8 val;
 
@@ -2252,7 +2252,8 @@ static void intel_c10pll_readout_hw_state(struct 
intel_encoder *encoder,
         */
        intel_c10_msgbus_access_begin(encoder, lane);
 
-       cx0pll_state->lane_count = readout_enabled_lane_count(encoder);
+       cx0pll_state->lane_count = intel_readout_lane_count(encoder, 
INTEL_CX0_LANE0,
+                                                           INTEL_CX0_LANE1);
 
        for (i = 0; i < ARRAY_SIZE(pll_state->pll); i++)
                pll_state->pll[i] = intel_cx0_read(encoder, lane, 
PHY_C10_VDR_PLL(i));
@@ -2707,7 +2708,8 @@ static void intel_c20pll_readout_hw_state(struct 
intel_encoder *encoder,
 
        wakeref = intel_cx0_phy_transaction_begin(encoder);
 
-       cx0pll_state->lane_count = readout_enabled_lane_count(encoder);
+       cx0pll_state->lane_count = intel_readout_lane_count(encoder, 
INTEL_CX0_LANE0,
+                                                           INTEL_CX0_LANE1);
 
        /* 1. Read VDR params and current context selection */
        intel_c20_readout_vdr_params(encoder, &pll_state->vdr, &cntx);
diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.h 
b/drivers/gpu/drm/i915/display/intel_cx0_phy.h
index 1d4480b8bf39..1428e7a5a318 100644
--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.h
+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.h
@@ -28,6 +28,7 @@ struct intel_hdmi;
 void intel_cx0_clear_response_ready_flag(struct intel_encoder *encoder,
                                         int lane);
 bool intel_encoder_is_c10phy(struct intel_encoder *encoder);
+int intel_readout_lane_count(struct intel_encoder *encoder, int lane0, int 
lane1);
 void intel_mtl_pll_enable(struct intel_encoder *encoder,
                          struct intel_dpll *pll,
                          const struct intel_dpll_hw_state *dpll_hw_state);
diff --git a/drivers/gpu/drm/i915/display/intel_lt_phy.c 
b/drivers/gpu/drm/i915/display/intel_lt_phy.c
index 365c6e07a257..68c63d680e23 100644
--- a/drivers/gpu/drm/i915/display/intel_lt_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_lt_phy.c
@@ -2231,6 +2231,8 @@ bool intel_lt_phy_pll_readout_hw_state(struct 
intel_encoder *encoder,
        lane = owned_lane_mask & INTEL_LT_PHY_LANE0 ? : INTEL_LT_PHY_LANE1;
        wakeref = intel_lt_phy_transaction_begin(encoder);
 
+       pll_state->lane_count = intel_readout_lane_count(encoder, 
INTEL_LT_PHY_LANE0,
+                                                        INTEL_LT_PHY_LANE1);
        pll_state->config[0] = intel_lt_phy_read(encoder, lane, 
LT_PHY_VDR_0_CONFIG);
        pll_state->config[1] = intel_lt_phy_read(encoder, INTEL_LT_PHY_LANE0, 
LT_PHY_VDR_1_CONFIG);
        pll_state->config[2] = intel_lt_phy_read(encoder, lane, 
LT_PHY_VDR_2_CONFIG);
-- 
2.43.0

Reply via email to