[PATCH] create modalias file in sysfs for bus of_platform

Olaf Hering olaf at aepfle.de
Wed Jan 23 01:21:09 EST 2008


Create /sys/bus/of_platform/devices/*/modalias file to allow autoloading
of modules. modalias files are already present for many other bus types.

Signed-off-by: Olaf Hering <olaf at aepfle.de>

---
 drivers/of/device.c |   18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -86,7 +86,19 @@ static ssize_t dev_show_devspec(struct d
 	return sprintf(buf, "%s", ofdev->node->full_name);
 }
 
+static ssize_t dev_show_modalias(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	struct of_device *ofdev = to_of_device(dev);
+	ssize_t len = 0;
+
+	if (ofdev)
+		len = of_device_get_modalias(ofdev, buf, PAGE_SIZE);
+	return len;
+}
+
 static DEVICE_ATTR(devspec, S_IRUGO, dev_show_devspec, NULL);
+static DEVICE_ATTR(modalias, S_IRUGO, dev_show_modalias, NULL);
 
 /**
  * of_release_dev - free an of device structure when all users of it are finished.
@@ -116,6 +128,11 @@ int of_device_register(struct of_device 
 		return rc;
 
 	rc = device_create_file(&ofdev->dev, &dev_attr_devspec);
+	if (rc) {
+		device_unregister(&ofdev->dev);
+		return rc;
+	}
+	rc = device_create_file(&ofdev->dev, &dev_attr_modalias);
 	if (rc)
 		device_unregister(&ofdev->dev);
 
@@ -126,6 +143,7 @@ EXPORT_SYMBOL(of_device_register);
 void of_device_unregister(struct of_device *ofdev)
 {
 	device_remove_file(&ofdev->dev, &dev_attr_devspec);
+	device_remove_file(&ofdev->dev, &dev_attr_modalias);
 	device_unregister(&ofdev->dev);
 }
 EXPORT_SYMBOL(of_device_unregister);



More information about the Linuxppc-dev mailing list