]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/firmware/edd.c
kobject: remove struct kobj_type from struct kset
[linux-2.6-omap-h63xx.git] / drivers / firmware / edd.c
index d8806e4f182984c841603d8d3d365c77d98c6cec..fc567fad3f7cfa68b46d0974bb528008d47fbe06 100644 (file)
@@ -74,7 +74,7 @@ static struct edd_device *edd_devices[EDD_MBR_SIG_MAX];
 
 #define EDD_DEVICE_ATTR(_name,_mode,_show,_test) \
 struct edd_attribute edd_attr_##_name = {      \
-       .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },     \
+       .attr = {.name = __stringify(_name), .mode = _mode },   \
        .show   = _show,                                \
        .test   = _test,                                \
 };
@@ -625,13 +625,13 @@ static void edd_release(struct kobject * kobj)
        kfree(dev);
 }
 
-static struct kobj_type ktype_edd = {
+static struct kobj_type edd_ktype = {
        .release        = edd_release,
        .sysfs_ops      = &edd_attr_ops,
        .default_attrs  = def_attrs,
 };
 
-static decl_subsys(edd,&ktype_edd,NULL);
+static decl_subsys(edd, NULL);
 
 
 /**
@@ -669,7 +669,7 @@ edd_get_pci_dev(struct edd_device *edev)
        struct edd_info *info = edd_dev_get_info(edev);
 
        if (edd_dev_is_type(edev, "PCI")) {
-               return pci_find_slot(info->params.interface_path.pci.bus,
+               return pci_get_bus_and_slot(info->params.interface_path.pci.bus,
                                     PCI_DEVFN(info->params.interface_path.pci.slot,
                                               info->params.interface_path.pci.
                                               function));
@@ -682,9 +682,12 @@ edd_create_symlink_to_pcidev(struct edd_device *edev)
 {
 
        struct pci_dev *pci_dev = edd_get_pci_dev(edev);
+       int ret;
        if (!pci_dev)
                return 1;
-       return sysfs_create_link(&edev->kobj,&pci_dev->dev.kobj,"pci_dev");
+       ret = sysfs_create_link(&edev->kobj,&pci_dev->dev.kobj,"pci_dev");
+       pci_dev_put(pci_dev);
+       return ret;
 }
 
 static inline void
@@ -720,7 +723,8 @@ edd_device_register(struct edd_device *edev, int i)
        edd_dev_set_info(edev, i);
        kobject_set_name(&edev->kobj, "int13_dev%02x",
                         0x80 + i);
-       kobj_set_kset_s(edev,edd_subsys);
+       edev->kobj.kset = &edd_subsys;
+       edev->kobj.ktype = &edd_ktype;
        error = kobject_register(&edev->kobj);
        if (!error)
                edd_populate_dir(edev);