Remove aic(4) driver

aic was marked to be gone in 12 a while ago. Go ahead and remove it.
nycbug's dmesg database shows this was last seen in 6 and one more
time in 4.x. It never was popular, and what popularity it had was over
before the nycbug databse got going in 2004.

Relnotes: yes
This commit is contained in:
Warner Losh 2018-10-22 02:34:35 +00:00
parent 39c362e0b0
commit c24bd33d41
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=339566
12 changed files with 1 additions and 2642 deletions

View File

@ -2,8 +2,7 @@
PACKAGE=runtime-manuals
MAN= aic.4 \
apm.4 \
MAN= apm.4 \
ce.4 \
cp.4 \
CPU_ELAN.4 \

View File

@ -1,78 +0,0 @@
.\"
.\" Copyright (c) 1994 James A. Jegers
.\" 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. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
.\"
.\" $FreeBSD$
.\"
.Dd November 8, 2003
.Dt AIC 4 i386
.Os
.Sh NAME
.Nm aic
.Nd Adaptec AIC-6260 and AIC-6360 SCSI driver
.Sh SYNOPSIS
.Cd "device aic"
.Pp
In
.Pa /boot/device.hints :
.Cd hint.aic.0.at="isa"
.Sh DESCRIPTION
The
.Nm
driver provides support for the Adaptec AIC-6260 and AIC-6360 SCSI
controller chips.
Many systems that use these controller chips do not have a boot ROM
and therefore cannot be booted from.
.Sh HARDWARE
The adapters supported by the
.Nm
driver include:
.Pp
.Bl -bullet -compact
.It
Adaptec AHA-1505 (ISA)
.It
Adaptec AHA-1510A, AHA-1510B (ISA)
.It
Adaptec AHA-1520A, AHA-1520B (ISA)
.It
Adaptec AHA-1522A, AHA-1522B (ISA)
.It
Adaptec AHA-1535 (ISA)
.It
Creative Labs SoundBlaster SCSI host adapter (ISA)
.It
Adaptec AHA-1460, AHA-1460B, AHA-1460C, AHA-1460D (PC Card)
.El
.Sh SEE ALSO
.Xr ahc 4 ,
.Xr cd 4 ,
.Xr ch 4 ,
.Xr da 4 ,
.Xr intro 4 ,
.Xr sa 4
.Sh BUGS
The driver does not work well with multiple devices on the SCSI bus.
The driver works well with devices like CDROMs and Tape drives.
The driver works not so well with disk drives.
The PC Card version appears to work better than the ISA version, but
that may be due to differing levels of testing of the devices.

View File

@ -1553,7 +1553,6 @@ options TERMINAL_KERN_ATTR=(FG_LIGHTRED|BG_BLACK)
# ahc: Adaptec 274x/284x/2910/293x/294x/394x/3950x/3960x/398X/4944/
# 19160x/29160x, aic7770/aic78xx
# ahd: Adaptec 29320/39320 Controllers.
# aic: Adaptec 6260/6360, APA-1460 (PC Card)
# bt: Most Buslogic controllers: including BT-445, BT-54x, BT-64x, BT-74x,
# BT-75x, BT-946, BT-948, BT-956, BT-958, SDC3211B, SDC3211F, SDC3222F
# esp: Emulex ESP, NCR 53C9x and QLogic FAS families based controllers
@ -1585,8 +1584,6 @@ hint.bt.0.port="0x330"
device adv
hint.adv.0.at="isa"
device adw
device aic
hint.aic.0.at="isa"
device ahc
device ahd
device esp

View File

@ -770,8 +770,6 @@ dev/agp/agp_if.m optional agp pci
dev/ahci/ahci.c optional ahci
dev/ahci/ahciem.c optional ahci
dev/ahci/ahci_pci.c optional ahci pci
dev/aic/aic.c optional aic
dev/aic/aic_pccard.c optional aic pccard
dev/aic7xxx/ahc_isa.c optional ahc isa
dev/aic7xxx/ahc_pci.c optional ahc pci \
compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}"

View File

@ -161,7 +161,6 @@ dev/agp/agp_intel.c optional agp
dev/agp/agp_nvidia.c optional agp
dev/agp/agp_sis.c optional agp
dev/agp/agp_via.c optional agp
dev/aic/aic_isa.c optional aic isa
dev/amdsbwd/amdsbwd.c optional amdsbwd
dev/amdsmn/amdsmn.c optional amdsmn | amdtemp
dev/amdtemp/amdtemp.c optional amdtemp

File diff suppressed because it is too large Load Diff

View File

@ -1,337 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-4-Clause
*
* Copyright (c) 1994 Charles Hannum.
* Copyright (c) 1994 Jarle Greipsland.
* 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 Jarle Greipsland
* 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
*
* $FreeBSD$
*/
#define SCSISEQ 0x00 /* SCSI sequence control */
#define SXFRCTL0 0x01 /* SCSI transfer control 0 */
#define SXFRCTL1 0x02 /* SCSI transfer control 1 */
#define SCSISIGI 0x03 /* SCSI signal in */
#define SCSISIGO 0x03 /* SCSI signal out */
#define SCSIRATE 0x04 /* SCSI rate control */
#define SCSIID 0x05 /* SCSI ID */
#define SELID 0x05 /* Selection/Reselection ID */
#define SCSIDAT 0x06 /* SCSI Latched Data */
#define SCSIBUS 0x07 /* SCSI Data Bus*/
#define STCNT0 0x08 /* SCSI transfer count */
#define STCNT1 0x09
#define STCNT2 0x0a
#define CLRSINT0 0x0b /* Clear SCSI interrupts 0 */
#define SSTAT0 0x0b /* SCSI interrupt status 0 */
#define CLRSINT1 0x0c /* Clear SCSI interrupts 1 */
#define SSTAT1 0x0c /* SCSI status 1 */
#define SSTAT2 0x0d /* SCSI status 2 */
#define SCSITEST 0x0e /* SCSI test control */
#define SSTAT3 0x0e /* SCSI status 3 */
#define CLRSERR 0x0f /* Clear SCSI errors */
#define SSTAT4 0x0f /* SCSI status 4 */
#define SIMODE0 0x10 /* SCSI interrupt mode 0 */
#define SIMODE1 0x11 /* SCSI interrupt mode 1 */
#define DMACNTRL0 0x12 /* DMA control 0 */
#define DMACNTRL1 0x13 /* DMA control 1 */
#define DMASTAT 0x14 /* DMA status */
#define FIFOSTAT 0x15 /* FIFO status */
#define DMADATA 0x16 /* DMA data */
#define DMADATAL 0x16 /* DMA data low byte */
#define DMADATAH 0x17 /* DMA data high byte */
#define BRSTCNTRL 0x18 /* Burst Control */
#define DMADATALONG 0x18
#define PORTA 0x1a /* Port A */
#define PORTB 0x1b /* Port B */
#define REV 0x1c /* Revision (001 for 6360) */
#define STACK 0x1d /* Stack */
#define TEST 0x1e /* Test register */
#define ID 0x1f /* ID register */
#define IDSTRING_AIC6360 "(C)1991ADAPTECAIC6360 "
#define IDSTRING_AIC6370 "(C)1994ADAPTECAIC6370"
#define IDSTRING_GM82C700 "(C)1993 GoldStarGM82C700 "
/* What all the bits do */
/* SCSISEQ */
#define TEMODEO 0x80
#define ENSELO 0x40
#define ENSELI 0x20
#define ENRESELI 0x10
#define ENAUTOATNO 0x08
#define ENAUTOATNI 0x04
#define ENAUTOATNP 0x02
#define SCSIRSTO 0x01
/* SXFRCTL0 */
#define SCSIEN 0x80
#define DMAEN 0x40
#define CHEN 0x20
#define CLRSTCNT 0x10
#define SPIOEN 0x08
#define CLRCH 0x02
/* SXFRCTL1 */
#define BITBUCKET 0x80
#define SWRAPEN 0x40
#define ENSPCHK 0x20
#define STIMESEL1 0x10
#define STIMESEL0 0x08
#define STIMO_256ms 0x00
#define STIMO_128ms 0x08
#define STIMO_64ms 0x10
#define STIMO_32ms 0x18
#define ENSTIMER 0x04
#define BYTEALIGN 0x02
/* SCSISIGI */
#define CDI 0x80
#define IOI 0x40
#define MSGI 0x20
#define ATNI 0x10
#define SELI 0x08
#define BSYI 0x04
#define REQI 0x02
#define ACKI 0x01
/* Important! The 3 most significant bits of this register, in initiator mode,
* represents the "expected" SCSI bus phase and can be used to trigger phase
* mismatch and phase change interrupts. But more important: If there is a
* phase mismatch the chip will not transfer any data! This is actually a nice
* feature as it gives us a bit more control over what is happening when we are
* bursting data (in) through the FIFOs and the phase suddenly changes from
* DATA IN to STATUS or MESSAGE IN. The transfer will stop and wait for the
* proper phase to be set in this register instead of dumping the bits into the
* FIFOs.
*/
/* SCSISIGO */
#define CDO 0x80
#define IOO 0x40
#define MSGO 0x20
#define ATNO 0x10
#define SELO 0x08
#define BSYO 0x04
#define REQO 0x02
#define ACKO 0x01
/* Information transfer phases */
#define PH_DATAOUT (0)
#define PH_DATAIN (IOI)
#define PH_CMD (CDI)
#define PH_STAT (CDI|IOI)
#define PH_MSGOUT (MSGI|CDI)
#define PH_MSGIN (MSGI|CDI|IOI)
#define PH_MASK (MSGI|CDI|IOI)
/* SCSIRATE */
#define SXFR2 0x40
#define SXFR1 0x20
#define SXFR0 0x10
#define SOFS3 0x08
#define SOFS2 0x04
#define SOFS1 0x02
#define SOFS0 0x01
/* SCSI ID */
#define OID2 0x40
#define OID1 0x20
#define OID0 0x10
#define OID_S 4 /* shift value */
#define TID2 0x04
#define TID1 0x02
#define TID0 0x01
#define SCSI_ID_MASK 0x7
/* SCSI selection/reselection ID (both target *and* initiator) */
#define SELID7 0x80
#define SELID6 0x40
#define SELID5 0x20
#define SELID4 0x10
#define SELID3 0x08
#define SELID2 0x04
#define SELID1 0x02
#define SELID0 0x01
/* CLRSINT0 Clears what? (interrupt and/or status bit) */
#define SETSDONE 0x80
#define CLRSELDO 0x40 /* I */
#define CLRSELDI 0x20 /* I+ */
#define CLRSELINGO 0x10 /* I */
#define CLRSWRAP 0x08 /* I+S */
#define CLRSDONE 0x04 /* I+S */
#define CLRSPIORDY 0x02 /* I */
#define CLRDMADONE 0x01 /* I */
/* SSTAT0 Howto clear */
#define TARGET 0x80
#define SELDO 0x40 /* Selfclearing */
#define SELDI 0x20 /* Selfclearing when CLRSELDI is set */
#define SELINGO 0x10 /* Selfclearing */
#define SWRAP 0x08 /* CLRSWAP */
#define SDONE 0x04 /* Not used in initiator mode */
#define SPIORDY 0x02 /* Selfclearing (op on SCSIDAT) */
#define DMADONE 0x01 /* Selfclearing (all FIFOs empty & T/C */
/* CLRSINT1 Clears what? */
#define CLRSELTIMO 0x80 /* I+S */
#define CLRATNO 0x40
#define CLRSCSIRSTI 0x20 /* I+S */
#define CLRBUSFREE 0x08 /* I+S */
#define CLRSCSIPERR 0x04 /* I+S */
#define CLRPHASECHG 0x02 /* I+S */
#define CLRREQINIT 0x01 /* I+S */
/* SSTAT1 How to clear? When set?*/
#define SELTO 0x80 /* C select out timeout */
#define ATNTARG 0x40 /* Not used in initiator mode */
#define SCSIRSTI 0x20 /* C RST asserted */
#define PHASEMIS 0x10 /* Selfclearing */
#define BUSFREE 0x08 /* C bus free condition */
#define SCSIPERR 0x04 /* C parity error on inbound data */
#define PHASECHG 0x02 /* C phase in SCSISIGI doesn't match */
#define REQINIT 0x01 /* C or ACK asserting edge of REQ */
/* SSTAT2 */
#define SOFFSET 0x20
#define SEMPTY 0x10
#define SFULL 0x08
#define SFCNT2 0x04
#define SFCNT1 0x02
#define SFCNT0 0x01
/* SCSITEST */
#define SCTESTU 0x08
#define SCTESTD 0x04
#define STCTEST 0x01
/* SSTAT3 */
#define SCSICNT3 0x80
#define SCSICNT2 0x40
#define SCSICNT1 0x20
#define SCSICNT0 0x10
#define OFFCNT3 0x08
#define OFFCNT2 0x04
#define OFFCNT1 0x02
#define OFFCNT0 0x01
/* CLRSERR */
#define CLRSYNCERR 0x04
#define CLRFWERR 0x02
#define CLRFRERR 0x01
/* SSTAT4 */
#define SYNCERR 0x04
#define FWERR 0x02
#define FRERR 0x01
/* SIMODE0 */
#define ENSELDO 0x40
#define ENSELDI 0x20
#define ENSELINGO 0x10
#define ENSWRAP 0x08
#define ENSDONE 0x04
#define ENSPIORDY 0x02
#define ENDMADONE 0x01
/* SIMODE1 */
#define ENSELTIMO 0x80
#define ENATNTARG 0x40
#define ENSCSIRST 0x20
#define ENPHASEMIS 0x10
#define ENBUSFREE 0x08
#define ENSCSIPERR 0x04
#define ENPHASECHG 0x02
#define ENREQINIT 0x01
/* DMACNTRL0 */
#define ENDMA 0x80
#define B8MODE 0x40
#define DMA 0x20
#define DWORDPIO 0x10
#define WRITE 0x08
#define INTEN 0x04
#define RSTFIFO 0x02
#define SWINT 0x01
/* DMACNTRL1 */
#define PWRDWN 0x80
#define ENSTK32 0x40
#define STK4 0x10
#define STK3 0x08
#define STK2 0x04
#define STK1 0x02
#define STK0 0x01
/* DMASTAT */
#define ATDONE 0x80
#define WORDRDY 0x40
#define INTSTAT 0x20
#define DFIFOFULL 0x10
#define DFIFOEMP 0x08
#define DFIFOHF 0x04
#define DWORDRDY 0x02
/* BRSTCNTRL */
#define BON3 0x80
#define BON2 0x40
#define BON1 0x20
#define BON0 0x10
#define BOFF3 0x08
#define BOFF2 0x04
#define BOFF1 0x02
#define BOFF0 0x01
/* TEST */
#define BOFFTMR 0x40
#define BONTMR 0x20
#define STCNTH 0x10
#define STCNTM 0x08
#define STCNTL 0x04
#define SCSIBLK 0x02
#define DMABLK 0x01
/* PORTA */
#define PORTA_ID(a) ((a) & 7)
#define PORTA_IRQ(a) ((((a) >> 3) & 3) + 9)
#define PORTA_DRQ(a) ((((a) >> 5) & 3) ? (((a) >> 5) & 3) + 4 : 0)
#define PORTA_PARITY(a) ((a) & 0x80)
/* PORTB */
#define PORTB_EXTTRAN(b)((b) & 1)
#define PORTB_DISC(b) ((b) & 4)
#define PORTB_SYNC(b) ((b) & 8)
#define PORTB_FSYNC(b) ((b) & 0x10)
#define PORTB_BOOT(b) ((b) & 0x40)
#define PORTB_DMA(b) ((b) & 0x80)
/* How to behave on the (E)ISA bus when/if DMAing (on<<4) + off in us */
#define EISA_BRST_TIM ((15<<4) + 1) /* 15us on, 1us off */
#define FIFOSIZE 128

View File

@ -1,245 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1999 Luoqi Chen.
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/callout.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <sys/rman.h>
#include <isa/isavar.h>
#include <dev/aic/aic6360reg.h>
#include <dev/aic/aicvar.h>
struct aic_isa_softc {
struct aic_softc sc_aic;
struct resource *sc_port;
struct resource *sc_irq;
struct resource *sc_drq;
void *sc_ih;
};
static int aic_isa_alloc_resources(device_t);
static void aic_isa_release_resources(device_t);
static int aic_isa_probe(device_t);
static int aic_isa_attach(device_t);
static u_int aic_isa_ports[] = { 0x340, 0x140 };
#define AIC_ISA_NUMPORTS nitems(aic_isa_ports)
#define AIC_ISA_PORTSIZE 0x20
static struct isa_pnp_id aic_ids[] = {
{ 0x15309004, "Adaptec AHA-1530P" },
{ 0x15209004, "Adaptec AHA-1520P" },
{ 0 }
};
static int
aic_isa_alloc_resources(device_t dev)
{
struct aic_isa_softc *sc = device_get_softc(dev);
int rid;
sc->sc_port = sc->sc_irq = sc->sc_drq = NULL;
rid = 0;
sc->sc_port = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT, &rid,
AIC_ISA_PORTSIZE, RF_ACTIVE);
if (!sc->sc_port) {
device_printf(dev, "I/O port allocation failed\n");
return (ENOMEM);
}
if (isa_get_irq(dev) != -1) {
rid = 0;
sc->sc_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid,
RF_ACTIVE);
if (!sc->sc_irq) {
device_printf(dev, "IRQ allocation failed\n");
aic_isa_release_resources(dev);
return (ENOMEM);
}
}
if (isa_get_drq(dev) != -1) {
rid = 0;
sc->sc_drq = bus_alloc_resource_any(dev, SYS_RES_DRQ, &rid,
RF_ACTIVE);
if (!sc->sc_drq) {
device_printf(dev, "DRQ allocation failed\n");
aic_isa_release_resources(dev);
return (ENOMEM);
}
}
sc->sc_aic.dev = dev;
sc->sc_aic.res = sc->sc_port;
mtx_init(&sc->sc_aic.lock, "aic", NULL, MTX_DEF);
return (0);
}
static void
aic_isa_release_resources(device_t dev)
{
struct aic_isa_softc *sc = device_get_softc(dev);
if (sc->sc_port)
bus_release_resource(dev, SYS_RES_IOPORT, 0, sc->sc_port);
if (sc->sc_irq)
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq);
if (sc->sc_drq)
bus_release_resource(dev, SYS_RES_DRQ, 0, sc->sc_drq);
sc->sc_port = sc->sc_irq = sc->sc_drq = NULL;
mtx_destroy(&sc->sc_aic.lock);
}
static int
aic_isa_probe(device_t dev)
{
struct aic_isa_softc *sc = device_get_softc(dev);
struct aic_softc *aic = &sc->sc_aic;
int numports, i;
u_int port, *ports;
u_int8_t porta;
if (ISA_PNP_PROBE(device_get_parent(dev), dev, aic_ids) == ENXIO)
return (ENXIO);
port = isa_get_port(dev);
if (port != -1) {
ports = &port;
numports = 1;
} else {
ports = aic_isa_ports;
numports = AIC_ISA_NUMPORTS;
}
for (i = 0; i < numports; i++) {
if (bus_set_resource(dev, SYS_RES_IOPORT, 0, ports[i],
AIC_ISA_PORTSIZE))
continue;
if (aic_isa_alloc_resources(dev))
continue;
if (aic_probe(aic) == 0)
break;
aic_isa_release_resources(dev);
}
if (i == numports)
return (ENXIO);
porta = aic_inb(aic, PORTA);
aic_isa_release_resources(dev);
if (isa_get_irq(dev) == -1)
bus_set_resource(dev, SYS_RES_IRQ, 0, PORTA_IRQ(porta), 1);
if ((aic->flags & AIC_DMA_ENABLE) && isa_get_drq(dev) == -1)
bus_set_resource(dev, SYS_RES_DRQ, 0, PORTA_DRQ(porta), 1);
device_set_desc(dev, "Adaptec 6260/6360 SCSI controller");
return (0);
}
static int
aic_isa_attach(device_t dev)
{
struct aic_isa_softc *sc = device_get_softc(dev);
struct aic_softc *aic = &sc->sc_aic;
int error;
error = aic_isa_alloc_resources(dev);
if (error) {
device_printf(dev, "resource allocation failed\n");
return (error);
}
error = aic_attach(aic);
if (error) {
device_printf(dev, "attach failed\n");
aic_isa_release_resources(dev);
return (error);
}
error = bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_CAM | INTR_ENTROPY |
INTR_MPSAFE, NULL, aic_intr, aic, &sc->sc_ih);
if (error) {
device_printf(dev, "failed to register interrupt handler\n");
aic_isa_release_resources(dev);
return (error);
}
return (0);
}
static int
aic_isa_detach(device_t dev)
{
struct aic_isa_softc *sc = device_get_softc(dev);
struct aic_softc *aic = &sc->sc_aic;
int error;
error = aic_detach(aic);
if (error) {
device_printf(dev, "detach failed\n");
return (error);
}
error = bus_teardown_intr(dev, sc->sc_irq, sc->sc_ih);
if (error) {
device_printf(dev, "failed to unregister interrupt handler\n");
}
aic_isa_release_resources(dev);
return (0);
}
static device_method_t aic_isa_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aic_isa_probe),
DEVMETHOD(device_attach, aic_isa_attach),
DEVMETHOD(device_detach, aic_isa_detach),
{ 0, 0 }
};
static driver_t aic_isa_driver = {
"aic",
aic_isa_methods, sizeof(struct aic_isa_softc),
};
extern devclass_t aic_devclass;
MODULE_DEPEND(aic, cam, 1,1,1);
DRIVER_MODULE(aic, isa, aic_isa_driver, aic_devclass, 0, 0);
ISA_PNP_INFO(aic_ids);

View File

@ -1,201 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1999 Luoqi Chen.
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/callout.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/module.h>
#include <sys/mutex.h>
#include <sys/bus.h>
#include <machine/bus.h>
#include <machine/resource.h>
#include <sys/rman.h>
#include <dev/aic/aicvar.h>
#include <dev/pccard/pccardvar.h>
#include "card_if.h"
#include "pccarddevs.h"
struct aic_pccard_softc {
struct aic_softc sc_aic;
struct resource *sc_port;
struct resource *sc_irq;
void *sc_ih;
};
static int aic_pccard_alloc_resources(device_t);
static void aic_pccard_release_resources(device_t);
static int aic_pccard_probe(device_t);
static int aic_pccard_attach(device_t);
static const struct pccard_product aic_pccard_products[] = {
PCMCIA_CARD(ADAPTEC, APA1460),
PCMCIA_CARD(ADAPTEC, APA1460A),
PCMCIA_CARD(NEWMEDIA, BUSTOASTER),
PCMCIA_CARD(NEWMEDIA, BUSTOASTER2),
PCMCIA_CARD(NEWMEDIA, BUSTOASTER3),
{ NULL }
};
#define AIC_PCCARD_PORTSIZE 0x20
static int
aic_pccard_alloc_resources(device_t dev)
{
struct aic_pccard_softc *sc = device_get_softc(dev);
int rid;
sc->sc_port = sc->sc_irq = NULL;
rid = 0;
sc->sc_port = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT, &rid,
AIC_PCCARD_PORTSIZE, RF_ACTIVE);
if (!sc->sc_port)
return (ENOMEM);
rid = 0;
sc->sc_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_ACTIVE);
if (!sc->sc_irq) {
aic_pccard_release_resources(dev);
return (ENOMEM);
}
sc->sc_aic.dev = dev;
sc->sc_aic.res = sc->sc_port;
mtx_init(&sc->sc_aic.lock, "aic", NULL, MTX_DEF);
return (0);
}
static void
aic_pccard_release_resources(device_t dev)
{
struct aic_pccard_softc *sc = device_get_softc(dev);
if (sc->sc_port)
bus_release_resource(dev, SYS_RES_IOPORT, 0, sc->sc_port);
if (sc->sc_irq)
bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq);
sc->sc_port = sc->sc_irq = NULL;
mtx_destroy(&sc->sc_aic.lock);
}
static int
aic_pccard_probe(device_t dev)
{
const struct pccard_product *pp;
if ((pp = pccard_product_lookup(dev, aic_pccard_products,
sizeof(aic_pccard_products[0]), NULL)) != NULL) {
if (pp->pp_name != NULL)
device_set_desc(dev, pp->pp_name);
else
device_set_desc(dev,
"Adaptec 6260/6360 SCSI controller");
return (BUS_PROBE_DEFAULT);
}
return (ENXIO);
}
static int
aic_pccard_attach(device_t dev)
{
struct aic_pccard_softc *sc = device_get_softc(dev);
struct aic_softc *aic = &sc->sc_aic;
int error;
if (aic_pccard_alloc_resources(dev))
return (ENXIO);
if (aic_probe(aic)) {
aic_pccard_release_resources(dev);
return (ENXIO);
}
error = aic_attach(aic);
if (error) {
device_printf(dev, "attach failed\n");
aic_pccard_release_resources(dev);
return (error);
}
error = bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_CAM | INTR_ENTROPY |
INTR_MPSAFE, NULL, aic_intr, aic, &sc->sc_ih);
if (error) {
device_printf(dev, "failed to register interrupt handler\n");
aic_pccard_release_resources(dev);
return (error);
}
return (0);
}
static int
aic_pccard_detach(device_t dev)
{
struct aic_pccard_softc *sc = device_get_softc(dev);
struct aic_softc *aic = &sc->sc_aic;
int error;
error = bus_teardown_intr(dev, sc->sc_irq, sc->sc_ih);
if (error) {
device_printf(dev, "failed to unregister interrupt handler\n");
}
error = aic_detach(aic);
if (error) {
device_printf(dev, "detach failed\n");
return (error);
}
aic_pccard_release_resources(dev);
return (0);
}
static device_method_t aic_pccard_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, aic_pccard_probe),
DEVMETHOD(device_attach, aic_pccard_attach),
DEVMETHOD(device_detach, aic_pccard_detach),
{ 0, 0 }
};
static driver_t aic_pccard_driver = {
"aic",
aic_pccard_methods, sizeof(struct aic_pccard_softc),
};
extern devclass_t aic_devclass;
MODULE_DEPEND(aic, cam, 1,1,1);
DRIVER_MODULE(aic, pccard, aic_pccard_driver, aic_devclass, 0, 0);
PCCARD_PNP_INFO(aic_pccard_products);

View File

@ -1,160 +0,0 @@
/*-
* SPDX-License-Identifier: BSD-2-Clause-FreeBSD
*
* Copyright (c) 1999 Luoqi Chen.
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*
* $FreeBSD$
*/
struct aic_transinfo {
u_int8_t period;
u_int8_t offset;
};
struct aic_tinfo {
u_int16_t lubusy;
u_int8_t flags;
u_int8_t scsirate;
struct aic_transinfo current;
struct aic_transinfo goal;
struct aic_transinfo user;
};
#define TINFO_DISC_ENB 0x01
#define TINFO_TAG_ENB 0x02
#define TINFO_SDTR_NEGO 0x04
#define TINFO_SDTR_SENT 0x08
struct aic_scb {
union ccb *ccb;
SLIST_ENTRY(aic_scb) link;
struct callout timer;
u_int8_t flags;
u_int8_t tag;
u_int8_t target;
u_int8_t lun;
u_int8_t status;
u_int8_t cmd_len;
u_int8_t *cmd_ptr;
u_int32_t data_len;
u_int8_t *data_ptr;
};
#define ccb_scb_ptr spriv_ptr0
#define ccb_aic_ptr spriv_ptr1
#define SCB_ACTIVE 0x01
#define SCB_DISCONNECTED 0x02
#define SCB_DEVICE_RESET 0x04
#define SCB_SENSE 0x08
enum { AIC6260, AIC6360, AIC6370, GM82C700 };
struct aic_softc {
device_t dev;
struct mtx lock;
struct resource *res;
bus_dma_tag_t dmat;
struct cam_sim *sim;
struct cam_path *path;
TAILQ_HEAD(,ccb_hdr) pending_ccbs, nexus_ccbs;
SLIST_HEAD(,aic_scb) free_scbs;
struct aic_scb *nexus;
u_int32_t flags;
u_int8_t initiator;
u_int8_t state;
u_int8_t target;
u_int8_t lun;
u_int8_t prev_phase;
u_int8_t msg_outq;
u_int8_t msg_sent;
int msg_len;
char msg_buf[8];
struct aic_tinfo tinfo[8];
struct aic_scb scbs[256];
int min_period;
int max_period;
int chip_type;
};
#define AIC_DISC_ENABLE 0x01
#define AIC_DMA_ENABLE 0x02
#define AIC_PARITY_ENABLE 0x04
#define AIC_DWIO_ENABLE 0x08
#define AIC_RESOURCE_SHORTAGE 0x10
#define AIC_DROP_MSGIN 0x20
#define AIC_BUSFREE_OK 0x40
#define AIC_FAST_ENABLE 0x80
#define AIC_IDLE 0x00
#define AIC_SELECTING 0x01
#define AIC_RESELECTED 0x02
#define AIC_RECONNECTING 0x03
#define AIC_HASNEXUS 0x04
#define AIC_MSG_IDENTIFY 0x01
#define AIC_MSG_TAG_Q 0x02
#define AIC_MSG_SDTR 0x04
#define AIC_MSG_WDTR 0x08
#define AIC_MSG_MSGBUF 0x80
#define AIC_SYNC_PERIOD (200 / 4)
#define AIC_FAST_SYNC_PERIOD (100 / 4)
#define AIC_MIN_SYNC_PERIOD 112
#define AIC_SYNC_OFFSET 8
#define aic_inb(aic, port) \
bus_read_1((aic)->res, (port))
#define aic_outb(aic, port, value) \
bus_write_1((aic)->res, (port), (value))
#define aic_insb(aic, port, addr, count) \
bus_read_multi_1((aic)->res, (port), (addr), (count))
#define aic_outsb(aic, port, addr, count) \
bus_write_multi_1((aic)->res, (port), (addr), (count))
#define aic_insw(aic, port, addr, count) \
bus_read_multi_2((aic)->res, (port), (u_int16_t *)(addr), (count))
#define aic_outsw(aic, port, addr, count) \
bus_write_multi_2((aic)->res, (port), (u_int16_t *)(addr), (count))
#define aic_insl(aic, port, addr, count) \
bus_read_multi_4((aic)->res, (port), (u_int32_t *)(addr), (count))
#define aic_outsl(aic, port, addr, count) \
bus_write_multi_4((aic)->res, (port), (u_int32_t *)(addr), (count))
extern int aic_probe(struct aic_softc *);
extern int aic_attach(struct aic_softc *);
extern int aic_detach(struct aic_softc *);
extern void aic_intr(void *);

View File

@ -27,7 +27,6 @@ SUBDIR= \
age \
${_agp} \
ahci \
${_aic} \
aic7xxx \
alc \
ale \
@ -747,7 +746,6 @@ _vmm= vmm
# XXX some of these can move now, but are untested on other architectures.
_3dfx= 3dfx
_3dfx_linux= 3dfx_linux
_aic= aic
_apm= apm
.if ${MK_SOURCELESS_UCODE} != "no"
_ce= ce

View File

@ -1,10 +0,0 @@
# $FreeBSD$
.PATH: ${SRCTOP}/sys/dev/aic
KMOD= aic
SRCS= aic.c aic_isa.c aic_pccard.c
SRCS+= device_if.h bus_if.h pci_if.h isa_if.h card_if.h pccarddevs.h
SRCS+= opt_cam.h opt_scsi.h
.include <bsd.kmod.mk>