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 <[EMAIL PROTECTED]> --- 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); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev