aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/8250.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial/8250.c')
-rw-r--r--drivers/serial/8250.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index ed593c4b6e7d..db2cdc103c88 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -44,6 +44,10 @@
44 44
45#include "8250.h" 45#include "8250.h"
46 46
47#ifdef CONFIG_SPARC
48#include "suncore.h"
49#endif
50
47/* 51/*
48 * Configuration: 52 * Configuration:
49 * share_irqs - whether we pass IRQF_SHARED to request_irq(). This option 53 * share_irqs - whether we pass IRQF_SHARED to request_irq(). This option
@@ -2676,7 +2680,6 @@ static struct uart_driver serial8250_reg = {
2676 .dev_name = "ttyS", 2680 .dev_name = "ttyS",
2677 .major = TTY_MAJOR, 2681 .major = TTY_MAJOR,
2678 .minor = 64, 2682 .minor = 64,
2679 .nr = UART_NR,
2680 .cons = SERIAL8250_CONSOLE, 2683 .cons = SERIAL8250_CONSOLE,
2681}; 2684};
2682 2685
@@ -2958,10 +2961,12 @@ static int __init serial8250_init(void)
2958 "%d ports, IRQ sharing %sabled\n", nr_uarts, 2961 "%d ports, IRQ sharing %sabled\n", nr_uarts,
2959 share_irqs ? "en" : "dis"); 2962 share_irqs ? "en" : "dis");
2960 2963
2961 for (i = 0; i < NR_IRQS; i++) 2964#ifdef CONFIG_SPARC
2962 spin_lock_init(&irq_lists[i].lock); 2965 ret = sunserial_register_minors(&serial8250_reg, UART_NR);
2963 2966#else
2967 serial8250_reg.nr = UART_NR;
2964 ret = uart_register_driver(&serial8250_reg); 2968 ret = uart_register_driver(&serial8250_reg);
2969#endif
2965 if (ret) 2970 if (ret)
2966 goto out; 2971 goto out;
2967 2972
@@ -2986,7 +2991,11 @@ static int __init serial8250_init(void)
2986 put_dev: 2991 put_dev:
2987 platform_device_put(serial8250_isa_devs); 2992 platform_device_put(serial8250_isa_devs);
2988 unreg_uart_drv: 2993 unreg_uart_drv:
2994#ifdef CONFIG_SPARC
2995 sunserial_unregister_minors(&serial8250_reg, UART_NR);
2996#else
2989 uart_unregister_driver(&serial8250_reg); 2997 uart_unregister_driver(&serial8250_reg);
2998#endif
2990 out: 2999 out:
2991 return ret; 3000 return ret;
2992} 3001}
@@ -3005,7 +3014,11 @@ static void __exit serial8250_exit(void)
3005 platform_driver_unregister(&serial8250_isa_driver); 3014 platform_driver_unregister(&serial8250_isa_driver);
3006 platform_device_unregister(isa_dev); 3015 platform_device_unregister(isa_dev);
3007 3016
3017#ifdef CONFIG_SPARC
3018 sunserial_unregister_minors(&serial8250_reg, UART_NR);
3019#else
3008 uart_unregister_driver(&serial8250_reg); 3020 uart_unregister_driver(&serial8250_reg);
3021#endif
3009} 3022}
3010 3023
3011module_init(serial8250_init); 3024module_init(serial8250_init);