dv1394_un_init(video);
        } while (video != NULL);
 
-       class_simple_device_remove(MKDEV(
-               IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)));
+       class_device_destroy(hpsb_protocol_class,
+               MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)));
        devfs_remove("ieee1394/dv/host%d/NTSC", id);
        devfs_remove("ieee1394/dv/host%d/PAL", id);
        devfs_remove("ieee1394/dv/host%d", id);
 
        ohci = (struct ti_ohci *)host->hostdata;
 
-       class_simple_device_add(hpsb_protocol_class, MKDEV(
+       class_device_create(hpsb_protocol_class, MKDEV(
                IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)), 
                NULL, "dv1394-%d", id);
        devfs_mk_dir("ieee1394/dv/host%d", id);
 
 
 /* Some globals used */
 const char *hpsb_speedto_str[] = { "S100", "S200", "S400", "S800", "S1600", "S3200" };
-struct class_simple *hpsb_protocol_class;
+struct class *hpsb_protocol_class;
 
 #ifdef CONFIG_IEEE1394_VERBOSEDEBUG
 static void dump_packet(const char *text, quadlet_t *data, int size)
        if (ret < 0)
                goto release_all_bus;
 
-       hpsb_protocol_class = class_simple_create(THIS_MODULE, "ieee1394_protocol");
+       hpsb_protocol_class = class_create(THIS_MODULE, "ieee1394_protocol");
        if (IS_ERR(hpsb_protocol_class)) {
                ret = PTR_ERR(hpsb_protocol_class);
                goto release_class_host;
 cleanup_csr:
        cleanup_csr();
 release_class_protocol:
-       class_simple_destroy(hpsb_protocol_class);
+       class_destroy(hpsb_protocol_class);
 release_class_host:
        class_unregister(&hpsb_host_class);
 release_all_bus:
 
        cleanup_csr();
 
-       class_simple_destroy(hpsb_protocol_class);
+       class_destroy(hpsb_protocol_class);
        class_unregister(&hpsb_host_class);
        for (i = 0; fw_bus_attrs[i]; i++)
                bus_remove_file(&ieee1394_bus_type, fw_bus_attrs[i]);
 
 /* Our sysfs bus entry */
 extern struct bus_type ieee1394_bus_type;
 extern struct class hpsb_host_class;
-extern struct class_simple *hpsb_protocol_class;
+extern struct class *hpsb_protocol_class;
 
 #endif /* _IEEE1394_CORE_H */
+
 
 
        hpsb_register_highlevel(&raw1394_highlevel);
 
-       if (IS_ERR(class_simple_device_add(hpsb_protocol_class, MKDEV(
+       if (IS_ERR(class_device_create(hpsb_protocol_class, MKDEV(
                IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16), 
                NULL, RAW1394_DEVICE_NAME))) {
                ret = -EFAULT;
 
 out_dev:
        devfs_remove(RAW1394_DEVICE_NAME);
-       class_simple_device_remove(MKDEV(
-               IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16));
+       class_device_destroy(hpsb_protocol_class,
+               MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16));
 out_unreg:
        hpsb_unregister_highlevel(&raw1394_highlevel);
 out:
 
 static void __exit cleanup_raw1394(void)
 {
-       class_simple_device_remove(MKDEV(
-               IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16));
+       class_device_destroy(hpsb_protocol_class,
+               MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_RAW1394 * 16));
        cdev_del(&raw1394_cdev);
        devfs_remove(RAW1394_DEVICE_NAME);
        hpsb_unregister_highlevel(&raw1394_highlevel);
 
        hpsb_set_hostinfo_key(&video1394_highlevel, host, ohci->host->id);
 
        minor = IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id;
-       class_simple_device_add(hpsb_protocol_class, MKDEV(
+       class_device_create(hpsb_protocol_class, MKDEV(
                IEEE1394_MAJOR, minor), 
                NULL, "%s-%d", VIDEO1394_DRIVER_NAME, ohci->host->id);
        devfs_mk_cdev(MKDEV(IEEE1394_MAJOR, minor),
        struct ti_ohci *ohci = hpsb_get_hostinfo(&video1394_highlevel, host);
 
        if (ohci) {
-               class_simple_device_remove(MKDEV(IEEE1394_MAJOR, 
+               class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
                        IEEE1394_MINOR_BLOCK_VIDEO1394 * 16 + ohci->host->id));
                devfs_remove("%s/%d", VIDEO1394_DRIVER_NAME, ohci->host->id);
        }