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>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
782e3b3b38
commit
43cc71eed1
@@ -160,11 +160,6 @@ static void platform_device_release(struct device *dev)
|
||||
*
|
||||
* Create a platform device object which can have other objects attached
|
||||
* to it, and which will have attached objects freed when it is released.
|
||||
*
|
||||
* This device will be marked as not supporting hotpluggable drivers; no
|
||||
* device add/remove uevents will be generated. In the unusual case that
|
||||
* the device isn't being dynamically allocated as a legacy "probe the
|
||||
* hardware" driver, infrastructure code should reverse this marking.
|
||||
*/
|
||||
struct platform_device *platform_device_alloc(const char *name, unsigned int id)
|
||||
{
|
||||
@@ -177,12 +172,6 @@ struct platform_device *platform_device_alloc(const char *name, unsigned int id)
|
||||
pa->pdev.id = id;
|
||||
device_initialize(&pa->pdev.dev);
|
||||
pa->pdev.dev.release = platform_device_release;
|
||||
|
||||
/* prevent hotplug "modprobe $(MODALIAS)" from causing trouble in
|
||||
* legacy probe-the-hardware drivers, which don't properly split
|
||||
* out device enumeration logic from drivers.
|
||||
*/
|
||||
pa->pdev.dev.uevent_suppress = 1;
|
||||
}
|
||||
|
||||
return pa ? &pa->pdev : NULL;
|
||||
@@ -530,7 +519,7 @@ static ssize_t
|
||||
modalias_show(struct device *dev, struct device_attribute *a, char *buf)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
int len = snprintf(buf, PAGE_SIZE, "%s\n", pdev->name);
|
||||
int len = snprintf(buf, PAGE_SIZE, "platform:%s\n", pdev->name);
|
||||
|
||||
return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len;
|
||||
}
|
||||
@@ -546,7 +535,7 @@ static int platform_uevent(struct device *dev, char **envp, int num_envp,
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
|
||||
envp[0] = buffer;
|
||||
snprintf(buffer, buffer_size, "MODALIAS=%s", pdev->name);
|
||||
snprintf(buffer, buffer_size, "MODALIAS=platform:%s", pdev->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user