sem2mutex conversion
Signed-off-by: Komal Shah <komal_shah802003@yahoo.com>
Signed-off-by: Paul Mundt <paul.mundt@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
#include <linux/module.h>
#include <linux/completion.h>
#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/completion.h>
#include <linux/platform_device.h>
-#include <asm/semaphore.h>
+#include <linux/mutex.h>
#include "cbus.h"
#include "retu.h"
#include "cbus.h"
#include "retu.h"
-static struct semaphore retu_rtc_sem;
+static struct mutex retu_rtc_mutex;
static u16 retu_rtc_alarm_expired;
static u16 retu_rtc_reset_occurred;
static u16 retu_rtc_alarm_expired;
static u16 retu_rtc_reset_occurred;
+ mutex_lock(&retu_rtc_mutex);
dsr2 = retu_read_reg(RETU_REG_RTCDSR);
} while ((dsr != dsr2));
dsr2 = retu_read_reg(RETU_REG_RTCDSR);
} while ((dsr != dsr2));
+ mutex_unlock(&retu_rtc_mutex);
/*
* Format a 32-bit date-string for userspace
/*
* Format a 32-bit date-string for userspace
static ssize_t retu_rtc_time_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
static ssize_t retu_rtc_time_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
+ mutex_lock(&retu_rtc_mutex);
/*
* Writing anything to the day counter forces it to 0
* The seconds counter would be cleared by resetting the minutes counter,
/*
* Writing anything to the day counter forces it to 0
* The seconds counter would be cleared by resetting the minutes counter,
retu_write_reg(RETU_REG_RTCDSR,
retu_read_reg(RETU_REG_RTCDSR) & (1 << 6));
retu_write_reg(RETU_REG_RTCDSR,
retu_read_reg(RETU_REG_RTCDSR) & (1 << 6));
+ mutex_unlock(&retu_rtc_mutex);
if(sscanf(buf, "%u", &choice) != 1)
return count;
if(sscanf(buf, "%u", &choice) != 1)
return count;
+ mutex_lock(&retu_rtc_mutex);
if (choice == 0)
retu_rtc_reset_occurred = 0;
else if (choice == 1)
retu_rtc_do_reset();
if (choice == 0)
retu_rtc_reset_occurred = 0;
else if (choice == 1)
retu_rtc_do_reset();
+ mutex_unlock(&retu_rtc_mutex);
u16 chmar;
ssize_t retval;
u16 chmar;
ssize_t retval;
+ mutex_lock(&retu_rtc_mutex);
/*
* Format a 16-bit date-string for userspace
*
/*
* Format a 16-bit date-string for userspace
*
chmar = retu_read_reg(RETU_REG_RTCHMAR);
/* No shifting needed, only masking unrelated bits */
retval = sprintf(buf, "0x%04x\n", chmar & 0x1f3f);
chmar = retu_read_reg(RETU_REG_RTCHMAR);
/* No shifting needed, only masking unrelated bits */
retval = sprintf(buf, "0x%04x\n", chmar & 0x1f3f);
+ mutex_unlock(&retu_rtc_mutex);
unsigned hours;
unsigned minutes;
unsigned hours;
unsigned minutes;
+ mutex_lock(&retu_rtc_mutex);
if(sscanf(buf, "%x", &alrm) != 1)
return count;
if(sscanf(buf, "%x", &alrm) != 1)
return count;
/* enable the interrupt */
retu_enable_irq(RETU_INT_RTCA);
}
/* enable the interrupt */
retu_enable_irq(RETU_INT_RTCA);
}
+ mutex_unlock(&retu_rtc_mutex);
+ mutex_lock(&retu_rtc_mutex);
rtccalr1 = retu_read_reg(RETU_REG_RTCCALR);
rtccalr1 = retu_read_reg(RETU_REG_RTCCALR);
+ mutex_unlock(&retu_rtc_mutex);
/*
* Shows the status of the Calibration Register.
/*
* Shows the status of the Calibration Register.
if (sscanf(buf, "%x", &calibration_value) != 1)
return count;
if (sscanf(buf, "%x", &calibration_value) != 1)
return count;
+ mutex_lock(&retu_rtc_mutex);
retu_rtc_barrier();
retu_write_reg(RETU_REG_RTCCALR, calibration_value & 0x00ff);
retu_rtc_barrier();
retu_write_reg(RETU_REG_RTCCALR, calibration_value & 0x00ff);
+ mutex_unlock(&retu_rtc_mutex);
if ((r = retu_rtc_init_irq()) != 0)
return r;
if ((r = retu_rtc_init_irq()) != 0)
return r;
- init_MUTEX(&retu_rtc_sem);
+ mutex_init(&retu_rtc_mutex);
/* If the calibration register is zero, we've probably lost
* power */
/* If the calibration register is zero, we've probably lost
* power */