diff options
-rw-r--r-- | arch/mips/lasat/picvue.c | 2 | ||||
-rw-r--r-- | arch/mips/lasat/picvue.h | 3 | ||||
-rw-r--r-- | arch/mips/lasat/picvue_proc.c | 18 |
3 files changed, 10 insertions, 13 deletions
diff --git a/arch/mips/lasat/picvue.c b/arch/mips/lasat/picvue.c index 6471d0663fd..d3d04c392e2 100644 --- a/arch/mips/lasat/picvue.c +++ b/arch/mips/lasat/picvue.c @@ -22,8 +22,6 @@ struct pvc_defs *picvue; -DECLARE_MUTEX(pvc_sem); - static void pvc_reg_write(u32 val) { *picvue->reg = val; diff --git a/arch/mips/lasat/picvue.h b/arch/mips/lasat/picvue.h index 2a96bf97189..91df5537112 100644 --- a/arch/mips/lasat/picvue.h +++ b/arch/mips/lasat/picvue.h @@ -4,8 +4,6 @@ * Brian Murphy <brian.murphy@eicon.com> * */ -#include <asm/semaphore.h> - struct pvc_defs { volatile u32 *reg; u32 data_shift; @@ -45,4 +43,3 @@ void pvc_move(u8 cmd); void pvc_clear(void); void pvc_home(void); -extern struct semaphore pvc_sem; diff --git a/arch/mips/lasat/picvue_proc.c b/arch/mips/lasat/picvue_proc.c index 9947c152582..0bb6037afba 100644 --- a/arch/mips/lasat/picvue_proc.c +++ b/arch/mips/lasat/picvue_proc.c @@ -13,9 +13,11 @@ #include <linux/interrupt.h> #include <linux/timer.h> +#include <linux/mutex.h> #include "picvue.h" +static DEFINE_MUTEX(pvc_mutex); static char pvc_lines[PVC_NLINES][PVC_LINELEN+1]; static int pvc_linedata[PVC_NLINES]; static struct proc_dir_entry *pvc_display_dir; @@ -48,9 +50,9 @@ static int pvc_proc_read_line(char *page, char **start, return 0; } - down(&pvc_sem); + mutex_lock(&pvc_mutex); page += sprintf(page, "%s\n", pvc_lines[lineno]); - up(&pvc_sem); + mutex_unlock(&pvc_mutex); return page - origpage; } @@ -73,10 +75,10 @@ static int pvc_proc_write_line(struct file *file, const char *buffer, if (buffer[count-1] == '\n') count--; - down(&pvc_sem); + mutex_lock(&pvc_mutex); strncpy(pvc_lines[lineno], buffer, count); pvc_lines[lineno][count] = '\0'; - up(&pvc_sem); + mutex_unlock(&pvc_mutex); tasklet_schedule(&pvc_display_tasklet); @@ -89,7 +91,7 @@ static int pvc_proc_write_scroll(struct file *file, const char *buffer, int origcount = count; int cmd = simple_strtol(buffer, NULL, 10); - down(&pvc_sem); + mutex_lock(&pvc_mutex); if (scroll_interval != 0) del_timer(&timer); @@ -106,7 +108,7 @@ static int pvc_proc_write_scroll(struct file *file, const char *buffer, } add_timer(&timer); } - up(&pvc_sem); + mutex_unlock(&pvc_mutex); return origcount; } @@ -117,9 +119,9 @@ static int pvc_proc_read_scroll(char *page, char **start, { char *origpage = page; - down(&pvc_sem); + mutex_lock(&pvc_mutex); page += sprintf(page, "%d\n", scroll_dir * scroll_interval); - up(&pvc_sem); + mutex_unlock(&pvc_mutex); return page - origpage; } |