drm/kms: Make i2c buses faster
authorJean Delvare <jdelvare@suse.de>
Sat, 28 Jan 2012 10:07:09 +0000 (11:07 +0100)
committerDave Airlie <airlied@redhat.com>
Fri, 3 Feb 2012 09:34:03 +0000 (09:34 +0000)
A udelay value of 20 leads to an I2C bus running at only 25 kbps. I2C
devices can typically operate faster than this, 50 kbps should be fine
for all devices (and compliant devices can always stretch the clock if
needed.)

FWIW, the vast majority of framebuffer drivers set udelay to 10
already. So set it to 10 in DRM drivers too, this will make EDID block
reads faster. We might even lower the udelay value later if no problem
is reported.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Acked-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Cc: Keith Packard <keithp@keithp.com>
Reviewed-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/i915/intel_i2c.c
drivers/gpu/drm/radeon/radeon_i2c.c

index d30ccccb9d738ad4f1f893ec15b5df9fb90bd50f..7fa4f640e6fdff683acb0871f649771f9eaca2f6 100644 (file)
@@ -37,7 +37,7 @@
 
 /* Intel GPIO access functions */
 
-#define I2C_RISEFALL_TIME 20
+#define I2C_RISEFALL_TIME 10
 
 static inline struct intel_gmbus *
 to_intel_gmbus(struct i2c_adapter *i2c)
index 98a8ad680109efc5fdb7b246d4a79a68839f383d..b7ec89bf3939f6cfaa855f53acfb5966d464d8aa 100644 (file)
@@ -925,7 +925,7 @@ struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev,
                i2c->algo.bit.setscl = set_clock;
                i2c->algo.bit.getsda = get_data;
                i2c->algo.bit.getscl = get_clock;
-               i2c->algo.bit.udelay = 20;
+               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;