Commit e4533b243e5e0c3a26287a902a1ed0f8f5b1cec0

Authored by David Woodhouse
Committed by Paul Mackerras
1 parent c4d5e37547

[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