|
@@ -128,9 +128,23 @@ static int eisa_bus_match (struct device *dev, struct device_driver *drv)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int eisa_bus_uevent(struct device *dev, char **envp, int num_envp,
|
|
|
+ char *buffer, int buffer_size)
|
|
|
+{
|
|
|
+ struct eisa_device *edev = to_eisa_device(dev);
|
|
|
+ int i = 0;
|
|
|
+ int length = 0;
|
|
|
+
|
|
|
+ add_uevent_var(envp, num_envp, &i, buffer, buffer_size, &length,
|
|
|
+ "MODALIAS=" EISA_DEVICE_MODALIAS_FMT, edev->id.sig);
|
|
|
+ envp[i] = NULL;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
struct bus_type eisa_bus_type = {
|
|
|
.name = "eisa",
|
|
|
.match = eisa_bus_match,
|
|
|
+ .uevent = eisa_bus_uevent,
|
|
|
};
|
|
|
|
|
|
int eisa_driver_register (struct eisa_driver *edrv)
|
|
@@ -160,6 +174,14 @@ static ssize_t eisa_show_state (struct device *dev, struct device_attribute *att
|
|
|
|
|
|
static DEVICE_ATTR(enabled, S_IRUGO, eisa_show_state, NULL);
|
|
|
|
|
|
+static ssize_t eisa_show_modalias (struct device *dev, struct device_attribute *attr, char *buf)
|
|
|
+{
|
|
|
+ struct eisa_device *edev = to_eisa_device (dev);
|
|
|
+ return sprintf (buf, EISA_DEVICE_MODALIAS_FMT "\n", edev->id.sig);
|
|
|
+}
|
|
|
+
|
|
|
+static DEVICE_ATTR(modalias, S_IRUGO, eisa_show_modalias, NULL);
|
|
|
+
|
|
|
static int __init eisa_init_device (struct eisa_root_device *root,
|
|
|
struct eisa_device *edev,
|
|
|
int slot)
|
|
@@ -209,6 +231,7 @@ static int __init eisa_register_device (struct eisa_device *edev)
|
|
|
|
|
|
device_create_file (&edev->dev, &dev_attr_signature);
|
|
|
device_create_file (&edev->dev, &dev_attr_enabled);
|
|
|
+ device_create_file (&edev->dev, &dev_attr_modalias);
|
|
|
|
|
|
return 0;
|
|
|
}
|