aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/cs5535-mfgpt.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2010-08-16 13:32:24 +0900
committerPaul Mundt <lethal@linux-sh.org>2010-08-16 13:32:24 +0900
commitbbcf6e8b66ab2fb5ddab4d0fe40c2e6a5ebe5301 (patch)
tree071fa9f86dc04a16570be367d04cff3b00c694ad /drivers/misc/cs5535-mfgpt.c
parentsh: Use __GFP_ZERO for dma_generic_alloc_coherent(). (diff)
parentLinux 2.6.36-rc1 (diff)
downloadlinux-dev-bbcf6e8b66ab2fb5ddab4d0fe40c2e6a5ebe5301.tar.xz
linux-dev-bbcf6e8b66ab2fb5ddab4d0fe40c2e6a5ebe5301.zip
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: arch/sh/include/asm/Kbuild drivers/Makefile Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/misc/cs5535-mfgpt.c')
-rw-r--r--drivers/misc/cs5535-mfgpt.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/misc/cs5535-mfgpt.c b/drivers/misc/cs5535-mfgpt.c
index 2d44b3300104..6f6218061b0d 100644
--- a/drivers/misc/cs5535-mfgpt.c
+++ b/drivers/misc/cs5535-mfgpt.c
@@ -211,6 +211,17 @@ EXPORT_SYMBOL_GPL(cs5535_mfgpt_alloc_timer);
*/
void cs5535_mfgpt_free_timer(struct cs5535_mfgpt_timer *timer)
{
+ unsigned long flags;
+ uint16_t val;
+
+ /* timer can be made available again only if never set up */
+ val = cs5535_mfgpt_read(timer, MFGPT_REG_SETUP);
+ if (!(val & MFGPT_SETUP_SETUP)) {
+ spin_lock_irqsave(&timer->chip->lock, flags);
+ __set_bit(timer->nr, timer->chip->avail);
+ spin_unlock_irqrestore(&timer->chip->lock, flags);
+ }
+
kfree(timer);
}
EXPORT_SYMBOL_GPL(cs5535_mfgpt_free_timer);