diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-04-04 10:19:43 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-09-22 00:49:21 -0400 |
commit | e4533b243e5e0c3a26287a902a1ed0f8f5b1cec0 (patch) | |
tree | 806ef6091f0a434c7c95560d6b24bcde113614ef /drivers/serial | |
parent | c4d5e375470862fd741f93bf0686d7ac2f7fdce4 (diff) |
[POWERPC] Optionally use new device number for pmac_zilog
This adds the option for the pmac_zilog driver to use the major/minor
numbers recently allocated specifically for it (/dev/ttyPZn) instead
of the /dev/ttySn numbers. The advantage of doing this is that it
allows the pmac_zilog and 8250 drivers to coexist. The disadvantage
of doing this is that it is a user-visible ABI change and it will
break existing working setups on powermacs, and could be confusing to
users.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers/serial')
-rw-r--r-- | drivers/serial/Kconfig | 25 | ||||
-rw-r--r-- | drivers/serial/pmac_zilog.c | 20 |
2 files changed, 40 insertions, 5 deletions
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 81b52b7cca21..d6ae38e55d01 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -986,6 +986,31 @@ config SERIAL_PMACZILOG | |||
986 | PowerMac machines. | 986 | PowerMac machines. |
987 | Say Y or M if you want to be able to these serial ports. | 987 | Say Y or M if you want to be able to these serial ports. |
988 | 988 | ||
989 | config SERIAL_PMACZILOG_TTYS | ||
990 | bool "Use ttySn device nodes for Zilog z85c30" | ||
991 | depends on SERIAL_PMACZILOG | ||
992 | help | ||
993 | The pmac_zilog driver for the z85C30 chip on many powermacs | ||
994 | historically used the device numbers for /dev/ttySn. The | ||
995 | 8250 serial port driver also uses these numbers, which means | ||
996 | the two drivers being unable to coexist; you could not use | ||
997 | both z85C30 and 8250 type ports at the same time. | ||
998 | |||
999 | If this option is not selected, the pmac_zilog driver will | ||
1000 | use the device numbers allocated for /dev/ttyPZn. This allows | ||
1001 | the pmac_zilog and 8250 drivers to co-exist, but may cause | ||
1002 | existing userspace setups to break. Programs that need to | ||
1003 | access the built-in serial ports on powermacs will need to | ||
1004 | be reconfigured to use /dev/ttyPZn instead of /dev/ttySn. | ||
1005 | |||
1006 | If you enable this option, any z85c30 ports in the system will | ||
1007 | be registered as ttyS0 onwards as in the past, and you will be | ||
1008 | unable to use the 8250 module for PCMCIA or other 16C550-style | ||
1009 | UARTs. | ||
1010 | |||
1011 | Say N unless you need the z85c30 ports on your powermac | ||
1012 | to appear as /dev/ttySn. | ||
1013 | |||
989 | config SERIAL_PMACZILOG_CONSOLE | 1014 | config SERIAL_PMACZILOG_CONSOLE |
990 | bool "Console on PowerMac z85c30 serial port" | 1015 | bool "Console on PowerMac z85c30 serial port" |
991 | depends on SERIAL_PMACZILOG=y | 1016 | depends on SERIAL_PMACZILOG=y |
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c index f793ac212672..794bd0f50d73 100644 --- a/drivers/serial/pmac_zilog.c +++ b/drivers/serial/pmac_zilog.c | |||
@@ -88,6 +88,16 @@ MODULE_LICENSE("GPL"); | |||
88 | 88 | ||
89 | #define PWRDBG(fmt, arg...) printk(KERN_DEBUG fmt , ## arg) | 89 | #define PWRDBG(fmt, arg...) printk(KERN_DEBUG fmt , ## arg) |
90 | 90 | ||
91 | #ifdef CONFIG_SERIAL_PMACZILOG_TTYS | ||
92 | #define PMACZILOG_MAJOR TTY_MAJOR | ||
93 | #define PMACZILOG_MINOR 64 | ||
94 | #define PMACZILOG_NAME "ttyS" | ||
95 | #else | ||
96 | #define PMACZILOG_MAJOR 204 | ||
97 | #define PMACZILOG_MINOR 192 | ||
98 | #define PMACZILOG_NAME "ttyPZ" | ||
99 | #endif | ||
100 | |||
91 | 101 | ||
92 | /* | 102 | /* |
93 | * For the sake of early serial console, we can do a pre-probe | 103 | * For the sake of early serial console, we can do a pre-probe |
@@ -99,9 +109,10 @@ static DEFINE_MUTEX(pmz_irq_mutex); | |||
99 | 109 | ||
100 | static struct uart_driver pmz_uart_reg = { | 110 | static struct uart_driver pmz_uart_reg = { |
101 | .owner = THIS_MODULE, | 111 | .owner = THIS_MODULE, |
102 | .driver_name = "ttyS", | 112 | .driver_name = PMACZILOG_NAME, |
103 | .dev_name = "ttyS", | 113 | .dev_name = PMACZILOG_NAME, |
104 | .major = TTY_MAJOR, | 114 | .major = PMACZILOG_MAJOR, |
115 | .minor = PMACZILOG_MINOR, | ||
105 | }; | 116 | }; |
106 | 117 | ||
107 | 118 | ||
@@ -1778,7 +1789,7 @@ static void pmz_console_write(struct console *con, const char *s, unsigned int c | |||
1778 | static int __init pmz_console_setup(struct console *co, char *options); | 1789 | static int __init pmz_console_setup(struct console *co, char *options); |
1779 | 1790 | ||
1780 | static struct console pmz_console = { | 1791 | static struct console pmz_console = { |
1781 | .name = "ttyS", | 1792 | .name = PMACZILOG_NAME, |
1782 | .write = pmz_console_write, | 1793 | .write = pmz_console_write, |
1783 | .device = uart_console_device, | 1794 | .device = uart_console_device, |
1784 | .setup = pmz_console_setup, | 1795 | .setup = pmz_console_setup, |
@@ -1802,7 +1813,6 @@ static int __init pmz_register(void) | |||
1802 | 1813 | ||
1803 | pmz_uart_reg.nr = pmz_ports_count; | 1814 | pmz_uart_reg.nr = pmz_ports_count; |
1804 | pmz_uart_reg.cons = PMACZILOG_CONSOLE; | 1815 | pmz_uart_reg.cons = PMACZILOG_CONSOLE; |
1805 | pmz_uart_reg.minor = 64; | ||
1806 | 1816 | ||
1807 | /* | 1817 | /* |
1808 | * Register this driver with the serial core | 1818 | * Register this driver with the serial core |