misc: isa1200: Replace spinlock with mutex
Spinlocks are used for locking in process context.
So replace spinlock with mutex.
CRs-fixed: 430723
Change-Id: I7e422234a48de3ea21fd86033bdaad286490924c
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
diff --git a/drivers/misc/isa1200.c b/drivers/misc/isa1200.c
index 6c3e787..604ffd7 100644
--- a/drivers/misc/isa1200.c
+++ b/drivers/misc/isa1200.c
@@ -42,7 +42,7 @@
struct hrtimer timer;
struct timed_output_dev dev;
struct work_struct work;
- spinlock_t lock;
+ struct mutex lock;
unsigned int enable;
unsigned int period_ns;
bool is_len_gpio_valid;
@@ -216,9 +216,8 @@
{
struct isa1200_chip *haptic = container_of(dev, struct isa1200_chip,
dev);
- unsigned long flags;
- spin_lock_irqsave(&haptic->lock, flags);
+ mutex_lock(&haptic->lock);
hrtimer_cancel(&haptic->timer);
if (value == 0)
haptic->enable = 0;
@@ -230,7 +229,7 @@
ktime_set(value / 1000, (value % 1000) * 1000000),
HRTIMER_MODE_REL);
}
- spin_unlock_irqrestore(&haptic->lock, flags);
+ mutex_unlock(&haptic->lock);
schedule_work(&haptic->work);
}
@@ -501,7 +500,7 @@
}
}
- spin_lock_init(&haptic->lock);
+ mutex_init(&haptic->lock);
INIT_WORK(&haptic->work, isa1200_chip_work);
haptic->clk_on = false;
@@ -591,6 +590,7 @@
hen_gpio_fail:
timed_output_dev_unregister(&haptic->dev);
timed_reg_fail:
+ mutex_destroy(&haptic->lock);
if (pdata->power_on)
pdata->power_on(0);
pwr_up_fail:
@@ -637,6 +637,9 @@
ISA1200_HCTRL1_RESET);
+ /* destroy mutex */
+ mutex_destroy(&haptic->lock);
+
/* power-off the chip */
if (haptic->pdata->regulator_info) {
isa1200_reg_power(haptic, false);