Commit e4533b243e5e0c3a26287a902a1ed0f8f5b1cec0
Committed by
Paul Mackerras
1 parent
c4d5e37547
Exists in
master
and in
7 other branches
[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>
Showing 2 changed files with 40 additions and 5 deletions Side-by-side Diff
drivers/serial/Kconfig
... | ... | @@ -986,6 +986,31 @@ |
986 | 986 | PowerMac machines. |
987 | 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 | 1014 | config SERIAL_PMACZILOG_CONSOLE |
990 | 1015 | bool "Console on PowerMac z85c30 serial port" |
991 | 1016 | depends on SERIAL_PMACZILOG=y |
drivers/serial/pmac_zilog.c
... | ... | @@ -88,7 +88,17 @@ |
88 | 88 | |
89 | 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 | |
91 | 100 | |
101 | + | |
92 | 102 | /* |
93 | 103 | * For the sake of early serial console, we can do a pre-probe |
94 | 104 | * (optional) of the ports at rather early boot time. |
... | ... | @@ -99,9 +109,10 @@ |
99 | 109 | |
100 | 110 | static struct uart_driver pmz_uart_reg = { |
101 | 111 | .owner = THIS_MODULE, |
102 | - .driver_name = "ttyS", | |
103 | - .dev_name = "ttyS", | |
104 | - .major = TTY_MAJOR, | |
112 | + .driver_name = PMACZILOG_NAME, | |
113 | + .dev_name = PMACZILOG_NAME, | |
114 | + .major = PMACZILOG_MAJOR, | |
115 | + .minor = PMACZILOG_MINOR, | |
105 | 116 | }; |
106 | 117 | |
107 | 118 | |
... | ... | @@ -1778,7 +1789,7 @@ |
1778 | 1789 | static int __init pmz_console_setup(struct console *co, char *options); |
1779 | 1790 | |
1780 | 1791 | static struct console pmz_console = { |
1781 | - .name = "ttyS", | |
1792 | + .name = PMACZILOG_NAME, | |
1782 | 1793 | .write = pmz_console_write, |
1783 | 1794 | .device = uart_console_device, |
1784 | 1795 | .setup = pmz_console_setup, |
... | ... | @@ -1802,7 +1813,6 @@ |
1802 | 1813 | |
1803 | 1814 | pmz_uart_reg.nr = pmz_ports_count; |
1804 | 1815 | pmz_uart_reg.cons = PMACZILOG_CONSOLE; |
1805 | - pmz_uart_reg.minor = 64; | |
1806 | 1816 | |
1807 | 1817 | /* |
1808 | 1818 | * Register this driver with the serial core |