sem2mutex conversion
Signed-off-by: Komal Shah <komal_shah802003@yahoo.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/sched.h>
+#include <linux/mutex.h>
#include <asm/mach-types.h>
#include <asm/mach/irq.h>
#include <asm/mach-types.h>
#include <asm/mach/irq.h>
struct menelaus_chip {
unsigned long initialized;
struct menelaus_chip {
unsigned long initialized;
struct i2c_client client;
struct work_struct work;
int irq;
struct i2c_client client;
struct work_struct work;
int irq;
/* Adds a handler for an interrupt. Does not run in interrupt context */
static int menelaus_add_irq_work(int irq, void * handler)
{
/* Adds a handler for an interrupt. Does not run in interrupt context */
static int menelaus_add_irq_work(int irq, void * handler)
{
+ mutex_lock(&menelaus.lock);
menelaus.handlers[irq] = handler;
menelaus_enable_irq(irq);
menelaus.handlers[irq] = handler;
menelaus_enable_irq(irq);
+ mutex_unlock(&menelaus.lock);
/* Removes handler for an interrupt */
static void menelaus_remove_irq_work(int irq)
{
/* Removes handler for an interrupt */
static void menelaus_remove_irq_work(int irq)
{
+ mutex_lock(&menelaus.lock);
menelaus_disable_irq(irq);
menelaus.handlers[irq] = NULL;
menelaus_disable_irq(irq);
menelaus.handlers[irq] = NULL;
+ mutex_unlock(&menelaus.lock);
}
/*-----------------------------------------------------------------------*/
}
/*-----------------------------------------------------------------------*/
for (i = 0; i < IH_MENELAUS_IRQS; i++) {
if (isr & (1 << i)) {
for (i = 0; i < IH_MENELAUS_IRQS; i++) {
if (isr & (1 << i)) {
+ mutex_lock(&menelaus->lock);
menelaus_disable_irq(i);
menelaus_ack_irq(i);
if (menelaus->handlers[i]) {
menelaus_disable_irq(i);
menelaus_ack_irq(i);
if (menelaus->handlers[i]) {
handler(menelaus);
}
menelaus_enable_irq(i);
handler(menelaus);
}
menelaus_enable_irq(i);
+ mutex_unlock(&menelaus->lock);
if (err)
printk(KERN_ERR "Could not get Menelaus IRQ\n");
if (err)
printk(KERN_ERR "Could not get Menelaus IRQ\n");
- init_MUTEX(&menelaus.lock);
+ mutex_init(&menelaus.lock);
INIT_WORK(&menelaus.work, menelaus_work, &menelaus);
if (kind < 0)
INIT_WORK(&menelaus.work, menelaus_work, &menelaus);
if (kind < 0)