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:
		
					parent
					
						
							
								782e3b3b38
							
						
					
				
			
			
				commit
				
					
						43cc71eed1
					
				
			
		
					 4 changed files with 5 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,7 @@
 | 
			
		|||
MODULE_AUTHOR("Vojtech Pavlik <vojtech@ucw.cz>");
 | 
			
		||||
MODULE_DESCRIPTION("PC Speaker beeper driver");
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_ALIAS("platform:pcspkr");
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_X86
 | 
			
		||||
/* Use the global PIT lock ! */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -175,7 +175,6 @@ static int __init mst_pcmcia_init(void)
 | 
			
		|||
	if (!mst_pcmcia_device)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	mst_pcmcia_device->dev.uevent_suppress = 0;
 | 
			
		||||
	mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops;
 | 
			
		||||
 | 
			
		||||
	ret = platform_device_add(mst_pcmcia_device);
 | 
			
		||||
| 
						 | 
				
			
			@ -195,3 +194,4 @@ fs_initcall(mst_pcmcia_init);
 | 
			
		|||
module_exit(mst_pcmcia_exit);
 | 
			
		||||
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_ALIAS("platform:pxa2xx-pcmcia");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -261,7 +261,6 @@ static int __init sharpsl_pcmcia_init(void)
 | 
			
		|||
	if (!sharpsl_pcmcia_device)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
 | 
			
		||||
	sharpsl_pcmcia_device->dev.uevent_suppress = 0;
 | 
			
		||||
	sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops;
 | 
			
		||||
	sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -284,3 +283,4 @@ module_exit(sharpsl_pcmcia_exit);
 | 
			
		|||
 | 
			
		||||
MODULE_DESCRIPTION("Sharp SL Series PCMCIA Support");
 | 
			
		||||
MODULE_LICENSE("GPL");
 | 
			
		||||
MODULE_ALIAS("platform:pxa2xx-pcmcia");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue