static void __init armadillo800eva_init(void)
 {
-       board_staging_gic_setup_xlate("arm,pl390", 32);
-       board_staging_register_devices(armadillo800eva_devices,
-                                      ARRAY_SIZE(armadillo800eva_devices));
+       if (of_machine_is_compatible("renesas,armadillo800eva")) {
+               board_staging_gic_setup_xlate("arm,pl390", 32);
+               board_staging_register_devices(armadillo800eva_devices,
+                                              ARRAY_SIZE(armadillo800eva_devices));
+       }
 }
 
-board_staging("renesas,armadillo800eva", armadillo800eva_init);
+device_initcall(armadillo800eva_init);
 
 void board_staging_register_devices(const struct board_staging_dev *devs,
                                    unsigned int ndevs);
 
-#define board_staging(str, fn)                 \
-static int __init runtime_board_check(void)    \
-{                                              \
-       if (of_machine_is_compatible(str))      \
-               fn();                           \
-                                               \
-       return 0;                               \
-}                                              \
-                                               \
-device_initcall(runtime_board_check)
-
 #endif /* __BOARD_H__ */
 
 
 static void __init kzm9d_init(void)
 {
-       board_staging_gic_setup_xlate("arm,pl390", 32);
+       if (of_machine_is_compatible("renesas,kzm9d")) {
+               board_staging_gic_setup_xlate("arm,pl390", 32);
 
-       if (!board_staging_dt_node_available(usbs1_res,
-                                            ARRAY_SIZE(usbs1_res))) {
-               board_staging_gic_fixup_resources(usbs1_res,
-                                                 ARRAY_SIZE(usbs1_res));
-               platform_device_register_simple("emxx_udc", -1, usbs1_res,
-                                               ARRAY_SIZE(usbs1_res));
+               if (!board_staging_dt_node_available(usbs1_res,
+                                                    ARRAY_SIZE(usbs1_res))) {
+                       board_staging_gic_fixup_resources(usbs1_res,
+                                                         ARRAY_SIZE(usbs1_res));
+                       platform_device_register_simple("emxx_udc", -1, usbs1_res,
+                                                       ARRAY_SIZE(usbs1_res));
+               }
        }
 }
 
-board_staging("renesas,kzm9d", kzm9d_init);
+device_initcall(kzm9d_init);