1/* $NecBSD: nsp_pisa.c,v 1.4 1999/04/15 01:35:54 kmatsuda Exp $ */ 2/* $NetBSD$ */ 3 4/*- 5 * [Ported for FreeBSD] 6 * Copyright (c) 2000 7 * Noriaki Mitsunaga, Mitsuru Iwasaki and Takanori Watanabe. 8 * All rights reserved. --- 21 unchanged lines hidden (view full) --- 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 32 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37#include <sys/cdefs.h> |
38__FBSDID("$FreeBSD: head/sys/dev/nsp/nsp_pccard.c 240172 2012-09-06 18:53:33Z jhb $"); |
39 40#include <sys/param.h> 41#include <sys/bus.h> 42#include <sys/errno.h> 43#include <sys/kernel.h> 44#include <sys/malloc.h> |
45#include <sys/module.h> |
46#include <sys/systm.h> 47 48#include <machine/bus.h> 49#include <machine/resource.h> 50#include <sys/rman.h> 51#include <compat/netbsd/dvcfg.h> 52 |
53#include <sys/bus.h> |
54 55#include <dev/pccard/pccardvar.h> 56 57#include <cam/scsi/scsi_low.h> 58#include <cam/scsi/scsi_low_pisa.h> 59 60#include <dev/nsp/nspreg.h> 61#include <dev/nsp/nspvar.h> 62 63#define NSP_HOSTID 7 64 65#include "pccarddevs.h" 66 67#define PIO_MODE 0x100 /* pd_flags */ 68 |
69static int nspprobe(device_t devi); 70static int nspattach(device_t devi); |
71 |
72static void nsp_card_unload (device_t); |
73 74const struct pccard_product nsp_products[] = { 75 PCMCIA_CARD(IODATA3, CBSC16), 76 PCMCIA_CARD(PANASONIC, KME), 77 PCMCIA_CARD(WORKBIT2, NINJA_SCSI3), 78 PCMCIA_CARD(WORKBIT, ULTRA_NINJA_16), 79 { NULL } 80}; --- 54 unchanged lines hidden (view full) --- 135 } 136 137 error = bus_get_resource(dev, SYS_RES_MEMORY, 0, &maddr, &msize); 138 if (error) 139 return(0); /* XXX */ 140 141 /* No need to allocate memory if not configured and it's in PIO mode */ 142 if (maddr == 0 || msize == 0) { |
143 if ((device_get_flags(dev) & PIO_MODE) == 0) { |
144 printf("Memory window was not configured. Configure or use in PIO mode."); 145 nsp_release_resource(dev); 146 return(ENOMEM); 147 } 148 /* no need to allocate memory if PIO mode */ 149 return(0); 150 } 151 --- 73 unchanged lines hidden (view full) --- 225}; 226 227static devclass_t nsp_devclass; 228 229MODULE_DEPEND(nsp, scsi_low, 1, 1, 1); 230DRIVER_MODULE(nsp, pccard, nsp_pccard_driver, nsp_devclass, 0, 0); 231 232static void |
233nsp_card_unload(device_t devi) |
234{ |
235 struct nsp_softc *sc = device_get_softc(devi); |
236 intrmask_t s; 237 238 s = splcam(); 239 scsi_low_deactivate((struct scsi_low_softc *)sc); 240 scsi_low_dettach(&sc->sc_sclow); 241 splx(s); 242} 243 244static int |
245nspprobe(device_t devi) |
246{ 247 int rv; 248 struct nsp_softc *sc = device_get_softc(devi); 249 250 rv = nspprobesubr(rman_get_bustag(sc->port_res), 251 rman_get_bushandle(sc->port_res), |
252 device_get_flags(devi)); |
253 254 return rv; 255} 256 257static int |
258nspattach(device_t devi) |
259{ 260 struct nsp_softc *sc; 261 struct scsi_low_softc *slp; |
262 u_int32_t flags = device_get_flags(devi); 263 u_int iobase = bus_get_resource_start(devi, SYS_RES_IOPORT, 0); |
264 intrmask_t s; 265 char dvname[16]; 266 267 strcpy(dvname,"nsp"); 268 269 if (iobase == 0) { 270 printf("%s: no ioaddr is given\n", dvname); 271 return (0); 272 } 273 |
274 sc = device_get_softc(devi); |
275 if (sc == NULL) 276 return (0); 277 278 slp = &sc->sc_sclow; 279 slp->sl_dev = devi; 280 sc->sc_iot = rman_get_bustag(sc->port_res); 281 sc->sc_ioh = rman_get_bushandle(sc->port_res); 282 --- 24 unchanged lines hidden --- |