Please find below the corrected version, which compiles without error for me. I would appreciate any comments from the janitors list. This is one (of many) cases where I made a decision about replacing set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(some_time); with msleep(jiffies_to_msecs(some_time)); msleep() is not exactly the same as the previous code, but I only did this replacement where I thought long delays were *desired*. If this is not the case here, then just disregard this patch. Thanks, Nish Applys-to: 2.6.7 Description: Uses msleep() instead of schedule_timeout() to guarantee the task delays at least the desired time amount. Signed-off-by: Nishanth Aravamudan --- linux-vanilla/drivers/bluetooth/bluecard_cs.c 2004-06-16 05:19:22.000000000 +0000 +++ linux-dev/drivers/bluetooth/bluecard_cs.c 2004-07-21 20:52:07.000000000 +0000 @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -776,8 +777,7 @@ int bluecard_open(bluecard_info_t *info) outb(0x80, iobase + 0x30); /* Wait some time */ - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 100); + msleep(100); /* Turn FPGA on */ outb(0x00, iobase + 0x30); @@ -823,8 +823,7 @@ int bluecard_open(bluecard_info_t *info) outb((0x0f << RTS_LEVEL_SHIFT_BITS) | 1, iobase + REG_RX_CONTROL); /* Timeout before it is safe to send the first HCI packet */ - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout((HZ * 5) / 4); // or set it to 3/2 + msleep(1250); /* Register HCI device */ if (hci_register_dev(hdev) < 0) {