[BACK]Return to eisa_machdep.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / i386 / eisa

Annotation of src/sys/arch/i386/eisa/eisa_machdep.c, Revision 1.4

1.4     ! christos    1: /*     $NetBSD: eisa_machdep.c,v 1.3 1996/10/11 00:26:33 christos Exp $        */
1.1       cgd         2:
                      3: /*
                      4:  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
                      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:  * 3. All advertising materials mentioning features or use of this software
                     15:  *    must display the following acknowledgement:
                     16:  *      This product includes software developed by Christopher G. Demetriou
                     17:  *     for the NetBSD Project.
                     18:  * 4. The name of the author may not be used to endorse or promote products
                     19:  *    derived from this software without specific prior written permission
                     20:  *
                     21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     31:  */
                     32:
                     33: /*
                     34:  * Machine-specific functions for EISA autoconfiguration.
                     35:  */
                     36:
                     37: #include <sys/types.h>
                     38: #include <sys/param.h>
                     39: #include <sys/time.h>
                     40: #include <sys/systm.h>
                     41: #include <sys/errno.h>
                     42: #include <sys/device.h>
                     43:
                     44: #include <i386/isa/icu.h>
                     45: #include <dev/isa/isavar.h>
                     46: #include <dev/eisa/eisavar.h>
                     47:
                     48: void
                     49: eisa_attach_hook(parent, self, eba)
                     50:        struct device *parent, *self;
                     51:        struct eisabus_attach_args *eba;
                     52: {
                     53:
                     54:        /* Nothing to do */
                     55: }
                     56:
                     57: int
                     58: eisa_maxslots(ec)
                     59:        eisa_chipset_tag_t ec;
                     60: {
                     61:
                     62:        /*
                     63:         * Always try 16 slots.
                     64:         */
                     65:        return (16);
                     66: }
                     67:
                     68: int
                     69: eisa_intr_map(ec, irq, ihp)
                     70:        eisa_chipset_tag_t ec;
                     71:        u_int irq;
                     72:        eisa_intr_handle_t *ihp;
                     73: {
                     74:
                     75:        if (irq >= ICU_LEN) {
1.4     ! christos   76:                printf("eisa_intr_map: bad IRQ %d\n", irq);
1.1       cgd        77:                *ihp = -1;
                     78:                return 1;
                     79:        }
                     80:        if (irq == 2) {
1.4     ! christos   81:                printf("eisa_intr_map: changed IRQ 2 to IRQ 9\n");
1.1       cgd        82:                irq = 9;
                     83:        }
                     84:
                     85:        *ihp = irq;
                     86:        return 0;
                     87: }
                     88:
                     89: const char *
                     90: eisa_intr_string(ec, ih)
                     91:        eisa_chipset_tag_t ec;
                     92:        eisa_intr_handle_t ih;
                     93: {
                     94:        static char irqstr[8];          /* 4 + 2 + NULL + sanity */
                     95:
                     96:        if (ih == 0 || ih >= ICU_LEN || ih == 2)
                     97:                panic("eisa_intr_string: bogus handle 0x%x\n", ih);
                     98:
1.4     ! christos   99:        sprintf(irqstr, "irq %d", ih);
1.1       cgd       100:        return (irqstr);
                    101:
                    102: }
                    103:
                    104: void *
                    105: eisa_intr_establish(ec, ih, type, level, func, arg)
                    106:        eisa_chipset_tag_t ec;
                    107:        eisa_intr_handle_t ih;
                    108:        int type, level, (*func) __P((void *));
                    109:        void *arg;
                    110: {
                    111:
                    112:        if (ih == 0 || ih >= ICU_LEN || ih == 2)
                    113:                panic("eisa_intr_establish: bogus handle 0x%x\n", ih);
                    114:
1.2       cgd       115:        return isa_intr_establish(NULL, ih, type, level, func, arg);
1.1       cgd       116: }
                    117:
                    118: void
                    119: eisa_intr_disestablish(ec, cookie)
                    120:        eisa_chipset_tag_t ec;
                    121:        void *cookie;
                    122: {
                    123:
1.2       cgd       124:        return isa_intr_disestablish(NULL, cookie);
1.1       cgd       125: }

CVSweb <webmaster@jp.NetBSD.org>