Revert "Remove some delays from Intel i2c code, we'll need a more comprehensive fix"
authorroot <root@airlied2.(none)>
Wed, 11 Apr 2007 03:40:50 +0000 (13:40 +1000)
committerroot <root@airlied2.(none)>
Wed, 11 Apr 2007 03:40:50 +0000 (13:40 +1000)
This reverts commit c0336989884e75bcd05284257e884754bb5f85b6.

this break SDVO

linux-core/intel_i2c.c

index e23283f..d4cf7ee 100644 (file)
@@ -80,8 +80,8 @@ static void set_clock(void *data, int state_high)
        else
                clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK |
                        GPIO_CLOCK_VAL_MASK;
-
        I915_WRITE(chan->reg, reserved | clock_bits);
+       udelay(I2C_RISEFALL_TIME); /* wait for the line to change state */
 }
 
 static void set_data(void *data, int state_high)
@@ -103,6 +103,7 @@ static void set_data(void *data, int state_high)
                        GPIO_DATA_VAL_MASK;
 
        I915_WRITE(chan->reg, reserved | data_bits);
+       udelay(I2C_RISEFALL_TIME); /* wait for the line to change state */
 }
 
 /**
@@ -146,7 +147,7 @@ struct intel_i2c_chan *intel_i2c_create(drm_device_t *dev, const u32 reg,
        chan->algo.setscl = set_clock;
        chan->algo.getsda = get_data;
        chan->algo.getscl = get_clock;
-       chan->algo.udelay = 20; /* between calls to (set|get)_(clock|data) */
+       chan->algo.udelay = 20;
        chan->algo.timeout = usecs_to_jiffies(2200);
        chan->algo.data = chan;
 
@@ -158,6 +159,7 @@ struct intel_i2c_chan *intel_i2c_create(drm_device_t *dev, const u32 reg,
        /* JJJ:  raise SCL and SDA? */
        set_data(chan, 1);
        set_clock(chan, 1);
+       udelay(20);
 
        return chan;