[Intel-gfx] [PATCH] drm/i915/cnp: Display Wa #1179: WaHardHangonHotPlug
Rodrigo Vivi
rodrigo.vivi at intel.com
Tue Sep 19 23:08:33 UTC 2017
On Tue, Sep 19, 2017 at 09:57:03PM +0000, Rodrigo Vivi wrote:
> "CNL PCH chance of hang when software accesses south display
> registers after hotplug is enabled.
> Workaround: Program 0xC2000 bits 11:8 = 0xF before enabling
> south display hotplug detection."
>
> "Workaround only needs to be applied to pre-production steppings
> used in graphics capable SKUs, but it is easier to apply to
> everything, and does not hurt."
>
> v2: Moving from clock gating to right before enabling
> SHOTPLUG_CTL as it should be.
> v3: Align with SOUTH_CHICKEN1 (DK) and consequently use proper
> spaces on bits definition since other bits around already use
> new style. And now that checkpatch is not noise anymore I also
> fixed the reg read mask to avoid going over 80 chars.
>
> Suggested-by: Ben Widawsky <ben at bwidawsk.net>
> Cc: Ben Widawsky <ben at bwidawsk.net>
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
merged to dinq. thanks for the review
> ---
> drivers/gpu/drm/i915/i915_irq.c | 10 +++++++++-
> drivers/gpu/drm/i915/i915_reg.h | 2 ++
> 2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 4d0e8f76ed1a..c23efc4394ce 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -3218,7 +3218,15 @@ static void ibx_hpd_irq_setup(struct drm_i915_private *dev_priv)
>
> static void spt_hpd_detection_setup(struct drm_i915_private *dev_priv)
> {
> - u32 hotplug;
> + u32 val, hotplug;
> +
> + /* Display WA #1179 WaHardHangonHotPlug: cnp */
> + if (HAS_PCH_CNP(dev_priv)) {
> + val = I915_READ(SOUTH_CHICKEN1);
> + val &= ~CHASSIS_CLK_REQ_DURATION_MASK;
> + val |= CHASSIS_CLK_REQ_DURATION(0xf);
> + I915_WRITE(SOUTH_CHICKEN1, val);
> + }
>
> /* Enable digital hotplug on the PCH */
> hotplug = I915_READ(PCH_PORT_HOTPLUG);
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 94b40a469afd..82f36dd0cd94 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -7471,6 +7471,8 @@ enum {
> #define FDI_PHASE_SYNC_OVR(pipe) (1<<(FDIA_PHASE_SYNC_SHIFT_OVR - ((pipe) * 2)))
> #define FDI_PHASE_SYNC_EN(pipe) (1<<(FDIA_PHASE_SYNC_SHIFT_EN - ((pipe) * 2)))
> #define FDI_BC_BIFURCATION_SELECT (1 << 12)
> +#define CHASSIS_CLK_REQ_DURATION_MASK (0xf << 8)
> +#define CHASSIS_CLK_REQ_DURATION(x) ((x) << 8)
> #define SPT_PWM_GRANULARITY (1<<0)
> #define SOUTH_CHICKEN2 _MMIO(0xc2004)
> #define FDI_MPHY_IOSFSB_RESET_STATUS (1<<13)
> --
> 2.13.5
>
More information about the Intel-gfx
mailing list