mtd: fix Orion NAND driver compilation with ARM OABI
[safe/jmp/linux-2.6] / drivers / firmware / edd.c
index ddcc957..110e24e 100644 (file)
@@ -11,7 +11,7 @@
  *
  * This code takes information provided by BIOS EDD calls
  * fn41 - Check Extensions Present and
- * fn48 - Get Device Parametes with EDD extensions
+ * fn48 - Get Device Parameters with EDD extensions
  * made in setup.S, copied to safe structures in setup.c,
  * and presents it in sysfs.
  *
@@ -122,7 +122,7 @@ edd_attr_show(struct kobject * kobj, struct attribute *attr, char *buf)
        return ret;
 }
 
-static struct sysfs_ops edd_attr_ops = {
+static const struct sysfs_ops edd_attr_ops = {
        .show = edd_attr_show,
 };
 
@@ -693,7 +693,7 @@ edd_create_symlink_to_pcidev(struct edd_device *edev)
 static inline void
 edd_device_unregister(struct edd_device *edev)
 {
-       kobject_unregister(&edev->kobj);
+       kobject_put(&edev->kobj);
 }
 
 static void edd_populate_dir(struct edd_device * edev)
@@ -721,13 +721,13 @@ edd_device_register(struct edd_device *edev, int i)
        if (!edev)
                return 1;
        edd_dev_set_info(edev, i);
-       kobject_set_name(&edev->kobj, "int13_dev%02x",
-                        0x80 + i);
        edev->kobj.kset = edd_kset;
-       edev->kobj.ktype = &edd_ktype;
-       error = kobject_register(&edev->kobj);
-       if (!error)
+       error = kobject_init_and_add(&edev->kobj, &edd_ktype, NULL,
+                                    "int13_dev%02x", 0x80 + i);
+       if (!error) {
                edd_populate_dir(edev);
+               kobject_uevent(&edev->kobj, KOBJ_ADD);
+       }
        return error;
 }
 
@@ -753,7 +753,7 @@ edd_init(void)
 
        if (!edd_num_devices()) {
                printk(KERN_INFO "EDD information not available.\n");
-               return 1;
+               return -ENODEV;
        }
 
        edd_kset = kset_create_and_add("edd", NULL, firmware_kobj);