return 1;
 }
 
-void __init pasemi_idle_init(void)
+static int __init pasemi_idle_init(void)
 {
+       if (!machine_is(pasemi))
+               return -ENODEV;
+
 #ifndef CONFIG_PPC_PASEMI_CPUFREQ
        printk(KERN_WARNING "No cpufreq driver, powersavings modes disabled\n");
        current_mode = 0;
        ppc_md.system_reset_exception = pasemi_system_reset_exception;
        ppc_md.power_save = modes[current_mode].entry;
        printk(KERN_INFO "Using PA6T idle loop (%s)\n", modes[current_mode].name);
+
+       return 0;
 }
+late_initcall(pasemi_idle_init);
 
 static int __init idle_param(char *p)
 {
 
 
 extern void __init alloc_iobmap_l2(void);
 
-extern void __init pasemi_idle_init(void);
-
 /* Power savings modes, implemented in asm */
 extern void idle_spin(void);
 extern void idle_doze(void);
 
        /* Remap SDC register for doing reset */
        /* XXXOJN This should maybe come out of the device tree */
        reset_reg = ioremap(0xfc101100, 4);
-
-       pasemi_idle_init();
 }
 
 static int __init pas_setup_mce_regs(void)