]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/infiniband/core/cm.c
device create: infiniband: convert device_create_drvdata to device_create
[linux-2.6-omap-h63xx.git] / drivers / infiniband / core / cm.c
index 8dc442984c8286e1ec643759642118f36ccbc855..a78d35aecee3de339520308358d6ca565d69cdd1 100644 (file)
@@ -44,6 +44,7 @@
 #include <linux/spinlock.h>
 #include <linux/sysfs.h>
 #include <linux/workqueue.h>
+#include <linux/kdev_t.h>
 
 #include <rdma/ib_cache.h>
 #include <rdma/ib_cm.h>
@@ -163,7 +164,7 @@ struct cm_port {
 struct cm_device {
        struct list_head list;
        struct ib_device *ib_device;
-       struct kobject dev_obj;
+       struct device *device;
        u8 ack_delay;
        struct cm_port *port[0];
 };
@@ -3618,18 +3619,6 @@ static struct kobj_type cm_port_obj_type = {
        .release = cm_release_port_obj
 };
 
-static void cm_release_dev_obj(struct kobject *obj)
-{
-       struct cm_device *cm_dev;
-
-       cm_dev = container_of(obj, struct cm_device, dev_obj);
-       kfree(cm_dev);
-}
-
-static struct kobj_type cm_dev_obj_type = {
-       .release = cm_release_dev_obj
-};
-
 struct class cm_class = {
        .name    = "infiniband_cm",
 };
@@ -3640,7 +3629,7 @@ static int cm_create_port_fs(struct cm_port *port)
        int i, ret;
 
        ret = kobject_init_and_add(&port->port_obj, &cm_port_obj_type,
-                                  &port->cm_dev->dev_obj,
+                                  &port->cm_dev->device->kobj,
                                   "%d", port->port_num);
        if (ret) {
                kfree(port);
@@ -3702,10 +3691,10 @@ static void cm_add_one(struct ib_device *ib_device)
        cm_dev->ib_device = ib_device;
        cm_get_ack_delay(cm_dev);
 
-       ret = kobject_init_and_add(&cm_dev->dev_obj, &cm_dev_obj_type,
-                                  &cm_class.subsys.kobj, "%s",
-                                  ib_device->name);
-       if (ret) {
+       cm_dev->device = device_create(&cm_class, &ib_device->dev,
+                                      MKDEV(0, 0), NULL,
+                                      "%s", ib_device->name);
+       if (!cm_dev->device) {
                kfree(cm_dev);
                return;
        }
@@ -3758,7 +3747,8 @@ error1:
                ib_unregister_mad_agent(port->mad_agent);
                cm_remove_port_fs(port);
        }
-       kobject_put(&cm_dev->dev_obj);
+       device_unregister(cm_dev->device);
+       kfree(cm_dev);
 }
 
 static void cm_remove_one(struct ib_device *ib_device)
@@ -3786,7 +3776,8 @@ static void cm_remove_one(struct ib_device *ib_device)
                flush_workqueue(cm.wq);
                cm_remove_port_fs(port);
        }
-       kobject_put(&cm_dev->dev_obj);
+       device_unregister(cm_dev->device);
+       kfree(cm_dev);
 }
 
 static int __init ib_cm_init(void)