Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4533b24 authored by David Woodhouse's avatar David Woodhouse Committed by Paul Mackerras
Browse files

[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: default avatarDavid Woodhouse <dwmw2@infradead.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent c4d5e375
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -986,6 +986,31 @@ config SERIAL_PMACZILOG
	  PowerMac machines.
	  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
	bool "Console on PowerMac z85c30 serial port"
	depends on SERIAL_PMACZILOG=y
+15 −5
Original line number Diff line number Diff line
@@ -88,6 +88,16 @@ MODULE_LICENSE("GPL");

#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
@@ -99,9 +109,10 @@ static DEFINE_MUTEX(pmz_irq_mutex);

static struct uart_driver pmz_uart_reg = {
	.owner		=	THIS_MODULE,
	.driver_name	=	"ttyS",
	.dev_name	=	"ttyS",
	.major		=	TTY_MAJOR,
	.driver_name	=	PMACZILOG_NAME,
	.dev_name	=	PMACZILOG_NAME,
	.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 struct console pmz_console = {
	.name	=	"ttyS",
	.name	=	PMACZILOG_NAME,
	.write	=	pmz_console_write,
	.device	=	uart_console_device,
	.setup	=	pmz_console_setup,
@@ -1802,7 +1813,6 @@ static int __init pmz_register(void)
	
	pmz_uart_reg.nr = pmz_ports_count;
	pmz_uart_reg.cons = PMACZILOG_CONSOLE;
	pmz_uart_reg.minor = 64;

	/*
	 * Register this driver with the serial core