serial: fix platform driver hotplug/coldplug
Subsystems (4)
PATCH 1/1 serial: fix platform driver hotplug/coldplug
From: Kay Sievers <[email protected]>
Since 43cc71eed1250755986da4c0f9898f9a635cb3bf, 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...
--- drivers/serial/atmel_serial.c | 1 + drivers/serial/bfin_5xx.c | 2 ++ drivers/serial/imx.c | 2 ++ drivers/serial/mcf.c | 1 + drivers/serial/mpc52xx_uart.c | 2 ++ drivers/serial/mpsc.c | 2 ++ drivers/serial/netx-serial.c | 2 ++ drivers/serial/pnx8xxx_uart.c | 1 + drivers/serial/pxa.c | 3 ++- drivers/serial/s3c2410.c | 4 ++++ drivers/serial/sa1100.c | 2 ++ drivers/serial/sc26xx.c | 2 ++ drivers/serial/sh-sci.c | 1 + drivers/serial/uartlite.c | 3 +++ drivers/serial/vr41xx_siu.c | 3 +++ 15 files changed, 30 insertions(+), 1 deletion(-)
drivers/serial/atmel_serial.c +1 -0
@@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit);MODULE_AUTHOR ("Rick Bronson" );MODULE_DESCRIPTION ("Atmel AT91 / AT32 serial port driver" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:atmel_usart" );
drivers/serial/bfin_5xx.c +2 -0
@@ -1243,6 +1243,7 @@ static struct platform_driver bfin_seria .resume = bfin_serial_resume, .driver = { .name = "bfin-uart", + .owner = THIS_MODULE, }, };
@@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analMODULE_DESCRIPTION ("Blackfin generic serial port driver" );MODULE_LICENSE ("GPL" );MODULE_ALIAS_CHARDEV_MAJOR (BFIN_SERIAL_MAJOR ); +MODULE_ALIAS ("platform:bfin-uart" );
drivers/serial/imx.c +2 -0
@@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx .resume = serial_imx_resume, .driver = { .name = "imx-uart", + .owner = THIS_MODULE, }, };
@@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit);MODULE_AUTHOR ("Sascha Hauer" );MODULE_DESCRIPTION ("IMX generic serial port driver" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:imx-uart" );
drivers/serial/mcf.c +1 -0
@@ -649,5 +649,6 @@ module_exit(mcf_exit);MODULE_AUTHOR ("Greg Ungerer <[email protected]>" );MODULE_DESCRIPTION ("Freescale ColdFire UART driver" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:mcfuart" );/****************************************************************************/
drivers/serial/mpc52xx_uart.c +2 -0
@@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_devi }#endif +/* work with hotplug and coldplug */ +MODULE_ALIAS ("platform:mpc52xx-psc" );static struct platform_driver mpc52xx_uart_platform_driver = { .probe = mpc52xx_uart_probe,
drivers/serial/mpsc.c +2 -0
@@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_drive .remove = mpsc_drv_remove, .driver = { .name = MPSC_CTLR_NAME, + .owner = THIS_MODULE, }, };
@@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSCMODULE_VERSION (MPSC_VERSION );MODULE_LICENSE ("GPL" );MODULE_ALIAS_CHARDEV_MAJOR (MPSC_MAJOR ); +MODULE_ALIAS ("platform:" MPSC_CTLR_NAME );
drivers/serial/netx-serial.c +2 -0
@@ -713,6 +713,7 @@ static struct platform_driver serial_net .driver = { .name = DRIVER_NAME, + .owner = THIS_MODULE, }, };
@@ -745,3 +746,4 @@ module_exit(netx_serial_exit);MODULE_AUTHOR ("Sascha Hauer" );MODULE_DESCRIPTION ("NetX serial port driver" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:" DRIVER_NAME );
drivers/serial/pnx8xxx_uart.c +1 -0
@@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions,MODULE_DESCRIPTION ("PNX8XXX SoCs serial port driver" );MODULE_LICENSE ("GPL" );MODULE_ALIAS_CHARDEV_MAJOR (SERIAL_PNX8XXX_MAJOR ); +MODULE_ALIAS ("platform:pnx8xxx-uart" );
drivers/serial/pxa.c +2 -1
@@ -833,6 +833,7 @@ static struct platform_driver serial_pxa .resume = serial_pxa_resume, .driver = { .name = "pxa2xx-uart", + .owner = THIS_MODULE, }, };
@@ -861,4 +862,4 @@ module_init(serial_pxa_init);module_exit (serial_pxa_exit);MODULE_LICENSE ("GPL" ); - +MODULE_ALIAS ("platform:pxa2xx-uart" );
drivers/serial/s3c2410.c +4 -0
@@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsMODULE_LICENSE ("GPL" );MODULE_AUTHOR ("Ben Dooks <[email protected]>" );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" );
drivers/serial/sa1100.c +2 -0
@@ -884,6 +884,7 @@ static struct platform_driver sa11x0_ser .resume = sa1100_serial_resume, .driver = { .name = "sa11x0-uart", + .owner = THIS_MODULE, }, };
@@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd")MODULE_DESCRIPTION ("SA1100 generic serial port driver $Revision: 1.50 $" );MODULE_LICENSE ("GPL" );MODULE_ALIAS_CHARDEV_MAJOR (SERIAL_SA1100_MAJOR ); +MODULE_ALIAS ("platform:sa11x0-uart" );
drivers/serial/sc26xx.c +2 -0
@@ -732,6 +732,7 @@ static struct platform_driver sc26xx_dri .remove = __devexit_p(sc26xx_driver_remove), .driver = { .name = "SC26xx", + .owner = THIS_MODULE, }, };
@@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer");MODULE_DESCRIPTION ("SC681/SC2692 serial driver" );MODULE_VERSION ("1.0" );MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:SC26xx" );
drivers/serial/sh-sci.c +1 -0
@@ -1552,3 +1552,4 @@ module_init(sci_init);module_exit (sci_exit);MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:sh-sci" );
drivers/serial/uartlite.c +3 -0
@@ -561,6 +561,9 @@ static int __devexit ulite_remove(structreturn ulite_release (&pdev->dev); } +/* work with hotplug and coldplug */ +MODULE_ALIAS ("platform:uartlite" ); +static struct platform_driver ulite_platform_driver = { .probe = ulite_probe, .remove =__devexit_p (ulite_remove),
drivers/serial/vr41xx_siu.c +3 -0
@@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void)module_init (vr41xx_siu_init);module_exit (vr41xx_siu_exit); + +MODULE_LICENSE ("GPL" ); +MODULE_ALIAS ("platform:SIU" );
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"David" == David Brownell <[email protected]> writes:
Hi,
David> MODULE_LICENSE("GPL");
David> +MODULE_ALIAS("platform:sh-sci");
David> --- g26.orig/drivers/serial/uartlite.c 2008-04-13 10:48:05.000000000 -0700
David> +++ g26/drivers/serial/uartlite.c 2008-04-13 10:59:04.000000000 -0700
David> @@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct
David> return ulite_release(&pdev->dev);
David> }
David> +/* work with hotplug and coldplug */
David> +MODULE_ALIAS("platform:uartlite");
David> +
Why not stick this next to the other MODULE_ lines, like the other drivers?
Other than that ..
Signature · 1 line
Bye, Peter Korsgaard
Quoted 6 lines · Peter Korsgaard
David> +/* work with hotplug and coldplug */
David> +MODULE_ALIAS("platform:uartlite");
David> +Why not stick this next to the other
MODULE_lines, like the other drivers?
Conceptually that's part of the driver struct ... it's not metadata like who wrote it, its version, and so on. So I prefer to keep it with that driver.
For example if the driver name changes that alias must change too. And when the platform bus glue gets configured out -- with PPC_MERGE, where OpenFirmware bus glue aranges for any hotplug and coldplug suppoort, or in some other cases -- that alias must be made to vanish.
So when I fix omissions in Kay's original patch, or otherwise write the code myself, that's how I do it.
- Dave
Quoted 7 lines
Other than that ..
Acked-by Peter Korsgaard <[email protected]>Signature · 1 line
Bye, Peter Korsgaard
Peter Korsgaard
Acked-byQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"David" == David Brownell <[email protected]> writes:
Hi,
David> So when I fix omissions in Kay's original patch, or otherwise David> write the code myself, that's how I do it.
Ok.
Signature · 1 line
Bye, Peter Korsgaard