arm/{pxa,sa1100,nomadik}: Don't disable irqs in set_next_event and set_mode
These functions are called with irqs already off. This commit removes the calls to raw_local_irq_save and raw_local_irq_restore on platforms that don't have to use a shared interrupt for their timekeeping. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
This commit is contained in:
parent
501d70383a
commit
a602f0f2f0
3 changed files with 3 additions and 24 deletions
|
@ -76,14 +76,12 @@ pxa_ost0_interrupt(int irq, void *dev_id)
|
||||||
static int
|
static int
|
||||||
pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)
|
pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)
|
||||||
{
|
{
|
||||||
unsigned long flags, next, oscr;
|
unsigned long next, oscr;
|
||||||
|
|
||||||
raw_local_irq_save(flags);
|
|
||||||
OIER |= OIER_E0;
|
OIER |= OIER_E0;
|
||||||
next = OSCR + delta;
|
next = OSCR + delta;
|
||||||
OSMR0 = next;
|
OSMR0 = next;
|
||||||
oscr = OSCR;
|
oscr = OSCR;
|
||||||
raw_local_irq_restore(flags);
|
|
||||||
|
|
||||||
return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
|
return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
|
||||||
}
|
}
|
||||||
|
@ -91,23 +89,17 @@ pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)
|
||||||
static void
|
static void
|
||||||
pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
|
pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
|
||||||
{
|
{
|
||||||
unsigned long irqflags;
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case CLOCK_EVT_MODE_ONESHOT:
|
case CLOCK_EVT_MODE_ONESHOT:
|
||||||
raw_local_irq_save(irqflags);
|
|
||||||
OIER &= ~OIER_E0;
|
OIER &= ~OIER_E0;
|
||||||
OSSR = OSSR_M0;
|
OSSR = OSSR_M0;
|
||||||
raw_local_irq_restore(irqflags);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLOCK_EVT_MODE_UNUSED:
|
case CLOCK_EVT_MODE_UNUSED:
|
||||||
case CLOCK_EVT_MODE_SHUTDOWN:
|
case CLOCK_EVT_MODE_SHUTDOWN:
|
||||||
/* initializing, released, or preparing for suspend */
|
/* initializing, released, or preparing for suspend */
|
||||||
raw_local_irq_save(irqflags);
|
|
||||||
OIER &= ~OIER_E0;
|
OIER &= ~OIER_E0;
|
||||||
OSSR = OSSR_M0;
|
OSSR = OSSR_M0;
|
||||||
raw_local_irq_restore(irqflags);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLOCK_EVT_MODE_RESUME:
|
case CLOCK_EVT_MODE_RESUME:
|
||||||
|
|
|
@ -35,14 +35,12 @@ static irqreturn_t sa1100_ost0_interrupt(int irq, void *dev_id)
|
||||||
static int
|
static int
|
||||||
sa1100_osmr0_set_next_event(unsigned long delta, struct clock_event_device *c)
|
sa1100_osmr0_set_next_event(unsigned long delta, struct clock_event_device *c)
|
||||||
{
|
{
|
||||||
unsigned long flags, next, oscr;
|
unsigned long next, oscr;
|
||||||
|
|
||||||
raw_local_irq_save(flags);
|
|
||||||
OIER |= OIER_E0;
|
OIER |= OIER_E0;
|
||||||
next = OSCR + delta;
|
next = OSCR + delta;
|
||||||
OSMR0 = next;
|
OSMR0 = next;
|
||||||
oscr = OSCR;
|
oscr = OSCR;
|
||||||
raw_local_irq_restore(flags);
|
|
||||||
|
|
||||||
return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
|
return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
|
||||||
}
|
}
|
||||||
|
@ -50,16 +48,12 @@ sa1100_osmr0_set_next_event(unsigned long delta, struct clock_event_device *c)
|
||||||
static void
|
static void
|
||||||
sa1100_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
|
sa1100_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case CLOCK_EVT_MODE_ONESHOT:
|
case CLOCK_EVT_MODE_ONESHOT:
|
||||||
case CLOCK_EVT_MODE_UNUSED:
|
case CLOCK_EVT_MODE_UNUSED:
|
||||||
case CLOCK_EVT_MODE_SHUTDOWN:
|
case CLOCK_EVT_MODE_SHUTDOWN:
|
||||||
raw_local_irq_save(flags);
|
|
||||||
OIER &= ~OIER_E0;
|
OIER &= ~OIER_E0;
|
||||||
OSSR = OSSR_M0;
|
OSSR = OSSR_M0;
|
||||||
raw_local_irq_restore(flags);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CLOCK_EVT_MODE_RESUME:
|
case CLOCK_EVT_MODE_RESUME:
|
||||||
|
|
|
@ -49,24 +49,17 @@ static struct clocksource nmdk_clksrc = {
|
||||||
static void nmdk_clkevt_mode(enum clock_event_mode mode,
|
static void nmdk_clkevt_mode(enum clock_event_mode mode,
|
||||||
struct clock_event_device *dev)
|
struct clock_event_device *dev)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case CLOCK_EVT_MODE_PERIODIC:
|
case CLOCK_EVT_MODE_PERIODIC:
|
||||||
/* enable interrupts -- and count current value? */
|
/* count current value? */
|
||||||
raw_local_irq_save(flags);
|
|
||||||
writel(readl(mtu_base + MTU_IMSC) | 1, mtu_base + MTU_IMSC);
|
writel(readl(mtu_base + MTU_IMSC) | 1, mtu_base + MTU_IMSC);
|
||||||
raw_local_irq_restore(flags);
|
|
||||||
break;
|
break;
|
||||||
case CLOCK_EVT_MODE_ONESHOT:
|
case CLOCK_EVT_MODE_ONESHOT:
|
||||||
BUG(); /* Not supported, yet */
|
BUG(); /* Not supported, yet */
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
case CLOCK_EVT_MODE_SHUTDOWN:
|
case CLOCK_EVT_MODE_SHUTDOWN:
|
||||||
case CLOCK_EVT_MODE_UNUSED:
|
case CLOCK_EVT_MODE_UNUSED:
|
||||||
/* disable irq */
|
|
||||||
raw_local_irq_save(flags);
|
|
||||||
writel(readl(mtu_base + MTU_IMSC) & ~1, mtu_base + MTU_IMSC);
|
writel(readl(mtu_base + MTU_IMSC) & ~1, mtu_base + MTU_IMSC);
|
||||||
raw_local_irq_restore(flags);
|
|
||||||
break;
|
break;
|
||||||
case CLOCK_EVT_MODE_RESUME:
|
case CLOCK_EVT_MODE_RESUME:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue