From 89a2cfa2cdab83633651da1d01c3487ab18db7a6 Mon Sep 17 00:00:00 2001 From: Jens Taprogge Date: Tue, 4 Sep 2012 17:01:20 +0200 Subject: [PATCH] --- yaml --- r: 324802 b: refs/heads/master c: 35eb97bb67e7581ba1372ffc8c28770ca0568404 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/staging/ipack/ipack.c | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2d6883c839ae..d7b10d2f4b50 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4aa09d47d45ee8ced196c49031159ada2aef5b1d +refs/heads/master: 35eb97bb67e7581ba1372ffc8c28770ca0568404 diff --git a/trunk/drivers/staging/ipack/ipack.c b/trunk/drivers/staging/ipack/ipack.c index a3286290c79b..a5ef28f82f7a 100644 --- a/trunk/drivers/staging/ipack/ipack.c +++ b/trunk/drivers/staging/ipack/ipack.c @@ -86,6 +86,31 @@ static int ipack_bus_remove(struct device *device) return 0; } +#ifdef CONFIG_HOTPLUG + +static int ipack_uevent(struct device *dev, struct kobj_uevent_env *env) +{ + struct ipack_device *idev; + + if (!dev) + return -ENODEV; + + idev = to_ipack_dev(dev); + + if (add_uevent_var(env, + "MODALIAS=ipack:f%02Xv%08Xd%08X", idev->id_format, + idev->id_vendor, idev->id_device)) + return -ENOMEM; + + return 0; +} + +#else /* !CONFIG_HOTPLUG */ + +#define ipack_uevent NULL + +#endif /* !CONFIG_HOTPLUG */ + #define ipack_device_attr(field, format_string) \ static ssize_t \ field##_show(struct device *dev, struct device_attribute *attr, \ @@ -123,12 +148,22 @@ id_device_show(struct device *dev, struct device_attribute *attr, char *buf) } } +static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct ipack_device *idev = to_ipack_dev(dev); + + return sprintf(buf, "ipac:f%02Xv%08Xd%08X", idev->id_format, + idev->id_vendor, idev->id_device); +} + ipack_device_attr(id_format, "0x%hhu\n"); static struct device_attribute ipack_dev_attrs[] = { __ATTR_RO(id_device), __ATTR_RO(id_format), __ATTR_RO(id_vendor), + __ATTR_RO(modalias), }; static struct bus_type ipack_bus_type = { @@ -137,6 +172,7 @@ static struct bus_type ipack_bus_type = { .match = ipack_bus_match, .remove = ipack_bus_remove, .dev_attrs = ipack_dev_attrs, + .uevent = ipack_uevent, }; struct ipack_bus_device *ipack_bus_register(struct device *parent, int slots,