{
        unsigned long state;
        struct acpi_video_device *vd =
-               (struct acpi_video_device *)class_get_devdata(&od->class_dev);
+               (struct acpi_video_device *)dev_get_drvdata(&od->dev);
        acpi_video_device_get_state(vd, &state);
        return (int)state;
 }
 {
        unsigned long state = od->request_state;
        struct acpi_video_device *vd=
-               (struct acpi_video_device *)class_get_devdata(&od->class_dev);
+               (struct acpi_video_device *)dev_get_drvdata(&od->dev);
        return acpi_video_device_set_state(vd, state);
 }
 
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Luming Yu <luming.yu@intel.com>");
 
-static ssize_t video_output_show_state(struct class_device *dev,char *buf)
+static ssize_t video_output_show_state(struct device *dev,
+                                      struct device_attribute *attr, char *buf)
 {
        ssize_t ret_size = 0;
        struct output_device *od = to_output_device(dev);
        return ret_size;
 }
 
-static ssize_t video_output_store_state(struct class_device *dev,
-       const char *buf,size_t count)
+static ssize_t video_output_store_state(struct device *dev,
+                                       struct device_attribute *attr,
+                                       const char *buf,size_t count)
 {
        char *endp;
        struct output_device *od = to_output_device(dev);
        return count;
 }
 
-static void video_output_class_release(struct class_device *dev)
+static void video_output_release(struct device *dev)
 {
        struct output_device *od = to_output_device(dev);
        kfree(od);
 }
 
-static struct class_device_attribute video_output_attributes[] = {
+static struct device_attribute video_output_attributes[] = {
        __ATTR(state, 0644, video_output_show_state, video_output_store_state),
        __ATTR_NULL,
 };
 
+
 static struct class video_output_class = {
        .name = "video_output",
-       .release = video_output_class_release,
-       .class_dev_attrs = video_output_attributes,
+       .dev_release = video_output_release,
+       .dev_attrs = video_output_attributes,
 };
 
 struct output_device *video_output_register(const char *name,
                goto error_return;
        }
        new_dev->props = op;
-       new_dev->class_dev.class = &video_output_class;
-       new_dev->class_dev.dev = dev;
-       strlcpy(new_dev->class_dev.class_id,name,KOBJ_NAME_LEN);
-       class_set_devdata(&new_dev->class_dev,devdata);
-       ret_code = class_device_register(&new_dev->class_dev);
+       new_dev->dev.class = &video_output_class;
+       new_dev->dev.parent = dev;
+       strlcpy(new_dev->dev.bus_id,name, BUS_ID_SIZE);
+       dev_set_drvdata(&new_dev->dev, devdata);
+       ret_code = device_register(&new_dev->dev);
        if (ret_code) {
                kfree(new_dev);
                goto error_return;
 {
        if (!dev)
                return;
-       class_device_unregister(&dev->class_dev);
+       device_unregister(&dev->dev);
 }
 EXPORT_SYMBOL(video_output_unregister);