diff --git a/sys/conf/files b/sys/conf/files index 30ed300b5cef..96b47bb1a562 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,1177 +1,1177 @@ # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # aicasm optional ahc \ dependency "$S/dev/aic7xxx/aicasm/*.[chyl]" \ compile-with "${MAKE} -f $S/dev/aic7xxx/aicasm/Makefile MAKESRCPATH=$S/dev/aic7xxx/aicasm" \ no-obj no-implicit-rule \ clean "aicasm aicasm_gram.c aicasm_scan.c y.tab.h" aic7xxx_{seq,reg}.h optional ahc \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h $S/dev/aic7xxx/aic7xxx.seq" \ no-obj no-implicit-rule before-depend \ clean "aic7xxx_seq.h aic7xxx_reg.h" \ dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" kern/device_if.m standard kern/bus_if.m standard kern/linker_if.m standard cam/cam.c optional scbus cam/cam_extend.c optional scbus cam/cam_periph.c optional scbus cam/cam_queue.c optional scbus cam/cam_sim.c optional scbus cam/cam_xpt.c optional scbus cam/scsi/scsi_all.c optional scbus cam/scsi/scsi_cd.c optional cd cam/scsi/scsi_ch.c optional ch cam/scsi/scsi_da.c optional da cam/scsi/scsi_low.c optional ncv cam/scsi/scsi_low.c optional nsp cam/scsi/scsi_low.c optional stg cam/scsi/scsi_low_pisa.c optional ncv cam/scsi/scsi_low_pisa.c optional nsp cam/scsi/scsi_low_pisa.c optional stg cam/scsi/scsi_pass.c optional pass cam/scsi/scsi_pt.c optional pt cam/scsi/scsi_sa.c optional sa cam/scsi/scsi_ses.c optional ses cam/scsi/scsi_targ_bh.c optional targbh cam/scsi/scsi_target.c optional targ coda/coda_fbsd.c count vcoda coda/coda_namecache.c optional vcoda coda/coda_psdev.c optional vcoda coda/coda_subr.c optional vcoda coda/coda_venus.c optional vcoda coda/coda_vfsops.c optional vcoda coda/coda_vnops.c optional vcoda contrib/dev/acpica/Subsystem/Common/cmalloc.c optional acpica contrib/dev/acpica/Subsystem/Common/cmclib.c optional acpica contrib/dev/acpica/Subsystem/Common/cmcopy.c optional acpica contrib/dev/acpica/Subsystem/Common/cmdebug.c optional acpica contrib/dev/acpica/Subsystem/Common/cmdelete.c optional acpica contrib/dev/acpica/Subsystem/Common/cmeval.c optional acpica contrib/dev/acpica/Subsystem/Common/cmglobal.c optional acpica contrib/dev/acpica/Subsystem/Common/cminit.c optional acpica contrib/dev/acpica/Subsystem/Common/cmobject.c optional acpica contrib/dev/acpica/Subsystem/Common/cmutils.c optional acpica contrib/dev/acpica/Subsystem/Common/cmxface.c optional acpica contrib/dev/acpica/Subsystem/Debugger/dbcmds.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbdisasm.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbdisply.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbexec.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbfileio.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbhistry.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbinput.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbstats.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbutils.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Debugger/dbxface.c optional acpica acpi_debug contrib/dev/acpica/Subsystem/Dispatcher/dsfield.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dsmethod.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dsmthdat.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dsobject.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dsopcode.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dsutils.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dswexec.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dswload.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dswscope.c optional acpica contrib/dev/acpica/Subsystem/Dispatcher/dswstate.c optional acpica contrib/dev/acpica/Subsystem/Events/evevent.c optional acpica contrib/dev/acpica/Subsystem/Events/evmisc.c optional acpica contrib/dev/acpica/Subsystem/Events/evregion.c optional acpica contrib/dev/acpica/Subsystem/Events/evrgnini.c optional acpica contrib/dev/acpica/Subsystem/Events/evsci.c optional acpica contrib/dev/acpica/Subsystem/Events/evxface.c optional acpica contrib/dev/acpica/Subsystem/Events/evxfevnt.c optional acpica contrib/dev/acpica/Subsystem/Events/evxfregn.c optional acpica contrib/dev/acpica/Subsystem/Hardware/hwacpi.c optional acpica contrib/dev/acpica/Subsystem/Hardware/hwgpe.c optional acpica contrib/dev/acpica/Subsystem/Hardware/hwregs.c optional acpica contrib/dev/acpica/Subsystem/Hardware/hwxface.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amconfig.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amcreate.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amdump.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amdyadic.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amfield.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amfldio.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/ammisc.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/ammonad.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amnames.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amprep.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amregion.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amresnte.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amresolv.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amresop.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amstore.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amstoren.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amstorob.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amsystem.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amutils.c optional acpica contrib/dev/acpica/Subsystem/Interpreter/amxface.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsaccess.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsalloc.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsdump.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nseval.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsinit.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsload.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsnames.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsobject.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nssearch.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsutils.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nswalk.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsxfname.c optional acpica contrib/dev/acpica/Subsystem/Namespace/nsxfobj.c optional acpica contrib/dev/acpica/Subsystem/Parser/psargs.c optional acpica contrib/dev/acpica/Subsystem/Parser/psfind.c optional acpica contrib/dev/acpica/Subsystem/Parser/psopcode.c optional acpica contrib/dev/acpica/Subsystem/Parser/psparse.c optional acpica contrib/dev/acpica/Subsystem/Parser/psscope.c optional acpica contrib/dev/acpica/Subsystem/Parser/pstree.c optional acpica contrib/dev/acpica/Subsystem/Parser/psutils.c optional acpica contrib/dev/acpica/Subsystem/Parser/pswalk.c optional acpica contrib/dev/acpica/Subsystem/Parser/psxface.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsaddr.c optional acpica contrib/dev/acpica/Subsystem/Resources/rscalc.c optional acpica contrib/dev/acpica/Subsystem/Resources/rscreate.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsdump.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsio.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsirq.c optional acpica contrib/dev/acpica/Subsystem/Resources/rslist.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsmemory.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsmisc.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsutils.c optional acpica contrib/dev/acpica/Subsystem/Resources/rsxface.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbconvrt.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbget.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbinstal.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbutils.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbxface.c optional acpica contrib/dev/acpica/Subsystem/Tables/tbxfroot.c optional acpica crypto/blowfish/bf_cbc.c optional ipsec ipsec_esp crypto/blowfish/bf_cbc_m.c optional ipsec ipsec_esp crypto/blowfish/bf_enc.c optional ipsec ipsec_esp crypto/blowfish/bf_skey.c optional ipsec ipsec_esp crypto/cast128/cast128.c optional ipsec ipsec_esp crypto/cast128/cast128_cbc.c optional ipsec ipsec_esp crypto/des/des_3cbc.c optional ipsec ipsec_esp crypto/des/des_cbc.c optional ipsec ipsec_esp crypto/des/des_ecb.c optional ipsec ipsec_esp crypto/des/des_setkey.c optional ipsec ipsec_esp crypto/rc5/rc5.c optional ipsec ipsec_esp crypto/rc5/rc5_cbc.c optional ipsec ipsec_esp crypto/sha1.c optional ipsec ddb/db_access.c optional ddb ddb/db_break.c optional ddb ddb/db_command.c optional ddb ddb/db_examine.c optional ddb ddb/db_expr.c optional ddb ddb/db_input.c optional ddb ddb/db_kld.c optional ddb ddb/db_lex.c optional ddb ddb/db_output.c optional ddb ddb/db_print.c optional ddb ddb/db_ps.c optional ddb ddb/db_run.c optional ddb ddb/db_sym.c optional ddb ddb/db_sysctl.c optional ddb ddb/db_trap.c optional ddb ddb/db_variables.c optional ddb ddb/db_watch.c optional ddb ddb/db_write_cmd.c optional ddb dev/aac/aac.c optional aac #dev/aac/aac_debug.c optional aac dev/aac/aac_disk.c optional aac dev/aac/aac_pci.c optional aac pci dev/acpica/acpi.c optional acpica dev/acpica/acpi_acad.c optional acpica dev/acpica/acpi_apic.c optional acpica dev/acpica/acpi_button.c optional acpica dev/acpica/acpi_cmbat.c optional acpica dev/acpica/acpi_ec.c optional acpica dev/acpica/acpi_isa.c optional acpica isa dev/acpica/acpi_lid.c optional acpica dev/acpica/acpi_pcib.c optional acpica pci dev/acpica/acpi_processor.c optional acpica dev/acpica/acpi_resource.c optional acpica dev/acpica/acpi_thermal.c optional acpica dev/acpica/acpi_timer.c optional acpica dev/acpica/Osd/OsdDebug.c optional acpica dev/acpica/Osd/OsdEnvironment.c optional acpica dev/acpica/Osd/OsdHardware.c optional acpica dev/acpica/Osd/OsdInterrupt.c optional acpica dev/acpica/Osd/OsdMemory.c optional acpica dev/acpica/Osd/OsdSchedule.c optional acpica dev/acpica/Osd/OsdStream.c optional acpica dev/acpica/Osd/OsdSynch.c optional acpica dev/advansys/adv_eisa.c optional adv eisa dev/advansys/adv_pci.c optional adv pci dev/advansys/advansys.c optional adv dev/advansys/advlib.c optional adv dev/advansys/advmcode.c optional adv dev/advansys/adw_pci.c optional adw pci dev/advansys/adwcam.c optional adw dev/advansys/adwlib.c optional adw dev/advansys/adwmcode.c optional adw dev/aha/aha.c count aha dev/aha/aha_isa.c optional aha isa dev/aha/aha_mca.c optional aha mca dev/ahb/ahb.c optional ahb eisa dev/aic/aic.c optional aic dev/aic/aic_pccard.c optional aic card dev/aic/aic_pccard.c optional aic pccard dev/aic7xxx/aic7770.c optional ahc eisa dev/aic7xxx/ahc_eisa.c optional ahc eisa #dev/aic7xxx/ahc_isa.c optional ahc isa dev/aic7xxx/ahc_pci.c optional ahc pci dev/aic7xxx/aic7xxx.c optional ahc dev/aic7xxx/aic7xxx_93cx6.c optional ahc dev/aic7xxx/aic7xxx_freebsd.c optional ahc dev/aic7xxx/aic7xxx_pci.c optional ahc pci dev/amr/amr.c optional amr dev/amr/amr_disk.c optional amr dev/amr/amr_pci.c optional amr dev/an/if_an.c optional an dev/an/if_an_isa.c optional an isa dev/an/if_an_pccard.c optional an card dev/an/if_an_pci.c optional an pci dev/asr/asr.c optional asr pci dev/ata/ata-all.c count ata dev/ata/ata-disk.c count atadisk dev/ata/ata-raid.c count atadisk dev/ata/ata-dma.c optional ata dev/ata/atapi-all.c optional atapicd dev/ata/atapi-all.c optional atapifd dev/ata/atapi-all.c optional atapist dev/ata/atapi-cd.c count atapicd dev/ata/atapi-fd.c count atapifd dev/ata/atapi-tape.c count atapist dev/awi/am79c930.c optional awi dev/awi/awi.c optional awi dev/awi/awi_wep.c optional awi dev/awi/awi_wicfg.c optional awi dev/awi/if_awi_pccard.c optional awi card dev/bktr/bktr_audio.c optional bktr pci dev/bktr/bktr_card.c optional bktr pci dev/bktr/bktr_core.c count bktr pci dev/bktr/bktr_i2c.c optional bktr pci smbus dev/bktr/bktr_os.c optional bktr pci dev/bktr/bktr_tuner.c optional bktr pci dev/buslogic/bt.c optional bt dev/buslogic/bt_eisa.c optional bt eisa dev/buslogic/bt_isa.c optional bt isa dev/buslogic/bt_mca.c optional bt mca dev/buslogic/bt_pci.c optional bt pci dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/ccd/ccd.c count ccd dev/cs/if_cs.c optional cs dev/dgb/dgb.c count dgb dev/dgb/dgm.c count dgm #dev/dpt/dpt_control.c optional dpt dev/dpt/dpt_eisa.c optional dpt eisa dev/dpt/dpt_pci.c optional dpt pci dev/dpt/dpt_scsi.c optional dpt dev/ed/if_ed.c optional ed dev/ed/if_ed_pccard.c optional ed card dev/ed/if_ed_pccard.c optional ed pccard dev/ed/if_ed_pci.c optional ed pci dev/en/midway.c count en dev/ep/if_ep.c optional ep dev/ep/if_ep_eisa.c optional ep eisa dev/ep/if_ep_isa.c optional ep isa dev/ep/if_ep_mca.c optional ep mca dev/ep/if_ep_pccard.c optional ep card dev/ep/if_ep_pccard.c optional ep pccard dev/ex/if_ex.c optional ex dev/ex/if_ex_isa.c optional ex isa dev/ex/if_ex_pccard.c optional ex card dev/fe/if_fe.c optional fe dev/fe/if_fe_pccard.c optional fe card dev/hea/eni.c optional hea dev/hea/eni_buffer.c optional hea dev/hea/eni_globals.c optional hea dev/hea/eni_if.c optional hea dev/hea/eni_init.c optional hea dev/hea/eni_intr.c optional hea dev/hea/eni_receive.c optional hea dev/hea/eni_transmit.c optional hea dev/hea/eni_vcm.c optional hea dev/hfa/fore_buffer.c optional hfa dev/hfa/fore_command.c optional hfa dev/hfa/fore_globals.c optional hfa dev/hfa/fore_if.c optional hfa dev/hfa/fore_init.c optional hfa dev/hfa/fore_intr.c optional hfa dev/hfa/fore_load.c optional hfa dev/hfa/fore_output.c optional hfa dev/hfa/fore_receive.c optional hfa dev/hfa/fore_stats.c optional hfa dev/hfa/fore_timer.c optional hfa dev/hfa/fore_transmit.c optional hfa dev/hfa/fore_vcm.c optional hfa dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida dev/ida/ida_disk.c optional ida dev/ida/ida_eisa.c optional ida eisa dev/ida/ida_pci.c optional ida pci dev/ie/if_ie.c count ie isa dev/iicbus/iicbb_if.m optional iicbb dev/iicbus/iicbus_if.m optional iicbus dev/iicbus/if_ic.c optional ic dev/iicbus/iic.c optional iic dev/iicbus/iicbb.c optional iicbb dev/iicbus/iicbus.c optional iicbus dev/iicbus/iiconf.c optional iicbus dev/iicbus/iicsmb.c optional iicsmb \ dependency "iicbus_if.h" dev/isp/isp.c optional isp dev/isp/isp_freebsd.c optional isp dev/isp/isp_target.c optional isp +dev/isp/isp_pci.c optional isp dev/ispfw/ispfw.c optional ispfw dev/lmc/if_lmc.c optional lmc dev/lnc/if_lnc.c count lnc dev/lnc/if_lnc_isa.c optional lnc isa dev/lnc/if_lnc_pc98.c optional lnc isa dev/lnc/if_lnc_pci.c optional lnc pci dev/ncv/ncr53c500.c optional ncv dev/ncv/ncr53c500_pccard.c optional ncv card dev/nsp/nsp.c optional nsp dev/nsp/nsp_pccard.c optional nsp card dev/mca/mca_bus.c optional mca dev/md/md.c optional md dev/mii/amphy.c optional miibus dev/mii/brgphy.c optional miibus dev/mii/dcphy.c optional miibus dev/mii/exphy.c optional miibus dev/mii/mii.c optional miibus dev/mii/mii_physubr.c optional miibus dev/mii/mlphy.c optional miibus dev/mii/nsphy.c optional miibus dev/mii/pnphy.c optional miibus dev/mii/pnaphy.c optional miibus dev/mii/rlphy.c optional miibus dev/mii/tdkphy.c optional miibus dev/mii/tlphy.c optional miibus dev/mii/ukphy.c optional miibus dev/mii/ukphy_subr.c optional miibus dev/mii/xmphy.c optional miibus dev/mii/miibus_if.m optional miibus dev/mlx/mlx.c optional mlx dev/mlx/mlx_disk.c optional mlx dev/mlx/mlx_pci.c optional mlx dev/mly/mly.c optional mly dev/mly/mly_cam.c optional mly dev/mly/mly_pci.c optional mly dev/musycc/musycc.c optional musycc dev/null/null.c standard dev/pccard/card_if.m optional card dev/pccard/card_if.m optional cardbus dev/pccard/card_if.m optional pccard dev/pccard/pccard.c optional pccard dev/pccard/pccard_cis.c optional pccard dev/pccard/pccard_cis_quirks.c optional pccard dev/pccard/power_if.m optional pccbb dev/pccard/power_if.m optional pccard dev/pci/eisa_pci.c optional pci dev/pci/fixup_pci.c optional pci dev/pci/ignore_pci.c optional pci dev/pci/isa_pci.c optional pci dev/pci/pci.c count pci dev/pci/pci_if.m optional pci dev/pci/pci_pci.c optional pci dev/pci/pci_user.c optional pci dev/pci/pcib_if.m optional pci dev/pcic/i82365.c optional pcic pccard dev/pcic/i82365_isa.c optional pcic pccard dev/pdq/if_fea.c optional fea eisa dev/pdq/if_fpa.c count fpa pci dev/pdq/pdq.c optional fea eisa dev/pdq/pdq.c optional fpa pci dev/pdq/pdq_ifsubr.c optional fea eisa dev/pdq/pdq_ifsubr.c optional fpa pci dev/ppbus/ppbus_if.m optional ppbus dev/ppbus/if_plip.c optional plip dev/ppbus/immio.c optional vpo dev/ppbus/lpbb.c optional lpbb dev/ppbus/lpt.c optional lpt dev/ppbus/pcfclock.c optional pcfclock dev/ppbus/ppb_1284.c optional ppbus dev/ppbus/ppb_base.c optional ppbus dev/ppbus/ppb_msq.c optional ppbus dev/ppbus/ppbconf.c optional ppbus dev/ppbus/ppi.c optional ppi dev/ppbus/pps.c optional pps dev/ppbus/vpo.c optional vpo dev/ppbus/vpoio.c optional vpo dev/random/harvest.c standard dev/random/randomdev.c optional random dev/random/yarrow.c optional random dev/random/hash.c optional random crypto/blowfish/bf_cbc.c optional random crypto/blowfish/bf_enc.c optional random crypto/blowfish/bf_skey.c optional random dev/ray/if_ray.c optional ray card dev/ray/if_ray.c optional ray pccard dev/rp/rp.c optional rp dev/rp/rp_isa.c optional rp isa dev/rp/rp_pci.c optional rp pci dev/si/si.c optional si dev/si/si2_z280.c optional si dev/si/si3_t225.c optional si dev/si/si_eisa.c optional si eisa dev/si/si_isa.c optional si isa dev/si/si_pci.c optional si pci dev/smbus/smbus_if.m optional smbus dev/smbus/smb.c optional smb dev/smbus/smbconf.c optional smbus dev/smbus/smbus.c count smbus dev/sn/if_sn.c optional sn dev/sn/if_sn_isa.c optional sn isa dev/sn/if_sn_pccard.c optional sn card dev/sn/if_sn_pccard.c optional sn pccard dev/sound/isa/ad1816.c optional pcm isa dev/sound/isa/emu8000.c optional midi isa dev/sound/isa/es1888.c optional pcm isa dev/sound/isa/ess.c optional pcm isa dev/sound/isa/gusc.c optional gusc isa dev/sound/isa/gusc.c optional pcm isa dev/sound/isa/gusmidi.c optional midi isa dev/sound/isa/mpu.c optional midi isa dev/sound/isa/mss.c optional pcm isa dev/sound/isa/opl.c optional midi isa dev/sound/isa/sb16.c optional pcm isa dev/sound/isa/sb8.c optional pcm isa dev/sound/isa/sbc.c optional pcm isa dev/sound/isa/sbc.c optional sbc isa dev/sound/isa/uartsio.c optional midi isa dev/sound/midi/midi.c optional midi dev/sound/midi/midibuf.c optional midi dev/sound/midi/midisynth.c optional midi dev/sound/midi/sequencer.c optional seq midi #dev/sound/pci/aureal.c optional pcm pci dev/sound/pci/csa.c optional csa pci dev/sound/pci/csa.c optional pcm pci dev/sound/pci/csamidi.c optional midi csa dev/sound/pci/csapcm.c optional pcm pci dev/sound/pci/ds1.c optional pcm pci dev/sound/pci/emu10k1.c optional pcm pci dev/sound/pci/es137x.c optional pcm pci dev/sound/pci/fm801.c optional pcm pci dev/sound/pci/maestro.c optional pcm pci dev/sound/pci/neomagic.c optional pcm pci dev/sound/pci/solo.c optional pcm pci dev/sound/pci/t4dwave.c optional pcm pci dev/sound/pci/via82c686.c optional pcm pci dev/sound/pcm/ac97.c optional pcm dev/sound/pcm/ac97_if.m optional pcm dev/sound/pcm/buffer.c optional pcm dev/sound/pcm/channel.c optional pcm dev/sound/pcm/channel_if.m optional pcm dev/sound/pcm/dsp.c optional pcm dev/sound/pcm/fake.c optional pcm dev/sound/pcm/feeder.c optional pcm dev/sound/pcm/feeder_if.m optional pcm dev/sound/pcm/feeder_fmt.c optional pcm #dev/sound/pcm/feeder_rate.c optional pcm dev/sound/pcm/mixer.c optional pcm dev/sound/pcm/mixer_if.m optional pcm dev/sound/pcm/sound.c optional pcm #dev/sound/usb/upcm.c optional pcm usb dev/streams/streams.c optional streams dev/stg/tmc18c30.c optional stg dev/stg/tmc18c30_pccard.c optional stg card dev/stg/tmc18c30_isa.c optional stg isa dev/sym/sym_hipd.c optional sym \ dependency "$S/dev/sym/sym_{conf,defs}.h" dev/tdfx/tdfx_pci.c optional tdfx dev/twe/twe.c optional twe dev/twe/twe_freebsd.c optional twe # # USB support dev/usb/usb_if.m optional usb dev/usb/hid.c optional usb dev/usb/if_aue.c optional aue dev/usb/if_cue.c optional cue dev/usb/if_kue.c optional kue dev/usb/ohci.c optional ohci dev/usb/udbp.c optional udbp dev/usb/ugen.c optional ugen dev/usb/uhci.c optional uhci dev/usb/uhid.c optional uhid dev/usb/uhub.c optional usb dev/usb/ukbd.c optional ukbd dev/usb/ulpt.c optional ulpt dev/usb/umass.c optional umass dev/usb/umodem.c optional umodem dev/usb/ums.c optional ums dev/usb/urio.c optional urio dev/usb/uscanner.c optional uscanner dev/usb/usb.c optional usb dev/usb/usb_ethersubr.c optional usb #dev/usb/usb_mem.c optional usb dev/usb/usb_quirks.c optional usb dev/usb/usb_subr.c optional usb dev/usb/usbdi.c optional usb dev/usb/usbdi_util.c optional usb dev/vinum/vinum.c optional vinum dev/vinum/vinumconfig.c optional vinum dev/vinum/vinumdaemon.c optional vinum dev/vinum/vinuminterrupt.c optional vinum dev/vinum/vinumio.c optional vinum dev/vinum/vinumioctl.c optional vinum dev/vinum/vinumlock.c optional vinum dev/vinum/vinummemory.c optional vinum dev/vinum/vinumparser.c optional vinum dev/vinum/vinumraid5.c optional vinum dev/vinum/vinumrequest.c optional vinum dev/vinum/vinumrevive.c optional vinum dev/vinum/vinumstate.c optional vinum dev/vinum/vinumutil.c optional vinum dev/vn/vn.c optional vn dev/vx/if_vx.c optional vx dev/vx/if_vx_eisa.c optional vx eisa dev/vx/if_vx_pci.c optional vx pci dev/wds/wd7000.c optional wds isa dev/wi/if_wi.c optional wi card dev/xe/if_xe.c optional xe card fs/devfs/devfs_vnops.c optional devfs fs/devfs/devfs_vfsops.c optional devfs fs/devfs/devfs_devs.c optional devfs gnu/ext2fs/ext2_alloc.c optional ext2fs gnu/ext2fs/ext2_balloc.c optional ext2fs gnu/ext2fs/ext2_inode.c optional ext2fs gnu/ext2fs/ext2_inode_cnv.c optional ext2fs gnu/ext2fs/ext2_linux_balloc.c optional ext2fs gnu/ext2fs/ext2_linux_ialloc.c optional ext2fs gnu/ext2fs/ext2_lookup.c optional ext2fs gnu/ext2fs/ext2_subr.c optional ext2fs gnu/ext2fs/ext2_vfsops.c optional ext2fs gnu/ext2fs/ext2_vnops.c optional ext2fs # # isdn4bsd device drivers # i4b/driver/i4b_trace.c count i4btrc i4b/driver/i4b_rbch.c count i4brbch i4b/driver/i4b_tel.c count i4btel i4b/driver/i4b_ipr.c count i4bipr net/slcompress.c optional i4bipr i4b/driver/i4b_ctl.c count i4bctl i4b/driver/i4b_ing.c count i4bing i4b/driver/i4b_isppp.c count i4bisppp i4b/driver/i4b_ispppsubr.c optional i4bisppp net/slcompress.c optional i4bisppp # # isdn4bsd support # i4b/layer2/i4b_mbuf.c optional i4btrc # # isdn4bsd Q.921 handler # i4b/layer2/i4b_l2.c count i4bq921 i4b/layer2/i4b_l2fsm.c optional i4bq921 i4b/layer2/i4b_uframe.c optional i4bq921 i4b/layer2/i4b_tei.c optional i4bq921 i4b/layer2/i4b_sframe.c optional i4bq921 i4b/layer2/i4b_iframe.c optional i4bq921 i4b/layer2/i4b_l2timer.c optional i4bq921 i4b/layer2/i4b_util.c optional i4bq921 i4b/layer2/i4b_lme.c optional i4bq921 # # isdn4bsd Q.931 handler # i4b/layer3/i4b_q931.c count i4bq931 i4b/layer3/i4b_l3fsm.c optional i4bq931 i4b/layer3/i4b_l3timer.c optional i4bq931 i4b/layer3/i4b_l2if.c optional i4bq931 i4b/layer3/i4b_l4if.c optional i4bq931 i4b/layer3/i4b_q932fac.c optional i4bq931 # # isdn4bsd control device driver, interface to isdnd # i4b/layer4/i4b_i4bdrv.c count i4b i4b/layer4/i4b_l4.c optional i4b i4b/layer4/i4b_l4mgmt.c optional i4b i4b/layer4/i4b_l4timer.c optional i4b # isa/isa_if.m optional isa isa/isa_common.c count isa isa/isahint.c optional isa isa/joy.c optional joy isa/pnp.c optional isa isa/pnpparse.c optional isa isofs/cd9660/cd9660_bmap.c optional cd9660 isofs/cd9660/cd9660_lookup.c optional cd9660 isofs/cd9660/cd9660_node.c optional cd9660 isofs/cd9660/cd9660_rrip.c optional cd9660 isofs/cd9660/cd9660_util.c optional cd9660 isofs/cd9660/cd9660_vfsops.c optional cd9660 isofs/cd9660/cd9660_vnops.c optional cd9660 kern/imgact_elf.c standard kern/imgact_shell.c standard kern/inflate.c optional gzip kern/init_main.c standard kern/init_sysent.c standard kern/kern_acct.c standard kern/kern_acl.c standard kern/kern_cap.c standard kern/kern_clock.c standard kern/kern_conf.c standard kern/kern_descrip.c standard kern/kern_environment.c standard kern/kern_event.c standard kern/kern_exec.c standard kern/kern_exit.c standard kern/kern_fork.c standard kern/kern_idle.c standard kern/kern_intr.c standard kern/kern_jail.c standard kern/kern_kthread.c standard kern/kern_ktr.c optional ktr kern/kern_ktrace.c standard kern/kern_linker.c standard kern/kern_lock.c standard kern/kern_lockf.c standard kern/kern_malloc.c standard kern/kern_mib.c standard kern/kern_module.c standard kern/kern_mutex.c standard kern/kern_ntptime.c standard kern/kern_physio.c standard kern/kern_proc.c standard kern/kern_prot.c standard kern/kern_resource.c standard kern/kern_shutdown.c standard kern/kern_sig.c standard kern/kern_subr.c standard kern/kern_switch.c standard kern/kern_synch.c standard kern/kern_syscalls.c standard kern/kern_sysctl.c standard kern/kern_tc.c standard kern/kern_time.c standard kern/kern_timeout.c standard kern/kern_xxx.c standard kern/link_elf.c standard kern/md5c.c standard kern/subr_autoconf.c standard kern/subr_blist.c standard kern/subr_bus.c standard kern/subr_devstat.c standard kern/subr_disk.c standard kern/subr_disklabel.c standard kern/subr_diskslice.c standard kern/subr_eventhandler.c standard kern/subr_kobj.c standard kern/subr_log.c standard kern/subr_module.c standard kern/subr_prf.c standard kern/subr_prof.c standard kern/subr_rman.c standard kern/subr_sbuf.c standard kern/subr_scanf.c standard kern/subr_taskqueue.c standard kern/subr_xxx.c standard kern/sys_generic.c standard kern/sys_pipe.c standard kern/sys_process.c standard kern/sys_socket.c standard kern/syscalls.c optional witness kern/sysv_ipc.c standard kern/sysv_msg.c optional sysvmsg kern/sysv_sem.c optional sysvsem kern/sysv_shm.c optional sysvshm kern/tty.c standard kern/tty_compat.c standard kern/tty_conf.c standard kern/tty_cons.c standard kern/tty_pty.c optional pty kern/tty_snoop.c count snp kern/tty_subr.c standard kern/tty_tty.c standard kern/uipc_accf.c optional inet kern/uipc_domain.c standard kern/uipc_mbuf.c standard kern/uipc_mbuf2.c standard kern/uipc_proto.c standard kern/uipc_socket.c standard kern/uipc_socket2.c standard kern/uipc_syscalls.c standard kern/uipc_usrreq.c standard kern/vfs_aio.c standard kern/vfs_bio.c standard kern/vfs_cache.c standard kern/vfs_cluster.c standard kern/vfs_conf.c standard kern/vfs_default.c standard kern/vfs_init.c standard kern/vfs_lookup.c standard kern/vfs_subr.c standard kern/vfs_syscalls.c standard kern/vfs_vnops.c standard # # These files in libkern/ are those needed by all architectures. Some # of the files in libkern/ are only needed on some architectures, e.g., # libkern/divdi3.c is needed by i386 but not alpha. Also, some of these # routines may be optimized for a particular platform. In either case, # the file should be moved to /conf/files. from here. # libkern/arc4random.c standard libkern/bcd.c standard libkern/index.c standard libkern/inet_ntoa.c standard libkern/mcount.c optional profiling-routine libkern/qsort.c standard libkern/random.c standard libkern/rindex.c standard libkern/scanc.c standard libkern/skpc.c standard libkern/strcat.c standard libkern/strcmp.c standard libkern/strcpy.c standard libkern/strlen.c standard libkern/strncmp.c standard libkern/strncpy.c standard libkern/strtol.c standard libkern/strtoq.c standard libkern/strtoul.c standard libkern/strtouq.c standard miscfs/deadfs/dead_vnops.c standard miscfs/fdesc/fdesc_vfsops.c optional fdesc miscfs/fdesc/fdesc_vnops.c optional fdesc miscfs/fifofs/fifo_vnops.c standard miscfs/nullfs/null_subr.c optional nullfs miscfs/nullfs/null_vfsops.c optional nullfs miscfs/nullfs/null_vnops.c optional nullfs miscfs/portal/portal_vfsops.c optional portal miscfs/portal/portal_vnops.c optional portal miscfs/procfs/procfs_ctl.c optional procfs miscfs/procfs/procfs_dbregs.c standard miscfs/procfs/procfs_fpregs.c standard miscfs/procfs/procfs_map.c optional procfs miscfs/procfs/procfs_mem.c standard miscfs/procfs/procfs_note.c optional procfs miscfs/procfs/procfs_regs.c standard miscfs/procfs/procfs_rlimit.c optional procfs miscfs/procfs/procfs_status.c optional procfs miscfs/procfs/procfs_subr.c optional procfs miscfs/procfs/procfs_type.c optional procfs miscfs/procfs/procfs_vfsops.c optional procfs miscfs/procfs/procfs_vnops.c optional procfs miscfs/specfs/spec_vnops.c standard miscfs/umapfs/umap_subr.c optional umapfs miscfs/umapfs/umap_vfsops.c optional umapfs miscfs/umapfs/umap_vnops.c optional umapfs miscfs/union/union_subr.c optional union miscfs/union/union_vfsops.c optional union miscfs/union/union_vnops.c optional union msdosfs/msdosfs_conv.c optional msdosfs msdosfs/msdosfs_denode.c optional msdosfs msdosfs/msdosfs_fat.c optional msdosfs msdosfs/msdosfs_lookup.c optional msdosfs msdosfs/msdosfs_vfsops.c optional msdosfs msdosfs/msdosfs_vnops.c optional msdosfs net/bpf.c standard net/bpf_filter.c count bpf net/bridge.c optional bridge net/bsd_comp.c optional ppp_bsdcomp #net/hostcache.c standard net/if.c standard net/if_atmsubr.c optional atm net/if_disc.c optional disc net/if_ef.c optional ef net/if_ethersubr.c optional ether net/if_faith.c count faith net/if_fddisubr.c optional fddi net/if_gif.c count gif net/if_iso88025subr.c optional token net/if_loop.c count loop net/if_media.c standard net/if_mib.c standard net/if_ppp.c count ppp net/if_sl.c optional sl net/if_spppsubr.c count sppp net/if_stf.c count stf net/if_tun.c optional tun net/if_tap.c optional tap net/if_vlan.c count vlan net/intrq.c standard net/net_osdep.c standard net/ppp_deflate.c optional ppp_deflate net/ppp_tty.c optional ppp net/pfil.c optional pfil_hooks net/pfil.c optional ipfilter net/radix.c standard net/raw_cb.c standard net/raw_usrreq.c standard net/route.c standard net/rtsock.c standard net/slcompress.c optional ppp net/slcompress.c optional sl net/zlib.c optional ppp_deflate net/zlib.c optional ipsec netatalk/aarp.c optional netatalk netatalk/at_control.c optional netatalk netatalk/at_proto.c optional netatalk netatalk/at_rmx.c optional netatalkdebug netatalk/ddp_input.c optional netatalk netatalk/ddp_output.c optional netatalk netatalk/ddp_usrreq.c optional netatalk netatm/atm_aal5.c optional atm_core netatm/atm_cm.c optional atm_core netatm/atm_device.c optional atm_core netatm/atm_if.c optional atm_core netatm/atm_proto.c optional atm_core netatm/atm_signal.c optional atm_core netatm/atm_socket.c optional atm_core netatm/atm_subr.c optional atm_core netatm/atm_usrreq.c optional atm_core netatm/ipatm/ipatm_event.c optional atm_ip atm_core netatm/ipatm/ipatm_if.c optional atm_ip atm_core netatm/ipatm/ipatm_input.c optional atm_ip atm_core netatm/ipatm/ipatm_load.c optional atm_ip atm_core netatm/ipatm/ipatm_output.c optional atm_ip atm_core netatm/ipatm/ipatm_usrreq.c optional atm_ip atm_core netatm/ipatm/ipatm_vcm.c optional atm_ip atm_core netatm/sigpvc/sigpvc_if.c optional atm_sigpvc atm_core netatm/sigpvc/sigpvc_subr.c optional atm_sigpvc atm_core netatm/spans/spans_arp.c optional atm_spans atm_core \ dependency "spans_xdr.h" netatm/spans/spans_cls.c optional atm_spans atm_core netatm/spans/spans_if.c optional atm_spans atm_core netatm/spans/spans_kxdr.c optional atm_spans atm_core netatm/spans/spans_msg.c optional atm_spans atm_core netatm/spans/spans_print.c optional atm_spans atm_core netatm/spans/spans_proto.c optional atm_spans atm_core netatm/spans/spans_subr.c optional atm_spans atm_core netatm/spans/spans_util.c optional atm_spans atm_core spans_xdr.h optional atm_spans atm_core \ before-depend \ dependency "$S/netatm/spans/spans_xdr.x" \ compile-with "rpcgen -h -C $S/netatm/spans/spans_xdr.x > spans_xdr.h" \ clean "spans_xdr.h" \ no-obj no-implicit-rule spans_xdr.c optional atm_spans atm_core \ before-depend \ dependency "$S/netatm/spans/spans_xdr.x" \ compile-with "rpcgen -c -C $S/netatm/spans/spans_xdr.x > spans_xdr.c" \ clean "spans_xdr.c" \ no-obj no-implicit-rule local spans_xdr.o optional atm_spans atm_core \ dependency "$S/netatm/spans/spans_xdr.x" \ compile-with "${NORMAL_C}" \ no-implicit-rule local netatm/uni/q2110_sigaa.c optional atm_uni atm_core netatm/uni/q2110_sigcpcs.c optional atm_uni atm_core netatm/uni/q2110_subr.c optional atm_uni atm_core netatm/uni/qsaal1_sigaa.c optional atm_uni atm_core netatm/uni/qsaal1_sigcpcs.c optional atm_uni atm_core netatm/uni/qsaal1_subr.c optional atm_uni atm_core netatm/uni/sscf_uni.c optional atm_uni atm_core netatm/uni/sscf_uni_lower.c optional atm_uni atm_core netatm/uni/sscf_uni_upper.c optional atm_uni atm_core netatm/uni/sscop.c optional atm_uni atm_core netatm/uni/sscop_lower.c optional atm_uni atm_core netatm/uni/sscop_pdu.c optional atm_uni atm_core netatm/uni/sscop_sigaa.c optional atm_uni atm_core netatm/uni/sscop_sigcpcs.c optional atm_uni atm_core netatm/uni/sscop_subr.c optional atm_uni atm_core netatm/uni/sscop_timer.c optional atm_uni atm_core netatm/uni/sscop_upper.c optional atm_uni atm_core netatm/uni/uni_load.c optional atm_uni atm_core netatm/uni/uniarp.c optional atm_uni atm_core netatm/uni/uniarp_cache.c optional atm_uni atm_core netatm/uni/uniarp_input.c optional atm_uni atm_core netatm/uni/uniarp_output.c optional atm_uni atm_core netatm/uni/uniarp_timer.c optional atm_uni atm_core netatm/uni/uniarp_vcm.c optional atm_uni atm_core netatm/uni/uniip.c optional atm_uni atm_core netatm/uni/unisig_decode.c optional atm_uni atm_core netatm/uni/unisig_encode.c optional atm_uni atm_core netatm/uni/unisig_if.c optional atm_uni atm_core netatm/uni/unisig_mbuf.c optional atm_uni atm_core netatm/uni/unisig_msg.c optional atm_uni atm_core netatm/uni/unisig_print.c optional atm_uni atm_core netatm/uni/unisig_proto.c optional atm_uni atm_core netatm/uni/unisig_sigmgr_state.c optional atm_uni atm_core netatm/uni/unisig_subr.c optional atm_uni atm_core netatm/uni/unisig_util.c optional atm_uni atm_core netatm/uni/unisig_vc_state.c optional atm_uni atm_core netgraph/ng_UI.c optional netgraph_UI netgraph/ng_async.c optional netgraph_async netgraph/ng_base.c optional netgraph netgraph/ng_bpf.c optional netgraph_bpf net/bpf_filter.c optional netgraph_bpf netgraph/ng_bridge.c optional netgraph_bridge netgraph/ng_cisco.c optional netgraph_cisco netgraph/ng_echo.c optional netgraph_echo netgraph/ng_ether.c optional netgraph_ether netgraph/ng_frame_relay.c optional netgraph_frame_relay netgraph/ng_hole.c optional netgraph_hole netgraph/ng_iface.c optional netgraph_iface netgraph/ng_ksocket.c optional netgraph_ksocket netgraph/ng_lmi.c optional netgraph_lmi netgraph/ng_mppc.c optional netgraph_mppc_compression # The next two files (plus the header file net/mppc.h) are proprietary and # must be obtained elsewhere in order to enable NETGRAPH_MPPC_COMPRESSION net/mppcc.c optional netgraph_mppc_compression net/mppcd.c optional netgraph_mppc_compression netgraph/ng_mppc.c optional netgraph_mppc_encryption crypto/rc4/rc4.c optional awi crypto/rc4/rc4.c optional netgraph_mppc_encryption crypto/sha1.c optional netgraph_mppc_encryption netgraph/ng_one2many.c optional netgraph_one2many netgraph/ng_parse.c optional netgraph netgraph/ng_ppp.c optional netgraph_ppp netgraph/ng_pppoe.c optional netgraph_pppoe netgraph/ng_pptpgre.c optional netgraph_pptpgre netgraph/ng_rfc1490.c optional netgraph_rfc1490 netgraph/ng_socket.c optional netgraph_socket netgraph/ng_tee.c optional netgraph_tee netgraph/ng_tty.c optional netgraph_tty netgraph/ng_vjc.c optional netgraph_vjc net/slcompress.c optional netgraph_vjc netinet/accf_data.c optional accept_filter_data netinet/accf_http.c optional accept_filter_http netinet/fil.c optional ipfilter inet netinet/if_atm.c optional atm netinet/if_ether.c optional ether netinet/igmp.c optional inet netinet/in.c optional inet netinet/in_gif.c optional gif inet #netinet/in_hostcache.c optional inet netinet/in_pcb.c optional inet netinet/in_proto.c optional inet netinet/in_rmx.c optional inet netinet/ip_auth.c optional ipfilter inet netinet/ip_divert.c optional ipdivert netinet/ip_dummynet.c optional dummynet netinet/ip_ecn.c optional inet netinet/ip_ecn.c optional inet6 netinet/ip_encap.c optional inet netinet/ip_encap.c optional inet6 netinet/ip_fil.c optional ipfilter inet netinet/ip_flow.c optional inet netinet/ip_frag.c optional ipfilter inet netinet/ip_fw.c optional ipfirewall netinet/ip_icmp.c optional inet netinet/ip_input.c optional inet netinet/ip_log.c optional ipfilter inet netinet/ip_mroute.c optional inet netinet/ip_nat.c optional ipfilter inet netinet/ip_output.c optional inet netinet/ip_proxy.c optional ipfilter inet netinet/ip_state.c optional ipfilter inet netinet/mlfk_ipl.c optional ipfilter inet netinet/raw_ip.c optional inet netinet/tcp_debug.c optional tcpdebug netinet/tcp_input.c optional inet netinet/tcp_output.c optional inet netinet/tcp_subr.c optional inet netinet/tcp_timer.c optional inet netinet/tcp_usrreq.c optional inet netinet/udp_usrreq.c optional inet netinet6/ah_core.c optional ipsec netinet6/ah_input.c optional ipsec netinet6/ah_output.c optional ipsec netinet6/dest6.c optional inet6 netinet6/esp_core.c optional ipsec ipsec_esp netinet6/esp_input.c optional ipsec ipsec_esp netinet6/esp_output.c optional ipsec ipsec_esp netinet6/frag6.c optional inet6 netinet6/icmp6.c optional inet6 netinet6/in6.c optional inet6 netinet6/in6_cksum.c optional inet6 netinet6/in6_gif.c optional gif inet6 netinet6/in6_ifattach.c optional inet6 netinet6/in6_pcb.c optional inet6 netinet6/in6_prefix.c optional inet6 netinet6/in6_proto.c optional inet6 netinet6/in6_rmx.c optional inet6 netinet6/in6_src.c optional inet6 netinet6/ip6_forward.c optional inet6 netinet6/ip6_fw.c optional inet6 ipv6firewall netinet6/ip6_input.c optional inet6 netinet6/ip6_mroute.c optional inet6 netinet6/ip6_output.c optional inet6 netinet6/ipcomp_core.c optional ipsec netinet6/ipcomp_input.c optional ipsec netinet6/ipcomp_output.c optional ipsec netinet6/ipsec.c optional ipsec netinet6/mld6.c optional inet6 netinet6/nd6.c optional inet6 netinet6/nd6_nbr.c optional inet6 netinet6/nd6_rtr.c optional inet6 netinet6/raw_ip6.c optional inet6 netinet6/route6.c optional inet6 netinet6/scope6.c optional inet6 netinet6/udp6_output.c optional inet6 netinet6/udp6_usrreq.c optional inet6 netipx/ipx.c optional ipx netipx/ipx_cksum.c optional ipx netipx/ipx_input.c optional ipx netipx/ipx_ip.c optional ipx netipx/ipx_outputfl.c optional ipx netipx/ipx_pcb.c optional ipx netipx/ipx_proto.c optional ipx netipx/ipx_tun.c optional ipx netipx/ipx_usrreq.c optional ipx netipx/spx_debug.c optional ipx netipx/spx_usrreq.c optional ipx netkey/key.c optional ipsec netkey/keydb.c optional ipsec netkey/key_debug.c optional ipsec netkey/keysock.c optional ipsec netnatm/natm.c optional natm netnatm/natm_pcb.c optional natm netnatm/natm_proto.c optional natm netncp/ncp_conn.c optional ncp netncp/ncp_crypt.c optional ncp netncp/ncp_login.c optional ncp netncp/ncp_mod.c optional ncp netncp/ncp_ncp.c optional ncp netncp/ncp_nls.c optional ncp netncp/ncp_rq.c optional ncp netncp/ncp_sock.c optional ncp netncp/ncp_subr.c optional ncp netns/idp_usrreq.c optional ns netns/ns.c optional ns netns/ns_error.c optional ns netns/ns_input.c optional ns netns/ns_ip.c optional ns netns/ns_output.c optional ns netns/ns_pcb.c optional ns netns/ns_proto.c optional ns netns/spp_debug.c optional ns netns/spp_usrreq.c optional ns nfs/bootp_subr.c optional bootp nfs/krpc_subr.c optional bootp nfs/nfs_bio.c optional nfs nfs/nfs_node.c optional nfs nfs/nfs_nqlease.c optional nfs nfs/nfs_serv.c optional nfs nfs/nfs_socket.c optional nfs nfs/nfs_srvcache.c optional nfs nfs/nfs_subs.c optional nfs nfs/nfs_syscalls.c optional nfs nfs/nfs_vfsops.c optional nfs nfs/nfs_vnops.c optional nfs ntfs/ntfs_compr.c optional ntfs ntfs/ntfs_ihash.c optional ntfs ntfs/ntfs_subr.c optional ntfs ntfs/ntfs_vfsops.c optional ntfs ntfs/ntfs_vnops.c optional ntfs nwfs/nwfs_io.c optional nwfs nwfs/nwfs_ioctl.c optional nwfs nwfs/nwfs_node.c optional nwfs nwfs/nwfs_subr.c optional nwfs nwfs/nwfs_vfsops.c optional nwfs nwfs/nwfs_vnops.c optional nwfs pccard/pccard.c count card pccard/pccard_beep.c optional card pccard/pccard_nbk.c optional card pccard/pcic.c optional pcic card pci/agp.c optional agp pci/agp_if.m optional agp pci/agp_intel.c optional agp pci/agp_via.c optional agp pci/agp_sis.c optional agp pci/agp_ali.c optional agp pci/agp_amd.c optional agp pci/agp_i810.c optional agp pci/alpm.c optional alpm pci/amd.c optional amd pci/cy_pci.c optional cy pci pci/if_ar_p.c count ar pci pci/if_dc.c optional dc pci/if_de.c optional de pci/if_en_pci.c optional en pci pci/if_fxp.c optional fxp pci/if_mn.c optional mn pci/if_pcn.c optional pcn pci/if_rl.c optional rl pci/if_sf.c optional sf pci/if_sis.c optional sis pci/if_sk.c optional sk pci/if_sr_p.c optional sr pci pci/if_ste.c optional ste pci/if_ti.c optional ti pci/if_tl.c optional tl pci/if_tx.c optional tx pci/if_vr.c optional vr pci/if_wb.c optional wb pci/if_wx.c optional wx pci/if_xl.c optional xl pci/intpm.c optional intpm -pci/isp_pci.c optional isp pci/meteor.c count meteor pci pci/ncr.c optional ncr pci/ohci_pci.c optional ohci dev/pccbb/pccbb.c optional pccbb pci/pcic_p.c optional pcic pci card pci/simos.c optional simos pci/uhci_pci.c optional uhci pci/xrpu.c optional xrpu posix4/ksched.c optional _kposix_priority_scheduling posix4/p1003_1b.c standard posix4/posix4_mib.c standard ufs/ffs/ffs_alloc.c optional ffs ufs/ffs/ffs_alloc.c optional ifs ufs/ffs/ffs_alloc.c optional mfs ufs/ffs/ffs_balloc.c optional ffs ufs/ffs/ffs_balloc.c optional ifs ufs/ffs/ffs_balloc.c optional mfs ufs/ffs/ffs_inode.c optional ffs ufs/ffs/ffs_inode.c optional ifs ufs/ffs/ffs_inode.c optional mfs ufs/ffs/ffs_snapshot.c optional ffs ufs/ffs/ffs_snapshot.c optional ifs ufs/ffs/ffs_snapshot.c optional mfs ufs/ffs/ffs_softdep.c optional softupdates ufs/ffs/ffs_softdep_stub.c standard ufs/ffs/ffs_subr.c optional ffs ufs/ffs/ffs_subr.c optional ifs ufs/ffs/ffs_subr.c optional mfs ufs/ffs/ffs_tables.c optional ffs ufs/ffs/ffs_tables.c optional ifs ufs/ffs/ffs_tables.c optional mfs ufs/ffs/ffs_vfsops.c optional ffs ufs/ffs/ffs_vfsops.c optional ifs ufs/ffs/ffs_vfsops.c optional mfs ufs/ffs/ffs_vnops.c optional ffs ufs/ffs/ffs_vnops.c optional ifs ufs/ffs/ffs_vnops.c optional mfs ufs/mfs/mfs_vfsops.c optional mfs ufs/mfs/mfs_vnops.c optional mfs ufs/ufs/ufs_bmap.c standard ufs/ufs/ufs_extattr.c standard ufs/ufs/ufs_ihash.c standard ufs/ufs/ufs_inode.c standard ufs/ufs/ufs_lookup.c standard ufs/ifs/ifs_lookup.c optional ifs ufs/ifs/ifs_vfsops.c optional ifs ufs/ifs/ifs_vnops.c optional ifs ufs/ifs/ifs_subr.c optional ifs ufs/ufs/ufs_quota.c standard ufs/ufs/ufs_vfsops.c standard ufs/ufs/ufs_vnops.c standard vm/default_pager.c standard vm/device_pager.c standard vm/phys_pager.c standard vm/swap_pager.c standard vm/vm_fault.c standard vm/vm_glue.c standard vm/vm_init.c standard vm/vm_kern.c standard vm/vm_map.c standard vm/vm_meter.c standard vm/vm_mmap.c standard vm/vm_object.c standard vm/vm_page.c standard vm/vm_pageout.c standard vm/vm_pager.c standard vm/vm_swap.c standard vm/vm_unix.c standard vm/vm_zone.c standard vm/vnode_pager.c standard diff --git a/sys/pci/isp_pci.c b/sys/pci/isp_pci.c deleted file mode 100644 index 6186615dc460..000000000000 --- a/sys/pci/isp_pci.c +++ /dev/null @@ -1,1826 +0,0 @@ -/* $FreeBSD$ */ -/* - * PCI specific probe and attach routines for Qlogic ISP SCSI adapters. - * FreeBSD Version. - * - * Copyright (c) 1997, 1998, 1999, 2000 by Matthew Jacob - * - * 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 immediately at the beginning of the file, without modification, - * 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 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 -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -static u_int16_t isp_pci_rd_reg __P((struct ispsoftc *, int)); -static void isp_pci_wr_reg __P((struct ispsoftc *, int, u_int16_t)); -static u_int16_t isp_pci_rd_reg_1080 __P((struct ispsoftc *, int)); -static void isp_pci_wr_reg_1080 __P((struct ispsoftc *, int, u_int16_t)); -static int isp_pci_mbxdma __P((struct ispsoftc *)); -static int isp_pci_dmasetup __P((struct ispsoftc *, XS_T *, - ispreq_t *, u_int16_t *, u_int16_t)); -static void -isp_pci_dmateardown __P((struct ispsoftc *, XS_T *, u_int32_t)); - -static void isp_pci_reset1 __P((struct ispsoftc *)); -static void isp_pci_dumpregs __P((struct ispsoftc *, const char *)); - -#ifndef ISP_CODE_ORG -#define ISP_CODE_ORG 0x1000 -#endif - -static struct ispmdvec mdvec = { - isp_pci_rd_reg, - isp_pci_wr_reg, - isp_pci_mbxdma, - isp_pci_dmasetup, - isp_pci_dmateardown, - NULL, - isp_pci_reset1, - isp_pci_dumpregs, - NULL, - BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_64 -}; - -static struct ispmdvec mdvec_1080 = { - isp_pci_rd_reg_1080, - isp_pci_wr_reg_1080, - isp_pci_mbxdma, - isp_pci_dmasetup, - isp_pci_dmateardown, - NULL, - isp_pci_reset1, - isp_pci_dumpregs, - NULL, - BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_64 -}; - -static struct ispmdvec mdvec_12160 = { - isp_pci_rd_reg_1080, - isp_pci_wr_reg_1080, - isp_pci_mbxdma, - isp_pci_dmasetup, - isp_pci_dmateardown, - NULL, - isp_pci_reset1, - isp_pci_dumpregs, - NULL, - BIU_BURST_ENABLE|BIU_PCI_CONF1_FIFO_64 -}; - -static struct ispmdvec mdvec_2100 = { - isp_pci_rd_reg, - isp_pci_wr_reg, - isp_pci_mbxdma, - isp_pci_dmasetup, - isp_pci_dmateardown, - NULL, - isp_pci_reset1, - isp_pci_dumpregs -}; - -static struct ispmdvec mdvec_2200 = { - isp_pci_rd_reg, - isp_pci_wr_reg, - isp_pci_mbxdma, - isp_pci_dmasetup, - isp_pci_dmateardown, - NULL, - isp_pci_reset1, - isp_pci_dumpregs -}; - -#ifndef PCIM_CMD_INVEN -#define PCIM_CMD_INVEN 0x10 -#endif -#ifndef PCIM_CMD_BUSMASTEREN -#define PCIM_CMD_BUSMASTEREN 0x0004 -#endif -#ifndef PCIM_CMD_PERRESPEN -#define PCIM_CMD_PERRESPEN 0x0040 -#endif -#ifndef PCIM_CMD_SEREN -#define PCIM_CMD_SEREN 0x0100 -#endif - -#ifndef PCIR_COMMAND -#define PCIR_COMMAND 0x04 -#endif - -#ifndef PCIR_CACHELNSZ -#define PCIR_CACHELNSZ 0x0c -#endif - -#ifndef PCIR_LATTIMER -#define PCIR_LATTIMER 0x0d -#endif - -#ifndef PCIR_ROMADDR -#define PCIR_ROMADDR 0x30 -#endif - -#ifndef PCI_VENDOR_QLOGIC -#define PCI_VENDOR_QLOGIC 0x1077 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP1020 -#define PCI_PRODUCT_QLOGIC_ISP1020 0x1020 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP1080 -#define PCI_PRODUCT_QLOGIC_ISP1080 0x1080 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP12160 -#define PCI_PRODUCT_QLOGIC_ISP12160 0x1216 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP1240 -#define PCI_PRODUCT_QLOGIC_ISP1240 0x1240 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP1280 -#define PCI_PRODUCT_QLOGIC_ISP1280 0x1280 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP2100 -#define PCI_PRODUCT_QLOGIC_ISP2100 0x2100 -#endif - -#ifndef PCI_PRODUCT_QLOGIC_ISP2200 -#define PCI_PRODUCT_QLOGIC_ISP2200 0x2200 -#endif - -#define PCI_QLOGIC_ISP1020 \ - ((PCI_PRODUCT_QLOGIC_ISP1020 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP1080 \ - ((PCI_PRODUCT_QLOGIC_ISP1080 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP12160 \ - ((PCI_PRODUCT_QLOGIC_ISP12160 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP1240 \ - ((PCI_PRODUCT_QLOGIC_ISP1240 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP1280 \ - ((PCI_PRODUCT_QLOGIC_ISP1280 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP2100 \ - ((PCI_PRODUCT_QLOGIC_ISP2100 << 16) | PCI_VENDOR_QLOGIC) - -#define PCI_QLOGIC_ISP2200 \ - ((PCI_PRODUCT_QLOGIC_ISP2200 << 16) | PCI_VENDOR_QLOGIC) - -/* - * Odd case for some AMI raid cards... We need to *not* attach to this. - */ -#define AMI_RAID_SUBVENDOR_ID 0x101e - -#define IO_MAP_REG 0x10 -#define MEM_MAP_REG 0x14 - -#define PCI_DFLT_LTNCY 0x40 -#define PCI_DFLT_LNSZ 0x10 - -static int isp_pci_probe (device_t); -static int isp_pci_attach (device_t); - -struct isp_pcisoftc { - struct ispsoftc pci_isp; - device_t pci_dev; - struct resource * pci_reg; - bus_space_tag_t pci_st; - bus_space_handle_t pci_sh; - void * ih; - int16_t pci_poff[_NREG_BLKS]; - bus_dma_tag_t parent_dmat; - bus_dma_tag_t cntrol_dmat; - bus_dmamap_t cntrol_dmap; - bus_dmamap_t *dmaps; -}; -ispfwfunc *isp_get_firmware_p = NULL; - -static device_method_t isp_pci_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, isp_pci_probe), - DEVMETHOD(device_attach, isp_pci_attach), - { 0, 0 } -}; -static void isp_pci_intr __P((void *)); - -static driver_t isp_pci_driver = { - "isp", isp_pci_methods, sizeof (struct isp_pcisoftc) -}; -static devclass_t isp_devclass; -DRIVER_MODULE(isp, pci, isp_pci_driver, isp_devclass, 0, 0); -MODULE_VERSION(isp, 1); - -static int -isp_pci_probe(device_t dev) -{ - switch ((pci_get_device(dev) << 16) | (pci_get_vendor(dev))) { - case PCI_QLOGIC_ISP1020: - device_set_desc(dev, "Qlogic ISP 1020/1040 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1080: - device_set_desc(dev, "Qlogic ISP 1080 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1240: - device_set_desc(dev, "Qlogic ISP 1240 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP1280: - device_set_desc(dev, "Qlogic ISP 1280 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP12160: - if (pci_get_subvendor(dev) == AMI_RAID_SUBVENDOR_ID) { - return (ENXIO); - } - device_set_desc(dev, "Qlogic ISP 12160 PCI SCSI Adapter"); - break; - case PCI_QLOGIC_ISP2100: - device_set_desc(dev, "Qlogic ISP 2100 PCI FC-AL Adapter"); - break; - case PCI_QLOGIC_ISP2200: - device_set_desc(dev, "Qlogic ISP 2200 PCI FC-AL Adapter"); - break; - default: - return (ENXIO); - } - if (device_get_unit(dev) == 0 && bootverbose) { - printf("Qlogic ISP Driver, FreeBSD Version %d.%d, " - "Core Version %d.%d\n", - ISP_PLATFORM_VERSION_MAJOR, ISP_PLATFORM_VERSION_MINOR, - ISP_CORE_VERSION_MAJOR, ISP_CORE_VERSION_MINOR); - } - /* - * XXXX: Here is where we might load the f/w module - * XXXX: (or increase a reference count to it). - */ - return (0); -} - -static int -isp_pci_attach(device_t dev) -{ - struct resource *regs, *irq; - int unit, bitmap, rtp, rgd, iqd, m1, m2, isp_debug; - u_int32_t data, cmd, linesz, psize, basetype; - struct isp_pcisoftc *pcs; - struct ispsoftc *isp = NULL; - struct ispmdvec *mdvp; - bus_size_t lim; -#ifdef ISP_SMPLOCK - int locksetup = 0; -#endif - - /* - * Figure out if we're supposed to skip this one. - */ - unit = device_get_unit(dev); - if (getenv_int("isp_disable", &bitmap)) { - if (bitmap & (1 << unit)) { - device_printf(dev, "not configuring\n"); - return (ENODEV); - } - } - - pcs = malloc(sizeof (struct isp_pcisoftc), M_DEVBUF, M_NOWAIT | M_ZERO); - if (pcs == NULL) { - device_printf(dev, "cannot allocate softc\n"); - return (ENOMEM); - } - - /* - * Figure out which we should try first - memory mapping or i/o mapping? - */ -#ifdef __alpha__ - m1 = PCIM_CMD_MEMEN; - m2 = PCIM_CMD_PORTEN; -#else - m1 = PCIM_CMD_PORTEN; - m2 = PCIM_CMD_MEMEN; -#endif - bitmap = 0; - if (getenv_int("isp_mem_map", &bitmap)) { - if (bitmap & (1 << unit)) { - m1 = PCIM_CMD_MEMEN; - m2 = PCIM_CMD_PORTEN; - } - } - bitmap = 0; - if (getenv_int("isp_io_map", &bitmap)) { - if (bitmap & (1 << unit)) { - m1 = PCIM_CMD_PORTEN; - m2 = PCIM_CMD_MEMEN; - } - } - - linesz = PCI_DFLT_LNSZ; - irq = regs = NULL; - rgd = rtp = iqd = 0; - - cmd = pci_read_config(dev, PCIR_COMMAND, 1); - if (cmd & m1) { - rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; - rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; - regs = bus_alloc_resource(dev, rtp, &rgd, 0, ~0, 1, RF_ACTIVE); - } - if (regs == NULL && (cmd & m2)) { - rtp = (m2 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; - rgd = (m2 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; - regs = bus_alloc_resource(dev, rtp, &rgd, 0, ~0, 1, RF_ACTIVE); - } - if (regs == NULL) { - device_printf(dev, "unable to map any ports\n"); - goto bad; - } - if (bootverbose) - device_printf(dev, "using %s space register mapping\n", - (rgd == IO_MAP_REG)? "I/O" : "Memory"); - pcs->pci_dev = dev; - pcs->pci_reg = regs; - pcs->pci_st = rman_get_bustag(regs); - pcs->pci_sh = rman_get_bushandle(regs); - - pcs->pci_poff[BIU_BLOCK >> _BLK_REG_SHFT] = BIU_REGS_OFF; - pcs->pci_poff[MBOX_BLOCK >> _BLK_REG_SHFT] = PCI_MBOX_REGS_OFF; - pcs->pci_poff[SXP_BLOCK >> _BLK_REG_SHFT] = PCI_SXP_REGS_OFF; - pcs->pci_poff[RISC_BLOCK >> _BLK_REG_SHFT] = PCI_RISC_REGS_OFF; - pcs->pci_poff[DMA_BLOCK >> _BLK_REG_SHFT] = DMA_REGS_OFF; - mdvp = &mdvec; - basetype = ISP_HA_SCSI_UNKNOWN; - psize = sizeof (sdparam); - lim = BUS_SPACE_MAXSIZE_32BIT; - if (pci_get_devid(dev) == PCI_QLOGIC_ISP1020) { - mdvp = &mdvec; - basetype = ISP_HA_SCSI_UNKNOWN; - psize = sizeof (sdparam); - lim = BUS_SPACE_MAXSIZE_24BIT; - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP1080) { - mdvp = &mdvec_1080; - basetype = ISP_HA_SCSI_1080; - psize = sizeof (sdparam); - pcs->pci_poff[DMA_BLOCK >> _BLK_REG_SHFT] = - ISP1080_DMA_REGS_OFF; - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP1240) { - mdvp = &mdvec_1080; - basetype = ISP_HA_SCSI_1240; - psize = 2 * sizeof (sdparam); - pcs->pci_poff[DMA_BLOCK >> _BLK_REG_SHFT] = - ISP1080_DMA_REGS_OFF; - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP1280) { - mdvp = &mdvec_1080; - basetype = ISP_HA_SCSI_1280; - psize = 2 * sizeof (sdparam); - pcs->pci_poff[DMA_BLOCK >> _BLK_REG_SHFT] = - ISP1080_DMA_REGS_OFF; - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP12160) { - mdvp = &mdvec_12160; - basetype = ISP_HA_SCSI_12160; - psize = 2 * sizeof (sdparam); - pcs->pci_poff[DMA_BLOCK >> _BLK_REG_SHFT] = - ISP1080_DMA_REGS_OFF; - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP2100) { - mdvp = &mdvec_2100; - basetype = ISP_HA_FC_2100; - psize = sizeof (fcparam); - pcs->pci_poff[MBOX_BLOCK >> _BLK_REG_SHFT] = - PCI_MBOX_REGS2100_OFF; - if (pci_get_revid(dev) < 3) { - /* - * XXX: Need to get the actual revision - * XXX: number of the 2100 FB. At any rate, - * XXX: lower cache line size for early revision - * XXX; boards. - */ - linesz = 1; - } - } - if (pci_get_devid(dev) == PCI_QLOGIC_ISP2200) { - mdvp = &mdvec_2200; - basetype = ISP_HA_FC_2200; - psize = sizeof (fcparam); - pcs->pci_poff[MBOX_BLOCK >> _BLK_REG_SHFT] = - PCI_MBOX_REGS2100_OFF; - } - isp = &pcs->pci_isp; - isp->isp_param = malloc(psize, M_DEVBUF, M_NOWAIT | M_ZERO); - if (isp->isp_param == NULL) { - device_printf(dev, "cannot allocate parameter data\n"); - goto bad; - } - isp->isp_mdvec = mdvp; - isp->isp_type = basetype; - isp->isp_revision = pci_get_revid(dev); - (void) snprintf(isp->isp_name, sizeof (isp->isp_name), "isp%d", unit); - isp->isp_osinfo.unit = unit; - - /* - * Try and find firmware for this device. - */ - - if (isp_get_firmware_p) { - int device = (int) pci_get_device(dev); -#ifdef ISP_TARGET_MODE - (*isp_get_firmware_p)(0, 1, device, &mdvp->dv_ispfw); -#else - (*isp_get_firmware_p)(0, 0, device, &mdvp->dv_ispfw); -#endif - } - - /* - * Make sure that SERR, PERR, WRITE INVALIDATE and BUSMASTER - * are set. - */ - cmd |= PCIM_CMD_SEREN | PCIM_CMD_PERRESPEN | - PCIM_CMD_BUSMASTEREN | PCIM_CMD_INVEN; - pci_write_config(dev, PCIR_COMMAND, cmd, 1); - - /* - * Make sure the Cache Line Size register is set sensibly. - */ - data = pci_read_config(dev, PCIR_CACHELNSZ, 1); - if (data != linesz) { - data = PCI_DFLT_LNSZ; - isp_prt(isp, ISP_LOGCONFIG, "set PCI line size to %d", data); - pci_write_config(dev, PCIR_CACHELNSZ, data, 1); - } - - /* - * Make sure the Latency Timer is sane. - */ - data = pci_read_config(dev, PCIR_LATTIMER, 1); - if (data < PCI_DFLT_LTNCY) { - data = PCI_DFLT_LTNCY; - isp_prt(isp, ISP_LOGCONFIG, "set PCI latency to %d", data); - pci_write_config(dev, PCIR_LATTIMER, data, 1); - } - - /* - * Make sure we've disabled the ROM. - */ - data = pci_read_config(dev, PCIR_ROMADDR, 4); - data &= ~1; - pci_write_config(dev, PCIR_ROMADDR, data, 4); - - - if (bus_dma_tag_create(NULL, 1, 0, BUS_SPACE_MAXADDR_32BIT, - BUS_SPACE_MAXADDR, NULL, NULL, lim + 1, - 255, lim, 0, &pcs->parent_dmat) != 0) { - device_printf(dev, "could not create master dma tag\n"); - free(isp->isp_param, M_DEVBUF); - free(pcs, M_DEVBUF); - return (ENXIO); - } - - iqd = 0; - irq = bus_alloc_resource(dev, SYS_RES_IRQ, &iqd, 0, ~0, - 1, RF_ACTIVE | RF_SHAREABLE); - if (irq == NULL) { - device_printf(dev, "could not allocate interrupt\n"); - goto bad; - } - - if (getenv_int("isp_no_fwload", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts |= ISP_CFG_NORELOAD; - } - if (getenv_int("isp_fwload", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts &= ~ISP_CFG_NORELOAD; - } - if (getenv_int("isp_no_nvram", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts |= ISP_CFG_NONVRAM; - } - if (getenv_int("isp_nvram", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts &= ~ISP_CFG_NONVRAM; - } - if (getenv_int("isp_fcduplex", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts |= ISP_CFG_FULL_DUPLEX; - } - if (getenv_int("isp_no_fcduplex", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts &= ~ISP_CFG_FULL_DUPLEX; - } - if (getenv_int("isp_nport", &bitmap)) { - if (bitmap & (1 << unit)) - isp->isp_confopts |= ISP_CFG_NPORT; - } - /* - * Look for overriding WWN. This is a Node WWN so it binds to - * all FC instances. A Port WWN will be constructed from it - * as appropriate. - */ - if (!getenv_quad("isp_wwn", (quad_t *) &isp->isp_osinfo.default_wwn)) { - int i; - u_int64_t seed = (u_int64_t) (intptr_t) isp; - - seed <<= 16; - seed &= ((1LL << 48) - 1LL); - /* - * This isn't very random, but it's the best we can do for - * the real edge case of cards that don't have WWNs. If - * you recompile a new vers.c, you'll get a different WWN. - */ - for (i = 0; version[i] != 0; i++) { - seed += version[i]; - } - /* - * Make sure the top nibble has something vaguely sensible - * (NAA == Locally Administered) - */ - isp->isp_osinfo.default_wwn |= (3LL << 60) | seed; - } else { - isp->isp_confopts |= ISP_CFG_OWNWWN; - } - isp_debug = 0; - (void) getenv_int("isp_debug", &isp_debug); - -#ifdef ISP_SMPLOCK - /* Make sure the lock is set up. */ - mtx_init(&isp->isp_osinfo.lock, "isp", MTX_DEF); - locksetup++; -#endif - -#ifdef ISP_SMPLOCK - if (bus_setup_intr(dev, irq, INTR_TYPE_CAM | INTR_MPSAFE, - isp_pci_intr, isp, &pcs->ih)) { - device_printf(dev, "could not setup interrupt\n"); - goto bad; - } -#else - if (bus_setup_intr(dev, irq, INTR_TYPE_CAM, - isp_pci_intr, isp, &pcs->ih)) { - device_printf(dev, "could not setup interrupt\n"); - goto bad; - } -#endif - - /* - * Set up logging levels. - */ - if (isp_debug) { - isp->isp_dblev = isp_debug; - } else { - isp->isp_dblev = ISP_LOGWARN|ISP_LOGERR; - } - if (bootverbose) - isp->isp_dblev |= ISP_LOGCONFIG|ISP_LOGINFO; - - /* - * Make sure we're in reset state. - */ - ISP_LOCK(isp); - isp_reset(isp); - - if (isp->isp_state != ISP_RESETSTATE) { - ISP_UNLOCK(isp); - goto bad; - } - isp_init(isp); - if (isp->isp_state != ISP_INITSTATE) { - /* If we're a Fibre Channel Card, we allow deferred attach */ - if (IS_SCSI(isp)) { - isp_uninit(isp); - ISP_UNLOCK(isp); - goto bad; - } - } - isp_attach(isp); - if (isp->isp_state != ISP_RUNSTATE) { - /* If we're a Fibre Channel Card, we allow deferred attach */ - if (IS_SCSI(isp)) { - isp_uninit(isp); - ISP_UNLOCK(isp); - goto bad; - } - } - /* - * XXXX: Here is where we might unload the f/w module - * XXXX: (or decrease the reference count to it). - */ - ISP_UNLOCK(isp); - return (0); - -bad: - - if (pcs && pcs->ih) { - (void) bus_teardown_intr(dev, irq, pcs->ih); - } - -#ifdef ISP_SMPLOCK - if (locksetup && isp) { - mtx_destroy(&isp->isp_osinfo.lock); - } -#endif - - if (irq) { - (void) bus_release_resource(dev, SYS_RES_IRQ, iqd, irq); - } - - - if (regs) { - (void) bus_release_resource(dev, rtp, rgd, regs); - } - - if (pcs) { - if (pcs->pci_isp.isp_param) - free(pcs->pci_isp.isp_param, M_DEVBUF); - free(pcs, M_DEVBUF); - } - - /* - * XXXX: Here is where we might unload the f/w module - * XXXX: (or decrease the reference count to it). - */ - return (ENXIO); -} - -static void -isp_pci_intr(void *arg) -{ - struct ispsoftc *isp = arg; - ISP_LOCK(isp); - (void) isp_intr(isp); - ISP_UNLOCK(isp); -} - -static u_int16_t -isp_pci_rd_reg(isp, regoff) - struct ispsoftc *isp; - int regoff; -{ - u_int16_t rv; - struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; - int offset, oldconf = 0; - - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { - /* - * We will assume that someone has paused the RISC processor. - */ - oldconf = isp_pci_rd_reg(isp, BIU_CONF1); - isp_pci_wr_reg(isp, BIU_CONF1, oldconf | BIU_PCI_CONF1_SXP); - } - offset = pcs->pci_poff[(regoff & _BLK_REG_MASK) >> _BLK_REG_SHFT]; - offset += (regoff & 0xff); - rv = bus_space_read_2(pcs->pci_st, pcs->pci_sh, offset); - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { - isp_pci_wr_reg(isp, BIU_CONF1, oldconf); - } - return (rv); -} - -static void -isp_pci_wr_reg(isp, regoff, val) - struct ispsoftc *isp; - int regoff; - u_int16_t val; -{ - struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; - int offset, oldconf = 0; - - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { - /* - * We will assume that someone has paused the RISC processor. - */ - oldconf = isp_pci_rd_reg(isp, BIU_CONF1); - isp_pci_wr_reg(isp, BIU_CONF1, oldconf | BIU_PCI_CONF1_SXP); - } - offset = pcs->pci_poff[(regoff & _BLK_REG_MASK) >> _BLK_REG_SHFT]; - offset += (regoff & 0xff); - bus_space_write_2(pcs->pci_st, pcs->pci_sh, offset, val); - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK) { - isp_pci_wr_reg(isp, BIU_CONF1, oldconf); - } -} - -static u_int16_t -isp_pci_rd_reg_1080(isp, regoff) - struct ispsoftc *isp; - int regoff; -{ - u_int16_t rv, oc = 0; - struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; - int offset; - - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK || - (regoff & _BLK_REG_MASK) == (SXP_BLOCK|SXP_BANK1_SELECT)) { - u_int16_t tc; - /* - * We will assume that someone has paused the RISC processor. - */ - oc = isp_pci_rd_reg(isp, BIU_CONF1); - tc = oc & ~BIU_PCI1080_CONF1_DMA; - if (regoff & SXP_BANK1_SELECT) - tc |= BIU_PCI1080_CONF1_SXP1; - else - tc |= BIU_PCI1080_CONF1_SXP0; - isp_pci_wr_reg(isp, BIU_CONF1, tc); - } else if ((regoff & _BLK_REG_MASK) == DMA_BLOCK) { - oc = isp_pci_rd_reg(isp, BIU_CONF1); - isp_pci_wr_reg(isp, BIU_CONF1, oc | BIU_PCI1080_CONF1_DMA); - } - offset = pcs->pci_poff[(regoff & _BLK_REG_MASK) >> _BLK_REG_SHFT]; - offset += (regoff & 0xff); - rv = bus_space_read_2(pcs->pci_st, pcs->pci_sh, offset); - if (oc) { - isp_pci_wr_reg(isp, BIU_CONF1, oc); - } - return (rv); -} - -static void -isp_pci_wr_reg_1080(isp, regoff, val) - struct ispsoftc *isp; - int regoff; - u_int16_t val; -{ - struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp; - int offset, oc = 0; - - if ((regoff & _BLK_REG_MASK) == SXP_BLOCK || - (regoff & _BLK_REG_MASK) == (SXP_BLOCK|SXP_BANK1_SELECT)) { - u_int16_t tc; - /* - * We will assume that someone has paused the RISC processor. - */ - oc = isp_pci_rd_reg(isp, BIU_CONF1); - tc = oc & ~BIU_PCI1080_CONF1_DMA; - if (regoff & SXP_BANK1_SELECT) - tc |= BIU_PCI1080_CONF1_SXP1; - else - tc |= BIU_PCI1080_CONF1_SXP0; - isp_pci_wr_reg(isp, BIU_CONF1, tc); - } else if ((regoff & _BLK_REG_MASK) == DMA_BLOCK) { - oc = isp_pci_rd_reg(isp, BIU_CONF1); - isp_pci_wr_reg(isp, BIU_CONF1, oc | BIU_PCI1080_CONF1_DMA); - } - offset = pcs->pci_poff[(regoff & _BLK_REG_MASK) >> _BLK_REG_SHFT]; - offset += (regoff & 0xff); - bus_space_write_2(pcs->pci_st, pcs->pci_sh, offset, val); - if (oc) { - isp_pci_wr_reg(isp, BIU_CONF1, oc); - } -} - -static void isp_map_rquest __P((void *, bus_dma_segment_t *, int, int)); -static void isp_map_result __P((void *, bus_dma_segment_t *, int, int)); -static void isp_map_fcscrt __P((void *, bus_dma_segment_t *, int, int)); - -struct imush { - struct ispsoftc *isp; - int error; -}; - -static void -isp_map_rquest(void *arg, bus_dma_segment_t *segs, int nseg, int error) -{ - struct imush *imushp = (struct imush *) arg; - if (error) { - imushp->error = error; - } else { - imushp->isp->isp_rquest_dma = segs->ds_addr; - } -} - -static void -isp_map_result(void *arg, bus_dma_segment_t *segs, int nseg, int error) -{ - struct imush *imushp = (struct imush *) arg; - if (error) { - imushp->error = error; - } else { - imushp->isp->isp_result_dma = segs->ds_addr; - } -} - -static void -isp_map_fcscrt(void *arg, bus_dma_segment_t *segs, int nseg, int error) -{ - struct imush *imushp = (struct imush *) arg; - if (error) { - imushp->error = error; - } else { - fcparam *fcp = imushp->isp->isp_param; - fcp->isp_scdma = segs->ds_addr; - } -} - -static int -isp_pci_mbxdma(struct ispsoftc *isp) -{ - struct isp_pcisoftc *pci = (struct isp_pcisoftc *)isp; - caddr_t base; - u_int32_t len; - int i, error; - bus_size_t lim; - struct imush im; - - - /* - * Already been here? If so, leave... - */ - if (isp->isp_rquest) { - return (0); - } - - len = sizeof (XS_T **) * isp->isp_maxcmds; - isp->isp_xflist = (XS_T **) malloc(len, M_DEVBUF, M_WAITOK | M_ZERO); - if (isp->isp_xflist == NULL) { - isp_prt(isp, ISP_LOGERR, "cannot alloc xflist array"); - return (1); - } - len = sizeof (bus_dmamap_t) * isp->isp_maxcmds; - pci->dmaps = (bus_dmamap_t *) malloc(len, M_DEVBUF, M_WAITOK); - if (pci->dmaps == NULL) { - isp_prt(isp, ISP_LOGERR, "can't alloc dma maps"); - free(isp->isp_xflist, M_DEVBUF); - return (1); - } - - if (IS_FC(isp) || IS_ULTRA2(isp)) - lim = BUS_SPACE_MAXADDR + 1; - else - lim = BUS_SPACE_MAXADDR_24BIT + 1; - - /* - * Allocate and map the request, result queues, plus FC scratch area. - */ - len = ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)); - len += ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)); - if (IS_FC(isp)) { - len += ISP2100_SCRLEN; - } - if (bus_dma_tag_create(pci->parent_dmat, PAGE_SIZE, lim, - BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, len, 1, - BUS_SPACE_MAXSIZE_32BIT, 0, &pci->cntrol_dmat) != 0) { - isp_prt(isp, ISP_LOGERR, - "cannot create a dma tag for control spaces"); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - return (1); - } - if (bus_dmamem_alloc(pci->cntrol_dmat, (void **)&base, - BUS_DMA_NOWAIT, &pci->cntrol_dmap) != 0) { - isp_prt(isp, ISP_LOGERR, - "cannot allocate %d bytes of CCB memory", len); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - return (1); - } - - isp->isp_rquest = base; - im.isp = isp; - im.error = 0; - bus_dmamap_load(pci->cntrol_dmat, pci->cntrol_dmap, isp->isp_rquest, - ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)), isp_map_rquest, &im, 0); - if (im.error) { - isp_prt(isp, ISP_LOGERR, - "error %d loading dma map for DMA request queue", im.error); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - isp->isp_rquest = NULL; - return (1); - } - isp->isp_result = base + ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)); - im.error = 0; - bus_dmamap_load(pci->cntrol_dmat, pci->cntrol_dmap, isp->isp_result, - ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)), isp_map_result, &im, 0); - if (im.error) { - isp_prt(isp, ISP_LOGERR, - "error %d loading dma map for DMA result queue", im.error); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - isp->isp_rquest = NULL; - return (1); - } - - for (i = 0; i < isp->isp_maxcmds; i++) { - error = bus_dmamap_create(pci->parent_dmat, 0, &pci->dmaps[i]); - if (error) { - isp_prt(isp, ISP_LOGERR, - "error %d creating per-cmd DMA maps", error); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - isp->isp_rquest = NULL; - return (1); - } - } - - if (IS_FC(isp)) { - fcparam *fcp = (fcparam *) isp->isp_param; - fcp->isp_scratch = base + - ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)) + - ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)); - im.error = 0; - bus_dmamap_load(pci->cntrol_dmat, pci->cntrol_dmap, - fcp->isp_scratch, ISP2100_SCRLEN, isp_map_fcscrt, &im, 0); - if (im.error) { - isp_prt(isp, ISP_LOGERR, - "error %d loading FC scratch area", im.error); - free(isp->isp_xflist, M_DEVBUF); - free(pci->dmaps, M_DEVBUF); - isp->isp_rquest = NULL; - return (1); - } - } - return (0); -} - -typedef struct { - struct ispsoftc *isp; - void *cmd_token; - void *rq; - u_int16_t *iptrp; - u_int16_t optr; - u_int error; -} mush_t; - -#define MUSHERR_NOQENTRIES -2 - -#ifdef ISP_TARGET_MODE -/* - * We need to handle DMA for target mode differently from initiator mode. - * - * DMA mapping and construction and submission of CTIO Request Entries - * and rendevous for completion are very tightly coupled because we start - * out by knowing (per platform) how much data we have to move, but we - * don't know, up front, how many DMA mapping segments will have to be used - * cover that data, so we don't know how many CTIO Request Entries we - * will end up using. Further, for performance reasons we may want to - * (on the last CTIO for Fibre Channel), send status too (if all went well). - * - * The standard vector still goes through isp_pci_dmasetup, but the callback - * for the DMA mapping routines comes here instead with the whole transfer - * mapped and a pointer to a partially filled in already allocated request - * queue entry. We finish the job. - */ -static void tdma_mk __P((void *, bus_dma_segment_t *, int, int)); -static void tdma_mkfc __P((void *, bus_dma_segment_t *, int, int)); - -static void -tdma_mk(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error) -{ - mush_t *mp; - struct ccb_scsiio *csio; - struct isp_pcisoftc *pci; - bus_dmamap_t *dp; - u_int8_t scsi_status; - ct_entry_t *cto; - u_int32_t handle, totxfr, sflags; - int nctios, send_status; - int32_t resid; - - mp = (mush_t *) arg; - if (error) { - mp->error = error; - return; - } - csio = mp->cmd_token; - cto = mp->rq; - - cto->ct_xfrlen = 0; - cto->ct_seg_count = 0; - cto->ct_header.rqs_entry_count = 1; - MEMZERO(cto->ct_dataseg, sizeof(cto->ct_dataseg)); - - if (nseg == 0) { - cto->ct_header.rqs_seqno = 1; - ISP_TDQE(mp->isp, "tdma_mk[no data]", *mp->iptrp, cto); - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO lun %d->iid%d flgs 0x%x sts 0x%x ssts 0x%x res %d", - csio->ccb_h.target_lun, cto->ct_iid, cto->ct_flags, - cto->ct_status, cto->ct_scsi_status, cto->ct_resid); - ISP_SWIZ_CTIO(mp->isp, cto, cto); - return; - } - - nctios = nseg / ISP_RQDSEG; - if (nseg % ISP_RQDSEG) { - nctios++; - } - - /* - * Save handle, and potentially any SCSI status, which we'll reinsert - * on the last CTIO we're going to send. - */ - handle = cto->ct_reserved; - cto->ct_reserved = 0; - cto->ct_header.rqs_seqno = 0; - send_status = (cto->ct_flags & CT_SENDSTATUS) != 0; - - if (send_status) { - sflags = cto->ct_flags & (CT_SENDSTATUS | CT_CCINCR); - cto->ct_flags &= ~(CT_SENDSTATUS | CT_CCINCR); - /* - * Preserve residual. - */ - resid = cto->ct_resid; - - /* - * Save actual SCSI status. - */ - scsi_status = cto->ct_scsi_status; - - /* - * We can't do a status at the same time as a data CTIO, so - * we need to synthesize an extra CTIO at this level. - */ - nctios++; - } else { - sflags = scsi_status = resid = 0; - } - - totxfr = cto->ct_resid = 0; - cto->ct_scsi_status = 0; - - pci = (struct isp_pcisoftc *)mp->isp; - dp = &pci->dmaps[isp_handle_index(handle)]; - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREREAD); - } else { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREWRITE); - } - - - while (nctios--) { - int seglim; - - seglim = nseg; - if (seglim) { - int seg; - - if (seglim > ISP_RQDSEG) - seglim = ISP_RQDSEG; - - for (seg = 0; seg < seglim; seg++, nseg--) { - /* - * Unlike normal initiator commands, we don't - * do any swizzling here. - */ - cto->ct_dataseg[seg].ds_count = dm_segs->ds_len; - cto->ct_dataseg[seg].ds_base = dm_segs->ds_addr; - cto->ct_xfrlen += dm_segs->ds_len; - totxfr += dm_segs->ds_len; - dm_segs++; - } - cto->ct_seg_count = seg; - } else { - /* - * This case should only happen when we're sending an - * extra CTIO with final status. - */ - if (send_status == 0) { - isp_prt(mp->isp, ISP_LOGWARN, - "tdma_mk ran out of segments"); - mp->error = EINVAL; - return; - } - } - - /* - * At this point, the fields ct_lun, ct_iid, ct_tagval, - * ct_tagtype, and ct_timeout have been carried over - * unchanged from what our caller had set. - * - * The dataseg fields and the seg_count fields we just got - * through setting. The data direction we've preserved all - * along and only clear it if we're now sending status. - */ - - if (nctios == 0) { - /* - * We're the last in a sequence of CTIOs, so mark - * this CTIO and save the handle to the CCB such that - * when this CTIO completes we can free dma resources - * and do whatever else we need to do to finish the - * rest of the command. - */ - cto->ct_reserved = handle; - cto->ct_header.rqs_seqno = 1; - - if (send_status) { - cto->ct_scsi_status = scsi_status; - cto->ct_flags |= sflags | CT_NO_DATA;; - cto->ct_resid = resid; - } - if (send_status) { - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO lun%d for ID %d ct_flags 0x%x scsi " - "status %x resid %d", - csio->ccb_h.target_lun, - cto->ct_iid, cto->ct_flags, - cto->ct_scsi_status, cto->ct_resid); - } else { - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO lun%d for ID%d ct_flags 0x%x", - csio->ccb_h.target_lun, - cto->ct_iid, cto->ct_flags); - } - ISP_TDQE(mp->isp, "last tdma_mk", *mp->iptrp, cto); - ISP_SWIZ_CTIO(mp->isp, cto, cto); - } else { - ct_entry_t *octo = cto; - - /* - * Make sure handle fields are clean - */ - cto->ct_reserved = 0; - cto->ct_header.rqs_seqno = 0; - - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO lun%d for ID%d ct_flags 0x%x", - csio->ccb_h.target_lun, cto->ct_iid, cto->ct_flags); - ISP_TDQE(mp->isp, "tdma_mk", *mp->iptrp, cto); - - /* - * Get a new CTIO - */ - cto = (ct_entry_t *) - ISP_QUEUE_ENTRY(mp->isp->isp_rquest, *mp->iptrp); - *mp->iptrp = - ISP_NXT_QENTRY(*mp->iptrp, RQUEST_QUEUE_LEN(isp)); - if (*mp->iptrp == mp->optr) { - isp_prt(mp->isp, ISP_LOGWARN, - "Queue Overflow in tdma_mk"); - mp->error = MUSHERR_NOQENTRIES; - return; - } - /* - * Fill in the new CTIO with info from the old one. - */ - cto->ct_header.rqs_entry_type = RQSTYPE_CTIO; - cto->ct_header.rqs_entry_count = 1; - cto->ct_header.rqs_flags = 0; - cto->ct_lun = octo->ct_lun; - cto->ct_iid = octo->ct_iid; - cto->ct_reserved2 = octo->ct_reserved2; - cto->ct_tgt = octo->ct_tgt; - cto->ct_flags = octo->ct_flags; - cto->ct_status = 0; - cto->ct_scsi_status = 0; - cto->ct_tag_val = octo->ct_tag_val; - cto->ct_tag_type = octo->ct_tag_type; - cto->ct_xfrlen = 0; - cto->ct_resid = 0; - cto->ct_timeout = octo->ct_timeout; - cto->ct_seg_count = 0; - MEMZERO(cto->ct_dataseg, sizeof(cto->ct_dataseg)); - /* - * Now swizzle the old one for the consumption of the - * chip. - */ - ISP_SWIZ_CTIO(mp->isp, octo, octo); - } - } -} - -static void -tdma_mkfc(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error) -{ - mush_t *mp; - struct ccb_scsiio *csio; - struct isp_pcisoftc *pci; - bus_dmamap_t *dp; - ct2_entry_t *cto; - u_int16_t scsi_status, send_status, send_sense; - u_int32_t handle, totxfr, datalen; - u_int8_t sense[QLTM_SENSELEN]; - int nctios; - - mp = (mush_t *) arg; - if (error) { - mp->error = error; - return; - } - - csio = mp->cmd_token; - cto = mp->rq; - - if (nseg == 0) { - if ((cto->ct_flags & CT2_FLAG_MMASK) != CT2_FLAG_MODE1) { - isp_prt(mp->isp, ISP_LOGWARN, - "dma2_tgt_fc, a status CTIO2 without MODE1 " - "set (0x%x)", cto->ct_flags); - mp->error = EINVAL; - return; - } - cto->ct_header.rqs_entry_count = 1; - cto->ct_header.rqs_seqno = 1; - /* ct_reserved contains the handle set by caller */ - /* - * We preserve ct_lun, ct_iid, ct_rxid. We set the data - * flags to NO DATA and clear relative offset flags. - * We preserve the ct_resid and the response area. - */ - cto->ct_flags |= CT2_NO_DATA; - if (cto->ct_resid > 0) - cto->ct_flags |= CT2_DATA_UNDER; - else if (cto->ct_resid < 0) - cto->ct_flags |= CT2_DATA_OVER; - cto->ct_seg_count = 0; - cto->ct_reloff = 0; - ISP_TDQE(mp->isp, "dma2_tgt_fc[no data]", *mp->iptrp, cto); - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO2 RX_ID 0x%x lun %d->iid%d flgs 0x%x sts 0x%x ssts " - "0x%x res %d", cto->ct_rxid, csio->ccb_h.target_lun, - cto->ct_iid, cto->ct_flags, cto->ct_status, - cto->rsp.m1.ct_scsi_status, cto->ct_resid); - ISP_SWIZ_CTIO2(isp, cto, cto); - return; - } - - if ((cto->ct_flags & CT2_FLAG_MMASK) != CT2_FLAG_MODE0) { - isp_prt(mp->isp, ISP_LOGWARN, - "dma2_tgt_fc, a data CTIO2 without MODE0 set " - "(0x%x)", cto->ct_flags); - mp->error = EINVAL; - return; - } - - - nctios = nseg / ISP_RQDSEG_T2; - if (nseg % ISP_RQDSEG_T2) { - nctios++; - } - - /* - * Save the handle, status, reloff, and residual. We'll reinsert the - * handle into the last CTIO2 we're going to send, and reinsert status - * and residual (and possibly sense data) if that's to be sent as well. - * - * We preserve ct_reloff and adjust it for each data CTIO2 we send past - * the first one. This is needed so that the FCP DATA IUs being sent - * out have the correct offset (they can arrive at the other end out - * of order). - */ - - handle = cto->ct_reserved; - cto->ct_reserved = 0; - - if ((send_status = (cto->ct_flags & CT2_SENDSTATUS)) != 0) { - cto->ct_flags &= ~CT2_SENDSTATUS; - - /* - * Preserve residual, which is actually the total count. - */ - datalen = cto->ct_resid; - - /* - * Save actual SCSI status. We'll reinsert the - * CT2_SNSLEN_VALID later if appropriate. - */ - scsi_status = cto->rsp.m0.ct_scsi_status & 0xff; - send_sense = cto->rsp.m0.ct_scsi_status & CT2_SNSLEN_VALID; - - /* - * If we're sending status and have a CHECK CONDTION and - * have sense data, we send one more CTIO2 with just the - * status and sense data. The upper layers have stashed - * the sense data in the dataseg structure for us. - */ - - if ((scsi_status & 0xf) == SCSI_STATUS_CHECK_COND && - send_sense) { - bcopy(cto->rsp.m0.ct_dataseg, sense, QLTM_SENSELEN); - nctios++; - } - } else { - scsi_status = send_sense = datalen = 0; - } - - totxfr = cto->ct_resid = 0; - cto->rsp.m0.ct_scsi_status = 0; - bzero(&cto->rsp, sizeof (cto->rsp)); - - pci = (struct isp_pcisoftc *)mp->isp; - dp = &pci->dmaps[isp_handle_index(handle)]; - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREREAD); - } else { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREWRITE); - } - - while (nctios--) { - int seg, seglim; - - seglim = nseg; - if (seglim) { - if (seglim > ISP_RQDSEG_T2) - seglim = ISP_RQDSEG_T2; - - for (seg = 0; seg < seglim; seg++) { - cto->rsp.m0.ct_dataseg[seg].ds_base = - dm_segs->ds_addr; - cto->rsp.m0.ct_dataseg[seg].ds_count = - dm_segs->ds_len; - cto->rsp.m0.ct_xfrlen += dm_segs->ds_len; - totxfr += dm_segs->ds_len; - dm_segs++; - } - cto->ct_seg_count = seg; - } else { - /* - * This case should only happen when we're sending a - * synthesized MODE1 final status with sense data. - */ - if (send_sense == 0) { - isp_prt(mp->isp, ISP_LOGWARN, - "dma2_tgt_fc ran out of segments, " - "no SENSE DATA"); - mp->error = EINVAL; - return; - } - } - - /* - * At this point, the fields ct_lun, ct_iid, ct_rxid, - * ct_timeout have been carried over unchanged from what - * our caller had set. - * - * The field ct_reloff is either what the caller set, or - * what we've added to below. - * - * The dataseg fields and the seg_count fields we just got - * through setting. The data direction we've preserved all - * along and only clear it if we're sending a MODE1 status - * as the last CTIO. - * - */ - - if (nctios == 0) { - - /* - * We're the last in a sequence of CTIO2s, so mark this - * CTIO2 and save the handle to the CCB such that when - * this CTIO2 completes we can free dma resources and - * do whatever else we need to do to finish the rest - * of the command. - */ - - cto->ct_reserved = handle; - cto->ct_header.rqs_seqno = 1; - - if (send_status) { - if (send_sense) { - bcopy(sense, cto->rsp.m1.ct_resp, - QLTM_SENSELEN); - cto->rsp.m1.ct_senselen = - QLTM_SENSELEN; - scsi_status |= CT2_SNSLEN_VALID; - cto->rsp.m1.ct_scsi_status = - scsi_status; - cto->ct_flags &= CT2_FLAG_MMASK; - cto->ct_flags |= CT2_FLAG_MODE1 | - CT2_NO_DATA| CT2_SENDSTATUS; - } else { - cto->rsp.m0.ct_scsi_status = - scsi_status; - cto->ct_flags |= CT2_SENDSTATUS; - } - /* - * Get 'real' residual and set flags based - * on it. - */ - cto->ct_resid = datalen - totxfr; - if (cto->ct_resid > 0) - cto->ct_flags |= CT2_DATA_UNDER; - else if (cto->ct_resid < 0) - cto->ct_flags |= CT2_DATA_OVER; - } - ISP_TDQE(mp->isp, "last dma2_tgt_fc", *mp->iptrp, cto); - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO2 RX_ID 0x%x lun %d->iid%d flgs 0x%x sts 0x%x" - " ssts 0x%x res %d", cto->ct_rxid, - csio->ccb_h.target_lun, (int) cto->ct_iid, - cto->ct_flags, cto->ct_status, - cto->rsp.m1.ct_scsi_status, cto->ct_resid); - ISP_SWIZ_CTIO2(isp, cto, cto); - } else { - ct2_entry_t *octo = cto; - - /* - * Make sure handle fields are clean - */ - cto->ct_reserved = 0; - cto->ct_header.rqs_seqno = 0; - - ISP_TDQE(mp->isp, "dma2_tgt_fc", *mp->iptrp, cto); - isp_prt(mp->isp, ISP_LOGTDEBUG1, - "CTIO2 RX_ID 0x%x lun %d->iid%d flgs 0x%x", - cto->ct_rxid, csio->ccb_h.target_lun, - (int) cto->ct_iid, cto->ct_flags); - /* - * Get a new CTIO2 - */ - cto = (ct2_entry_t *) - ISP_QUEUE_ENTRY(mp->isp->isp_rquest, *mp->iptrp); - *mp->iptrp = - ISP_NXT_QENTRY(*mp->iptrp, RQUEST_QUEUE_LEN(isp)); - if (*mp->iptrp == mp->optr) { - isp_prt(mp->isp, ISP_LOGWARN, - "Queue Overflow in dma2_tgt_fc"); - mp->error = MUSHERR_NOQENTRIES; - return; - } - - /* - * Fill in the new CTIO2 with info from the old one. - */ - cto->ct_header.rqs_entry_type = RQSTYPE_CTIO2; - cto->ct_header.rqs_entry_count = 1; - cto->ct_header.rqs_flags = 0; - /* ct_header.rqs_seqno && ct_reserved done later */ - cto->ct_lun = octo->ct_lun; - cto->ct_iid = octo->ct_iid; - cto->ct_rxid = octo->ct_rxid; - cto->ct_flags = octo->ct_flags; - cto->ct_status = 0; - cto->ct_resid = 0; - cto->ct_timeout = octo->ct_timeout; - cto->ct_seg_count = 0; - /* - * Adjust the new relative offset by the amount which - * is recorded in the data segment of the old CTIO2 we - * just finished filling out. - */ - cto->ct_reloff += octo->rsp.m0.ct_xfrlen; - bzero(&cto->rsp, sizeof (cto->rsp)); - ISP_SWIZ_CTIO2(isp, cto, cto); - } - } -} -#endif - -static void dma2 __P((void *, bus_dma_segment_t *, int, int)); - -static void -dma2(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error) -{ - mush_t *mp; - struct ccb_scsiio *csio; - struct isp_pcisoftc *pci; - bus_dmamap_t *dp; - bus_dma_segment_t *eseg; - ispreq_t *rq; - ispcontreq_t *crq; - int seglim, datalen; - - mp = (mush_t *) arg; - if (error) { - mp->error = error; - return; - } - - if (nseg < 1) { - isp_prt(mp->isp, ISP_LOGERR, "bad segment count (%d)", nseg); - mp->error = EFAULT; - return; - } - csio = mp->cmd_token; - rq = mp->rq; - pci = (struct isp_pcisoftc *)mp->isp; - dp = &pci->dmaps[isp_handle_index(rq->req_handle)]; - - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREREAD); - } else { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_PREWRITE); - } - - datalen = XS_XFRLEN(csio); - - /* - * We're passed an initial partially filled in entry that - * has most fields filled in except for data transfer - * related values. - * - * Our job is to fill in the initial request queue entry and - * then to start allocating and filling in continuation entries - * until we've covered the entire transfer. - */ - - if (IS_FC(mp->isp)) { - seglim = ISP_RQDSEG_T2; - ((ispreqt2_t *)rq)->req_totalcnt = datalen; - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_IN; - } else { - ((ispreqt2_t *)rq)->req_flags |= REQFLAG_DATA_OUT; - } - } else { - if (csio->cdb_len > 12) { - seglim = 0; - } else { - seglim = ISP_RQDSEG; - } - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - rq->req_flags |= REQFLAG_DATA_IN; - } else { - rq->req_flags |= REQFLAG_DATA_OUT; - } - } - - eseg = dm_segs + nseg; - - while (datalen != 0 && rq->req_seg_count < seglim && dm_segs != eseg) { - if (IS_FC(mp->isp)) { - ispreqt2_t *rq2 = (ispreqt2_t *)rq; - rq2->req_dataseg[rq2->req_seg_count].ds_base = - dm_segs->ds_addr; - rq2->req_dataseg[rq2->req_seg_count].ds_count = - dm_segs->ds_len; - } else { - rq->req_dataseg[rq->req_seg_count].ds_base = - dm_segs->ds_addr; - rq->req_dataseg[rq->req_seg_count].ds_count = - dm_segs->ds_len; - } - datalen -= dm_segs->ds_len; -#if 0 - if (IS_FC(mp->isp)) { - ispreqt2_t *rq2 = (ispreqt2_t *)rq; - printf("%s: seg0[%d] cnt 0x%x paddr 0x%08x\n", - mp->isp->isp_name, rq->req_seg_count, - rq2->req_dataseg[rq2->req_seg_count].ds_count, - rq2->req_dataseg[rq2->req_seg_count].ds_base); - } else { - printf("%s: seg0[%d] cnt 0x%x paddr 0x%08x\n", - mp->isp->isp_name, rq->req_seg_count, - rq->req_dataseg[rq->req_seg_count].ds_count, - rq->req_dataseg[rq->req_seg_count].ds_base); - } -#endif - rq->req_seg_count++; - dm_segs++; - } - - while (datalen > 0 && dm_segs != eseg) { - crq = (ispcontreq_t *) - ISP_QUEUE_ENTRY(mp->isp->isp_rquest, *mp->iptrp); - *mp->iptrp = ISP_NXT_QENTRY(*mp->iptrp, RQUEST_QUEUE_LEN(isp)); - if (*mp->iptrp == mp->optr) { -#if 0 - printf("%s: Request Queue Overflow++\n", - mp->isp->isp_name); -#endif - mp->error = MUSHERR_NOQENTRIES; - return; - } - rq->req_header.rqs_entry_count++; - bzero((void *)crq, sizeof (*crq)); - crq->req_header.rqs_entry_count = 1; - crq->req_header.rqs_entry_type = RQSTYPE_DATASEG; - - seglim = 0; - while (datalen > 0 && seglim < ISP_CDSEG && dm_segs != eseg) { - crq->req_dataseg[seglim].ds_base = - dm_segs->ds_addr; - crq->req_dataseg[seglim].ds_count = - dm_segs->ds_len; -#if 0 - printf("%s: seg%d[%d] cnt 0x%x paddr 0x%08x\n", - mp->isp->isp_name, rq->req_header.rqs_entry_count-1, - seglim, crq->req_dataseg[seglim].ds_count, - crq->req_dataseg[seglim].ds_base); -#endif - rq->req_seg_count++; - dm_segs++; - seglim++; - datalen -= dm_segs->ds_len; - } - } -} - -static int -isp_pci_dmasetup(struct ispsoftc *isp, struct ccb_scsiio *csio, ispreq_t *rq, - u_int16_t *iptrp, u_int16_t optr) -{ - struct isp_pcisoftc *pci = (struct isp_pcisoftc *)isp; - bus_dmamap_t *dp = NULL; - mush_t mush, *mp; - void (*eptr) __P((void *, bus_dma_segment_t *, int, int)); - -#ifdef ISP_TARGET_MODE - if (csio->ccb_h.func_code == XPT_CONT_TARGET_IO) { - if (IS_FC(isp)) { - eptr = tdma_mkfc; - } else { - eptr = tdma_mk; - } - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_NONE || - (csio->dxfer_len == 0)) { - rq->req_seg_count = 1; - mp = &mush; - mp->isp = isp; - mp->cmd_token = csio; - mp->rq = rq; - mp->iptrp = iptrp; - mp->optr = optr; - mp->error = 0; - (*eptr)(mp, NULL, 0, 0); - goto exit; - } - } else -#endif - eptr = dma2; - - /* - * NB: if we need to do request queue entry swizzling, - * NB: this is where it would need to be done for cmds - * NB: that move no data. For commands that move data, - * NB: swizzling would take place in those functions. - */ - if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_NONE || - (csio->dxfer_len == 0)) { - rq->req_seg_count = 1; - return (CMD_QUEUED); - } - - /* - * Do a virtual grapevine step to collect info for - * the callback dma allocation that we have to use... - */ - mp = &mush; - mp->isp = isp; - mp->cmd_token = csio; - mp->rq = rq; - mp->iptrp = iptrp; - mp->optr = optr; - mp->error = 0; - - if ((csio->ccb_h.flags & CAM_SCATTER_VALID) == 0) { - if ((csio->ccb_h.flags & CAM_DATA_PHYS) == 0) { - int error, s; - dp = &pci->dmaps[isp_handle_index(rq->req_handle)]; - s = splsoftvm(); - error = bus_dmamap_load(pci->parent_dmat, *dp, - csio->data_ptr, csio->dxfer_len, eptr, mp, 0); - if (error == EINPROGRESS) { - bus_dmamap_unload(pci->parent_dmat, *dp); - mp->error = EINVAL; - isp_prt(isp, ISP_LOGERR, - "deferred dma allocation not supported"); - } else if (error && mp->error == 0) { -#ifdef DIAGNOSTIC - printf("%s: error %d in dma mapping code\n", - isp->isp_name, error); -#endif - mp->error = error; - } - splx(s); - } else { - /* Pointer to physical buffer */ - struct bus_dma_segment seg; - seg.ds_addr = (bus_addr_t)csio->data_ptr; - seg.ds_len = csio->dxfer_len; - (*eptr)(mp, &seg, 1, 0); - } - } else { - struct bus_dma_segment *segs; - - if ((csio->ccb_h.flags & CAM_DATA_PHYS) != 0) { - isp_prt(isp, ISP_LOGERR, - "Physical segment pointers unsupported"); - mp->error = EINVAL; - } else if ((csio->ccb_h.flags & CAM_SG_LIST_PHYS) == 0) { - isp_prt(isp, ISP_LOGERR, - "Virtual segment addresses unsupported"); - mp->error = EINVAL; - } else { - /* Just use the segments provided */ - segs = (struct bus_dma_segment *) csio->data_ptr; - (*eptr)(mp, segs, csio->sglist_cnt, 0); - } - } -#ifdef ISP_TARGET_MODE -exit: -#endif - if (mp->error) { - int retval = CMD_COMPLETE; - if (mp->error == MUSHERR_NOQENTRIES) { - retval = CMD_EAGAIN; - } else if (mp->error == EFBIG) { - XS_SETERR(csio, CAM_REQ_TOO_BIG); - } else if (mp->error == EINVAL) { - XS_SETERR(csio, CAM_REQ_INVALID); - } else { - XS_SETERR(csio, CAM_UNREC_HBA_ERROR); - } - return (retval); - } else { - /* - * Check to see if we weren't cancelled while sleeping on - * getting DMA resources... - */ - if ((csio->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG) { - if (dp) { - bus_dmamap_unload(pci->parent_dmat, *dp); - } - return (CMD_COMPLETE); - } - return (CMD_QUEUED); - } -} - -static void -isp_pci_dmateardown(struct ispsoftc *isp, XS_T *xs, u_int32_t handle) -{ - struct isp_pcisoftc *pci = (struct isp_pcisoftc *)isp; - bus_dmamap_t *dp = &pci->dmaps[isp_handle_index(handle)]; - if ((xs->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_POSTREAD); - } else { - bus_dmamap_sync(pci->parent_dmat, *dp, BUS_DMASYNC_POSTWRITE); - } - bus_dmamap_unload(pci->parent_dmat, *dp); -} - - -static void -isp_pci_reset1(struct ispsoftc *isp) -{ - /* Make sure the BIOS is disabled */ - isp_pci_wr_reg(isp, HCCR, PCI_HCCR_CMD_BIOS); - /* and enable interrupts */ - ENABLE_INTS(isp); -} - -static void -isp_pci_dumpregs(struct ispsoftc *isp, const char *msg) -{ - struct isp_pcisoftc *pci = (struct isp_pcisoftc *)isp; - if (msg) - printf("%s: %s\n", isp->isp_name, msg); - if (IS_SCSI(isp)) - printf(" biu_conf1=%x", ISP_READ(isp, BIU_CONF1)); - else - printf(" biu_csr=%x", ISP_READ(isp, BIU2100_CSR)); - printf(" biu_icr=%x biu_isr=%x biu_sema=%x ", ISP_READ(isp, BIU_ICR), - ISP_READ(isp, BIU_ISR), ISP_READ(isp, BIU_SEMA)); - printf("risc_hccr=%x\n", ISP_READ(isp, HCCR)); - - - if (IS_SCSI(isp)) { - ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE); - printf(" cdma_conf=%x cdma_sts=%x cdma_fifostat=%x\n", - ISP_READ(isp, CDMA_CONF), ISP_READ(isp, CDMA_STATUS), - ISP_READ(isp, CDMA_FIFO_STS)); - printf(" ddma_conf=%x ddma_sts=%x ddma_fifostat=%x\n", - ISP_READ(isp, DDMA_CONF), ISP_READ(isp, DDMA_STATUS), - ISP_READ(isp, DDMA_FIFO_STS)); - printf(" sxp_int=%x sxp_gross=%x sxp(scsi_ctrl)=%x\n", - ISP_READ(isp, SXP_INTERRUPT), - ISP_READ(isp, SXP_GROSS_ERR), - ISP_READ(isp, SXP_PINS_CTRL)); - ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); - } - printf(" mbox regs: %x %x %x %x %x\n", - ISP_READ(isp, OUTMAILBOX0), ISP_READ(isp, OUTMAILBOX1), - ISP_READ(isp, OUTMAILBOX2), ISP_READ(isp, OUTMAILBOX3), - ISP_READ(isp, OUTMAILBOX4)); - printf(" PCI Status Command/Status=%x\n", - pci_read_config(pci->pci_dev, PCIR_COMMAND, 1)); -}