firewire: Use device->groups for adding device attributes.

We dynamically create an attribute group for the key present on the
device in hand and point device->group to it.  This way the device
core adds the sysfs attributes for us as the device is added.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
diff --git a/drivers/firewire/fw-device.h b/drivers/firewire/fw-device.h
index ce47ab9..c167d59 100644
--- a/drivers/firewire/fw-device.h
+++ b/drivers/firewire/fw-device.h
@@ -32,6 +32,12 @@
 	FW_DEVICE_SHUTDOWN,
 };
 
+struct fw_attribute_group {
+	struct attribute_group *groups[2];
+	struct attribute_group group;
+	struct attribute *attrs[11];
+};
+
 struct fw_device {
 	atomic_t state;
 	struct fw_node *node;
@@ -45,6 +51,7 @@
 	size_t config_rom_length;
 	int config_rom_retries;
 	struct delayed_work work;
+	struct fw_attribute_group attribute_group;
 };
 
 static inline struct fw_device *
@@ -72,6 +79,7 @@
 struct fw_unit {
 	struct device device;
 	u32 *directory;
+	struct fw_attribute_group attribute_group;
 };
 
 static inline struct fw_unit *