NetBSD/sys/dev/pci
mycroft f9d629fb93 Fix more probe delay and/or failure problems:
1) Don't wait for DRQ on an IDENTIFY command -- if it's not set when we see
   BSY clear, abort the command and ignore the drive.  (Do this by testing
   for DRQ in the read/write cases in __wdccommand_intr().)
2) Don't wait for DRQ to deassert when we finish an IDENTIFY (or any other
   non-block command that reads data) -- we don't do this for block I/O, and
   empirically it doesn't clear on my CF cards at all, causing a pointless 1s
   delay.
3) Add comments to some of the delay()s, and add missing ones in wdcreset()
   and the WDCC_RECAL in the so-called "pre-ATA" probe.
4) Slightly simplify the reset sequence -- we were doing an extra I/O.
5) Modify the register writability test to make sure that registers are not
   overlapped -- this can happen in some weird cases with a missing device 1.
6) Check the error register value after the reset -- if it's not 01h or 81h,
   as appropriate (see ATA spec), punt.
Tested with a number of ATA-only, ATAPI-only, mixed ATA-ATAPI, CF, and IDE
disk configurations.

Also remove the SINGLE_DRIVE nonsense again.
2003-09-23 09:19:22 +00:00
..
bktr Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
aac_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
adv_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
adw_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
agp_ali.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
agp_amd.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
agp_i810.c Compile in the i845/i865 fallback attachment code only if generic AGP Intel 2003-09-07 15:40:57 +00:00
agp_intel.c Rework support for i845, i865 and i875P. agp(4) now doesn't "kill" the 2003-08-26 18:43:54 +00:00
agp_sis.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
agp_via.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
agp.c Add support for i865G integrated graphics support to agp(4). Patches 2003-08-26 17:33:22 +00:00
agpreg.h Add support for i855 agp. From FreeBSD. 2003-07-20 18:56:32 +00:00
agpvar.h function prototype must not have variable name 2003-07-08 10:06:28 +00:00
ahc_pci.c make ahc(4) to recognize Adaptec 2915LP Ultra160 SCSI adapter. 2003-08-18 09:16:22 +00:00
ahd_pci.c Make this less chatty on probe/attach, to match the output of other controllers. 2003-09-02 20:59:51 +00:00
amdpm.c Revert previous change, which was wrong. As Enami points out, we really do 2003-09-01 06:30:24 +00:00
amdpmreg.h
amr.c Fix reversed arguments to bus_space_unmap. 2003-05-15 18:04:08 +00:00
amrreg.h - Fix the mailbox protocol. Not tested with newer 'Quartz' controllers. 2003-05-04 16:15:35 +00:00
amrvar.h Fix thinko. 2003-05-14 11:22:55 +00:00
auich.c Add entry for Intel 82801EB AC-97 audio. Audio sounds fine with this, 2003-08-19 21:04:22 +00:00
auichreg.h DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
autri.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
autrireg.h
autrivar.h
auvia.c Enable auvia_reset_codec's code and wait until the card is available. 2003-09-14 14:48:17 +00:00
auviavar.h
bha_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
btvmei.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
btvmeii.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
btvmeireg.h
btvmeivar.h
cac_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
cmpci.c Add extensible malloc types, adapted from FreeBSD. This turns 2003-02-01 06:23:35 +00:00
cmpcireg.h
cmpcivar.h
com_puc.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
cs428x.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
cs428x.h DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
cs428xreg.h
cs4280_image.h
cs4280.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
cs4280reg.h
cs4281.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
cs4281reg.h
cy82c693.c
cy82c693reg.h
cy82c693var.h
cy_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
cz.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
czreg.h
devlist2h.awk
dpt_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
eap.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
eapreg.h Silly me for assuming that the CT5880 cards could be identified by looking 2002-12-14 17:52:47 +00:00
ehci_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
emuxki.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
emuxkireg.h unknown, not unkown. Noted by mjl. 2003-01-28 22:19:22 +00:00
emuxkivar.h DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
esa.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
esadsp.h
esareg.h
esavar.h
esiop_pci.c Need <uvm/uvm_extern.h>. 2003-04-09 01:35:12 +00:00
esm.c Fix printf format warnings. 2003-02-03 01:11:54 +00:00
esmreg.h First cut at recording support for the ESS Maestro-2 and 2e. 2002-12-30 05:23:27 +00:00
esmvar.h Add extensible malloc types, adapted from FreeBSD. This turns 2003-02-01 06:23:35 +00:00
eso.c unask -> unmask 2003-02-05 00:07:34 +00:00
esoreg.h
esovar.h
files.agp
files.pci Remove unused "skge" defns. 2003-09-08 18:59:48 +00:00
fms.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
fmsvar.h
fwlynx_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
fwohci_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
gtp.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
hifn7751.c Remove an unnececssary PCI config read. 2003-08-28 18:13:33 +00:00
hifn7751reg.h Discard previous driver; it didnt really do anything. 2003-07-30 18:49:27 +00:00
hifn7751var.h Discard previous driver; it didnt really do anything. 2003-07-30 18:49:27 +00:00
i82365_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
i82365_pcivar.h
icp_pci.c Only need to report the PCI product ID in the management ioctls. 2003-06-29 01:20:50 +00:00
if_an_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_atw_pci.c Oops. Add the atw(4) sources, too. 2003-07-06 22:57:23 +00:00
if_bge.c From FreeBSD as suggested by Nicolas Joly in PR kern/22682: 2003-09-05 08:53:23 +00:00
if_bgereg.h Support the BCM5704C rev 3. From Nicolas Joly, PR 22620 2003-08-27 23:13:50 +00:00
if_de.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
if_devar.h
if_en_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_ep_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_epic_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_esh_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_ex_pci.c Some models of the 556B don't turn on the transmitter without magic 2003-06-05 22:11:21 +00:00
if_fpa.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_fxp_pci.c fix description of Intel PRO/100 VM Network Controller with 82562ET/EZ PHY 2003-09-13 12:13:29 +00:00
if_gem_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
if_gsip.c
if_hme_pci.c Lookup and use the Ethernet address in the FCode PROM, 2002-12-26 22:59:51 +00:00
if_le_pci.c Move UCB-licensed code from 4-clause to 3-clause licence. 2003-08-07 16:26:28 +00:00
if_levar.h
if_lmc_common.c
if_lmc_media.c hz -> Hz 2003-02-22 04:57:48 +00:00
if_lmc_nbsd.c Use PAGE_SIZE rather than NBPG. 2003-04-01 02:01:43 +00:00
if_lmc_types.h
if_lmc.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
if_lmcioctl.h function prototype must not have variable name 2003-07-08 10:06:28 +00:00
if_lmcvar.h
if_mtd_pci.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
if_ne_pci.c
if_ntwoc_pci.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
if_ntwoc_pcireg.h
if_pcn.c add rnd hooks 2003-07-21 08:38:56 +00:00
if_pcnreg.h
if_rtk_pci.c Set RTK_ENABLE flag when it attached. This fixed multicast problem. 2003-01-29 12:57:36 +00:00
if_sf_pci.c Replace magic numbers for power management control with PCI_PMCSR* macros. 2002-12-23 02:58:36 +00:00
if_sip.c KNF 2003-08-25 20:36:47 +00:00
if_sipreg.h accept 1518-byte frames (needed for vlan). Valtteri Vuorikoski 2003-08-15 07:29:34 +00:00
if_sk.c Fix a printf format. 2003-09-08 19:17:29 +00:00
if_skreg.h retain the FreeBSD RCS Id for xmaciireg.h for reference 2003-08-26 21:14:08 +00:00
if_skvar.h Add driver for SysKonnect SK-9821 and 3COM 3C940 gigabit ethernet boards 2003-08-26 21:11:00 +00:00
if_ste.c Add a missed htole32() for DMA txdescs. 2003-06-05 16:33:43 +00:00
if_stereg.h
if_stge.c Argh. Commited the wrong file. 2003-03-01 19:49:45 +00:00
if_stgereg.h Centralize the interrupt bits for the 3 registers where they are being used. 2003-02-10 21:10:06 +00:00
if_ti.c Add missing binding of VLAN tag to received packet. 2003-02-09 21:43:43 +00:00
if_tireg.h coaless -> coalesce. 2003-05-14 13:03:36 +00:00
if_tl.c tl(4) supports ETHERCAP_VLAN_MTU. 2003-03-19 17:23:26 +00:00
if_tlp_pci.c Properly reset PHY on ZNYX boards which are composed of 2003-06-27 12:25:38 +00:00
if_tlregs.h
if_tlvar.h
if_txp.c make the vlan stuff work 2003-08-20 17:41:38 +00:00
if_txpreg.h some cleanup/fixes: 2003-07-07 15:18:24 +00:00
if_vr.c add VT6105 support to vr(4) 2003-08-23 00:14:28 +00:00
if_vrreg.h From freebsd if_vr.c:1.43,1.56 and if_vrreg.h:1.11,1.14 2003-01-03 19:01:09 +00:00
if_wi_pci.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
if_wm.c Add support for jumbo (9K) frames. Add support for larger receive 2003-09-10 04:02:17 +00:00
if_wmreg.h Use proper shift marcos for EXT. This makes the PHY on i83543 get 2003-05-30 02:08:55 +00:00
ifpci2.c
ifpci.c
igsfb_pci.c Redo attachment to support proper cnattach. 2003-05-10 01:51:56 +00:00
igsfb_pcivar.h Redo attachment to support proper cnattach. 2003-05-10 01:51:56 +00:00
iha_pci.c
iop_pci.c
isic_pci_elsa_qs1p.c We are getting passed an integer value via a void* arg (in an ioctl() like 2003-05-08 21:18:42 +00:00
isic_pci.c
isic_pci.h
isp_pci.c Add in changes from Matt Thomas to check for 64 bit PCI stuff. 2003-08-07 01:05:56 +00:00
iwic_bchan.c
iwic_dchan.c
iwic_fsm.c
iwic_pci.c We are getting passed an integer value via a void* arg (in an ioctl() like 2003-05-08 21:18:42 +00:00
iwicreg.h
iwicvar.h function prototype must not have variable name 2003-07-08 10:06:28 +00:00
joy_eso.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
joy_pci.c
ld_amr.c - Fix the mailbox protocol. Not tested with newer 'Quartz' controllers. 2003-05-04 16:15:35 +00:00
ld_twe.c Add support for dynamically attaching and detaching RAID array units. 2003-09-22 18:31:10 +00:00
lpt_puc.c
machfb.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
machfbreg.h
Makefile
Makefile.pcidevs
mlx_pci.c
mly_tables.h revert for now -- cancelled seems to be used more often than canceled 2003-03-31 03:35:02 +00:00
mly.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
mlyio.h
mlyreg.h
mlyvar.h
mpt_pci.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
mpu_cmpci.c
mpu_eso.c
mpu_fms.c
mpu_yds.c
neo-coeff.h
neo.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
neoreg.h
oboe.c add missing __KERNEL_RCSID() 2003-07-14 15:47:00 +00:00
oboereg.h
ohci_pci.c
opl_cmpci.c
opl_eso.c
opl_fms.c
opl_sv.c
opl_yds.c
pccbb.c regard as the card is removed if one of CCD1# and CCD2# is deasserted. 2003-06-19 10:48:58 +00:00
pccbbreg.h
pccbbvar.h PCI-CardBus bridge support for sparc64: 2003-03-22 06:25:14 +00:00
pci_map.c
pci_quirks.c - check HDRTYPE early, and ignore if it is not supported (n > 2). 2003-08-15 07:17:21 +00:00
pci_subr.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
pci_usrreq.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
pci.c support new quirk bits on debug output 2003-08-18 05:39:07 +00:00
pciconf.c Add an option to disable fast back-to-back transfers since this 2003-03-31 21:04:40 +00:00
pciconf.h
pcidevs Redo, again. 2003-09-21 14:23:21 +00:00
pcidevs_data.h Regen. 2003-09-21 14:27:40 +00:00
pcidevs.h Regen. 2003-09-21 14:27:40 +00:00
pciide_acard_reg.h
pciide_acer_reg.h
pciide_amd_reg.h * Enable Ultra133 on the NVIDIA nForce 2. 2003-01-24 05:51:04 +00:00
pciide_apollo_reg.h
pciide_cmd_reg.h
pciide_cy693_reg.h
pciide_hpt_reg.h
pciide_i31244_reg.h Add register definitions for the Intel i31244 Serial ATA controller. 2003-03-18 01:41:54 +00:00
pciide_opti_reg.h
pciide_pdc202xx_reg.h Correct setup of General Purpose Register for PDC20265 (Ultra/100) and newer. 2003-06-28 23:13:26 +00:00
pciide_piix_reg.h
pciide_sii3112_reg.h Add support for the Silicon Image SATALink 3112 Serial ATA controller. 2003-03-20 04:22:49 +00:00
pciide_sis_reg.h Rework SiS support: more controller supported (up to Ultra/133) and better 2003-03-14 22:46:05 +00:00
pciide_sl82c105_reg.h
pciide.c Fix more probe delay and/or failure problems: 2003-09-23 09:19:22 +00:00
pciidereg.h
pciidevar.h GC a structure element. 2003-09-23 09:11:43 +00:00
pciio.h
pcireg.h Define PCI32_DMA_BOUNCE_THRESHOLD 2003-05-05 13:04:29 +00:00
pcivar.h - check HDRTYPE early, and ignore if it is not supported (n > 2). 2003-08-15 07:17:21 +00:00
pcscp.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
pcscpreg.h
plx9060reg.h
plx9060var.h
ppb.c Handle 64bit DMA addresses on PCI for platforms that can (currently only 2003-06-15 23:08:53 +00:00
ppbreg.h
puc.c It is not appropriate for pcivar.h to include "locators.h" 2003-03-19 17:56:58 +00:00
puccn.c Also pass a type argument to comcnattach() and com_kgdb_attach(). 2003-06-14 17:01:06 +00:00
puccn.h function prototype must not have variable name 2003-07-08 10:06:28 +00:00
pucdata.c
pucvar.h
README
siop_pci_common.c Use PAGE_SIZE rather than NBPG. 2003-04-09 00:28:28 +00:00
siop_pci_common.h
siop_pci.c Use PAGE_SIZE rather than NBPG. 2003-04-09 00:28:28 +00:00
sv.c DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
svreg.h
svvar.h DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
tga_conf.c
tga.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
tgareg.h
tgavar.h
trm.c
trmreg.h
twe.c Add support for dynamically attaching and detaching RAID array units. 2003-09-22 18:31:10 +00:00
tweio.h Add TWEIO_{ADD,DEL}_UNIT ioctls (used by 3ware management tools). From 2003-09-22 01:44:57 +00:00
twereg.h Add a few additional control bits and opcodes. From FreeBSD. 2003-09-22 01:28:25 +00:00
twevar.h Add support for dynamically attaching and detaching RAID array units. 2003-09-22 18:31:10 +00:00
ubsec.c * Make matching and chip info table-driven. 2003-08-28 19:00:52 +00:00
ubsecreg.h Preliminary port of merged OpenBSD/FreeBSD ubsec driver for Bluesteel 2003-08-01 00:08:55 +00:00
ubsecvar.h Preliminary port of merged OpenBSD/FreeBSD ubsec driver for Bluesteel 2003-08-01 00:08:55 +00:00
uhci_pci.c
universe_pci_var.h
universe_pci.c Use aprint_*(). 2003-01-31 00:07:39 +00:00
usb_pci.c
usb_pci.h
vga_pci.c Back out the lwp/ktrace changes. They contained a lot of colateral damage, 2003-06-29 22:28:00 +00:00
vga_pcivar.h
viaenv.c
viapm.c Use aprint_normal() in cfprint routines. 2003-01-01 00:10:15 +00:00
viapmvar.h
weasel_pci.c
weaselreg.h
yds.c Disable ISA DMA emulation for SoundBlaster module explicitly. 2003-03-12 13:36:22 +00:00
ydsreg.h Disable ISA DMA emulation for SoundBlaster module explicitly. 2003-03-12 13:36:22 +00:00
ydsvar.h

$NetBSD: README,v 1.3 1998/08/15 03:02:46 mycroft Exp $

This directory contains files which are used during PCI configuration
and PCI device drivers.  Eventually, most of the device drivers and
some of the configuration support should become machine-independent
and be moved to a more general location.

The configuration support was implemented according to the `PCI Local
Bus Specification, Production Version, Revision 2.0' dated April 30,
1993.  Section numbers referred to in the code may be specific to that
edition of the specification.

Some attempt has been made to insure that the code works on rogue
machines where the BIOS doesn't do its job, but in general I can't
guarantee that.

--
- Charles M. Hannum
  NetBSD group
  August 8, 1994