Merge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
[powerpc.git] / drivers / macintosh / macio_sysfs.c
index 97d22bb..8566bdf 100644 (file)
@@ -1,4 +1,3 @@
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/stat.h>
 #include <asm/macio.h>
@@ -17,12 +16,12 @@ static ssize_t
 compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct of_device *of;
-       char *compat;
+       const char *compat;
        int cplen;
        int length = 0;
 
        of = &to_macio_device (dev)->ofdev;
-       compat = (char *) get_property(of->node, "compatible", &cplen);
+       compat = get_property(of->node, "compatible", &cplen);
        if (!compat) {
                *buf = '\0';
                return 0;
@@ -39,6 +38,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;
+       const char *compat;
+       int cplen;
+       int length;
+
+       of = &to_macio_device (dev)->ofdev;
+       compat = 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 +70,6 @@ struct device_attribute macio_dev_attrs[] = {
        __ATTR_RO(name),
        __ATTR_RO(type),
        __ATTR_RO(compatible),
+       __ATTR_RO(modalias),
        __ATTR_NULL
 };