From: Tarun Kanti DebBarma <tarun.kanti@ti.com>
To: linux-omap@vger.kernel.org
Cc: Tarun Kanti DebBarma <tarun.kanti@ti.com>
Subject: [PATCH v12 9/9] OMAP: dmtimer: use mutex instead of spinlock
Date: Wed, 9 Mar 2011 05:15:48 +0530 [thread overview]
Message-ID: <1299627948-20040-10-git-send-email-tarun.kanti@ti.com> (raw)
In-Reply-To: <1299627948-20040-1-git-send-email-tarun.kanti@ti.com>
Since the spinlock is not used in any interrupt context we can
replace it with mutex instead.
Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com>
---
arch/arm/plat-omap/dmtimer.c | 27 +++++++++++----------------
1 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index aea0b5d..b85f89b 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -165,7 +165,7 @@
#define MAX_WRITE_PEND_WAIT 10000 /* 10ms timeout delay */
static LIST_HEAD(omap_timer_list);
-static DEFINE_SPINLOCK(dm_timer_lock);
+static DEFINE_MUTEX(dm_timer_mutex);
/**
* omap_dm_timer_read_reg - read timer registers in posted and non-posted mode
@@ -293,9 +293,8 @@ end:
struct omap_dm_timer *omap_dm_timer_request(void)
{
struct omap_dm_timer *timer = NULL, *t;
- unsigned long flags;
- spin_lock_irqsave(&dm_timer_lock, flags);
+ mutex_lock(&dm_timer_mutex);
list_for_each_entry(t, &omap_timer_list, node) {
if (t->reserved)
continue;
@@ -304,7 +303,7 @@ struct omap_dm_timer *omap_dm_timer_request(void)
timer->reserved = 1;
break;
}
- spin_unlock_irqrestore(&dm_timer_lock, flags);
+ mutex_unlock(&dm_timer_mutex);
if (timer)
omap_dm_timer_prepare(timer);
@@ -318,9 +317,8 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_request);
struct omap_dm_timer *omap_dm_timer_request_specific(int id)
{
struct omap_dm_timer *timer = NULL, *t;
- unsigned long flags;
- spin_lock_irqsave(&dm_timer_lock, flags);
+ mutex_lock(&dm_timer_mutex);
list_for_each_entry(t, &omap_timer_list, node) {
if (t->pdev->id == id && !t->reserved) {
timer = t;
@@ -328,7 +326,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
break;
}
}
- spin_unlock_irqrestore(&dm_timer_lock, flags);
+ mutex_unlock(&dm_timer_mutex);
if (timer)
omap_dm_timer_prepare(timer);
@@ -390,14 +388,13 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
{
int i = 0;
struct omap_dm_timer *timer = NULL;
- unsigned long flags;
/* If ARMXOR cannot be idled this function call is unnecessary */
if (!(inputmask & (1 << 1)))
return inputmask;
/* If any active timer is using ARMXOR return modified mask */
- spin_lock_irqsave(&dm_timer_lock, flags);
+ mutex_lock(&dm_timer_mutex);
list_for_each_entry(timer, &omap_timer_list, node) {
u32 l;
@@ -411,7 +408,7 @@ __u32 omap_dm_timer_modify_idlect_mask(__u32 inputmask)
}
i++;
}
- spin_unlock_irqrestore(&dm_timer_lock, flags);
+ mutex_unlock(&dm_timer_mutex);
return inputmask;
}
@@ -652,7 +649,6 @@ EXPORT_SYMBOL_GPL(omap_dm_timers_active);
static int __devinit omap_dm_timer_probe(struct platform_device *pdev)
{
int ret;
- unsigned long flags;
struct omap_dm_timer *timer;
struct resource *mem, *irq, *ioarea;
struct dmtimer_platform_data *pdata = pdev->dev.platform_data;
@@ -717,9 +713,9 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev);
/* add the timer element to the list */
- spin_lock_irqsave(&dm_timer_lock, flags);
+ mutex_lock(&dm_timer_mutex);
list_add_tail(&timer->node, &omap_timer_list);
- spin_unlock_irqrestore(&dm_timer_lock, flags);
+ mutex_unlock(&dm_timer_mutex);
dev_dbg(&pdev->dev, "Device Probed.\n");
@@ -749,10 +745,9 @@ err_free_pdev:
static int __devexit omap_dm_timer_remove(struct platform_device *pdev)
{
struct omap_dm_timer *timer, *tmp;
- unsigned long flags;
int ret = -EINVAL;
- spin_lock_irqsave(&dm_timer_lock, flags);
+ mutex_lock(&dm_timer_mutex);
list_for_each_entry_safe(timer, tmp, &omap_timer_list, node) {
if (timer->pdev->id == pdev->id) {
kfree(timer->pdev->dev.platform_data);
@@ -763,7 +758,7 @@ static int __devexit omap_dm_timer_remove(struct platform_device *pdev)
break;
}
}
- spin_unlock_irqrestore(&dm_timer_lock, flags);
+ mutex_unlock(&dm_timer_mutex);
return ret;
}
--
1.6.0.4
prev parent reply other threads:[~2011-03-08 23:43 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-08 23:45 [PATCH v12 0/9] dmtimer adaptation to platform_driver Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 1/9] OMAP2+: dmtimer: add device names to flck nodes Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 2/9] OMAP4: hwmod data: add dmtimer version information Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 3/9] OMAP1: dmtimer: conversion to platform devices Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 4/9] OMAP2+: dmtimer: convert " Tarun Kanti DebBarma
2011-03-09 21:42 ` Tony Lindgren
2011-03-10 15:29 ` DebBarma, Tarun Kanti
2011-03-10 22:52 ` Kevin Hilman
2011-03-11 4:36 ` DebBarma, Tarun Kanti
2011-03-10 23:14 ` Kevin Hilman
2011-03-11 4:20 ` DebBarma, Tarun Kanti
2011-03-11 19:13 ` Tony Lindgren
2011-03-12 0:03 ` Kevin Hilman
2011-03-14 17:12 ` Tony Lindgren
2011-03-17 22:00 ` Kevin Hilman
2011-03-19 0:27 ` Tony Lindgren
2011-03-19 4:34 ` Santosh Shilimkar
2011-03-21 17:07 ` Tony Lindgren
2011-03-21 18:33 ` Kevin Hilman
2011-03-21 19:11 ` Tony Lindgren
2011-03-25 6:55 ` DebBarma, Tarun Kanti
2011-03-25 15:55 ` Tony Lindgren
2011-03-29 17:13 ` Tony Lindgren
2011-03-29 17:52 ` Tony Lindgren
2011-03-10 23:21 ` Kevin Hilman
2011-03-11 4:13 ` DebBarma, Tarun Kanti
2011-03-08 23:45 ` [PATCH v12 5/9] OMAP: dmtimer: platform driver Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 6/9] dmtimer: switch-over to platform device driver Tarun Kanti DebBarma
2011-03-09 22:02 ` Tony Lindgren
2011-03-10 15:27 ` DebBarma, Tarun Kanti
2011-03-10 17:56 ` Tony Lindgren
2011-03-11 5:35 ` DebBarma, Tarun Kanti
2011-03-11 12:45 ` G, Manjunath Kondaiah
2011-03-11 19:15 ` Tony Lindgren
2011-03-12 4:20 ` G, Manjunath Kondaiah
2011-03-11 19:14 ` Tony Lindgren
2011-03-14 6:48 ` DebBarma, Tarun Kanti
2011-03-08 23:45 ` [PATCH v12 7/9] OMAP: dmtimer: pm_runtime support Tarun Kanti DebBarma
2011-03-08 23:45 ` [PATCH v12 8/9] OMAP: dmtimer: add timeout to low-level routines Tarun Kanti DebBarma
2011-03-08 23:45 ` Tarun Kanti DebBarma [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1299627948-20040-10-git-send-email-tarun.kanti@ti.com \
--to=tarun.kanti@ti.com \
--cc=linux-omap@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).