linux/arch/mips/sgi-ip22/ip22-setup.c
<<
>>
Prefs
   1/*
   2 * ip22-setup.c: SGI specific setup, including init of the feature struct.
   3 *
   4 * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
   5 * Copyright (C) 1997, 1998 Ralf Baechle (ralf@gnu.org)
   6 */
   7#include <linux/init.h>
   8#include <linux/kernel.h>
   9#include <linux/kdev_t.h>
  10#include <linux/types.h>
  11#include <linux/console.h>
  12#include <linux/sched.h>
  13#include <linux/tty.h>
  14
  15#include <asm/addrspace.h>
  16#include <asm/bcache.h>
  17#include <asm/bootinfo.h>
  18#include <asm/irq.h>
  19#include <asm/reboot.h>
  20#include <asm/time.h>
  21#include <asm/io.h>
  22#include <asm/traps.h>
  23#include <asm/sgialib.h>
  24#include <asm/sgi/mc.h>
  25#include <asm/sgi/hpc3.h>
  26#include <asm/sgi/ip22.h>
  27
  28extern void ip22_be_init(void) __init;
  29
  30void __init plat_mem_setup(void)
  31{
  32        char *ctype;
  33        char *cserial;
  34
  35        board_be_init = ip22_be_init;
  36
  37        /* Init the INDY HPC I/O controller.  Need to call this before
  38         * fucking with the memory controller because it needs to know the
  39         * boardID and whether this is a Guiness or a FullHouse machine.
  40         */
  41        sgihpc_init();
  42
  43        /* Init INDY memory controller. */
  44        sgimc_init();
  45
  46#ifdef CONFIG_BOARD_SCACHE
  47        /* Now enable boardcaches, if any. */
  48        indy_sc_init();
  49#endif
  50
  51        /* Set EISA IO port base for Indigo2
  52         * ioremap cannot fail */
  53        set_io_port_base((unsigned long)ioremap(0x00080000,
  54                                                0x1fffffff - 0x00080000));
  55        /* ARCS console environment variable is set to "g?" for
  56         * graphics console, it is set to "d" for the first serial
  57         * line and "d2" for the second serial line.
  58         *
  59         * Need to check if the case is 'g' but no keyboard:
  60         * (ConsoleIn/Out = serial)
  61         */
  62        ctype = ArcGetEnvironmentVariable("console");
  63        cserial = ArcGetEnvironmentVariable("ConsoleOut");
  64
  65        if ((ctype && *ctype == 'd') || (cserial && *cserial == 's')) {
  66                static char options[8] __initdata;
  67                char *baud = ArcGetEnvironmentVariable("dbaud");
  68                if (baud)
  69                        strcpy(options, baud);
  70                add_preferred_console("ttyS", *(ctype + 1) == '2' ? 1 : 0,
  71                                      baud ? options : NULL);
  72        } else if (!ctype || *ctype != 'g') {
  73                /* Use ARC if we don't want serial ('d') or graphics ('g'). */
  74                prom_flags |= PROM_FLAG_USE_AS_CONSOLE;
  75                add_preferred_console("arc", 0, NULL);
  76        }
  77}
  78