On Thu, Sep 25, 2008 at 12:27:23PM +0530, ext Gadiyar, Anand wrote:
> From: Madhusudhan Chikkature <[EMAIL PROTECTED]>
>
> This patch replaces the usage of semaphore by mutex.
>
> Signed-off-by: Madhusudhan Chikkature <[EMAIL PROTECTED]>
Acked-by: Felipe Balbi <[EMAIL PROTECTED]>
> ---
> drivers/w1/masters/omap_hdq.c | 42
> ++
> 1 files changed, 22 insertions(+), 20 deletions(-)
>
> Index: linux-omap-2.6/drivers/w1/masters/omap_hdq.c
> ===
> --- linux-omap-2.6.orig/drivers/w1/masters/omap_hdq.c 2008-09-24
> 11:13:12.0 +0530
> +++ linux-omap-2.6/drivers/w1/masters/omap_hdq.c 2008-09-24
> 11:49:45.0 +0530
> @@ -55,7 +55,7 @@ static int w1_id;
> struct hdq_data {
> struct device *dev;
> void __iomem*hdq_base;
> - struct semaphore hdq_semlock;
> + struct mutex hdq_mutex;
> int hdq_usecount;
> struct clk *hdq_ick;
> struct clk *hdq_fck;
> @@ -308,12 +308,12 @@ omap_hdq_break(struct hdq_data *hdq_data
> u8 tmp_status;
> unsigned long irqflags;
>
> - ret = down_interruptible(&hdq_data->hdq_semlock);
> + ret = mutex_lock_interruptible(&hdq_data->hdq_mutex);
> if (ret < 0)
> return -EINTR;
>
> if (!hdq_data->hdq_usecount) {
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -EINVAL;
> }
>
> @@ -335,7 +335,7 @@ omap_hdq_break(struct hdq_data *hdq_data
> hdq_data->hdq_irqstatus, OMAP_HDQ_TIMEOUT);
> if (ret < 0) {
> dev_dbg(hdq_data->dev, "wait interrupted");
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -EINTR;
> }
>
> @@ -346,7 +346,7 @@ omap_hdq_break(struct hdq_data *hdq_data
> if (!(tmp_status & OMAP_HDQ_INT_STATUS_TIMEOUT)) {
> dev_dbg(hdq_data->dev, "timeout waiting for TIMEOUT, %x",
> tmp_status);
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -ETIMEDOUT;
> }
> /*
> @@ -361,7 +361,7 @@ omap_hdq_break(struct hdq_data *hdq_data
> dev_dbg(hdq_data->dev, "timeout waiting INIT&GO bits"
> "return to zero, %x", tmp_status);
>
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return ret;
> }
>
> @@ -371,12 +371,12 @@ static int hdq_read_byte(struct hdq_data
> u8 status;
> unsigned long irqflags;
>
> - ret = down_interruptible(&hdq_data->hdq_semlock);
> + ret = mutex_lock_interruptible(&hdq_data->hdq_mutex);
> if (ret < 0)
> return -EINTR;
>
> if (!hdq_data->hdq_usecount) {
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -EINVAL;
> }
>
> @@ -407,13 +407,13 @@ static int hdq_read_byte(struct hdq_data
> if (!(status & OMAP_HDQ_INT_STATUS_RXCOMPLETE)) {
> dev_dbg(hdq_data->dev, "timeout waiting for"
> "RXCOMPLETE, %x", status);
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -ETIMEDOUT;
> }
> }
> /* the data is ready. Read it in! */
> *val = hdq_reg_in(hdq_data, OMAP_HDQ_RX_DATA);
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
>
> return 0;
>
> @@ -427,13 +427,13 @@ omap_hdq_get(struct hdq_data *hdq_data)
> {
> int ret = 0;
>
> - ret = down_interruptible(&hdq_data->hdq_semlock);
> + ret = mutex_lock_interruptible(&hdq_data->hdq_mutex);
> if (ret < 0)
> return -EINTR;
>
> if (OMAP_HDQ_MAX_USER == hdq_data->hdq_usecount) {
> dev_dbg(hdq_data->dev, "attempt to exceed the max use count");
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> ret = -EINVAL;
> } else {
> hdq_data->hdq_usecount++;
> @@ -443,14 +443,14 @@ omap_hdq_get(struct hdq_data *hdq_data)
> dev_dbg(hdq_data->dev, "Can not enable ick\n");
> clk_put(hdq_data->hdq_ick);
> clk_put(hdq_data->hdq_fck);
> - up(&hdq_data->hdq_semlock);
> + mutex_unlock(&hdq_data->hdq_mutex);
> return -ENODEV;
> }
> if (clk_enable(hdq_data->hdq_fck)) {
> dev_dbg(hdq_data->dev, "Can not enable fck\n");
> clk_put(hdq