linux/drivers/gpu/drm/i915
Daniel Vetter 65e8186602 drm/i915: be more careful when returning -ENXIO in gmbus transfer
... flaky ddc hardware can cause a spurious NAK, resulting in the i2c
core and drm edid functions not trying to retry the edid transfer.

Luckily the gmbus quiescenting also times out for these cases, so we
can get out of this mess by returning -ETIMEDOUT for this specific
case. This way we keep the fast-fail of returning -ENXIO if there is
no device present, speeding up the boot process.

This regression has been introduced in

commit e646d57735
Author: Daniel Kurtz <djkurtz@chromium.org>
Date:   Fri Mar 30 19:46:38 2012 +0800

    drm/i915/intel_i2c: always wait for IDLE before clearing NAK

v2: Return -ETIMEDOUT for this case and keep the -ENXIO for real NAKs,
suggested by Daniel Kurtz.

Cc: Daniel Kurtz <djkurtz@chromium.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49518
Reported-and-Tested-by: Julian Simioni <julian.simioni@gmail.com>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-05-21 21:04:21 +02:00
..
dvo_ch7xxx.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ch7017.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_ivch.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_sil164.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo_tfp410.c Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
dvo.h drm/i915: Subclass intel_encoder. 2010-08-09 11:24:28 -07:00
i915_debugfs.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_dma.c Merge tag 'drm-intel-next-2012-05-20' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-21 08:17:42 +01:00
i915_drv.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_drv.h drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_gem_debug.c drm/i915: Remove the list of pinned inactive objects 2012-05-03 11:18:11 +02:00
i915_gem_evict.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_gem_execbuffer.c drm/i915: Check whether the ring is initialised prior to dispatch 2012-05-19 22:39:53 +02:00
i915_gem_gtt.c drm/i915: remove do_retire from i915_wait_request 2012-05-03 11:18:20 +02:00
i915_gem_stolen.c drm/i915: Split the stolen handling for GEM out of i915_dma.c 2012-05-03 11:18:11 +02:00
i915_gem_tiling.c drm/i915: Only the zap the VMA after updating the tiling parameters 2012-05-03 11:18:07 +02:00
i915_gem.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_ioc32.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_irq.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
i915_reg.h drm/i915: implement hsw_write_infoframe 2012-05-20 17:52:35 +02:00
i915_suspend.c drm/i915: gen6_enable_rps() wants to be called after ring initialisation 2012-05-19 22:38:29 +02:00
i915_sysfs.c drm/i915: rc6 residency (fix the fix) 2012-04-23 09:30:14 +02:00
i915_trace_points.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
i915_trace.h Drivers: i915: Fix all space related issues. 2011-09-19 18:01:47 -07:00
intel_acpi.c drm/i915: [sparse] trivial sparse fixes 2012-04-18 10:34:49 +02:00
intel_bios.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_bios.h drm/i915: VBT Parser cleanup for eDP block 2012-01-13 08:37:44 -08:00
intel_crt.c drm/i915: account for only one PCH receiver on Haswell 2012-05-19 22:39:47 +02:00
intel_ddi.c drm/i915: prepare HDMI link for Haswell 2012-05-19 22:39:51 +02:00
intel_display.c drm/i915: IBX has a fixed pch pll to pch pipe mapping 2012-05-20 20:48:35 +02:00
intel_dp.c drm/i915: manage PCH PLLs separately from pipes 2012-05-03 11:18:08 +02:00
intel_drv.h drm/i915: fixup infoframe support for sdvo 2012-05-20 17:11:11 +02:00
intel_dvo.c drm/i915/intel_i2c: refactor using intel_gmbus_get_adapter 2012-03-28 14:40:44 +02:00
intel_fb.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
intel_hdmi.c drm/i915: implement hsw_write_infoframe 2012-05-20 17:52:35 +02:00
intel_i2c.c drm/i915: be more careful when returning -ENXIO in gmbus transfer 2012-05-21 21:04:21 +02:00
intel_lvds.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
intel_modes.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
intel_opregion.c drm/i915: [sparse] __iomem fixes for opregion 2012-05-03 11:18:00 +02:00
intel_overlay.c drm/i915: rip out unnecessary calls to drm_mode_set_crtcinfo 2012-05-04 11:31:24 +02:00
intel_panel.c Linux 3.4-rc6 2012-05-07 14:02:14 +02:00
intel_pm.c drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
intel_ringbuffer.c Merge remote-tracking branch 'airlied/drm-core-next' into drm-intel-next-queued 2012-05-08 13:39:59 +02:00
intel_ringbuffer.h drm/i915: Introduce for_each_ring() macro 2012-05-19 22:39:53 +02:00
intel_sdvo_regs.h misc latin1 to utf8 conversions 2012-01-02 13:04:55 +01:00
intel_sdvo.c drm/i915: fixup infoframe support for sdvo 2012-05-20 17:11:11 +02:00
intel_sprite.c drm/i915: properly check for MODESET for kms driver ioctls 2012-05-03 11:18:13 +02:00
intel_tv.c drm/i915: rip out unnecessary calls to drm_mode_set_crtcinfo 2012-05-04 11:31:24 +02:00
Makefile drm/i915: initialize DDI buffer translations 2012-05-19 22:39:47 +02:00