Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e4533b243e5e0c3a26287a902a1ed0f8f5b1cec0
Commit:     e4533b243e5e0c3a26287a902a1ed0f8f5b1cec0
Parent:     c4d5e375470862fd741f93bf0686d7ac2f7fdce4
Author:     David Woodhouse <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 5 00:19:43 2007 +1000
Committer:  Paul Mackerras <[EMAIL PROTECTED]>
CommitDate: Sat Sep 22 14:49:21 2007 +1000

    [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 <[EMAIL PROTECTED]>
    Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>
---
 drivers/serial/Kconfig      |   25 +++++++++++++++++++++++++
 drivers/serial/pmac_zilog.c |   20 +++++++++++++++-----
 2 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 81b52b7..d6ae38e 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -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
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index f793ac2..794bd0f 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -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
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to