diff options
| -rw-r--r-- | drivers/tty/serial/samsung.c | 40 |
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 */ | 1833 | module_platform_driver(samsung_serial_driver); |
| 1824 | |||
| 1825 | static 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 | |||
| 1844 | static void __exit s3c24xx_serial_modexit(void) | ||
| 1845 | { | ||
| 1846 | platform_driver_unregister(&samsung_serial_driver); | ||
| 1847 | uart_unregister_driver(&s3c24xx_uart_drv); | ||
| 1848 | } | ||
| 1849 | |||
| 1850 | module_init(s3c24xx_serial_modinit); | ||
| 1851 | module_exit(s3c24xx_serial_modexit); | ||
| 1852 | 1834 | ||
| 1853 | MODULE_ALIAS("platform:samsung-uart"); | 1835 | MODULE_ALIAS("platform:samsung-uart"); |
| 1854 | MODULE_DESCRIPTION("Samsung SoC Serial port driver"); | 1836 | MODULE_DESCRIPTION("Samsung SoC Serial port driver"); |
