unsigned char value;
unsigned long flags;
- spin_lock(&i2c_lock);
+ spin_lock_irqsave(&i2c_lock, flags);
do {
error = 0;
- /*
- * we don't like to be interrupted
- */
- local_irq_save(flags);
i2c_start();
/*
* end byte stream
*/
i2c_stop();
- /*
- * enable interrupt again
- */
- local_irq_restore(flags);
} while (error && cntr--);
i2c_delay(CLOCK_LOW_TIME);
- spin_unlock(&i2c_lock);
+ spin_unlock_irqrestore(&i2c_lock, flags);
return -error;
}
int error, cntr = 3;
unsigned long flags;
- spin_lock(&i2c_lock);
+ spin_lock_irqsave(&i2c_lock, flags);
do {
error = 0;
memset(data, 0, nbytes);
- /*
- * we don't like to be interrupted
- */
- local_irq_save(flags);
/*
* generate start condition
*/
* end sequence
*/
i2c_stop();
- /*
- * enable interrupt again
- */
- local_irq_restore(flags);
} while (error && cntr--);
- spin_unlock(&i2c_lock);
+ spin_unlock_irqrestore(&i2c_lock, flags);
return -error;
}
int error, cntr = 3;
unsigned long flags;
- spin_lock(&i2c_lock);
+ spin_lock_irqsave(&i2c_lock, flags);
do {
error = 0;
- /*
- * we don't like to be interrupted
- */
- local_irq_save(flags);
i2c_start();
/*
* end byte stream
*/
i2c_stop();
- /*
- * enable interrupt again
- */
- local_irq_restore(flags);
} while(error && cntr--);
i2c_delay(CLOCK_LOW_TIME);
- spin_unlock(&i2c_lock);
+ spin_unlock_irqrestore(&i2c_lock, flags);
return -error;
}
int error, cntr = 3;
unsigned long flags;
- spin_lock(&i2c_lock);
+ spin_lock_irqsave(&i2c_lock, flags);
do {
error = 0;
- /*
- * we don't like to be interrupted
- */
- local_irq_save(flags);
/*
* generate start condition
*/
* end sequence
*/
i2c_stop();
- /*
- * enable interrupt again
- */
- local_irq_restore(flags);
} while(error && cntr--);
- spin_unlock(&i2c_lock);
+ spin_unlock_irqrestore(&i2c_lock, flags);
return b;
}
unsigned int cmd, unsigned long arg)
{
if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) {
- return -EINVAL;
+ return -ENOTTY;
}
switch (_IOC_NR(cmd)) {
.release = i2c_release,
};
-int __init
-i2c_init(void)
+static int __init i2c_init(void)
{
static int res;
static int first = 1;
}
-int __init
-i2c_register(void)
+static int __init i2c_register(void)
{
-
int res;
res = i2c_init();
/* register char device */
res = register_chrdev(I2C_MAJOR, i2c_name, &i2c_fops);
- if(res < 0) {
+ if (res < 0) {
printk(KERN_ERR "i2c: couldn't get a major number.\n");
return res;
}
return 0;
}
-
/* this makes sure that i2c_init is called during boot */
-
module_init(i2c_register);
/****************** END OF FILE i2c.c ********************************/