From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean Delvare Subject: [PATCH 2/2] drm/kms: Use the standard VESA timeout for DDC channels Date: Fri, 21 Oct 2011 09:10:12 +0200 Message-ID: <201110210910.12848.jdelvare@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTP id 565AA9EECF for ; Fri, 21 Oct 2011 00:10:14 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org The VESA specification suggests a 2.2 ms timeout on DDC channels. Only the intel DRM driver implements this properly today, align all drivers to the proper implementation. Signed-off-by: Jean Delvare Cc: Eugeni Dodonov Cc: Dave Airlie Cc: Keith Packard Cc: Alex Deucher --- drivers/gpu/drm/i915/intel_i2c.c | 2 +- drivers/gpu/drm/nouveau/nouveau_i2c.c | 2 +- drivers/gpu/drm/radeon/radeon_i2c.c | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) --- linux-3.1-rc10.orig/drivers/gpu/drm/i915/intel_i2c.c 2011-10-20 14:59:11.000000000 +0200 +++ linux-3.1-rc10/drivers/gpu/drm/i915/intel_i2c.c 2011-10-20 15:24:33.000000000 +0200 @@ -183,7 +183,7 @@ intel_gpio_create(struct drm_i915_privat gpio->algo.getsda = get_data; gpio->algo.getscl = get_clock; gpio->algo.udelay = I2C_RISEFALL_TIME; - gpio->algo.timeout = usecs_to_jiffies(2200); + gpio->algo.timeout = usecs_to_jiffies(2200); /* from VESA */ gpio->algo.data = gpio; if (i2c_bit_add_bus(&gpio->adapter)) --- linux-3.1-rc10.orig/drivers/gpu/drm/nouveau/nouveau_i2c.c 2011-10-20 15:14:36.000000000 +0200 +++ linux-3.1-rc10/drivers/gpu/drm/nouveau/nouveau_i2c.c 2011-10-20 15:24:37.000000000 +0200 @@ -218,7 +218,7 @@ nouveau_i2c_init(struct drm_device *dev, if (entry->port_type < 6) { i2c->adapter.algo_data = &i2c->bit; i2c->bit.udelay = 10; - i2c->bit.timeout = usecs_to_jiffies(5000); + i2c->bit.timeout = usecs_to_jiffies(2200); /* from VESA */ i2c->bit.data = i2c; ret = i2c_bit_add_bus(&i2c->adapter); } else { --- linux-3.1-rc10.orig/drivers/gpu/drm/radeon/radeon_i2c.c 2011-10-20 14:58:17.000000000 +0200 +++ linux-3.1-rc10/drivers/gpu/drm/radeon/radeon_i2c.c 2011-10-20 15:24:41.000000000 +0200 @@ -929,9 +929,7 @@ struct radeon_i2c_chan *radeon_i2c_creat i2c->algo.bit.getsda = get_data; i2c->algo.bit.getscl = get_clock; i2c->algo.bit.udelay = 10; - /* vesa says 2.2 ms is enough, 1 jiffy doesn't seem to always - * make this, 2 jiffies is a lot more reliable */ - i2c->algo.bit.timeout = 2; + i2c->algo.bit.timeout = usecs_to_jiffies(2200); /* from VESA */ i2c->algo.bit.data = i2c; ret = i2c_bit_add_bus(&i2c->adapter); if (ret) { -- Jean Delvare Suse L3