linux_dsm_epyc7002/drivers/gpu/drm/i915
Keith Packard f01eca2e52 drm/i915: Correct eDP panel power sequencing delay computations
Store the panel power sequencing delays in the dp private structure,
rather than the global device structure. Who knows, maybe we'll get
more than one eDP device in the future.

From the eDP spec, we need the following numbers:

 T1 + T3	Power on to Aux Channel operation (panel_power_up_delay)

		This marks how long it takes the panel to boot up and
		get ready to receive aux channel communications.

 T8		Video signal to backlight on (backlight_on_delay)

		Once a valid video signal is being sent to the device,
		it can take a while before the panel is actuall
		showing useful data. This delay allows the panel
		to get something reasonable up before the backlight
		is turned on.

 T9		Backlight off to video off (backlight_off_delay)

		Turning the backlight off can take a moment, so
		this delay makes sure there is still valid video
		data on the screen.

 T10		Video off to power off (panel_power_down_delay)

		Presumably this delay allows the panel to perform
		an orderly shutdown of the display.

 T11 + T12	Power off to power on (panel_power_cycle_delay)

		So, once you turn the panel off, you have to wait a
		while before you can turn it back on. This delay is
		usually the longest in the entire sequence.

Neither the VBIOS source code nor the hardware documentation has a
clear mapping between the delay values they provide and those required
by the eDP spec. The VBIOS code actually uses two different labels for
the delay values in the five words of the relevant VBT table.

**** MORE LATER ***

Look at both the current hardware register settings and the VBT
specified panel power sequencing timings. Use the maximum of the two
delays, to make sure things work reliably. If there is no VBT data,
then those values will be initialized to zero, so we'll just use the
values as programmed in the hardware. Note that the BIOS just fetches
delays from the VBT table to place in the hardware registers, so we
should get the same values from both places, except for rounding.

VBT doesn't provide any values for T1 or T2, so we'll always just use
the hardware value for that.

The panel power up delay is thus T1 + T2 + T3, which should be
sufficient in all cases.

The panel power down delay is T1 + T2 + T12, using T1+T2 as a proxy
for T11, which isn't available anywhere.

For the backlight delays, the eDP spec says T6 + T8 is the delay from the
end of link training to backlight on and T9 is the delay from
backlight off until video off. The hardware provides a 'backlight on'
delay, which I'm taking to be T6 + T8 while the VBT provides something
called 'T7', which I'm assuming is s

On the macbook air I'm testing with, this yields a power-up delay of
over 200ms and a power-down delay of over 600ms. It all works now, but
we're frobbing these power controls several times during mode setting,
making the whole process take an awfully long time.

Signed-off-by: Keith Packard <keithp@keithp.com>
2011-10-06 08:37:15 -07:00
..
dvo_ch7xxx.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_ch7017.c drm/i915/dvo: Report LVDS attached to ch701x as connected 2010-12-30 13:50:43 +00:00
dvo_ivch.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_sil164.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo_tfp410.c drm/i915: use GMBUS to manage i2c links 2010-09-18 15:46:19 +01:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: show interrupt info on IVB 2011-08-09 09:47:16 -07:00
i915_dma.c Merge branch 'drm-intel-fixes' into drm-intel-next 2011-07-22 13:40:42 -07:00
i915_drv.c drm/i915: FBC off for ironlake and older, otherwise on by default 2011-09-21 15:03:11 -07:00
i915_drv.h drm/i915: Correct eDP panel power sequencing delay computations 2011-10-06 08:37:15 -07:00
i915_gem_debug.c drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
i915_gem_evict.c drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
i915_gem_execbuffer.c Revert "drm/i915: Kill GTT mappings when moving from GTT domain" 2011-06-21 11:11:02 -07:00
i915_gem_gtt.c drm/i915: Add an interface to dynamically change the cache level 2011-06-09 21:51:16 -07:00
i915_gem_tiling.c drm/i915: Fix unfenced alignment on pre-G33 hardware 2011-07-18 14:02:06 -07:00
i915_gem.c drm/i915: Ignore GPU wedged errors while pinning scanout buffers 2011-07-29 15:08:41 -07:00
i915_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
i915_irq.c drm/i915: Shut down PCH interrupts during irq_uninstall 2011-09-30 15:30:41 -07:00
i915_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
i915_reg.h drm/i915: Correct eDP panel power sequencing delay computations 2011-10-06 08:37:15 -07:00
i915_suspend.c drm/i915: Cannot set clock gating under UMS 2011-08-15 12:10:27 -07:00
i915_trace_points.c drm/i915: Add tracepoints 2009-09-23 01:05:21 +01:00
i915_trace.h drm/i915: Refine tracepoints 2011-02-07 14:59:18 +00:00
intel_acpi.c drm/i915: i915 cannot provide switcher services. 2010-12-08 15:40:44 +10:00
intel_bios.c drm/i915/bios: Avoid temporary allocation whilst searching for downclock 2011-07-13 13:35:34 -07:00
intel_bios.h drm/i915: Correct eDP panel power sequencing delay computations 2011-10-06 08:37:15 -07:00
intel_crt.c drm/i915/crt: Explicitly return false if connected to a digital monitor 2011-06-04 10:41:06 -07:00
intel_display.c drm/i915: FBC off for ironlake and older, otherwise on by default 2011-09-21 15:03:11 -07:00
intel_dp.c drm/i915: Correct eDP panel power sequencing delay computations 2011-10-06 08:37:15 -07:00
intel_drv.h drm/i915: Enable SDVO hotplug interrupts for HDMI and DVI 2011-09-21 14:55:51 -07:00
intel_dvo.c drm/i915: cleanup per-pipe reg usage 2011-02-07 21:17:15 +00:00
intel_fb.c drm/i915: restore only the mode of this driver on lastclose (v2) 2011-04-27 17:51:59 +10:00
intel_hdmi.c drm/i915/hdmi: HDMI source product description infoframe support 2011-08-03 17:43:15 -07:00
intel_i2c.c Revert "drm/i915: Enable GMBUS for post-gen2 chipsets" 2011-06-17 09:22:01 +10:00
intel_lvds.c Not all systems expose a firmware or platform mechanism for changing the backlight intensity on i915, so add native driver support. 2011-08-15 12:10:25 -07:00
intel_modes.c drm/i915: Share the common force-audio property between connectors 2011-06-04 10:41:25 -07:00
intel_opregion.c Not all systems expose a firmware or platform mechanism for changing the backlight intensity on i915, so add native driver support. 2011-08-15 12:10:25 -07:00
intel_overlay.c Merge branch 'drm-intel-fixes' into drm-intel-next 2011-06-29 20:38:41 -07:00
intel_panel.c Not all systems expose a firmware or platform mechanism for changing the backlight intensity on i915, so add native driver support. 2011-08-15 12:10:25 -07:00
intel_ringbuffer.c drm/i915: set GFX_MODE to pre-Ivybridge default value even on Ivybridge 2011-08-19 11:57:12 -07:00
intel_ringbuffer.h drm/i915/ringbuffer: Idling requires waiting for the ring to be empty 2011-07-12 10:35:45 -07:00
intel_sdvo_regs.h Fix common misspellings 2011-03-31 11:26:23 -03:00
intel_sdvo.c drm/i915: Enable SDVO hotplug interrupts for HDMI and DVI 2011-09-21 14:55:51 -07:00
intel_tv.c drm/i915: TVDAC_STATE_CHG does not indicate successful load-detect 2011-07-13 11:07:55 -07:00
Makefile drm/i915: Split i915_gem_execbuffer into its own file. 2010-11-25 21:19:25 +00:00