diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2007-08-17 22:40:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 17:50:59 -0400 |
commit | 43cc71eed1250755986da4c0f9898f9a635cb3bf (patch) | |
tree | 5ffed3b363ee1d5e66e87b9979451f1f9f4bafb0 | |
parent | 782e3b3b3804c38d5130c7f21d7ec7bf6709023f (diff) |
platform: prefix MODALIAS with "platform:"
Prefix platform modalias strings with "platform:", which
modprobe config to blacklist alias resolving if userspace
configures it.
Send uevents for all platform devices.
Add MODULE_ALIAS's to: pxa2xx_pcmcia, ds1742 and pcspkr to trigger
module autoloading by userspace.
$ modinfo pcspkr
alias: platform:pcspkr
license: GPL
description: PC Speaker beeper driver
...
$ modprobe -n -v platform:pcspkr
insmod /lib/modules/2.6.23-rc3-g28e8351a-dirty/kernel/drivers/input/misc/pcspkr.ko
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Cc: David Brownell <david-b@pacbell.net>
Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/base/platform.c | 15 | ||||
-rw-r--r-- | drivers/input/misc/pcspkr.c | 1 | ||||
-rw-r--r-- | drivers/pcmcia/pxa2xx_mainstone.c | 2 | ||||
-rw-r--r-- | drivers/pcmcia/pxa2xx_sharpsl.c | 2 |
4 files changed, 5 insertions, 15 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 869ff8c00146..9bfc434d1327 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -160,11 +160,6 @@ static void platform_device_release(struct device *dev) | |||
160 | * | 160 | * |
161 | * Create a platform device object which can have other objects attached | 161 | * Create a platform device object which can have other objects attached |
162 | * to it, and which will have attached objects freed when it is released. | 162 | * to it, and which will have attached objects freed when it is released. |
163 | * | ||
164 | * This device will be marked as not supporting hotpluggable drivers; no | ||
165 | * device add/remove uevents will be generated. In the unusual case that | ||
166 | * the device isn't being dynamically allocated as a legacy "probe the | ||
167 | * hardware" driver, infrastructure code should reverse this marking. | ||
168 | */ | 163 | */ |
169 | struct platform_device *platform_device_alloc(const char *name, unsigned int id) | 164 | struct platform_device *platform_device_alloc(const char *name, unsigned int id) |
170 | { | 165 | { |
@@ -177,12 +172,6 @@ struct platform_device *platform_device_alloc(const char *name, unsigned int id) | |||
177 | pa->pdev.id = id; | 172 | pa->pdev.id = id; |
178 | device_initialize(&pa->pdev.dev); | 173 | device_initialize(&pa->pdev.dev); |
179 | pa->pdev.dev.release = platform_device_release; | 174 | pa->pdev.dev.release = platform_device_release; |
180 | |||
181 | /* prevent hotplug "modprobe $(MODALIAS)" from causing trouble in | ||
182 | * legacy probe-the-hardware drivers, which don't properly split | ||
183 | * out device enumeration logic from drivers. | ||
184 | */ | ||
185 | pa->pdev.dev.uevent_suppress = 1; | ||
186 | } | 175 | } |
187 | 176 | ||
188 | return pa ? &pa->pdev : NULL; | 177 | return pa ? &pa->pdev : NULL; |
@@ -530,7 +519,7 @@ static ssize_t | |||
530 | modalias_show(struct device *dev, struct device_attribute *a, char *buf) | 519 | modalias_show(struct device *dev, struct device_attribute *a, char *buf) |
531 | { | 520 | { |
532 | struct platform_device *pdev = to_platform_device(dev); | 521 | struct platform_device *pdev = to_platform_device(dev); |
533 | int len = snprintf(buf, PAGE_SIZE, "%s\n", pdev->name); | 522 | int len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name); |
534 | 523 | ||
535 | return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; | 524 | return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; |
536 | } | 525 | } |
@@ -546,7 +535,7 @@ static int platform_uevent(struct device *dev, char **envp, int num_envp, | |||
546 | struct platform_device *pdev = to_platform_device(dev); | 535 | struct platform_device *pdev = to_platform_device(dev); |
547 | 536 | ||
548 | envp[0] = buffer; | 537 | envp[0] = buffer; |
549 | snprintf(buffer, buffer_size, "MODALIAS=%s", pdev->name); | 538 | snprintf(buffer, buffer_size, "MODALIAS=platform:%s", pdev->name); |
550 | return 0; | 539 | return 0; |
551 | } | 540 | } |
552 | 541 | ||
diff --git a/drivers/input/misc/pcspkr.c b/drivers/input/misc/pcspkr.c index 906bf5e8de89..e1a44020ed2b 100644 --- a/drivers/input/misc/pcspkr.c +++ b/drivers/input/misc/pcspkr.c | |||
@@ -23,6 +23,7 @@ | |||
23 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>"); | 23 | MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>"); |
24 | MODULE_DESCRIPTION("PC Speaker beeper driver"); | 24 | MODULE_DESCRIPTION("PC Speaker beeper driver"); |
25 | MODULE_LICENSE("GPL"); | 25 | MODULE_LICENSE("GPL"); |
26 | MODULE_ALIAS("platform:pcspkr"); | ||
26 | 27 | ||
27 | #ifdef CONFIG_X86 | 28 | #ifdef CONFIG_X86 |
28 | /* Use the global PIT lock ! */ | 29 | /* Use the global PIT lock ! */ |
diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c index 383107ba4bd3..f6722ba0dd1e 100644 --- a/drivers/pcmcia/pxa2xx_mainstone.c +++ b/drivers/pcmcia/pxa2xx_mainstone.c | |||
@@ -175,7 +175,6 @@ static int __init mst_pcmcia_init(void) | |||
175 | if (!mst_pcmcia_device) | 175 | if (!mst_pcmcia_device) |
176 | return -ENOMEM; | 176 | return -ENOMEM; |
177 | 177 | ||
178 | mst_pcmcia_device->dev.uevent_suppress = 0; | ||
179 | mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops; | 178 | mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops; |
180 | 179 | ||
181 | ret = platform_device_add(mst_pcmcia_device); | 180 | ret = platform_device_add(mst_pcmcia_device); |
@@ -195,3 +194,4 @@ fs_initcall(mst_pcmcia_init); | |||
195 | module_exit(mst_pcmcia_exit); | 194 | module_exit(mst_pcmcia_exit); |
196 | 195 | ||
197 | MODULE_LICENSE("GPL"); | 196 | MODULE_LICENSE("GPL"); |
197 | MODULE_ALIAS("platform:pxa2xx-pcmcia"); | ||
diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c index a2daa3f531b2..d5c33bd78d68 100644 --- a/drivers/pcmcia/pxa2xx_sharpsl.c +++ b/drivers/pcmcia/pxa2xx_sharpsl.c | |||
@@ -261,7 +261,6 @@ static int __init sharpsl_pcmcia_init(void) | |||
261 | if (!sharpsl_pcmcia_device) | 261 | if (!sharpsl_pcmcia_device) |
262 | return -ENOMEM; | 262 | return -ENOMEM; |
263 | 263 | ||
264 | sharpsl_pcmcia_device->dev.uevent_suppress = 0; | ||
265 | sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops; | 264 | sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops; |
266 | sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev; | 265 | sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev; |
267 | 266 | ||
@@ -284,3 +283,4 @@ module_exit(sharpsl_pcmcia_exit); | |||
284 | 283 | ||
285 | MODULE_DESCRIPTION("Sharp SL Series PCMCIA Support"); | 284 | MODULE_DESCRIPTION("Sharp SL Series PCMCIA Support"); |
286 | MODULE_LICENSE("GPL"); | 285 | MODULE_LICENSE("GPL"); |
286 | MODULE_ALIAS("platform:pxa2xx-pcmcia"); | ||