[Intel-gfx] [PATCH v5 1/2] drm/i915/dp: Helper for checking DDI_BUF_CTL Idle status
Manasi Navare
manasi.d.navare at intel.com
Wed Jul 8 20:10:37 UTC 2020
Pushed to dinq, thanks for the reviews
Manasi
On Wed, Jul 01, 2020 at 03:10:51PM -0700, Manasi Navare wrote:
> Modify the helper to add a fixed delay or poll with timeout
> based on platform specification to check for either Idle bit
> set (DDI_BUF_CTL is idle for disable case)
>
> v2:
> * Use 2 separate functions or idle and active (Ville)
> v3:
> * Change the timeout to 16usecs (Ville)
> v4:
> * Change the timeout 8, follow spec (Ville)
>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Imre Deak <imre.deak at intel.com>
> Signed-off-by: Manasi Navare <manasi.d.navare at intel.com>
> Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_ddi.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 025d4052f6f8..a7de1344db69 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -1184,16 +1184,15 @@ static void intel_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
> static void intel_wait_ddi_buf_idle(struct drm_i915_private *dev_priv,
> enum port port)
> {
> - i915_reg_t reg = DDI_BUF_CTL(port);
> - int i;
> -
> - for (i = 0; i < 16; i++) {
> - udelay(1);
> - if (intel_de_read(dev_priv, reg) & DDI_BUF_IS_IDLE)
> - return;
> + if (IS_BROXTON(dev_priv)) {
> + udelay(16);
> + return;
> }
> - drm_err(&dev_priv->drm, "Timeout waiting for DDI BUF %c idle bit\n",
> - port_name(port));
> +
> + if (wait_for_us((intel_de_read(dev_priv, DDI_BUF_CTL(port)) &
> + DDI_BUF_IS_IDLE), 8))
> + drm_err(&dev_priv->drm, "Timeout waiting for DDI BUF %c to get idle\n",
> + port_name(port));
> }
>
> static u32 hsw_pll_to_ddi_pll_sel(const struct intel_shared_dpll *pll)
> --
> 2.19.1
>
More information about the Intel-gfx
mailing list