]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[PATCH] s390, ccw - export modalias
authorBastian Blank <bastian@waldi.eu.org>
Sun, 30 Oct 2005 23:00:12 +0000 (15:00 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 31 Oct 2005 01:37:16 +0000 (17:37 -0800)
This patch exports modalias for ccw devices.

So you can do:
  modprobe `echo /sys/device/path_to_device/modalias`
and the proper driver will automatically be loaded by userspace.

Signed-off-by: Bastian Blank <waldi@debian.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/s390/cio/device.c

index 9adc11e8b8bcea7f30cd5075ca8a802d6ccb5e78..1c2659766c09f57da799c84fa4207c4ae2f306cd 100644 (file)
@@ -251,6 +251,23 @@ cutype_show (struct device *dev, struct device_attribute *attr, char *buf)
                       id->cu_type, id->cu_model);
 }
 
+static ssize_t
+modalias_show (struct device *dev, struct device_attribute *attr, char *buf)
+{
+       struct ccw_device *cdev = to_ccwdev(dev);
+       struct ccw_device_id *id = &(cdev->id);
+       int ret;
+
+       ret = sprintf(buf, "ccw:t%04Xm%02x",
+                       id->cu_type, id->cu_model);
+       if (id->dev_type != 0)
+               ret += sprintf(buf + ret, "dt%04Xdm%02X\n",
+                               id->dev_type, id->dev_model);
+       else
+               ret += sprintf(buf + ret, "dtdm\n");
+       return ret;
+}
+
 static ssize_t
 online_show (struct device *dev, struct device_attribute *attr, char *buf)
 {
@@ -448,6 +465,7 @@ static DEVICE_ATTR(chpids, 0444, chpids_show, NULL);
 static DEVICE_ATTR(pimpampom, 0444, pimpampom_show, NULL);
 static DEVICE_ATTR(devtype, 0444, devtype_show, NULL);
 static DEVICE_ATTR(cutype, 0444, cutype_show, NULL);
+static DEVICE_ATTR(modalias, 0444, modalias_show, NULL);
 static DEVICE_ATTR(online, 0644, online_show, online_store);
 extern struct device_attribute dev_attr_cmb_enable;
 static DEVICE_ATTR(availability, 0444, available_show, NULL);
@@ -471,6 +489,7 @@ subchannel_add_files (struct device *dev)
 static struct attribute * ccwdev_attrs[] = {
        &dev_attr_devtype.attr,
        &dev_attr_cutype.attr,
+       &dev_attr_modalias.attr,
        &dev_attr_online.attr,
        &dev_attr_cmb_enable.attr,
        &dev_attr_availability.attr,