Blame linux-2.6-vio-modalias.patch
|
Jesse Keating |
2f82dda |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c
|
|
Jesse Keating |
2f82dda |
index f988672..12a0851 100644
|
|
Jesse Keating |
2f82dda |
--- a/arch/powerpc/kernel/vio.c
|
|
Jesse Keating |
2f82dda |
+++ b/arch/powerpc/kernel/vio.c
|
|
Jesse Keating |
2f82dda |
@@ -294,9 +294,27 @@ static ssize_t devspec_show(struct device *dev,
|
|
Jesse Keating |
2f82dda |
return sprintf(buf, "%s\n", of_node ? of_node->full_name : "none");
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
+static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
|
|
Jesse Keating |
2f82dda |
+ char *buf)
|
|
Jesse Keating |
2f82dda |
+{
|
|
Jesse Keating |
2f82dda |
+ const struct vio_dev *vio_dev = to_vio_dev(dev);
|
|
Jesse Keating |
2f82dda |
+ struct device_node *dn;
|
|
Jesse Keating |
2f82dda |
+ const char *cp;
|
|
Jesse Keating |
2f82dda |
+
|
|
Jesse Keating |
2f82dda |
+ dn = dev->archdata.of_node;
|
|
Jesse Keating |
2f82dda |
+ if (!dn)
|
|
Jesse Keating |
2f82dda |
+ return -ENODEV;
|
|
Jesse Keating |
2f82dda |
+ cp = of_get_property(dn, "compatible", NULL);
|
|
Jesse Keating |
2f82dda |
+ if (!cp)
|
|
Jesse Keating |
2f82dda |
+ return -ENODEV;
|
|
Jesse Keating |
2f82dda |
+
|
|
Jesse Keating |
2f82dda |
+ return sprintf(buf, "vio:T%sS%s\n", vio_dev->type, cp);
|
|
Jesse Keating |
2f82dda |
+}
|
|
Jesse Keating |
2f82dda |
+
|
|
Jesse Keating |
2f82dda |
static struct device_attribute vio_dev_attrs[] = {
|
|
Jesse Keating |
2f82dda |
__ATTR_RO(name),
|
|
Jesse Keating |
2f82dda |
__ATTR_RO(devspec),
|
|
Jesse Keating |
2f82dda |
+ __ATTR_RO(modalias),
|
|
Jesse Keating |
2f82dda |
__ATTR_NULL
|
|
Jesse Keating |
2f82dda |
};
|
|
Jesse Keating |
2f82dda |
|