ARM: sa11x0/pxa: convert OS timer registers to IOMEM
[deliverable/linux.git] / arch / arm / mach-pxa / time.c
index 3d6c9bd90de6b183cd741e891c926a4bcb841c7e..4bc47d63698bc9590bba680177f823d052d0f099 100644 (file)
@@ -35,7 +35,7 @@
 
 static u32 notrace pxa_read_sched_clock(void)
 {
-       return OSCR;
+       return readl_relaxed(OSCR);
 }
 
 
@@ -47,8 +47,8 @@ pxa_ost0_interrupt(int irq, void *dev_id)
        struct clock_event_device *c = dev_id;
 
        /* Disarm the compare/match, signal the event. */
-       OIER &= ~OIER_E0;
-       OSSR = OSSR_M0;
+       writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
+       writel_relaxed(OSSR_M0, OSSR);
        c->event_handler(c);
 
        return IRQ_HANDLED;
@@ -59,10 +59,10 @@ pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev)
 {
        unsigned long next, oscr;
 
-       OIER |= OIER_E0;
-       next = OSCR + delta;
-       OSMR0 = next;
-       oscr = OSCR;
+       writel_relaxed(readl_relaxed(OIER) | OIER_E0, OIER);
+       next = readl_relaxed(OSCR) + delta;
+       writel_relaxed(next, OSMR0);
+       oscr = readl_relaxed(OSCR);
 
        return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
 }
@@ -72,15 +72,15 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev)
 {
        switch (mode) {
        case CLOCK_EVT_MODE_ONESHOT:
-               OIER &= ~OIER_E0;
-               OSSR = OSSR_M0;
+               writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
+               writel_relaxed(OSSR_M0, OSSR);
                break;
 
        case CLOCK_EVT_MODE_UNUSED:
        case CLOCK_EVT_MODE_SHUTDOWN:
                /* initializing, released, or preparing for suspend */
-               OIER &= ~OIER_E0;
-               OSSR = OSSR_M0;
+               writel_relaxed(readl_relaxed(OIER) & ~OIER_E0, OIER);
+               writel_relaxed(OSSR_M0, OSSR);
                break;
 
        case CLOCK_EVT_MODE_RESUME:
@@ -108,8 +108,8 @@ static void __init pxa_timer_init(void)
 {
        unsigned long clock_tick_rate = get_clock_tick_rate();
 
-       OIER = 0;
-       OSSR = OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3;
+       writel_relaxed(0, OIER);
+       writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
 
        setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate);
 
@@ -122,7 +122,7 @@ static void __init pxa_timer_init(void)
 
        setup_irq(IRQ_OST0, &pxa_ost0_irq);
 
-       clocksource_mmio_init(&OSCR, "oscr0", clock_tick_rate, 200, 32,
+       clocksource_mmio_init(OSCR, "oscr0", clock_tick_rate, 200, 32,
                clocksource_mmio_readl_up);
        clockevents_register_device(&ckevt_pxa_osmr0);
 }
@@ -132,12 +132,12 @@ static unsigned long osmr[4], oier, oscr;
 
 static void pxa_timer_suspend(void)
 {
-       osmr[0] = OSMR0;
-       osmr[1] = OSMR1;
-       osmr[2] = OSMR2;
-       osmr[3] = OSMR3;
-       oier = OIER;
-       oscr = OSCR;
+       osmr[0] = readl_relaxed(OSMR0);
+       osmr[1] = readl_relaxed(OSMR1);
+       osmr[2] = readl_relaxed(OSMR2);
+       osmr[3] = readl_relaxed(OSMR3);
+       oier = readl_relaxed(OIER);
+       oscr = readl_relaxed(OSCR);
 }
 
 static void pxa_timer_resume(void)
@@ -151,12 +151,12 @@ static void pxa_timer_resume(void)
        if (osmr[0] - oscr < MIN_OSCR_DELTA)
                osmr[0] += MIN_OSCR_DELTA;
 
-       OSMR0 = osmr[0];
-       OSMR1 = osmr[1];
-       OSMR2 = osmr[2];
-       OSMR3 = osmr[3];
-       OIER = oier;
-       OSCR = oscr;
+       writel_relaxed(osmr[0], OSMR0);
+       writel_relaxed(osmr[1], OSMR1);
+       writel_relaxed(osmr[2], OSMR2);
+       writel_relaxed(osmr[3], OSMR3);
+       writel_relaxed(oier, OIER);
+       writel_relaxed(oscr, OSCR);
 }
 #else
 #define pxa_timer_suspend NULL
This page took 0.027975 seconds and 5 git commands to generate.