Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Mika Kahola <mika.kahola@intel.com>,
	intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Imre Deak <imre.deak@intel.com>, Mika Kahola <mika.kahola@intel.com>
Subject: Re: [RFC PATCH 09/39] drm/i915/display: Factor out C10 msgbus access start/end helpers
Date: Wed, 01 Oct 2025 11:55:57 +0300	[thread overview]
Message-ID: <704c4d47e164f0817742da79ba9388f1cc9b7ef5@intel.com> (raw)
In-Reply-To: <20251001082839.2585559-10-mika.kahola@intel.com>

On Wed, 01 Oct 2025, Mika Kahola <mika.kahola@intel.com> wrote:
> From: Imre Deak <imre.deak@intel.com>
>
> Factor out functions to begin and complete C10 PHY programming
> sequences to make the code more concise.

access_begin and update_config don't sound like a matching pair,
though. If you're reading code and see "access begin", I think you'd
naturally expect to see a corresponding "access
end/complete/commit/something", instead of "update config".

> Signed-off-by: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_cx0_phy.c | 62 +++++++++++---------
>  1 file changed, 35 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
> index a74c1be225ac..9b38c7b4f0a7 100644
> --- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c
> @@ -449,6 +449,31 @@ static u8 intel_c10_get_tx_term_ctl(const struct intel_crtc_state *crtc_state)
>  	}
>  }
>  
> +static void intel_c10_msgbus_access_begin(struct intel_encoder *encoder,
> +					  u8 lane_mask)
> +{
> +	if (!intel_encoder_is_c10phy(encoder))
> +		return;
> +
> +	intel_cx0_rmw(encoder, lane_mask, PHY_C10_VDR_CONTROL(1),
> +		      0, C10_VDR_CTRL_MSGBUS_ACCESS, MB_WRITE_COMMITTED);
> +}
> +
> +static void intel_c10_msgbus_update_config(struct intel_encoder *encoder,
> +					   u8 lane_mask, bool master_lane)
> +{
> +	u8 val = C10_VDR_CTRL_UPDATE_CFG;
> +
> +	if (!intel_encoder_is_c10phy(encoder))
> +		return;
> +
> +	if (master_lane)
> +		val |= C10_VDR_CTRL_MASTER_LANE;
> +
> +	intel_cx0_rmw(encoder, lane_mask, PHY_C10_VDR_CONTROL(1),
> +		      0, val, MB_WRITE_COMMITTED);
> +}
> +
>  void intel_cx0_phy_set_signal_levels(struct intel_encoder *encoder,
>  				     const struct intel_crtc_state *crtc_state)
>  {
> @@ -472,9 +497,9 @@ void intel_cx0_phy_set_signal_levels(struct intel_encoder *encoder,
>  		return;
>  	}
>  
> +	intel_c10_msgbus_access_begin(encoder, owned_lane_mask);
> +
>  	if (intel_encoder_is_c10phy(encoder)) {
> -		intel_cx0_rmw(encoder, owned_lane_mask, PHY_C10_VDR_CONTROL(1),
> -			      0, C10_VDR_CTRL_MSGBUS_ACCESS, MB_WRITE_COMMITTED);
>  		intel_cx0_rmw(encoder, owned_lane_mask, PHY_C10_VDR_CMN(3),
>  			      C10_CMN3_TXVBOOST_MASK,
>  			      C10_CMN3_TXVBOOST(intel_c10_get_tx_vboost_lvl(crtc_state)),
> @@ -513,9 +538,7 @@ void intel_cx0_phy_set_signal_levels(struct intel_encoder *encoder,
>  		      0, PHY_C10_VDR_OVRD_TX1 | PHY_C10_VDR_OVRD_TX2,
>  		      MB_WRITE_COMMITTED);
>  
> -	if (intel_encoder_is_c10phy(encoder))
> -		intel_cx0_rmw(encoder, owned_lane_mask, PHY_C10_VDR_CONTROL(1),
> -			      0, C10_VDR_CTRL_UPDATE_CFG, MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_update_config(encoder, owned_lane_mask, false);
>  
>  	intel_cx0_phy_transaction_end(encoder, wakeref);
>  }
> @@ -2119,9 +2142,7 @@ static void intel_c10pll_readout_hw_state(struct intel_encoder *encoder,
>  	 * According to C10 VDR Register programming Sequence we need
>  	 * to do this to read PHY internal registers from MsgBus.
>  	 */
> -	intel_cx0_rmw(encoder, lane, PHY_C10_VDR_CONTROL(1),
> -		      0, C10_VDR_CTRL_MSGBUS_ACCESS,
> -		      MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_access_begin(encoder, lane);
>  
>  	for (i = 0; i < ARRAY_SIZE(pll_state->pll); i++)
>  		pll_state->pll[i] = intel_cx0_read(encoder, lane, PHY_C10_VDR_PLL(i));
> @@ -2140,9 +2161,7 @@ static void intel_c10_pll_program(struct intel_display *display,
>  {
>  	int i;
>  
> -	intel_cx0_rmw(encoder, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CONTROL(1),
> -		      0, C10_VDR_CTRL_MSGBUS_ACCESS,
> -		      MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_access_begin(encoder, INTEL_CX0_BOTH_LANES);
>  
>  	/* Program the pll values only for the master lane */
>  	for (i = 0; i < ARRAY_SIZE(pll_state->pll); i++)
> @@ -2157,9 +2176,8 @@ static void intel_c10_pll_program(struct intel_display *display,
>  	intel_cx0_rmw(encoder, INTEL_CX0_BOTH_LANES, PHY_C10_VDR_CUSTOM_WIDTH,
>  		      C10_VDR_CUSTOM_WIDTH_MASK, C10_VDR_CUSTOM_WIDTH_8_10,
>  		      MB_WRITE_COMMITTED);
> -	intel_cx0_rmw(encoder, INTEL_CX0_LANE0, PHY_C10_VDR_CONTROL(1),
> -		      0, C10_VDR_CTRL_MASTER_LANE | C10_VDR_CTRL_UPDATE_CFG,
> -		      MB_WRITE_COMMITTED);
> +
> +	intel_c10_msgbus_update_config(encoder, INTEL_CX0_LANE0, true);
>  }
>  
>  static void intel_c10pll_dump_hw_state(struct intel_display *display,
> @@ -2959,11 +2977,7 @@ static void intel_cx0_program_phy_lane(struct intel_encoder *encoder, int lane_c
>  	bool dp_alt_mode = intel_tc_port_in_dp_alt_mode(enc_to_dig_port(encoder));
>  	u8 owned_lane_mask = intel_cx0_get_owned_lane_mask(encoder);
>  
> -	if (intel_encoder_is_c10phy(encoder))
> -		intel_cx0_rmw(encoder, owned_lane_mask,
> -			      PHY_C10_VDR_CONTROL(1), 0,
> -			      C10_VDR_CTRL_MSGBUS_ACCESS,
> -			      MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_access_begin(encoder, owned_lane_mask);
>  
>  	if (lane_reversal)
>  		disables = REG_GENMASK8(3, 0) >> lane_count;
> @@ -2988,11 +3002,7 @@ static void intel_cx0_program_phy_lane(struct intel_encoder *encoder, int lane_c
>  			      MB_WRITE_COMMITTED);
>  	}
>  
> -	if (intel_encoder_is_c10phy(encoder))
> -		intel_cx0_rmw(encoder, owned_lane_mask,
> -			      PHY_C10_VDR_CONTROL(1), 0,
> -			      C10_VDR_CTRL_UPDATE_CFG,
> -			      MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_update_config(encoder, owned_lane_mask, false);
>  }
>  
>  static u32 intel_cx0_get_pclk_pll_request(u8 lane_mask)
> @@ -3260,9 +3270,7 @@ void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,
>  
>  	wakeref = intel_cx0_phy_transaction_begin(encoder);
>  
> -	if (intel_encoder_is_c10phy(encoder))
> -		intel_cx0_rmw(encoder, owned_lane_mask, PHY_C10_VDR_CONTROL(1), 0,
> -			      C10_VDR_CTRL_MSGBUS_ACCESS, MB_WRITE_COMMITTED);
> +	intel_c10_msgbus_access_begin(encoder, owned_lane_mask);
>  
>  	for (i = 0; i < 4; i++) {
>  		int tx = i % 2 + 1;

-- 
Jani Nikula, Intel

  reply	other threads:[~2025-10-01  8:56 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-01  8:28 [RFC PATCH 00/39] drm/i915/display: Add MTL+ platforms to support dpll framework Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 01/39] drm/i915/display: Sanitize PHY_C20_VDR_CUSTOM_SERDES_RATE/DP_RATE field macros Mika Kahola
2025-10-01  8:52   ` Jani Nikula
2025-10-01  8:57     ` Raag Jadav
2025-10-01  9:57       ` Jani Nikula
2025-10-01 10:01         ` Kahola, Mika
2025-10-01  8:28 ` [RFC PATCH 02/39] drm/i915/display: Sanitize PHY_C20_VDR_CUSTOM_SERDES_RATE/IS_DP flag macro Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 03/39] drm/i915/display: Sanitize PHY_C20_VDR_CUSTOM_SERDES_RATE/CONTEXT_TOGGLE " Mika Kahola
2025-10-01  8:49   ` Jani Nikula
2025-10-01  8:28 ` [RFC PATCH 04/39] drm/i915/display: Sanitize PHY_C20_VDR_CUSTOM_SERDES_RATE/IS_HDMI_FRL " Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 05/39] drm/i915/display: Fix PHY_C20_VDR_CUSTOM_SERDES_RATE programming Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 06/39] drm/i915/display: Fix PHY_C20_VDR_HDMI_RATE programming Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 07/39] drm/i915/display: Add missing clock to C10 PHY state compute/HW readout Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 08/39] drm/i915/display: Rename TBT functions to be ICL specific Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 09/39] drm/i915/display: Factor out C10 msgbus access start/end helpers Mika Kahola
2025-10-01  8:55   ` Jani Nikula [this message]
2025-10-01  8:28 ` [RFC PATCH 10/39] drm/i915/display: Sanitize setting the Cx0 PLL use_c10 flag Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 11/39] drm/i915/display: Sanitize calculating C20 PLL state from tables Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 12/39] drm/i915/display: Track the C20 PHY VDR state in the PLL state Mika Kahola
2025-10-01  9:03   ` Jani Nikula
2025-10-01  8:28 ` [RFC PATCH 13/39] drm/i915/display: Move definition of Cx0 PHY functions earlier Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 14/39] drm/i915/display: Add macro to get DDI port width from a register value Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 15/39] drm/i915/display: Track the Cx0 PHY enabled lane count in the PLL state Mika Kahola
2025-10-01  9:13   ` Jani Nikula
2025-10-01 12:09     ` Imre Deak
2025-10-01  8:28 ` [RFC PATCH 16/39] drm/i915/display: Sanitize C10 PHY PLL SSC register setup Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 17/39] drm/i915/display: Read out the Cx0 PHY SSC enabled state Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 18/39] drm/i915/display: Determine Cx0 PLL DP mode from PLL state Mika Kahola
2025-10-01  9:16   ` Jani Nikula
2025-10-16 18:04     ` Ville Syrjälä
2025-10-20 10:51       ` Jani Nikula
2025-10-01  8:28 ` [RFC PATCH 19/39] drm/i915/display: Determine Cx0 PLL port clock " Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 20/39] drm/i915/display: Zero Cx0 PLL state before compute and HW readout Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 21/39] drm/i915/display: Print additional Cx0 PLL HW state Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 22/39] drm/i915/display: Remove state verification Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 23/39] drm/i915/display: PLL information for MTL+ Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 24/39] drm/i915/display: Update C10/C20 state calculation Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 25/39] drm/i915/display: Compute plls for MTL+ platform Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 26/39] drm/i915/display: MTL+ .get_dplls Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 27/39] drm/i915/display: MTL+ .put_dplls Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 28/39] drm/i915/display: Add .update_active_dpll Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 29/39] drm/i915/display: Add .update_dpll_ref_clks Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 30/39] drm/i915/display: Add .dump_hw_state Mika Kahola
2025-10-01  9:33   ` Jani Nikula
2025-10-02  9:12     ` Kahola, Mika
2025-10-01  8:28 ` [RFC PATCH 31/39] drm/i915/display: Add .compare_hw_state Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 32/39] drm/i915/display: Add .get_hw_state to MTL+ platforms Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 33/39] drm/i915/display: Add .get_freq " Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 34/39] drm/i915/display: Add .crtc_get_dpll hook Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 35/39] drm/i915/display: PLL verify debug state print Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 36/39] drm/i915/display: Add .enable_clock on DDI for MTL+ platforms Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 37/39] drm/i915/display: Get configuration for C10 and C20 Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 38/39] drm/i915/display: Add Thunderbolt support Mika Kahola
2025-10-01  8:28 ` [RFC PATCH 39/39] drm/i915/display: Enable dpll framework for MTL+ Mika Kahola

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=704c4d47e164f0817742da79ba9388f1cc9b7ef5@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=mika.kahola@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox