Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=76a5b8bb3525b63db137c714cf9ad5b3b99e75f0
Commit:     76a5b8bb3525b63db137c714cf9ad5b3b99e75f0
Parent:     0b7dbfbf13192a57591275d50b0993cb0acdb25c
Author:     Johannes Berg <[EMAIL PROTECTED]>
AuthorDate: Wed Jul 4 09:01:54 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Tue Jul 10 21:55:54 2007 +1000

    [POWERPC] powermac i2c: Use mutex
    
    Convert the semaphores in low_i2c that are used as mutexes to real
    mutexes.
    
    Signed-off-by: Johannes Berg <[EMAIL PROTECTED]>
    Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/powermac/low_i2c.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/platforms/powermac/low_i2c.c 
b/arch/powerpc/platforms/powermac/low_i2c.c
index 3f507ab..efdf5eb 100644
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -42,6 +42,7 @@
 #include <linux/interrupt.h>
 #include <linux/completion.h>
 #include <linux/timer.h>
+#include <linux/mutex.h>
 #include <asm/keylargo.h>
 #include <asm/uninorth.h>
 #include <asm/io.h>
@@ -84,7 +85,7 @@ struct pmac_i2c_bus
        void                    *hostdata;
        int                     channel;        /* some hosts have multiple */
        int                     mode;           /* current mode */
-       struct semaphore        sem;
+       struct mutex            mutex;
        int                     opened;
        int                     polled;         /* open mode */
        struct platform_device  *platform_dev;
@@ -104,7 +105,7 @@ static LIST_HEAD(pmac_i2c_busses);
 
 struct pmac_i2c_host_kw
 {
-       struct semaphore        mutex;          /* Access mutex for use by
+       struct mutex            mutex;          /* Access mutex for use by
                                                 * i2c-keywest */
        void __iomem            *base;          /* register base address */
        int                     bsteps;         /* register stepping */
@@ -375,14 +376,14 @@ static void kw_i2c_timeout(unsigned long data)
 static int kw_i2c_open(struct pmac_i2c_bus *bus)
 {
        struct pmac_i2c_host_kw *host = bus->hostdata;
-       down(&host->mutex);
+       mutex_lock(&host->mutex);
        return 0;
 }
 
 static void kw_i2c_close(struct pmac_i2c_bus *bus)
 {
        struct pmac_i2c_host_kw *host = bus->hostdata;
-       up(&host->mutex);
+       mutex_unlock(&host->mutex);
 }
 
 static int kw_i2c_xfer(struct pmac_i2c_bus *bus, u8 addrdir, int subsize,
@@ -498,7 +499,7 @@ static struct pmac_i2c_host_kw *__init 
kw_i2c_host_init(struct device_node *np)
                kfree(host);
                return NULL;
        }
-       init_MUTEX(&host->mutex);
+       mutex_init(&host->mutex);
        init_completion(&host->complete);
        spin_lock_init(&host->lock);
        init_timer(&host->timeout_timer);
@@ -571,7 +572,7 @@ static void __init kw_i2c_add(struct pmac_i2c_host_kw *host,
        bus->open = kw_i2c_open;
        bus->close = kw_i2c_close;
        bus->xfer = kw_i2c_xfer;
-       init_MUTEX(&bus->sem);
+       mutex_init(&bus->mutex);
        if (controller == busnode)
                bus->flags = pmac_i2c_multibus;
        list_add(&bus->link, &pmac_i2c_busses);
@@ -798,7 +799,7 @@ static void __init pmu_i2c_probe(void)
                bus->mode = pmac_i2c_mode_std;
                bus->hostdata = bus + 1;
                bus->xfer = pmu_i2c_xfer;
-               init_MUTEX(&bus->sem);
+               mutex_init(&bus->mutex);
                bus->flags = pmac_i2c_multibus;
                list_add(&bus->link, &pmac_i2c_busses);
 
@@ -921,7 +922,7 @@ static void __init smu_i2c_probe(void)
                bus->mode = pmac_i2c_mode_std;
                bus->hostdata = bus + 1;
                bus->xfer = smu_i2c_xfer;
-               init_MUTEX(&bus->sem);
+               mutex_init(&bus->mutex);
                bus->flags = 0;
                list_add(&bus->link, &pmac_i2c_busses);
 
@@ -1093,13 +1094,13 @@ int pmac_i2c_open(struct pmac_i2c_bus *bus, int polled)
 {
        int rc;
 
-       down(&bus->sem);
+       mutex_lock(&bus->mutex);
        bus->polled = polled || pmac_i2c_force_poll;
        bus->opened = 1;
        bus->mode = pmac_i2c_mode_std;
        if (bus->open && (rc = bus->open(bus)) != 0) {
                bus->opened = 0;
-               up(&bus->sem);
+               mutex_unlock(&bus->mutex);
                return rc;
        }
        return 0;
@@ -1112,7 +1113,7 @@ void pmac_i2c_close(struct pmac_i2c_bus *bus)
        if (bus->close)
                bus->close(bus);
        bus->opened = 0;
-       up(&bus->sem);
+       mutex_unlock(&bus->mutex);
 }
 EXPORT_SYMBOL_GPL(pmac_i2c_close);
 
-
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