Re: [PATCH 7/10] HDQ driver:replace semaphore with mutex

2008-09-25 Thread Felipe Balbi
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

[PATCH 7/10] HDQ driver:replace semaphore with mutex

2008-09-24 Thread Gadiyar, Anand
From: Madhusudhan Chikkature <[EMAIL PROTECTED]>

This patch replaces the usage of semaphore by mutex.

Signed-off-by: Madhusudhan Chikkature <[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.c2008-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_data->hdq_ick);
clk_put(hdq_data->hdq_fck);
-   up(&hdq_data->hdq_semlock);
+   mutex_unlock(&hdq_dat