void sbattach(struct sbdsp_softc *sc) { struct audio_attach_args arg; #if NMIDI > 0 struct midi_hw_if *mhw = &sb_midi_hw_if; #endif sc->sc_ih = isa_intr_establish(sc->sc_ic, sc->sc_irq, IST_EDGE, IPL_AUDIO | IPL_MPSAFE, sbdsp_intr, sc, sc->sc_dev.dv_xname); sbdsp_attach(sc); #if NMIDI > 0 sc->sc_hasmpu = 0; if (ISSB16CLASS(sc) && sc->sc_mpu_sc.iobase != 0) { sc->sc_mpu_sc.iot = sc->sc_iot; if (mpu_find(&sc->sc_mpu_sc)) { sc->sc_hasmpu = 1; mhw = &sb_mpu401_hw_if; } } midi_attach_mi(mhw, sc, &sc->sc_dev); #endif audio_attach_mi(&sb_hw_if, sc, &sc->sc_dev); arg.type = AUDIODEV_TYPE_OPL; arg.hwif = 0; arg.hdl = 0; (void)config_found(&sc->sc_dev, &arg, audioprint); }
static int mpu_eso_match(device_t parent, cfdata_t match, void *aux) { struct audio_attach_args *aa = aux; struct eso_softc *esc = device_private(parent); struct mpu_softc sc; if (aa->type != AUDIODEV_TYPE_MPU) return 0; memset(&sc, 0, sizeof sc); sc.ioh = esc->sc_mpu_ioh; sc.iot = esc->sc_mpu_iot; return mpu_find(&sc); }