Annotation of sys/dev/isa/mpu_isapnp.c, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: mpu_isapnp.c,v 1.6 2002/11/28 23:24:53 mickey Exp $ */
! 2:
! 3: #include "midi.h"
! 4:
! 5: #include <sys/param.h>
! 6: #include <sys/systm.h>
! 7: #include <sys/errno.h>
! 8: #include <sys/ioctl.h>
! 9: #include <sys/syslog.h>
! 10: #include <sys/device.h>
! 11: #include <sys/proc.h>
! 12:
! 13: #include <machine/bus.h>
! 14:
! 15: #include <sys/audioio.h>
! 16: #include <dev/audio_if.h>
! 17: #include <dev/midi_if.h>
! 18: #include <dev/mulaw.h>
! 19:
! 20: #include <dev/isa/isavar.h>
! 21: #include <dev/isa/isadmavar.h>
! 22:
! 23: #include <dev/ic/mpuvar.h>
! 24:
! 25: int mpu_isapnp_match(struct device *, void *, void *);
! 26: void mpu_isapnp_attach(struct device *, struct device *, void *);
! 27:
! 28: struct mpu_isapnp_softc {
! 29: struct device sc_dev;
! 30: void *sc_ih;
! 31:
! 32: struct mpu_softc sc_mpu;
! 33: };
! 34:
! 35: struct cfattach mpu_isapnp_ca = {
! 36: sizeof(struct mpu_isapnp_softc), mpu_isapnp_match, mpu_isapnp_attach
! 37: };
! 38:
! 39: int
! 40: mpu_isapnp_match(parent, match, aux)
! 41: struct device *parent;
! 42: void *match, *aux;
! 43: {
! 44: struct isa_attach_args *ipa = aux;
! 45:
! 46: if (ipa->ipa_nirq != 1)
! 47: return 0;
! 48: return 1;
! 49: }
! 50:
! 51: void
! 52: mpu_isapnp_attach(parent, self, aux)
! 53: struct device *parent, *self;
! 54: void *aux;
! 55: {
! 56: struct mpu_isapnp_softc *sc = (struct mpu_isapnp_softc *)self;
! 57: struct isa_attach_args *ipa = aux;
! 58:
! 59: printf("\n");
! 60:
! 61: sc->sc_mpu.iot = ipa->ia_iot;
! 62: sc->sc_mpu.ioh = ipa->ipa_io[0].h;
! 63:
! 64: sc->sc_ih = isa_intr_establish(ipa->ia_ic, ipa->ipa_irq[0].num,
! 65: ipa->ipa_irq[0].type, IPL_AUDIO, mpu_intr, &sc->sc_mpu,
! 66: sc->sc_dev.dv_xname);
! 67:
! 68: if (!mpu_find(&sc->sc_mpu)) {
! 69: printf("%s: find failed\n", sc->sc_dev.dv_xname);
! 70: return;
! 71: }
! 72:
! 73: printf("%s: %s %s\n", sc->sc_dev.dv_xname, ipa->ipa_devident,
! 74: ipa->ipa_devclass);
! 75:
! 76: midi_attach_mi(&mpu_midi_hw_if, &sc->sc_mpu, &sc->sc_dev);
! 77: }
CVSweb