summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClemens Ladisch <clemens@ladisch.de>2012-06-17 16:40:36 +0200
committerStefan Richter <stefanr@s5r6.in-berlin.de>2012-06-30 10:49:06 +0200
commitbaedee177e6c553af455865718971d9a9c75e537 (patch)
treefcbb65716517292b6cd6a37b35c83d10a5e33c82
parente18907cc8a3cd6e09510632b753b8b6fefa1752a (diff)
firewire: core: add is_local sysfs device attribute
Making this information available in sysfs allows to differentiate between controllers in the local and remote Linux PCs, and thus is useful for servers that are started with udev rules. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r--drivers/firewire/core-device.c9
-rw-r--r--include/linux/firewire.h2
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/firewire/core-device.c b/drivers/firewire/core-device.c
index 4d460ef87161..7a05fd24d68b 100644
--- a/drivers/firewire/core-device.c
+++ b/drivers/firewire/core-device.c
@@ -398,6 +398,14 @@ static ssize_t guid_show(struct device *dev,
return ret;
}
+static ssize_t is_local_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct fw_device *device = fw_device(dev);
+
+ return sprintf(buf, "%u\n", device->is_local);
+}
+
static int units_sprintf(char *buf, const u32 *directory)
{
struct fw_csr_iterator ci;
@@ -447,6 +455,7 @@ static ssize_t units_show(struct device *dev,
static struct device_attribute fw_device_attributes[] = {
__ATTR_RO(config_rom),
__ATTR_RO(guid),
+ __ATTR_RO(is_local),
__ATTR_RO(units),
__ATTR_NULL,
};
diff --git a/include/linux/firewire.h b/include/linux/firewire.h
index d77f60c6d1ed..cb2445e2e10e 100644
--- a/include/linux/firewire.h
+++ b/include/linux/firewire.h
@@ -138,7 +138,7 @@ struct fw_card {
struct fw_attribute_group {
struct attribute_group *groups[2];
struct attribute_group group;
- struct attribute *attrs[12];
+ struct attribute *attrs[13];
};
enum fw_device_state {