Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/sgimips/sgimips Refactor consinit() for readability...



details:   https://anonhg.NetBSD.org/src/rev/31c99be3423a
branches:  trunk
changeset: 567330:31c99be3423a
user:      rumble <rumble%NetBSD.org@localhost>
date:      Wed Jun 09 23:01:01 2004 +0000

description:
Refactor consinit() for readability by pulling out mach_type
specific code into their own functions. No functional change is
intended.

ok'd by pooka and sekiya

diffstat:

 sys/arch/sgimips/sgimips/console.c |  138 ++++++++++++++++++++++--------------
 1 files changed, 85 insertions(+), 53 deletions(-)

diffs (184 lines):

diff -r 770c9edbc135 -r 31c99be3423a sys/arch/sgimips/sgimips/console.c
--- a/sys/arch/sgimips/sgimips/console.c        Wed Jun 09 22:45:24 2004 +0000
+++ b/sys/arch/sgimips/sgimips/console.c        Wed Jun 09 23:01:01 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: console.c,v 1.26 2004/04/10 21:47:33 pooka Exp $       */
+/*     $NetBSD: console.c,v 1.27 2004/06/09 23:01:01 rumble Exp $      */
 
 /*
  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: console.c,v 1.26 2004/04/10 21:47:33 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: console.c,v 1.27 2004/06/09 23:01:01 rumble Exp $");
 
 #include "opt_kgdb.h"
 
@@ -64,75 +64,41 @@
 
 extern struct consdev zs_cn;
 
-void zs_kgdb_init(void);
-void kgdb_port_init(void);
+extern void    zs_kgdb_init(void);
+
+void           kgdb_port_init(void);
+static int     zs_serial_init(char *);
+static int     gio_video_init(char *);
+static int     mace_serial_init(char *);
 
 void
 consinit()
 {
-       char* consdev;
-       char* dbaud;
-       int   speed;
-
+       char *consdev;
+       
        /* Ask ARCS what it is using for console output. */
        consdev = ARCBIOS->GetEnvironmentVariable("ConsoleOut");
+
        if (consdev == NULL) {
                printf("WARNING: ConsoleOut environment variable not set\n");
                return;
        }
 
-       /* Get comm speed from ARCS */
-       dbaud = ARCBIOS->GetEnvironmentVariable("dbaud");
-       speed = strtoul(dbaud, NULL, 10);
-
        switch (mach_type) {
-       case MACH_SGI_IP22:
-#if (NGIO > 0) && (NPCKBC > 0) 
-               if (strcmp(consdev, "video()") == 0) {
-                       /*
-                        * XXX Assumes that if output is video()
-                        * input must be keyboard().
-                        */
-                       gio_cnattach();
-
-                       /* XXX Hardcoded iotag, HPC address XXX */
-                       pckbc_cnattach(1,
-                           0x1fb80000+HPC_PBUS_CH6_DEVREGS+IOC_KB_REGS,
-                           KBCMDP, PCKBC_KBD_SLOT);
-
-                       return;
-               }
-#endif
        case MACH_SGI_IP12:
        case MACH_SGI_IP20:
-#if (NZSC > 0)
-               if ((strlen(consdev) == 9) &&
-                   (!strncmp(consdev, "serial", 6)) &&
-                   (consdev[7] == '0' || consdev[7] == '1')) {
-                       cn_tab = &zs_cn;
-                       (*cn_tab->cn_init)(cn_tab);
-                       
+               if (zs_serial_init(consdev))
                        return;
-               }
-#endif
+               break;
+
+       case MACH_SGI_IP22:
+               if (gio_video_init(consdev) || zs_serial_init(consdev))
+                       return;
                break;
 
        case MACH_SGI_IP32:
-#if (NCOM > 0)
-               if ((strlen(consdev) == 9) &&
-                   (!strncmp(consdev, "serial", 6)) &&
-                   (consdev[7] == '0' || consdev[7] == '1')) {
-                       delay(10000);
-                       /* XXX: hardcoded MACE iotag */
-                       if (comcnattach(3,
-                           MIPS_PHYS_TO_KSEG1(MACE_BASE +
-                           ((consdev[7] == '0') ?
-                           MACE_ISA_SER1_BASE:MACE_ISA_SER2_BASE)),
-                           speed, COM_FREQ, COM_TYPE_NORMAL,
-                           comcnmode) == 0)
-                               return;
-               }
-#endif
+               if (mace_serial_init(consdev))
+                       return;
                panic("ip32 supports serial console only.  sorry.");
                break;
 
@@ -144,6 +110,72 @@
        printf("Using ARCS for console I/O.\n");
 }
 
+static int
+zs_serial_init(char *consdev)
+{
+#if (NZSC > 0)
+       if ((strlen(consdev) == 9) && (!strncmp(consdev, "serial", 6)) &&
+           (consdev[7] == '0' || consdev[7] == '1')) {
+               cn_tab = &zs_cn;
+               (*cn_tab->cn_init)(cn_tab);
+                       
+               return (1);
+       }
+#endif
+       
+       return (0);
+}
+
+static int
+gio_video_init(char *consdev)
+{
+#if (NGIO > 0) && (NPCKBC > 0) 
+       if (strcmp(consdev, "video()") == 0) {
+               /*
+                * XXX Assumes that if output is video()
+                * input must be keyboard().
+                */
+               gio_cnattach();
+
+               /* XXX Hardcoded iotag, HPC address XXX */
+               pckbc_cnattach(1, 0x1fb80000+HPC_PBUS_CH6_DEVREGS+IOC_KB_REGS,
+                   KBCMDP, PCKBC_KBD_SLOT);
+
+               return (1);
+       }
+#endif
+
+       return (0);
+}
+
+static int
+mace_serial_init(char *consdev)
+{
+#if (NCOM > 0)
+       char     *dbaud;
+       int       speed;
+       u_int32_t base;
+
+       if ((strlen(consdev) == 9) && (!strncmp(consdev, "serial", 6)) &&
+           (consdev[7] == '0' || consdev[7] == '1')) {
+               /* Get comm speed from ARCS */
+               dbaud = ARCBIOS->GetEnvironmentVariable("dbaud");
+               speed = strtoul(dbaud, NULL, 10);
+               base = (consdev[7] == '0') ? MACE_ISA_SER1_BASE :
+                   MACE_ISA_SER2_BASE;
+
+               delay(10000);
+
+               /* XXX: hardcoded MACE iotag */
+               if (comcnattach(3, MIPS_PHYS_TO_KSEG1(MACE_BASE + base),
+                   speed, COM_FREQ, COM_TYPE_NORMAL, comcnmode) == 0)
+                       return (1);
+       }
+#endif
+
+       return (0);
+}
+
 #if defined(KGDB)
 void
 kgdb_port_init()



Home | Main Index | Thread Index | Old Index