#include <linux/miscdevice.h>
 #include <linux/spinlock.h>
 #include <linux/device.h>
+#include <linux/mutex.h>
 
 #include <asm/rtc.h>
 #include <asm/semaphore.h>
 /*
  * rtc_sem protects rtc_inuse and rtc_ops
  */
-static DECLARE_MUTEX(rtc_sem);
+static DEFINE_MUTEX(rtc_mutex);
 static unsigned long rtc_inuse;
 static struct rtc_ops *rtc_ops;
 
 {
        int ret;
 
-       down(&rtc_sem);
+       mutex_lock(&rtc_mutex);
 
        if (rtc_inuse) {
                ret = -EBUSY;
                        rtc_inuse = 1;
                }
        }
-       up(&rtc_sem);
+       mutex_unlock(&rtc_mutex);
 
        return ret;
 }
 {
        int ret = -EBUSY;
 
-       down(&rtc_sem);
+       mutex_lock(&rtc_mutex);
        if (rtc_ops == NULL) {
                rtc_ops = ops;
 
                        create_proc_read_entry("driver/rtc", 0, NULL,
                                               rtc_read_proc, ops);
        }
-       up(&rtc_sem);
+       mutex_unlock(&rtc_mutex);
 
        return ret;
 }
 
 void unregister_rtc(struct rtc_ops *rtc)
 {
-       down(&rtc_sem);
+       mutex_lock(&rtc_mutex);
        if (rtc == rtc_ops) {
                remove_proc_entry("driver/rtc", NULL);
                misc_deregister(&rtc_miscdev);
                rtc_ops = NULL;
        }
-       up(&rtc_sem);
+       mutex_unlock(&rtc_mutex);
 }
 EXPORT_SYMBOL(unregister_rtc);
 
 #include <linux/proc_fs.h>
 #include <linux/device.h>
 #include <linux/init.h>
+#include <linux/mutex.h>
 
 #include <asm/dma.h>
 #include <asm/ecard.h>
 
 static DECLARE_WAIT_QUEUE_HEAD(ecard_wait);
 static struct ecard_request *ecard_req;
-static DECLARE_MUTEX(ecard_sem);
+static DEFINE_MUTEX(ecard_mutex);
 
 /*
  * Set up the expansion card daemon's page tables.
 
        req->complete = &completion;
 
-       down(&ecard_sem);
+       mutex_lock(&ecard_mutex);
        ecard_req = req;
        wake_up(&ecard_wait);
 
         * Now wait for kecardd to run.
         */
        wait_for_completion(&completion);
-       up(&ecard_sem);
+       mutex_unlock(&ecard_mutex);
 }
 
 /* ======================= Mid-level card control ===================== */
 
 #include <linux/err.h>
 #include <linux/string.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/semaphore.h>
 
 #include "clock.h"
 
 static LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 
 struct clk *clk_get(struct device *dev, const char *id)
 {
        struct clk *p, *clk = ERR_PTR(-ENOENT);
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_for_each_entry(p, &clocks, node) {
                if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
                        clk = p;
                        break;
                }
        }
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return clk;
 }
 
 int clk_register(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->node, &clocks);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
        return 0;
 }
 EXPORT_SYMBOL(clk_register);
 
 void clk_unregister(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_del(&clk->node);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 }
 EXPORT_SYMBOL(clk_unregister);
 
 
 #include <linux/err.h>
 #include <linux/string.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/semaphore.h>
 #include <asm/hardware/icst525.h>
 #include "clock.h"
 
 static LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 
 struct clk *clk_get(struct device *dev, const char *id)
 {
        struct clk *p, *clk = ERR_PTR(-ENOENT);
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_for_each_entry(p, &clocks, node) {
                if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
                        clk = p;
                        break;
                }
        }
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return clk;
 }
 
 int clk_register(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->node, &clocks);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
        return 0;
 }
 EXPORT_SYMBOL(clk_register);
 
 void clk_unregister(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_del(&clk->node);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 }
 EXPORT_SYMBOL(clk_unregister);
 
 
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/init.h>
+#include <linux/mutex.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/hardware.h>
 #endif
 };
 
-static DECLARE_MUTEX(sem);
+static DEFINE_MUTEX(mutex);
 static int use_count[PXA_SSP_PORTS] = {0, 0, 0};
 
 static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        if (port > PXA_SSP_PORTS || port == 0)
                return -ENODEV;
 
-       down(&sem);
+       mutex_lock(&mutex);
        if (use_count[port - 1]) {
-               up(&sem);
+               mutex_unlock(&mutex);
                return -EBUSY;
        }
        use_count[port - 1]++;
 
        if (!request_mem_region(__PREG(SSCR0_P(port)), 0x2c, "SSP")) {
                use_count[port - 1]--;
-               up(&sem);
+               mutex_unlock(&mutex);
                return -EBUSY;
        }
        dev->port = port;
 
        /* turn on SSP port clock */
        pxa_set_cken(ssp_info[port-1].clock, 1);
-       up(&sem);
+       mutex_unlock(&mutex);
        return 0;
 
 out_region:
        release_mem_region(__PREG(SSCR0_P(port)), 0x2c);
        use_count[port - 1]--;
-       up(&sem);
+       mutex_unlock(&mutex);
        return ret;
 }
 
  */
 void ssp_exit(struct ssp_dev *dev)
 {
-       down(&sem);
+       mutex_lock(&mutex);
        SSCR0_P(dev->port) &= ~SSCR0_SSE;
 
        if (dev->port > PXA_SSP_PORTS || dev->port == 0) {
                free_irq(dev->irq, dev);
        release_mem_region(__PREG(SSCR0_P(dev->port)), 0x2c);
        use_count[dev->port - 1]--;
-       up(&sem);
+       mutex_unlock(&mutex);
 }
 
 EXPORT_SYMBOL(ssp_write_word);
 
 #include <linux/errno.h>
 #include <linux/err.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/semaphore.h>
 #include <asm/hardware/icst307.h>
 #include "clock.h"
 
 static LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 
 struct clk *clk_get(struct device *dev, const char *id)
 {
        struct clk *p, *clk = ERR_PTR(-ENOENT);
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_for_each_entry(p, &clocks, node) {
                if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
                        clk = p;
                        break;
                }
        }
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return clk;
 }
 
 int clk_register(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->node, &clocks);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
        return 0;
 }
 EXPORT_SYMBOL(clk_register);
 
 void clk_unregister(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_del(&clk->node);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 }
 EXPORT_SYMBOL(clk_unregister);
 
 
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/hardware.h>
 #include <asm/atomic.h>
 /* clock information */
 
 static LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 
 /* old functions */
 
        else
                idno = to_platform_device(dev)->id;
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
 
        list_for_each_entry(p, &clocks, list) {
                if (p->id == idno &&
                }
        }
 
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
        return clk;
 }
 
 
        /* add to the list of available clocks */
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->list, &clocks);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return 0;
 }
 
 #include <linux/err.h>
 #include <linux/string.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/semaphore.h>
 #include <asm/hardware/icst307.h>
 #include "clock.h"
 
 static LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 
 struct clk *clk_get(struct device *dev, const char *id)
 {
        struct clk *p, *clk = ERR_PTR(-ENOENT);
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_for_each_entry(p, &clocks, node) {
                if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
                        clk = p;
                        break;
                }
        }
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return clk;
 }
 
 int clk_register(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->node, &clocks);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
        return 0;
 }
 EXPORT_SYMBOL(clk_register);
 
 void clk_unregister(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_del(&clk->node);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 }
 EXPORT_SYMBOL(clk_unregister);
 
 
 #include <linux/err.h>
 #include <linux/string.h>
 #include <linux/clk.h>
+#include <linux/mutex.h>
 
 #include <asm/io.h>
 #include <asm/semaphore.h>
 #include <asm/arch/clock.h>
 
 LIST_HEAD(clocks);
-static DECLARE_MUTEX(clocks_sem);
+static DEFINE_MUTEX(clocks_mutex);
 DEFINE_SPINLOCK(clockfw_lock);
 
 static struct clk_functions *arch_clock;
 {
        struct clk *p, *clk = ERR_PTR(-ENOENT);
 
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_for_each_entry(p, &clocks, node) {
                if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
                        clk = p;
                        break;
                }
        }
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return clk;
 }
 
 int clk_register(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_add(&clk->node, &clocks);
        if (clk->init)
                clk->init(clk);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 
        return 0;
 }
 
 void clk_unregister(struct clk *clk)
 {
-       down(&clocks_sem);
+       mutex_lock(&clocks_mutex);
        list_del(&clk->node);
-       up(&clocks_sem);
+       mutex_unlock(&clocks_mutex);
 }
 EXPORT_SYMBOL(clk_unregister);