All of lore.kernel.org
 help / color / mirror / Atom feed
From: Clint Taylor <clinton.a.taylor@intel.com>
To: imre.deak@intel.com
Cc: Intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915/glk: Add Quirk for GLK NUC HDMI port issues.
Date: Fri, 8 Jun 2018 08:48:37 -0700	[thread overview]
Message-ID: <ab44f580-7131-65e2-4e1e-6a4b16ba017e@intel.com> (raw)
In-Reply-To: <20180608133134.GC27407@ideak-desk.fi.intel.com>



On 06/08/2018 06:31 AM, Imre Deak wrote:
> Hi Clint,
>
> nice debugging!
>
> On Thu, Jun 07, 2018 at 04:12:39PM -0700, clinton.a.taylor@intel.com wrote:
>> From: Clint Taylor <clinton.a.taylor@intel.com>
>>
>> On GLK NUC platforms the HDMI retiming buffer needs additional disabled
>> time to correctly sync to a faster incoming signal.
>> When measured on a scope the highspeed lines of the HDMI clock turn
>> off for ~400uS during a normal resolution change.  The HDMI retimer on
>> the GLK NUC appears to require at least a full frame of quiet time
>> before a new faster clock can be correctly sync'd.
>> The worst case scenario appears to be 23.98Hz modes which requires a
>> wait of 41.25ms. Add a quirk to the driver for GLK NUC that waits
>> 42ms.
> Just to understand better the failure mode: IIUC without the WA the HDMI
> clock line is inactive for ~400us when switching modes (which would
> depend on kernel timing) and the retimer chip needs at least 42ms idle
> time at least when switching to certain modes.
If switching from 30Hz to 50/60Hz you would only need a delay of 34ms, 
but I chose to keep the quirk simple and use the worst case (23.98Hz) 
delay of 42ms.
>
> Is there a way to recover the chip from the bad state? By doing a new
> off/on modeset with enough idle time, or resetting the chip?
Just an off/on mode set with enough delay will bring the chip out of the 
bad state.

-Clint
>
> --Imre
>
>> Cc: Imre Deak <imre.deak@intel.com>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105887
>> Signed-off-by: Clint Taylor <clinton.a.taylor@intel.com>
>> ---
>>   drivers/gpu/drm/i915/i915_drv.h      |  1 +
>>   drivers/gpu/drm/i915/intel_ddi.c     |  8 ++++++++
>>   drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++++
>>   3 files changed, 23 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>> index c407366..628491d 100644
>> --- a/drivers/gpu/drm/i915/i915_drv.h
>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>> @@ -645,6 +645,7 @@ enum intel_sbi_destination {
>>   #define QUIRK_BACKLIGHT_PRESENT (1<<3)
>>   #define QUIRK_PIN_SWIZZLED_PAGES (1<<5)
>>   #define QUIRK_INCREASE_T12_DELAY (1<<6)
>> +#define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7)
>>   
>>   struct intel_fbdev;
>>   struct intel_fbc_work;
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
>> index b344e0f..61b41c3 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -1784,6 +1784,9 @@ void intel_ddi_enable_transcoder_func(const struct intel_crtc_state *crtc_state)
>>   	I915_WRITE(TRANS_DDI_FUNC_CTL(cpu_transcoder), temp);
>>   }
>>   
>> +/* Quirk time computed based on 24fps frame time of 41.25ms */
>> +#define DDI_DISABLED_QUIRK_TIME 42
>> +
>>   void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
>>   				       enum transcoder cpu_transcoder)
>>   {
>> @@ -1793,6 +1796,11 @@ void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
>>   	val &= ~(TRANS_DDI_FUNC_ENABLE | TRANS_DDI_PORT_MASK | TRANS_DDI_DP_VC_PAYLOAD_ALLOC);
>>   	val |= TRANS_DDI_PORT_NONE;
>>   	I915_WRITE(reg, val);
>> +
>> +	if (dev_priv->quirks & QUIRK_INCREASE_DDI_DISABLED_TIME) {
>> +		msleep(DDI_DISABLED_QUIRK_TIME);
>> +		DRM_DEBUG_KMS("Quirk Increase DDI disabled time\n");
>> +	}
>>   }
>>   
>>   int intel_ddi_toggle_hdcp_signalling(struct intel_encoder *intel_encoder,
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index ed29219..0d07c37 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -14740,6 +14740,17 @@ static void quirk_increase_t12_delay(struct drm_device *dev)
>>   	DRM_INFO("Applying T12 delay quirk\n");
>>   }
>>   
>> +/* GeminiLake NUC HDMI outputs require additional off time
>> + * this allows the onboard retimer to correctly sync to signal
>> + */
>> +static void quirk_increase_ddi_disabled_time(struct drm_device *dev)
>> +{
>> +	struct drm_i915_private *dev_priv = to_i915(dev);
>> +
>> +	dev_priv->quirks |= QUIRK_INCREASE_DDI_DISABLED_TIME;
>> +	DRM_INFO("Applying Increase DDI Disabled quirk\n");
>> +}
>> +
>>   struct intel_quirk {
>>   	int device;
>>   	int subsystem_vendor;
>> @@ -14826,6 +14837,9 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
>>   
>>   	/* Toshiba Satellite P50-C-18C */
>>   	{ 0x191B, 0x1179, 0xF840, quirk_increase_t12_delay },
>> +
>> +	/* GeminiLake NUC */
>> +	{ 0x3185, 0x8086, 0x2072, quirk_increase_ddi_disabled_time },
>>   };
>>   
>>   static void intel_init_quirks(struct drm_device *dev)
>> -- 
>> 1.9.1
>>

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2018-06-08 15:48 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-07 23:12 [PATCH] drm/i915/glk: Add Quirk for GLK NUC HDMI port issues clinton.a.taylor
2018-06-07 23:47 ` ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2018-06-07 23:48 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-06-08  0:06 ` ✓ Fi.CI.BAT: success " Patchwork
2018-06-08  2:46 ` ✓ Fi.CI.IGT: " Patchwork
2018-06-08 13:31 ` [PATCH] " Imre Deak
2018-06-08 15:48   ` Clint Taylor [this message]
2018-06-13 21:48 ` [PATCH V2] " clinton.a.taylor
2018-06-17 17:16   ` Daniel Scheller
2018-06-25 10:33   ` Imre Deak
2018-06-27 22:26     ` Clint Taylor
2018-06-28 10:05       ` Imre Deak
2018-06-28 18:14         ` [PATCH v3] " clinton.a.taylor
2018-06-29  9:09           ` Imre Deak
2018-07-03 20:26             ` Clint Taylor
2018-07-03 20:16         ` [PATCH v4] " clinton.a.taylor
2018-07-04 10:05           ` Imre Deak
2018-07-04 21:28             ` Daniel Scheller
2018-06-13 21:53 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/glk: Add Quirk for GLK NUC HDMI port issues. (rev2) Patchwork
2018-06-13 21:54 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-06-13 22:13 ` ✓ Fi.CI.BAT: success " Patchwork
2018-06-14  2:36 ` ✓ Fi.CI.IGT: " Patchwork
2018-06-28 18:43 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/glk: Add Quirk for GLK NUC HDMI port issues. (rev3) Patchwork
2018-06-28 18:44 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-06-28 18:59 ` ✓ Fi.CI.BAT: success " Patchwork
2018-06-28 22:05 ` ✓ Fi.CI.IGT: " Patchwork
2018-07-03 20:26 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/glk: Add Quirk for GLK NUC HDMI port issues. (rev4) Patchwork
2018-07-03 20:27 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-07-03 20:43 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-04  3:13 ` ✓ Fi.CI.IGT: " Patchwork

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=ab44f580-7131-65e2-4e1e-6a4b16ba017e@intel.com \
    --to=clinton.a.taylor@intel.com \
    --cc=Intel-gfx@lists.freedesktop.org \
    --cc=imre.deak@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.