|
@@ -39,6 +39,31 @@ compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
|
|
|
return length;
|
|
|
}
|
|
|
|
|
|
+static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
|
|
|
+ char *buf)
|
|
|
+{
|
|
|
+ struct of_device *of;
|
|
|
+ char *compat;
|
|
|
+ int cplen;
|
|
|
+ int length;
|
|
|
+
|
|
|
+ of = &to_macio_device (dev)->ofdev;
|
|
|
+ compat = (char *) get_property (of->node, "compatible", &cplen);
|
|
|
+ if (!compat) compat = "", cplen = 1;
|
|
|
+ length = sprintf (buf, "of:N%sT%s", of->node->name, of->node->type);
|
|
|
+ buf += length;
|
|
|
+ while (cplen > 0) {
|
|
|
+ int l;
|
|
|
+ length += sprintf (buf, "C%s", compat);
|
|
|
+ buf += length;
|
|
|
+ l = strlen (compat) + 1;
|
|
|
+ compat += l;
|
|
|
+ cplen -= l;
|
|
|
+ }
|
|
|
+
|
|
|
+ return length;
|
|
|
+}
|
|
|
+
|
|
|
macio_config_of_attr (name, "%s\n");
|
|
|
macio_config_of_attr (type, "%s\n");
|
|
|
|
|
@@ -46,5 +71,6 @@ struct device_attribute macio_dev_attrs[] = {
|
|
|
__ATTR_RO(name),
|
|
|
__ATTR_RO(type),
|
|
|
__ATTR_RO(compatible),
|
|
|
+ __ATTR_RO(modalias),
|
|
|
__ATTR_NULL
|
|
|
};
|