[BACK]Return to mainbus.c CVS log [TXT][DIR] Up to [local] / sys / arch / mips64 / mips64

Annotation of sys/arch/mips64/mips64/mainbus.c, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: mainbus.c,v 1.4 2005/01/31 21:35:50 grange Exp $ */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2001-2003 Opsycon AB  (www.opsycon.se / www.opsycon.com)
        !             5:  *
        !             6:  * Redistribution and use in source and binary forms, with or without
        !             7:  * modification, are permitted provided that the following conditions
        !             8:  * are met:
        !             9:  * 1. Redistributions of source code must retain the above copyright
        !            10:  *    notice, this list of conditions and the following disclaimer.
        !            11:  * 2. Redistributions in binary form must reproduce the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer in the
        !            13:  *    documentation and/or other materials provided with the distribution.
        !            14:  *
        !            15:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
        !            16:  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        !            17:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            18:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
        !            19:  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            20:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            21:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            22:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            23:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            24:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            25:  * SUCH DAMAGE.
        !            26:  *
        !            27:  */
        !            28:
        !            29: #include <sys/param.h>
        !            30: #include <sys/systm.h>
        !            31: #include <sys/device.h>
        !            32: #include <sys/reboot.h>
        !            33:
        !            34: #include <mips64/archtype.h>
        !            35: #include <machine/autoconf.h>
        !            36:
        !            37: struct mainbus_softc {
        !            38:        struct  device sc_dv;
        !            39:        struct  abus sc_bus;
        !            40: };
        !            41:
        !            42: /* Definition of the mainbus driver. */
        !            43: static int     mbmatch(struct device *, void *, void *);
        !            44: static void    mbattach(struct device *, struct device *, void *);
        !            45: static int     mbprint(void *, const char *);
        !            46:
        !            47: struct cfattach mainbus_ca = {
        !            48:        sizeof(struct mainbus_softc), mbmatch, mbattach
        !            49: };
        !            50: struct cfdriver mainbus_cd = {
        !            51:        NULL, "mainbus", DV_DULL, NULL, 0
        !            52: };
        !            53:
        !            54: void   *mb_intr_establish(void *, u_long, int, int, int (*)(void *),
        !            55:            void *, char *);
        !            56: void   mb_intr_disestablish(void *, void *);
        !            57: caddr_t        mb_cvtaddr(struct confargs *);
        !            58: int    mb_matchname(struct confargs *, char *);
        !            59:
        !            60: static int
        !            61: mbmatch(parent, cfdata, aux)
        !            62:        struct device *parent;
        !            63:        void *cfdata;
        !            64:        void *aux;
        !            65: {
        !            66:        struct cfdata *cf = cfdata;
        !            67:
        !            68:        if (cf->cf_unit > 0)
        !            69:                return(0);
        !            70:        return(1);
        !            71: }
        !            72:
        !            73: static void
        !            74: mbattach(parent, self, aux)
        !            75:        struct device *parent;
        !            76:        struct device *self;
        !            77:        void *aux;
        !            78: {
        !            79:        struct mainbus_softc *sc = (struct mainbus_softc *)self;
        !            80:        struct confargs nca;
        !            81:
        !            82:        printf("\n");
        !            83:
        !            84:        sc->sc_bus.ab_dv = (struct device *)sc;
        !            85:        sc->sc_bus.ab_type = BUS_MAIN;
        !            86:        sc->sc_bus.ab_intr_establish = mb_intr_establish;
        !            87:        sc->sc_bus.ab_intr_disestablish = mb_intr_disestablish;
        !            88:        sc->sc_bus.ab_cvtaddr = mb_cvtaddr;
        !            89:        sc->sc_bus.ab_matchname = mb_matchname;
        !            90:
        !            91:        /*
        !            92:         * Try to find and attach all of the CPUs in the machine.
        !            93:         * ( Right now only one CPU so code is simple )
        !            94:         */
        !            95:
        !            96:        nca.ca_name = "cpu";
        !            97:        nca.ca_bus = &sc->sc_bus;
        !            98:        config_found(self, &nca, mbprint);
        !            99:
        !           100:        /*
        !           101:         *  Attach the clocks.
        !           102:         */
        !           103:        nca.ca_name = "clock";
        !           104:        nca.ca_bus = &sc->sc_bus;
        !           105:        config_found(self, &nca, mbprint);
        !           106:
        !           107:        if (sys_config.system_type == SGI_INDY) {
        !           108:                nca.ca_name = "indy";
        !           109:                nca.ca_bus = &sc->sc_bus;
        !           110:                config_found(self, &nca, mbprint);
        !           111:        }
        !           112:        else if (sys_config.system_type == SGI_O2) {
        !           113:                nca.ca_name = "macebus";
        !           114:                nca.ca_bus = &sc->sc_bus;
        !           115:                config_found(self, &nca, mbprint);
        !           116:
        !           117:                nca.ca_name = "macepcibr";
        !           118:                nca.ca_bus = &sc->sc_bus;
        !           119:                nca.ca_num = 0;
        !           120:                config_found(self, &nca, mbprint);
        !           121:        }
        !           122:        else if (sys_config.system_type == ALGOR_P4032 ||
        !           123:             sys_config.system_type == ALGOR_P5064 ||
        !           124:            sys_config.system_type == MOMENTUM_CP7000 ||
        !           125:            sys_config.system_type == MOMENTUM_CP7000G ||
        !           126:            sys_config.system_type == MOMENTUM_JAGUAR ||
        !           127:            sys_config.system_type == GALILEO_EV64240) {
        !           128:
        !           129:                nca.ca_name = "localbus";
        !           130:                nca.ca_bus = &sc->sc_bus;
        !           131:                config_found(self, &nca, mbprint);
        !           132:
        !           133:                nca.ca_name = "pcibr";
        !           134:                nca.ca_bus = &sc->sc_bus;
        !           135:                nca.ca_num = 0;
        !           136:                config_found(self, &nca, mbprint);
        !           137:
        !           138:                nca.ca_name = "pcibr";
        !           139:                nca.ca_bus = &sc->sc_bus;
        !           140:                nca.ca_num = 1;
        !           141:                config_found(self, &nca, mbprint);
        !           142:        }
        !           143: }
        !           144:
        !           145: static int
        !           146: mbprint(aux, pnp)
        !           147:        void *aux;
        !           148:        const char *pnp;
        !           149: {
        !           150:        if (pnp)
        !           151:                return (QUIET);
        !           152:        return (UNCONF);
        !           153: }
        !           154:
        !           155: void *
        !           156: mb_intr_establish(icp, irq, type, level, ih_fun, ih_arg, ih_what)
        !           157:         void *icp;
        !           158:         u_long irq;     /* XXX pci_intr_handle_t compatible XXX */
        !           159:         int type;
        !           160:         int level;
        !           161:         int (*ih_fun)(void *);
        !           162:         void *ih_arg;
        !           163:         char *ih_what;
        !           164: {
        !           165:        panic("can never mb_intr_establish");
        !           166: }
        !           167:
        !           168: void
        !           169: mb_intr_disestablish(void *p1, void *p2)
        !           170: {
        !           171:        panic("can never mb_intr_disestablish");
        !           172: }
        !           173:
        !           174: caddr_t
        !           175: mb_cvtaddr(ca)
        !           176:        struct confargs *ca;
        !           177: {
        !           178:        return (NULL);
        !           179: }
        !           180:
        !           181: int
        !           182: mb_matchname(ca, name)
        !           183:        struct confargs *ca;
        !           184:        char *name;
        !           185: {
        !           186:        return (strcmp(name, ca->ca_name) == 0);
        !           187: }

CVSweb