summaryrefslogtreecommitdiff
path: root/sys/arch/amiga/dev/ahsc.c
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2002-12-31 16:35:43 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2002-12-31 16:35:43 +0000
commit5bd8a66c32f475b5f4a897da8aef1878cc2e768e (patch)
tree90bdb8cb64032fcc765f8865bae36013cff255a7 /sys/arch/amiga/dev/ahsc.c
parent4d298384bbeb0ddbaf45d1ececd54291a3e88796 (diff)
amiga and sun3 turned out to not be y2k+3 compliant here. Remove them, as
well as the few userland tools which were only used on these platforms.
Diffstat (limited to 'sys/arch/amiga/dev/ahsc.c')
-rw-r--r--sys/arch/amiga/dev/ahsc.c322
1 files changed, 0 insertions, 322 deletions
diff --git a/sys/arch/amiga/dev/ahsc.c b/sys/arch/amiga/dev/ahsc.c
deleted file mode 100644
index 021e7400352..00000000000
--- a/sys/arch/amiga/dev/ahsc.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* $OpenBSD: ahsc.c,v 1.7 2002/03/14 01:26:28 millert Exp $ */
-/* $NetBSD: ahsc.c,v 1.18 1996/12/23 09:09:51 veego Exp $ */
-
-/*
- * Copyright (c) 1994 Christian E. Hopps
- * Copyright (c) 1982, 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)dma.c
- */
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/device.h>
-#include <scsi/scsi_all.h>
-#include <scsi/scsiconf.h>
-#include <amiga/amiga/custom.h>
-#include <amiga/amiga/cc.h>
-#include <amiga/amiga/device.h>
-#include <amiga/amiga/isr.h>
-#include <amiga/dev/dmavar.h>
-#include <amiga/dev/sbicreg.h>
-#include <amiga/dev/sbicvar.h>
-#include <amiga/dev/ahscreg.h>
-#include <amiga/dev/zbusvar.h>
-
-void ahscattach(struct device *, struct device *, void *);
-int ahscmatch(struct device *, void *, void *);
-
-void ahsc_enintr(struct sbic_softc *);
-void ahsc_dmastop(struct sbic_softc *);
-int ahsc_dmanext(struct sbic_softc *);
-int ahsc_dmaintr(void *);
-int ahsc_dmago(struct sbic_softc *, char *, int, int);
-
-#ifdef DEBUG
-void ahsc_dump(void);
-#endif
-
-struct scsi_adapter ahsc_scsiswitch = {
- sbic_scsicmd,
- sbic_minphys,
- 0, /* no lun support */
- 0, /* no lun support */
-};
-
-struct scsi_device ahsc_scsidev = {
- NULL, /* use default error handler */
- NULL, /* do not have a start functio */
- NULL, /* have no async handler */
- NULL, /* Use default done routine */
-};
-
-
-#ifdef DEBUG
-int ahsc_dmadebug = 0;
-#endif
-
-struct cfattach ahsc_ca = {
- sizeof(struct sbic_softc), ahscmatch, ahscattach
-};
-
-struct cfdriver ahsc_cd = {
- NULL, "ahsc", DV_DULL, NULL, 0
-};
-
-/*
- * if we are an A3000 we are here.
- */
-int
-ahscmatch(pdp, match, auxp)
- struct device *pdp;
- void *match, *auxp;
-{
- char *mbusstr;
-
- mbusstr = auxp;
- if (is_a3000() && matchname(auxp, "ahsc"))
- return(1);
- return(0);
-}
-
-void
-ahscattach(pdp, dp, auxp)
- struct device *pdp, *dp;
- void *auxp;
-{
- volatile struct sdmac *rp;
- struct sbic_softc *sc;
-
- printf("\n");
-
- sc = (struct sbic_softc *)dp;
- sc->sc_cregs = rp = ztwomap(0xdd0000);
- /*
- * disable ints and reset bank register
- */
- rp->CNTR = CNTR_PDMD;
- rp->DAWR = DAWR_AHSC;
- sc->sc_enintr = ahsc_enintr;
- sc->sc_dmago = ahsc_dmago;
- sc->sc_dmanext = ahsc_dmanext;
- sc->sc_dmastop = ahsc_dmastop;
- sc->sc_dmacmd = 0;
-
- /*
- * eveything is a valid dma address
- */
- sc->sc_dmamask = 0;
- sc->sc_sbicp = (sbic_regmap_p) ((int)rp + 0x41);
- sc->sc_clkfreq = sbic_clock_override ? sbic_clock_override : 143;
-
- sc->sc_link.adapter_softc = sc;
- sc->sc_link.adapter_target = 7;
- sc->sc_link.adapter = &ahsc_scsiswitch;
- sc->sc_link.device = &ahsc_scsidev;
- sc->sc_link.openings = 2;
-
- sbicinit(sc);
-
- sc->sc_isr.isr_intr = ahsc_dmaintr;
- sc->sc_isr.isr_arg = sc;
- sc->sc_isr.isr_ipl = 2;
- add_isr (&sc->sc_isr);
-
- /*
- * attach all scsi units on us
- */
- config_found(dp, &sc->sc_link, scsiprint);
-}
-
-void
-ahsc_enintr(dev)
- struct sbic_softc *dev;
-{
- volatile struct sdmac *sdp;
-
- sdp = dev->sc_cregs;
-
- dev->sc_flags |= SBICF_INTR;
- sdp->CNTR = CNTR_PDMD | CNTR_INTEN;
-}
-
-int
-ahsc_dmago(dev, addr, count, flags)
- struct sbic_softc *dev;
- char *addr;
- int count, flags;
-{
- volatile struct sdmac *sdp;
-
- sdp = dev->sc_cregs;
- /*
- * Set up the command word based on flags
- */
- dev->sc_dmacmd = CNTR_PDMD | CNTR_INTEN;
- if ((flags & DMAGO_READ) == 0)
- dev->sc_dmacmd |= CNTR_DDIR;
-#ifdef DEBUG
- if (ahsc_dmadebug & DDB_IO)
- printf("ahsc_dmago: cmd %x\n", dev->sc_dmacmd);
-#endif
-
- dev->sc_flags |= SBICF_INTR;
- sdp->CNTR = dev->sc_dmacmd;
- sdp->ACR = (u_int) dev->sc_cur->dc_addr;
- sdp->ST_DMA = 1;
-
- return(dev->sc_tcnt);
-}
-
-void
-ahsc_dmastop(dev)
- struct sbic_softc *dev;
-{
- volatile struct sdmac *sdp;
- int s;
-
- sdp = dev->sc_cregs;
-
-#ifdef DEBUG
- if (ahsc_dmadebug & DDB_FOLLOW)
- printf("ahsc_dmastop()\n");
-#endif
- if (dev->sc_dmacmd) {
- s = splbio();
- if ((dev->sc_dmacmd & (CNTR_TCEN | CNTR_DDIR)) == 0) {
- /*
- * only FLUSH if terminal count not enabled,
- * and reading from peripheral
- */
- sdp->FLUSH = 1;
- while ((sdp->ISTR & ISTR_FE_FLG) == 0)
- ;
- }
- /*
- * clear possible interrupt and stop dma
- */
- sdp->CINT = 1;
- sdp->SP_DMA = 1;
- dev->sc_dmacmd = 0;
- splx(s);
- }
-}
-
-int
-ahsc_dmaintr(arg)
- void *arg;
-{
- struct sbic_softc *dev = arg;
- volatile struct sdmac *sdp;
- int stat, found;
-
- sdp = dev->sc_cregs;
- stat = sdp->ISTR;
-
- if ((stat & (ISTR_INT_F|ISTR_INT_P)) == 0)
- return (0);
-
-#ifdef DEBUG
- if (ahsc_dmadebug & DDB_FOLLOW)
- printf("%s: dmaintr 0x%x\n", dev->sc_dev.dv_xname, stat);
-#endif
-
- /*
- * both, SCSI and DMA interrupts arrive here. I chose
- * arbitrarily that DMA interrupts should have higher
- * precedence than SCSI interrupts.
- */
- found = 0;
- if (stat & ISTR_E_INT) {
- ++found;
-
- sdp->CINT = 1; /* clear possible interrupt */
-
- /*
- * check for SCSI ints in the same go and
- * eventually save an interrupt
- */
- }
-
- if (dev->sc_flags & SBICF_INTR && stat & ISTR_INTS)
- found += sbicintr(dev);
- return(found);
-}
-
-
-int
-ahsc_dmanext(dev)
- struct sbic_softc *dev;
-{
- volatile struct sdmac *sdp;
-
- sdp = dev->sc_cregs;
-
- if (dev->sc_cur > dev->sc_last) {
- /* shouldn't happen !! */
- printf("ahsc_dmanext at end !!!\n");
- ahsc_dmastop(dev);
- return(0);
- }
- if ((dev->sc_dmacmd & (CNTR_TCEN | CNTR_DDIR)) == 0) {
- /*
- * only FLUSH if terminal count not enabled,
- * and reading from peripheral
- */
- sdp->FLUSH = 1;
- while ((sdp->ISTR & ISTR_FE_FLG) == 0)
- ;
- }
- /*
- * clear possible interrupt and stop dma
- */
- sdp->CINT = 1; /* clear possible interrupt */
- sdp->SP_DMA = 1; /* stop dma */
- sdp->CNTR = dev->sc_dmacmd;
- sdp->ACR = (u_int)dev->sc_cur->dc_addr;
- sdp->ST_DMA = 1;
-
- dev->sc_tcnt = dev->sc_cur->dc_count << 1;
- return(dev->sc_tcnt);
-}
-
-#ifdef DEBUG
-void
-ahsc_dump()
-{
- int i;
-
- for (i = 0; i < ahsc_cd.cd_ndevs; ++i)
- if (ahsc_cd.cd_devs[i])
- sbic_dump(ahsc_cd.cd_devs[i]);
-}
-#endif