static int nspattach(device_t devi) { struct nsp_softc *sc; struct scsi_low_softc *slp; u_int32_t flags = device_get_flags(devi); u_int iobase = bus_get_resource_start(devi, SYS_RES_IOPORT, 0); intrmask_t s; char dvname[16]; strcpy(dvname,"nsp"); if (iobase == 0) { printf("%s: no ioaddr is given\n", dvname); return (0); } sc = device_get_softc(devi); if (sc == NULL) return (0); slp = &sc->sc_sclow; slp->sl_dev = devi; sc->sc_iot = rman_get_bustag(sc->port_res); sc->sc_ioh = rman_get_bushandle(sc->port_res); if (sc->mem_res == NULL) { printf("WARNING: CANNOT GET Memory RESOURCE going PIO mode"); flags |= PIO_MODE; } if ((flags & PIO_MODE) == 0) { sc->sc_memt = rman_get_bustag(sc->mem_res); sc->sc_memh = rman_get_bushandle(sc->mem_res); } else { sc->sc_memh = 0; } /* slp->sl_irq = devi->pd_irq; */ sc->sc_iclkdiv = CLKDIVR_20M; sc->sc_clkdiv = CLKDIVR_40M; slp->sl_hostid = NSP_HOSTID; slp->sl_cfgflags = flags; s = splcam(); nspattachsubr(sc); splx(s); return(NSP_IOSIZE); }
static int nspattach(DEVPORT_PDEVICE devi) { struct nsp_softc *sc; struct scsi_low_softc *slp; u_int32_t flags = DEVPORT_PDEVFLAGS(devi); u_int iobase = DEVPORT_PDEVIOBASE(devi); char dvname[16]; strcpy(dvname,"nsp"); if (iobase == 0) { kprintf("%s: no ioaddr is given\n", dvname); return (0); } sc = DEVPORT_PDEVALLOC_SOFTC(devi); if (sc == NULL) { return (0); } slp = &sc->sc_sclow; slp->sl_dev = devi; sc->sc_iot = rman_get_bustag(sc->port_res); sc->sc_ioh = rman_get_bushandle(sc->port_res); if((flags & PIO_MODE) == 0) { sc->sc_memt = rman_get_bustag(sc->mem_res); sc->sc_memh = rman_get_bushandle(sc->mem_res); } else { sc->sc_memh = 0; } /* slp->sl_irq = devi->pd_irq; */ sc->sc_iclkdiv = CLKDIVR_20M; sc->sc_clkdiv = CLKDIVR_40M; slp->sl_hostid = NSP_HOSTID; slp->sl_cfgflags = flags; crit_enter(); nspattachsubr(sc); crit_exit(); return(NSP_IOSIZE); }