Commit e169c139 authored by Kay Sievers's avatar Kay Sievers Committed by Linus Torvalds

serial: fix platform driver hotplug/coldplug

Since 43cc71ee, the platform modalias is
prefixed with "platform:".  Add MODULE_ALIAS() to the hotpluggable serial
platform drivers, to re-enable auto loading.

NOTE that Kconfig for some of these drivers doesn't allow modular builds, and
thus doesn't match the driver source's unload support.  Presumably their
unload code is buggy and/or weakly tested...

[dbrownell@users.sourceforge.net: more drivers, registration fixes]
Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Acked-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 12c2c019
...@@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit); ...@@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit);
MODULE_AUTHOR("Rick Bronson"); MODULE_AUTHOR("Rick Bronson");
MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:atmel_usart");
...@@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = { ...@@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = {
.resume = bfin_serial_resume, .resume = bfin_serial_resume,
.driver = { .driver = {
.name = "bfin-uart", .name = "bfin-uart",
.owner = THIS_MODULE,
}, },
}; };
...@@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analog.com>"); ...@@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analog.com>");
MODULE_DESCRIPTION("Blackfin generic serial port driver"); MODULE_DESCRIPTION("Blackfin generic serial port driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR);
MODULE_ALIAS("platform:bfin-uart");
...@@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = { ...@@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = {
.resume = serial_imx_resume, .resume = serial_imx_resume,
.driver = { .driver = {
.name = "imx-uart", .name = "imx-uart",
.owner = THIS_MODULE,
}, },
}; };
...@@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit); ...@@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit);
MODULE_AUTHOR("Sascha Hauer"); MODULE_AUTHOR("Sascha Hauer");
MODULE_DESCRIPTION("IMX generic serial port driver"); MODULE_DESCRIPTION("IMX generic serial port driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:imx-uart");
...@@ -649,5 +649,6 @@ module_exit(mcf_exit); ...@@ -649,5 +649,6 @@ module_exit(mcf_exit);
MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>");
MODULE_DESCRIPTION("Freescale ColdFire UART driver"); MODULE_DESCRIPTION("Freescale ColdFire UART driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:mcfuart");
/****************************************************************************/ /****************************************************************************/
...@@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev) ...@@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev)
} }
#endif #endif
/* work with hotplug and coldplug */
MODULE_ALIAS("platform:mpc52xx-psc");
static struct platform_driver mpc52xx_uart_platform_driver = { static struct platform_driver mpc52xx_uart_platform_driver = {
.probe = mpc52xx_uart_probe, .probe = mpc52xx_uart_probe,
......
...@@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = { ...@@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = {
.remove = mpsc_drv_remove, .remove = mpsc_drv_remove,
.driver = { .driver = {
.name = MPSC_CTLR_NAME, .name = MPSC_CTLR_NAME,
.owner = THIS_MODULE,
}, },
}; };
...@@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $"); ...@@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $");
MODULE_VERSION(MPSC_VERSION); MODULE_VERSION(MPSC_VERSION);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR);
MODULE_ALIAS("platform:" MPSC_CTLR_NAME);
...@@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = { ...@@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = {
.driver = { .driver = {
.name = DRIVER_NAME, .name = DRIVER_NAME,
.owner = THIS_MODULE,
}, },
}; };
...@@ -745,3 +746,4 @@ module_exit(netx_serial_exit); ...@@ -745,3 +746,4 @@ module_exit(netx_serial_exit);
MODULE_AUTHOR("Sascha Hauer"); MODULE_AUTHOR("Sascha Hauer");
MODULE_DESCRIPTION("NetX serial port driver"); MODULE_DESCRIPTION("NetX serial port driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRIVER_NAME);
...@@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc."); ...@@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc.");
MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR);
MODULE_ALIAS("platform:pnx8xxx-uart");
...@@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = { ...@@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = {
.resume = serial_pxa_resume, .resume = serial_pxa_resume,
.driver = { .driver = {
.name = "pxa2xx-uart", .name = "pxa2xx-uart",
.owner = THIS_MODULE,
}, },
}; };
...@@ -861,4 +862,4 @@ module_init(serial_pxa_init); ...@@ -861,4 +862,4 @@ module_init(serial_pxa_init);
module_exit(serial_pxa_exit); module_exit(serial_pxa_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:pxa2xx-uart");
...@@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole); ...@@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>");
MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver");
MODULE_ALIAS("platform:s3c2400-uart");
MODULE_ALIAS("platform:s3c2410-uart");
MODULE_ALIAS("platform:s3c2412-uart");
MODULE_ALIAS("platform:s3c2440-uart");
...@@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = { ...@@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = {
.resume = sa1100_serial_resume, .resume = sa1100_serial_resume,
.driver = { .driver = {
.name = "sa11x0-uart", .name = "sa11x0-uart",
.owner = THIS_MODULE,
}, },
}; };
...@@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd"); ...@@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd");
MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR);
MODULE_ALIAS("platform:sa11x0-uart");
...@@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = { ...@@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = {
.remove = __devexit_p(sc26xx_driver_remove), .remove = __devexit_p(sc26xx_driver_remove),
.driver = { .driver = {
.name = "SC26xx", .name = "SC26xx",
.owner = THIS_MODULE,
}, },
}; };
...@@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer"); ...@@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer");
MODULE_DESCRIPTION("SC681/SC2692 serial driver"); MODULE_DESCRIPTION("SC681/SC2692 serial driver");
MODULE_VERSION("1.0"); MODULE_VERSION("1.0");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:SC26xx");
...@@ -1552,3 +1552,4 @@ module_init(sci_init); ...@@ -1552,3 +1552,4 @@ module_init(sci_init);
module_exit(sci_exit); module_exit(sci_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:sh-sci");
...@@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev) ...@@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev)
return ulite_release(&pdev->dev); return ulite_release(&pdev->dev);
} }
/* work with hotplug and coldplug */
MODULE_ALIAS("platform:uartlite");
static struct platform_driver ulite_platform_driver = { static struct platform_driver ulite_platform_driver = {
.probe = ulite_probe, .probe = ulite_probe,
.remove = __devexit_p(ulite_remove), .remove = __devexit_p(ulite_remove),
......
...@@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void) ...@@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void)
module_init(vr41xx_siu_init); module_init(vr41xx_siu_init);
module_exit(vr41xx_siu_exit); module_exit(vr41xx_siu_exit);
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:SIU");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment