[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>
This commit is contained in:
parent
c4d5e37547
commit
e4533b243e
2 changed files with 40 additions and 5 deletions
|
@ -986,6 +986,31 @@ config SERIAL_PMACZILOG
|
||||||
PowerMac machines.
|
PowerMac machines.
|
||||||
Say Y or M if you want to be able to these serial ports.
|
Say Y or M if you want to be able to these serial ports.
|
||||||
|
|
||||||
|
config SERIAL_PMACZILOG_TTYS
|
||||||
|
bool "Use ttySn device nodes for Zilog z85c30"
|
||||||
|
depends on SERIAL_PMACZILOG
|
||||||
|
help
|
||||||
|
The pmac_zilog driver for the z85C30 chip on many powermacs
|
||||||
|
historically used the device numbers for /dev/ttySn. The
|
||||||
|
8250 serial port driver also uses these numbers, which means
|
||||||
|
the two drivers being unable to coexist; you could not use
|
||||||
|
both z85C30 and 8250 type ports at the same time.
|
||||||
|
|
||||||
|
If this option is not selected, the pmac_zilog driver will
|
||||||
|
use the device numbers allocated for /dev/ttyPZn. This allows
|
||||||
|
the pmac_zilog and 8250 drivers to co-exist, but may cause
|
||||||
|
existing userspace setups to break. Programs that need to
|
||||||
|
access the built-in serial ports on powermacs will need to
|
||||||
|
be reconfigured to use /dev/ttyPZn instead of /dev/ttySn.
|
||||||
|
|
||||||
|
If you enable this option, any z85c30 ports in the system will
|
||||||
|
be registered as ttyS0 onwards as in the past, and you will be
|
||||||
|
unable to use the 8250 module for PCMCIA or other 16C550-style
|
||||||
|
UARTs.
|
||||||
|
|
||||||
|
Say N unless you need the z85c30 ports on your powermac
|
||||||
|
to appear as /dev/ttySn.
|
||||||
|
|
||||||
config SERIAL_PMACZILOG_CONSOLE
|
config SERIAL_PMACZILOG_CONSOLE
|
||||||
bool "Console on PowerMac z85c30 serial port"
|
bool "Console on PowerMac z85c30 serial port"
|
||||||
depends on SERIAL_PMACZILOG=y
|
depends on SERIAL_PMACZILOG=y
|
||||||
|
|
|
@ -88,6 +88,16 @@ MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
#define PWRDBG(fmt, arg...) printk(KERN_DEBUG fmt , ## arg)
|
#define PWRDBG(fmt, arg...) printk(KERN_DEBUG fmt , ## arg)
|
||||||
|
|
||||||
|
#ifdef CONFIG_SERIAL_PMACZILOG_TTYS
|
||||||
|
#define PMACZILOG_MAJOR TTY_MAJOR
|
||||||
|
#define PMACZILOG_MINOR 64
|
||||||
|
#define PMACZILOG_NAME "ttyS"
|
||||||
|
#else
|
||||||
|
#define PMACZILOG_MAJOR 204
|
||||||
|
#define PMACZILOG_MINOR 192
|
||||||
|
#define PMACZILOG_NAME "ttyPZ"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For the sake of early serial console, we can do a pre-probe
|
* For the sake of early serial console, we can do a pre-probe
|
||||||
|
@ -99,9 +109,10 @@ static DEFINE_MUTEX(pmz_irq_mutex);
|
||||||
|
|
||||||
static struct uart_driver pmz_uart_reg = {
|
static struct uart_driver pmz_uart_reg = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.driver_name = "ttyS",
|
.driver_name = PMACZILOG_NAME,
|
||||||
.dev_name = "ttyS",
|
.dev_name = PMACZILOG_NAME,
|
||||||
.major = TTY_MAJOR,
|
.major = PMACZILOG_MAJOR,
|
||||||
|
.minor = PMACZILOG_MINOR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1778,7 +1789,7 @@ static void pmz_console_write(struct console *con, const char *s, unsigned int c
|
||||||
static int __init pmz_console_setup(struct console *co, char *options);
|
static int __init pmz_console_setup(struct console *co, char *options);
|
||||||
|
|
||||||
static struct console pmz_console = {
|
static struct console pmz_console = {
|
||||||
.name = "ttyS",
|
.name = PMACZILOG_NAME,
|
||||||
.write = pmz_console_write,
|
.write = pmz_console_write,
|
||||||
.device = uart_console_device,
|
.device = uart_console_device,
|
||||||
.setup = pmz_console_setup,
|
.setup = pmz_console_setup,
|
||||||
|
@ -1802,7 +1813,6 @@ static int __init pmz_register(void)
|
||||||
|
|
||||||
pmz_uart_reg.nr = pmz_ports_count;
|
pmz_uart_reg.nr = pmz_ports_count;
|
||||||
pmz_uart_reg.cons = PMACZILOG_CONSOLE;
|
pmz_uart_reg.cons = PMACZILOG_CONSOLE;
|
||||||
pmz_uart_reg.minor = 64;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Register this driver with the serial core
|
* Register this driver with the serial core
|
||||||
|
|
Loading…
Add table
Reference in a new issue