vserver 2.0 rc7
[linux-2.6.git] / drivers / i2c / busses / i2c-ite.c
index 6263811..702e3de 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/delay.h>
 #include <linux/slab.h>
 #include <linux/init.h>
+#include <linux/wait.h>
 #include <asm/irq.h>
 #include <asm/io.h>
 
@@ -107,7 +108,7 @@ static int iic_ite_getclock(void *data)
  * IIC controller interrupts.
  */
 static void iic_ite_waitforpin(void) {
-
+   DEFINE_WAIT(wait);
    int timeout = 2;
    long flags;
 
@@ -121,13 +122,15 @@ static void iic_ite_waitforpin(void) {
        spin_lock_irqsave(&lock, flags);
        if (iic_pending == 0) {
                spin_unlock_irqrestore(&lock, flags);
-               if (interruptible_sleep_on_timeout(&iic_wait, timeout*HZ)) {
+               prepare_to_wait(&iic_wait, &wait, TASK_INTERRUPTIBLE);
+               if (schedule_timeout(timeout*HZ)) {
                        spin_lock_irqsave(&lock, flags);
                        if (iic_pending == 1) {
                                iic_pending = 0;
                        }
                        spin_unlock_irqrestore(&lock, flags);
                }
+               finish_wait(&iic_wait, &wait);
        } else {
                iic_pending = 0;
                spin_unlock_irqrestore(&lock, flags);