aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/tty/serial/samsung.c40
1 files changed, 11 insertions, 29 deletions
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
index 9cd706df3b33..23f459600738 100644
--- a/drivers/tty/serial/samsung.c
+++ b/drivers/tty/serial/samsung.c
@@ -1282,6 +1282,14 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
1282 if (ret < 0) 1282 if (ret < 0)
1283 goto probe_err; 1283 goto probe_err;
1284 1284
1285 if (!s3c24xx_uart_drv.state) {
1286 ret = uart_register_driver(&s3c24xx_uart_drv);
1287 if (ret < 0) {
1288 pr_err("Failed to register Samsung UART driver\n");
1289 return ret;
1290 }
1291 }
1292
1285 dbg("%s: adding port\n", __func__); 1293 dbg("%s: adding port\n", __func__);
1286 uart_add_one_port(&s3c24xx_uart_drv, &ourport->port); 1294 uart_add_one_port(&s3c24xx_uart_drv, &ourport->port);
1287 platform_set_drvdata(pdev, &ourport->port); 1295 platform_set_drvdata(pdev, &ourport->port);
@@ -1321,6 +1329,8 @@ static int s3c24xx_serial_remove(struct platform_device *dev)
1321 uart_remove_one_port(&s3c24xx_uart_drv, port); 1329 uart_remove_one_port(&s3c24xx_uart_drv, port);
1322 } 1330 }
1323 1331
1332 uart_unregister_driver(&s3c24xx_uart_drv);
1333
1324 return 0; 1334 return 0;
1325} 1335}
1326 1336
@@ -1820,35 +1830,7 @@ static struct platform_driver samsung_serial_driver = {
1820 }, 1830 },
1821}; 1831};
1822 1832
1823/* module initialisation code */ 1833module_platform_driver(samsung_serial_driver);
1824
1825static int __init s3c24xx_serial_modinit(void)
1826{
1827 int ret;
1828
1829 ret = uart_register_driver(&s3c24xx_uart_drv);
1830 if (ret < 0) {
1831 pr_err("Failed to register Samsung UART driver\n");
1832 return ret;
1833 }
1834
1835 ret = platform_driver_register(&samsung_serial_driver);
1836 if (ret < 0) {
1837 pr_err("Failed to register platform driver\n");
1838 uart_unregister_driver(&s3c24xx_uart_drv);
1839 }
1840
1841 return ret;
1842}
1843
1844static void __exit s3c24xx_serial_modexit(void)
1845{
1846 platform_driver_unregister(&samsung_serial_driver);
1847 uart_unregister_driver(&s3c24xx_uart_drv);
1848}
1849
1850module_init(s3c24xx_serial_modinit);
1851module_exit(s3c24xx_serial_modexit);
1852 1834
1853MODULE_ALIAS("platform:samsung-uart"); 1835MODULE_ALIAS("platform:samsung-uart");
1854MODULE_DESCRIPTION("Samsung SoC Serial port driver"); 1836MODULE_DESCRIPTION("Samsung SoC Serial port driver");