Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=69b06c15e7e24d2b17ec8f89a7f3ae9fa55f5667
Commit:     69b06c15e7e24d2b17ec8f89a7f3ae9fa55f5667
Parent:     a34d24425e9c133e875a26c0bbc91783cf485b93
Author:     Jesper Nilsson <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 8 17:00:25 2008 +0100
Committer:  Jesper Nilsson <[EMAIL PROTECTED]>
CommitDate: Fri Feb 8 17:00:25 2008 +0100

    CRIS v32: Change drivers/i2c.c locking.
    
    - Change spin_lock + local_irq_save into spin_lock_irqsave
    - Change spin_unlock + local_irq_restore into spin_unlock_irqrestore
    - Return ENOTTY if ioctl is not recognized as a cris ioctl.
    - Make init functions static.
---
 arch/cris/arch-v32/drivers/i2c.c |   61 +++++++------------------------------
 1 files changed, 12 insertions(+), 49 deletions(-)

diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c
index 4eda323..c2fb7a5 100644
--- a/arch/cris/arch-v32/drivers/i2c.c
+++ b/arch/cris/arch-v32/drivers/i2c.c
@@ -395,14 +395,10 @@ i2c_write(unsigned char theSlave, void *data, size_t 
nbytes)
        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();
                /*
@@ -430,16 +426,12 @@ i2c_write(unsigned char theSlave, void *data, size_t 
nbytes)
                 * 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;
 }
@@ -459,16 +451,12 @@ i2c_read(unsigned char theSlave, void *data, size_t 
nbytes)
        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
                 */
                i2c_start();
@@ -500,13 +488,9 @@ i2c_read(unsigned char theSlave, void *data, size_t nbytes)
                 * 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;
 }
@@ -525,14 +509,10 @@ i2c_writereg(unsigned char theSlave, unsigned char theReg,
        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();
                /*
@@ -567,15 +547,11 @@ i2c_writereg(unsigned char theSlave, unsigned char theReg,
                 * 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;
 }
@@ -594,15 +570,11 @@ i2c_readreg(unsigned char theSlave, unsigned char theReg)
        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
                 */
                i2c_start();
@@ -653,14 +625,10 @@ i2c_readreg(unsigned char theSlave, unsigned char theReg)
                 * 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;
 }
@@ -685,7 +653,7 @@ i2c_ioctl(struct inode *inode, struct file *file,
          unsigned int cmd, unsigned long arg)
 {
        if(_IOC_TYPE(cmd) != ETRAXI2C_IOCTYPE) {
-               return -EINVAL;
+               return -ENOTTY;
        }
 
        switch (_IOC_NR(cmd)) {
@@ -725,8 +693,7 @@ static const struct file_operations i2c_fops = {
        .release =  i2c_release,
 };
 
-int __init
-i2c_init(void)
+static int __init i2c_init(void)
 {
        static int res;
        static int first = 1;
@@ -750,10 +717,8 @@ i2c_init(void)
 }
 
 
-int __init
-i2c_register(void)
+static int __init i2c_register(void)
 {
-
        int res;
 
        res = i2c_init();
@@ -763,7 +728,7 @@ i2c_register(void)
        /* 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;
        }
@@ -773,9 +738,7 @@ i2c_register(void)
 
        return 0;
 }
-
 /* this makes sure that i2c_init is called during boot */
-
 module_init(i2c_register);
 
 /****************** END OF FILE i2c.c ********************************/
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to