obj-$(CONFIG_LEDS)            += leds.o
  obj-$(CONFIG_OC_ETM)          += etm.o
- 
+ obj-$(CONFIG_CPU_IDLE)                += cpuidle.o
  obj-$(CONFIG_ISA_DMA_API)     += dma.o
 -obj-$(CONFIG_ARCH_ACORN)      += ecard.o 
  obj-$(CONFIG_FIQ)             += fiq.o fiqasm.o
  obj-$(CONFIG_MODULES)         += armksyms.o module.o
  obj-$(CONFIG_ARTHUR)          += arthur.o
 
                        struct cpuidle_driver *drv,
                               int index)
  {
-       struct timeval before, after;
-       int idle_time;
 -      u32 saved_lpr;
--
-       local_irq_disable();
-       do_gettimeofday(&before);
-       if (index == 0)
-               /* Wait for interrupt state */
-               cpu_do_idle();
-       else if (index == 1)
-               at91_standby();
 -      __asm__("b 1f; .align 5; 1:\n"
 -      "       mcr p15, 0, r0, c7, c10, 4");   /* drain write buffer */
 -
 -      saved_lpr = sdram_selfrefresh_enable();
 -      cpu_do_idle();
 -      sdram_selfrefresh_disable(saved_lpr);
++      at91_standby();
  
-       do_gettimeofday(&after);
-       local_irq_enable();
-       idle_time = (after.tv_sec - before.tv_sec) * USEC_PER_SEC +
-                       (after.tv_usec - before.tv_usec);
- 
-       dev->last_residency = idle_time;
        return index;
  }
  
 
  #include <linux/suspend.h>
  #include <linux/module.h>
  #include <linux/err.h>
 -#include <asm/system.h>
+ #include <asm/cpuidle.h>
  #include <asm/io.h>
  
  static void shmobile_enter_wfi(void)
 
                return 0;
        }
  
-       target_state = &drv->states[next_state];
- 
 -      trace_power_start(POWER_CSTATE, next_state, dev->cpu);
 -      trace_cpu_idle(next_state, dev->cpu);
 +      trace_power_start_rcuidle(POWER_CSTATE, next_state, dev->cpu);
 +      trace_cpu_idle_rcuidle(next_state, dev->cpu);
  
-       entered_state = target_state->enter(dev, drv, next_state);
+       entered_state = cpuidle_enter_ops(dev, drv, next_state);
  
 -      trace_power_end(dev->cpu);
 -      trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
 +      trace_power_end_rcuidle(dev->cpu);
 +      trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
  
        if (entered_state >= 0) {
                /* Update cpuidle counters */