From c789673f6b6b355d47f1e099b4dcf9ff17244395 Mon Sep 17 00:00:00 2001 From: Jens Rottmann Date: Tue, 10 Aug 2010 18:03:12 -0700 Subject: [PATCH] --- yaml --- r: 208537 b: refs/heads/master c: ecd6269174c04da5efbd17d6bff793e428eb45ef h: refs/heads/master i: 208535: 572afed419c966ef6228eaf8e5366ad056583539 v: v3 --- [refs] | 2 +- trunk/drivers/misc/cs5535-mfgpt.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 14b80b37e573..178804bfd16f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e73790a57abc1320b3c3a94da43ae24359687d7c +refs/heads/master: ecd6269174c04da5efbd17d6bff793e428eb45ef diff --git a/trunk/drivers/misc/cs5535-mfgpt.c b/trunk/drivers/misc/cs5535-mfgpt.c index 2d44b3300104..6f6218061b0d 100644 --- a/trunk/drivers/misc/cs5535-mfgpt.c +++ b/trunk/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);