[BACK]Return to com_obio.c CVS log [TXT][DIR] Up to [local] / sys / arch / armish / dev

Annotation of sys/arch/armish/dev/com_obio.c, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: com_obio.c,v 1.4 2006/06/16 01:31:35 drahn Exp $      */
                      2: /*     $NetBSD: com_obio.c,v 1.9 2005/12/11 12:17:09 christos Exp $    */
                      3:
                      4: /*-
                      5:  * Copyright (c) 2001 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Matt Thomas <matt@3am-software.com>.
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
                     19:  * 3. All advertising materials mentioning features or use of this software
                     20:  *    must display the following acknowledgement:
                     21:  *        This product includes software developed by the NetBSD
                     22:  *        Foundation, Inc. and its contributors.
                     23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     24:  *    contributors may be used to endorse or promote products derived
                     25:  *    from this software without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     37:  * POSSIBILITY OF SUCH DAMAGE.
                     38:  */
                     39:
                     40: #include <sys/param.h>
                     41: #include <sys/systm.h>
                     42: #include <sys/device.h>
                     43: #include <sys/termios.h>
                     44:
                     45: #include <machine/bus.h>
                     46:
                     47: #include <arm/xscale/i80321var.h>
                     48: #include <armish/dev/obiovar.h>
                     49:
                     50: #include <dev/ic/comreg.h>
                     51: #include <dev/ic/comvar.h>
                     52:
                     53: struct com_obio_softc {
                     54:        struct com_softc sc_com;
                     55:
                     56:        void *sc_ih;
                     57: };
                     58:
                     59: int    com_obio_match(struct device *, void *, void *);
                     60: void   com_obio_attach(struct device *, struct device *, void *);
                     61:
                     62: struct cfattach com_obio_ca = {
                     63:        sizeof(struct com_obio_softc), com_obio_match, com_obio_attach
                     64: };
                     65:
                     66: struct cfdriver com_obio_cd = {
                     67:        NULL, "com_obio", DV_DULL
                     68: };
                     69:
                     70: int com_irq_override = -1;
                     71:
                     72: int
                     73: com_obio_match(struct device *parent, void *cf, void *aux)
                     74: {
                     75:        struct obio_attach_args *oba = aux;
                     76:
                     77:        /* if the irq does not match, do not attach */
                     78:        if (com_irq_override != -1)
                     79:                oba->oba_irq = com_irq_override;
                     80:
                     81:        /* We take it on faith that the device is there. */
                     82:        return (1);
                     83: }
                     84:
                     85:
                     86: void
                     87: com_obio_attach(struct device *parent, struct device *self, void *aux)
                     88: {
                     89:        struct obio_attach_args *oba = aux;
                     90:        struct com_obio_softc *osc = (void *) self;
                     91:        struct com_softc *sc = &osc->sc_com;
                     92:        int error;
                     93:
                     94:        sc->sc_iot = oba->oba_st;
                     95:        sc->sc_iobase = oba->oba_addr;
                     96:        sc->sc_frequency = COM_FREQ;
                     97: /*     sc->sc_hwflags = COM_HW_NO_TXPRELOAD; */
                     98:        sc->sc_hwflags = 0;
                     99:        error = bus_space_map(sc->sc_iot, oba->oba_addr, 8, 0, &sc->sc_ioh);
                    100:
                    101:        if (error) {
                    102:                printf(": failed to map registers: %d\n", error);
                    103:                return;
                    104:        }
                    105:
                    106:        com_attach_subr(sc);
                    107:        osc->sc_ih = i80321_intr_establish(oba->oba_irq, IPL_TTY,
                    108:            comintr, sc, sc->sc_dev.dv_xname);
                    109:        if (osc->sc_ih == NULL)
                    110:                printf("%s: unable to establish interrupt at CPLD irq %d\n",
                    111:                    sc->sc_dev.dv_xname, oba->oba_irq);
                    112: }

CVSweb