Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / sbus / char / bbc_i2c.c
index a489c54..3e156e0 100644 (file)
@@ -57,8 +57,8 @@ struct bbc_i2c_bus {
        struct bbc_i2c_bus              *next;
        int                             index;
        spinlock_t                      lock;
-       void                            *i2c_bussel_reg;
-       void                            *i2c_control_regs;
+       void                            __iomem *i2c_bussel_reg;
+       void                            __iomem *i2c_control_regs;
        unsigned char                   own, clock;
 
        wait_queue_head_t               wq;
@@ -189,13 +189,13 @@ static int wait_for_pin(struct bbc_i2c_bus *bp, u8 *status)
        while (limit-- > 0) {
                u8 val;
 
-               current->state = TASK_INTERRUPTIBLE;
+               set_current_state(TASK_INTERRUPTIBLE);
                *status = val = readb(bp->i2c_control_regs + 0);
                if ((val & I2C_PCF_PIN) == 0) {
                        ret = 0;
                        break;
                }
-               schedule_timeout(HZ/4);
+               msleep_interruptible(250);
        }
        remove_wait_queue(&bp->wq, &wait);
        bp->waiting = 0;
@@ -440,7 +440,8 @@ static int __init bbc_i2c_init(void)
        struct linux_ebus_device *edev = NULL;
        int err, index = 0;
 
-       if (tlb_type != cheetah || !bbc_present())
+       if ((tlb_type != cheetah && tlb_type != cheetah_plus) ||
+           !bbc_present())
                return -ENODEV;
 
        for_each_ebus(ebus) {
@@ -486,3 +487,4 @@ static void bbc_i2c_cleanup(void)
 
 module_init(bbc_i2c_init);
 module_exit(bbc_i2c_cleanup);
+MODULE_LICENSE("GPL");