firewire: Add rom_index attribute for unit sysfs directories.
authorKristian Høgsberg <krh@redhat.com>
Wed, 7 Mar 2007 17:12:46 +0000 (12:12 -0500)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Fri, 9 Mar 2007 21:03:10 +0000 (22:03 +0100)
Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
drivers/firewire/fw-device.c

index b24090ae9c705f7841808a89b869caa41eab9b7d..4ade867db88800fd71ebc2d2f893bf1f513a69b0 100644 (file)
@@ -230,6 +230,22 @@ static struct device_attribute config_rom_attribute = {
        .show = show_config_rom_attribute,
 };
 
+static ssize_t
+show_rom_index_attribute(struct device *dev,
+                        struct device_attribute *attr, char *buf)
+{
+       struct fw_device *device = fw_device(dev->parent);
+       struct fw_unit *unit = fw_unit(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n",
+                       unit->directory - device->config_rom);
+}
+
+static struct device_attribute rom_index_attribute = {
+       .attr = { .name = "rom_index", .mode = S_IRUGO, },
+       .show = show_rom_index_attribute,
+};
+
 struct read_quadlet_callback_data {
        struct completion done;
        int rcode;
@@ -393,6 +409,11 @@ static void create_units(struct fw_device *device)
                        device_unregister(&unit->device);
                        kfree(unit);
                }
+
+               if (device_create_file(&unit->device, &rom_index_attribute) < 0) {
+                       device_unregister(&unit->device);
+                       kfree(unit);
+               }
        }
 }