unsigned long nr_pages;
 
        if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
-               return 0;
+               return -ENODEV;
 
        BUG_ON(!mem_init_done);
 
 
        int result;
 
        if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
-               return 0;
+               return -ENODEV;
 
        result = bus_register(&ps3_system_bus_type);
        BUG_ON(result);
 
 #include <linux/reboot.h>
 #include <linux/kernel.h>
 #include <linux/ioctl.h>
+
+#include <asm/firmware.h>
 #include <asm/lv1call.h>
 #include <asm/ps3av.h>
 #include <asm/ps3.h>
 
 static int ps3av_module_init(void)
 {
-       int error = ps3_vuart_port_driver_register(&ps3av_driver);
+       int error;
+
+       if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
+               return -ENODEV;
+
+       error = ps3_vuart_port_driver_register(&ps3av_driver);
        if (error) {
                printk(KERN_ERR
                       "%s: ps3_vuart_port_driver_register failed %d\n",
 
 #include <linux/module.h>
 #include <linux/workqueue.h>
 #include <linux/reboot.h>
+
+#include <asm/firmware.h>
 #include <asm/ps3.h>
+
 #include "vuart.h"
 
 MODULE_AUTHOR("Sony Corporation");
 
 static int __init ps3_sys_manager_init(void)
 {
+       if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
+               return -ENODEV;
+
        return ps3_vuart_port_driver_register(&ps3_sys_manager);
 }
 
 
        pr_debug("%s:%d:\n", __func__, __LINE__);
 
        if (!firmware_has_feature(FW_FEATURE_PS3_LV1))
-               return 0;
+               return -ENODEV;
 
        init_MUTEX(&vuart_bus_priv.probe_mutex);
        result = bus_register(&ps3_vuart_bus);