From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>,
linux-kernel@vger.kernel.org
Subject: [PATCH 3/4] h8300: clocksource: More simplify timer8_set_next
Date: Wed, 11 Nov 2015 23:50:15 +0900 [thread overview]
Message-ID: <1447253416-13892-4-git-send-email-ysato@users.sourceforge.jp> (raw)
In-Reply-To: <1447253416-13892-1-git-send-email-ysato@users.sourceforge.jp>
Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
drivers/clocksource/h8300_timer8.c | 48 +++++++++++---------------------------
1 file changed, 13 insertions(+), 35 deletions(-)
diff --git a/drivers/clocksource/h8300_timer8.c b/drivers/clocksource/h8300_timer8.c
index 187c416..d85ae9a 100644
--- a/drivers/clocksource/h8300_timer8.c
+++ b/drivers/clocksource/h8300_timer8.c
@@ -24,6 +24,9 @@
#define TCORB 6
#define _8TCNT 8
+#define CMIEA BIT(6)
+#define CMFA BIT(6)
+
#define FLAG_STARTED (1 << 3)
#define SCALE 64
@@ -36,57 +39,32 @@ struct timer8_priv {
unsigned int tcora;
};
-static unsigned long timer8_get_counter(struct timer8_priv *p)
-{
- unsigned long v1, v2, v3;
- int o1, o2;
-
- o1 = ctrl_inb(p->mapbase + _8TCSR) & 0x20;
-
- /* Make sure the timer value is stable. Stolen from acpi_pm.c */
- do {
- o2 = o1;
- v1 = ctrl_inw(p->mapbase + _8TCNT);
- v2 = ctrl_inw(p->mapbase + _8TCNT);
- v3 = ctrl_inw(p->mapbase + _8TCNT);
- o1 = ctrl_inb(p->mapbase + _8TCSR) & 0x20;
- } while (unlikely((o1 != o2) || (v1 > v2 && v1 < v3)
- || (v2 > v3 && v2 < v1) || (v3 > v1 && v3 < v2)));
-
- v2 |= o1 << 10;
- return v2;
-}
-
static irqreturn_t timer8_interrupt(int irq, void *dev_id)
{
struct timer8_priv *p = dev_id;
- ctrl_outb(ctrl_inb(p->mapbase + _8TCSR) & ~0x40,
- p->mapbase + _8TCSR);
-
- ctrl_outw(p->tcora, p->mapbase + TCORA);
-
if (clockevent_state_oneshot(&p->ced))
ctrl_outw(0x0000, p->mapbase + _8TCR);
p->ced.event_handler(&p->ced);
+ ctrl_outb(ctrl_inb(p->mapbase + _8TCSR) & ~CMFA,
+ p->mapbase + _8TCSR);
return IRQ_HANDLED;
}
static void timer8_set_next(struct timer8_priv *p, unsigned long delta)
{
- unsigned long now;
-
if (delta >= 0x10000)
pr_warn("delta out of range\n");
- now = timer8_get_counter(p);
- p->tcora = delta;
- ctrl_outb(ctrl_inb(p->mapbase + _8TCR) | 0x40, p->mapbase + _8TCR);
- if (delta > now)
- ctrl_outw(delta, p->mapbase + TCORA);
- else
- ctrl_outw(now + 1, p->mapbase + TCORA);
+ ctrl_outb(ctrl_inb(p->mapbase + _8TCR) & ~CMIEA,
+ p->mapbase + _8TCR);
+ ctrl_outw(delta, p->mapbase + TCORA);
+ ctrl_outw(0x0000, p->mapbase + _8TCNT);
+ ctrl_outb(ctrl_inb(p->mapbase + _8TCSR) & ~CMFA,
+ p->mapbase + _8TCSR);
+ ctrl_outb(ctrl_inb(p->mapbase + _8TCR) | CMIEA,
+ p->mapbase + _8TCR);
}
static int timer8_enable(struct timer8_priv *p)
--
2.6.1
next prev parent reply other threads:[~2015-11-11 14:50 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-09 10:06 [PATCH 01/15] clocksource/drivers/h8300_timer8: Fix compilation error with dev_warn Daniel Lezcano
2015-11-09 10:06 ` [PATCH 02/15] clocksource/drivers/h8300_tpu: Remove unused macros Daniel Lezcano
2015-11-11 14:38 ` Yoshinori Sato
2015-11-09 10:06 ` [PATCH 03/15] clocksource/drivers/h8300_tpu: Remove pointless headers for TPU Daniel Lezcano
2015-11-11 14:39 ` Yoshinori Sato
2015-11-09 10:06 ` [PATCH 04/15] clocksource/drivers/h8300_timer8: Remove unused headers Daniel Lezcano
2015-11-09 10:06 ` [PATCH 05/15] clocksource/drivers/h8300_timer8: Remove unused macros Daniel Lezcano
2015-11-09 10:06 ` [PATCH 06/15] clocksource/drivers/h8300_timer8: Remove PERIODIC and ONESHOT macro Daniel Lezcano
2015-11-09 10:06 ` [PATCH 07/15] clocksource/drivers/h8300_timer8: Fix irq return value check Daniel Lezcano
2015-11-09 10:06 ` [PATCH 08/15] clocksource/drivers/h8300_timer8: Remove pointless irq re-entrant safe code Daniel Lezcano
2015-11-09 10:06 ` [PATCH 09/15] clocksource/drivers/h8300_timer8: Remove irq and lock legacy code Daniel Lezcano
2015-11-09 10:06 ` [PATCH 10/15] clocksource/drivers/h8300_timer8: Retrieve the clock rate at init time Daniel Lezcano
2015-11-09 10:06 ` [PATCH 11/15] clocksource/drivers/h8300_timer16: Remove pointless headers Daniel Lezcano
2015-11-09 10:06 ` [PATCH 12/15] clocksource/drivers/h8300_timer16: Remove unused macros Daniel Lezcano
2015-11-09 10:06 ` [PATCH 13/15] clocksource/drivers/h8300_timer16: Remove unused fields in timer16_priv Daniel Lezcano
2015-11-09 10:06 ` [PATCH 14/15] clocksource/drivers/h8300_timer16: Fix irq return value check Daniel Lezcano
2015-11-09 10:06 ` [PATCH 15/15] clocksource/drivers/h8300_timer16: Remove pointless lock Daniel Lezcano
2015-11-09 10:13 ` [PATCH 01/15] clocksource/drivers/h8300_timer8: Fix compilation error with dev_warn Daniel Lezcano
2015-11-11 14:50 ` [PATCH 0/4] h8300: clock driver update Yoshinori Sato
2015-11-11 14:50 ` [PATCH 1/4] h8300: clocksource: Use overflow interrupt Yoshinori Sato
2015-11-12 16:50 ` Daniel Lezcano
2015-11-11 14:50 ` [PATCH 2/4] h8300: clocksource: Counter overflow fix Yoshinori Sato
2015-11-11 14:50 ` Yoshinori Sato [this message]
2015-11-11 14:50 ` [PATCH 4/4] h8300: clocksource: remove unused local-variable Yoshinori Sato
2015-11-12 16:28 ` [PATCH 0/4] h8300: clock driver update Daniel Lezcano
2015-11-17 12:20 ` Daniel Lezcano
2015-11-18 16:58 ` Yoshinori Sato
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=1447253416-13892-4-git-send-email-ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.