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:
parent
9a361720d6
commit
d2ba8e57b7
@ -2,8 +2,7 @@
|
||||
|
||||
PACKAGE=runtime-manuals
|
||||
|
||||
MAN= aic.4 \
|
||||
apm.4 \
|
||||
MAN= apm.4 \
|
||||
ce.4 \
|
||||
cp.4 \
|
||||
CPU_ELAN.4 \
|
||||
|
@ -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.
|
@ -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
|
||||
|
@ -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}"
|
||||
|
@ -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
|
||||
|
1601
sys/dev/aic/aic.c
1601
sys/dev/aic/aic.c
File diff suppressed because it is too large
Load Diff
@ -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
|
@ -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);
|
@ -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);
|
@ -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 *);
|
@ -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
|
||||
|
@ -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>
|
Loading…
x
Reference in New Issue
Block a user