Merge tag 'cleanup-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / arch / arm / mach-at91 / cpuidle.c
index 0c63815..69f9e3b 100644 (file)
@@ -27,8 +27,6 @@
 
 #define AT91_MAX_STATES        2
 
-static DEFINE_PER_CPU(struct cpuidle_device, at91_cpuidle_device);
-
 /* Actual code that puts the SoC in different idle states */
 static int at91_enter_idle(struct cpuidle_device *dev,
                        struct cpuidle_driver *drv,
@@ -38,6 +36,8 @@ static int at91_enter_idle(struct cpuidle_device *dev,
                at91rm9200_standby();
        else if (cpu_is_at91sam9g45())
                at91sam9g45_standby();
+       else if (cpu_is_at91sam9263())
+               at91sam9263_standby();
        else
                at91sam9_standby();
 
@@ -47,7 +47,6 @@ static int at91_enter_idle(struct cpuidle_device *dev,
 static struct cpuidle_driver at91_idle_driver = {
        .name                   = "at91_idle",
        .owner                  = THIS_MODULE,
-       .en_core_tk_irqen       = 1,
        .states[0]              = ARM_CPUIDLE_WFI_STATE,
        .states[1]              = {
                .enter                  = at91_enter_idle,
@@ -61,20 +60,9 @@ static struct cpuidle_driver at91_idle_driver = {
 };
 
 /* Initialize CPU idle by registering the idle states */
-static int at91_init_cpuidle(void)
+static int __init at91_init_cpuidle(void)
 {
-       struct cpuidle_device *device;
-
-       device = &per_cpu(at91_cpuidle_device, smp_processor_id());
-       device->state_count = AT91_MAX_STATES;
-
-       cpuidle_register_driver(&at91_idle_driver);
-
-       if (cpuidle_register_device(device)) {
-               printk(KERN_ERR "at91_init_cpuidle: Failed registering\n");
-               return -EIO;
-       }
-       return 0;
+       return cpuidle_register(&at91_idle_driver, NULL);
 }
 
 device_initcall(at91_init_cpuidle);