[PATCH v2] create modalias file in sysfs for bus of_platform
Olaf Hering
olaf at aepfle.de
Wed Jan 23 01:40:53 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 | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -86,7 +86,20 @@ 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;
+
+ len = of_device_get_modalias(ofdev, buf, PAGE_SIZE);
+ buf[len] = '\n';
+ buf[len+1] = 0;
+ return len+1;
+}
+
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 +129,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 +144,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