Deleted Added
full compact
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 194023 2009-06-11 17:14:28Z avg $");
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
52#include <sys/device_port.h>
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
68static int nspprobe(DEVPORT_PDEVICE devi);
69static int nspattach(DEVPORT_PDEVICE devi);
69static int nspprobe(device_t devi);
70static int nspattach(device_t devi);
71
71static void nsp_card_unload (DEVPORT_PDEVICE);
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) {
142 if ((DEVPORT_PDEVFLAGS(dev) & PIO_MODE) == 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
232nsp_card_unload(DEVPORT_PDEVICE devi)
233nsp_card_unload(device_t devi)
234{
234 struct nsp_softc *sc = DEVPORT_PDEVGET_SOFTC(devi);
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
244nspprobe(DEVPORT_PDEVICE devi)
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),
251 DEVPORT_PDEVFLAGS(devi));
252 device_get_flags(devi));
253
254 return rv;
255}
256
257static int
257nspattach(DEVPORT_PDEVICE devi)
258nspattach(device_t devi)
259{
260 struct nsp_softc *sc;
261 struct scsi_low_softc *slp;
261 u_int32_t flags = DEVPORT_PDEVFLAGS(devi);
262 u_int iobase = DEVPORT_PDEVIOBASE(devi);
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
273 sc = DEVPORT_PDEVALLOC_SOFTC(devi);
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 ---