summaryrefslogtreecommitdiff
path: root/sys/dev/microcode
AgeCommit message (Collapse)Author
2006-12-17Add bnx(4), a driver for Broadcom NetXtreme II 10/100/1000 Ethernet device.bouyer
Ported from OpenBSD by cube@, with some bus_dma fixes by me. Tested on i386 and amd64.
2006-11-25spell precede; from Zaferchristos
2006-11-16__unused removal on arguments; approved by core.christos
2006-10-31Add rum(4) for newer USB Ralink devices. Obtained from OpenBSD.joerg
Special thanks to Sepherosa Ziehau for helping debugging USB issues. Hook up rum(4) for i386 config files.
2006-10-12- sprinkle __unused on function decls.christos
- fix a couple of unused bugs - no more -Wno-unused for i386
2006-06-08Add cleandir and clean fake targets. I should find a better way to do this.rpaulo
2006-06-08Add a fake includes target.rpaulo
2006-06-07Descend into ral.rpaulo
2006-06-07Definitions needed by subsequent Makefiles to install the firmware.rpaulo
2006-06-07Refactor this and use bsd.files.mk instead.rpaulo
2006-06-07Define proginstall (empty) and afterinstall (to install the firmware).rpaulo
2006-06-07License from Ralink.rpaulo
2006-06-04Generated firmware files for Ralink chipsets 2561, 2561s, 2661.rpaulo
2006-06-04Framework to build Ralink wireless cards binary firmwares based onrpaulo
Ralink distributed microcode.h. From OpenBSD.
2006-02-25Fix typos, reported by Alexey Dobriyan ("Gathered from Linux"),wiz
forwarded by jmc@openbsd.
2005-12-15TCP Segmentation Offload (TSO) add-on firmware for thejonathan
Broadcom bcm5703/bcm5704, and bcm5705, respectively. Taken verbatim from the Linux-2.6.12.3 tg3 driver, where the firmware is explictly marked as non-GPLed (hex-encoded binary blobs are not in source form, and therefore violate the terms of the GPL), along with the Boradcom non-GPL copyright allowing distribution of this hex-encoded firmware.
2005-12-11merge ktrace-lwp.christos
2005-11-18Regen: save offset at disconnect after a data phase without save data pointer.bouyer
2005-11-18Some drives disconnect after the last data phase without a save data pointerbouyer
message. In such case we would not update resid with the proper value (eventually resid would not be updated at all if there was only one data phase). To fix this, have the script save the offset in the data tables at disconnect time if there was a transfer, and use this to compute the resid if the current offset is 0. Problem reported and patch tested by edwin, Roy Bixler and YAMAMOTO Takashi. Fix kern/31990 by YAMAMOTO Takashi.
2005-06-27u_int8_t -> uint8_tthorpej
2005-05-31remove bogus cast.christos
2005-03-01revert the whitespace kill -- these are binaries.perry
2005-02-27nuke trailing whitespaceperry
2005-02-11White space nit- don't put a space before/after increment/decrementsimonb
operators.
2005-01-24Atmel AT76C50XX firmware files (required by atu(4) USB-wifi adapter)joff
2004-08-01Add binary versions of firmware images, which will be used Soon.mycroft
2004-05-17Regen from esiop.ss 1.18bouyer
2004-05-17Regen from siop.ss 1.18bouyer
2004-05-17when an unexpected disconnect occurs only compute the resid; do thebouyer
real save data pointers when we get the message (or rather, at disconnect time following the message). Factor out code to do this, and to deal with xs->resid, in siop_common.c.
2004-05-17Regen from esiop.ss 1.17.bouyer
2004-05-17Properly compute xs->resid, instead of assuming it'll always be 0 whenbouyer
a command is done.
2004-05-16Make it compile with recent compilers.bouyer
2004-05-02Revert ISP2100 firmware to Qlogic revision 1.19.16 (the version that shippedtls
with NetBSD 1.5). With all newer versions available to us, we have seen some adapters crash -- and fail to respond to reset -- under certain heavy load conditions. This version appears stable under heavy load with the current driver on multiple systems on which we can reproduce the failure with newer versions.
2004-02-24Spell interrupt with two rs. From Peter Postma.wiz
2004-01-21Updated firmware from QLogic via Matt Jacob (from his Jan 14 distribution).briggs
12160 Firmware Version 10.04.41 (10:30 Mar 21, 2003) 2200 Firmware Version 2.02.06 (08:39 Jun 26, 2003) 2300 Firmware Version 3.02.15 (08:26 Jul 21, 2003) Matt's done some testing with it, and I've also tested on a very basic setup with a QLA 2310 and a tower of 4 FC drives. Unfortunately, there doesn't seem to be any change log for the firmware.
2003-12-04netbsd.org -> NetBSD.orgkeihan
This was the last commit of this kind to src/sys, which is now totally "NetBSD.org clean". Thanks for the patiance, and sorry for all the commits.
2003-10-26Use ${HOST_SH} instead of `sh'.lukem
If necessary, pull in <bsd.sys.mk> to get the definition of HOST_SH; Makefiles that pull in one of (most of) <bsd.*.mk> will get this anyway.
2003-10-05Remove references to University of California from my copyright notices.bouyer
2003-08-29Apply the following change from 06/28/2003 04:44:10 by gibbs to thethorpej
FreeBSD ahd driver: Use clr instead of an explicit mov from ALLZEROS to clear SCB_FIFO_USE_COUNT. This is just a syntactic change.
2003-08-29Apply the following change from 06/28/2003 04:40:46 made by gibbs to thethorpej
FreeBSD ahd driver: aic79xx.seq: Remove an old comment that no longer applies. Fix a jump in our unexpected non-packetized phase handler to use an explicit lable. The old code had a hardcoded jump offset that was off by one instruction.
2003-08-29Sync perforce IDs. (From FreeBSD)thorpej
2003-08-29Apply the following change from 05/30/2003 02:14:22 made by scottl to thethorpej
FreeBSD ahd driver: Fix a reported case of severe data corruption: aic79xx.h: aic79xx.reg: Return the SCB_TAG field to 16byte alignment. It seems that on some PCI systems, SCBs are not transferred correctly to the controller with the previous placement of the SCB_TAG field. Approved by: re (rwatson)
2003-08-29Add some missing definitions for the LUNLEN register.thorpej
2003-08-29Apply the following change made on 5/26/2003 21:26:51 by gibbs to thethorpej
FreeBSD ahd driver: Correct/Simplify ignore wide residue message handling aic79xx.c: In ahd_handle_ign_wide_residue(): o Use SCB_XFERLEN_ODD SCB field to determine transfer "oddness" rather than the DATA_COUNT_ODD logic. SCB_XFERLEN_ODD is toggled on every ignore wide residue message so that multiple ignore wide residue messages for the same transaction are properly supported. o If the sg list has been exausted, the sequencer doesn't bother to update the residual data count since it is known to be zero. Perform the zeroing manually before calculating the remaining data count. o Use multibyte in/out macros instead of shifting/masking by hand. aic79xx_inline.h: In ahd_setup_scb_common(), setup the SCB_XFERLEN_ODD field. aic79xx.reg: Use the SCB_TASK_ATTRIBUTE field as a bit field in the non-packetized case. We currently only define one bit, SCB_XFERLEN_ODD. Remove the ODD_SEG bit field that was used to carry the odd transfer length information through the SG cache. This is obviated by SCB_XFERLEN_ODD field. Remove the DATA_COUNT_ODD scratch ram byte that was used dynamicaly compute data transfer oddness. This is obviated by SCB_XFERLEN_ODD field. aic79xx.seq: Remove all updates to the DATA_COUNT_ODD scratch ram field. Remove all uses of ODD_SEG. These two save quite a few sequencer instructions. Use SCB_XFERLEN_ODD to validate the end of transfer ignore wide residue message case.
2003-08-29Apply the following change made 5/26/2003 21:18:48 by gibbs to thethorpej
FreeBSD ahd driver: Change hadling of the Rev. A packetized lun output bug to be more efficient by having the sequencer copy the single byte of valid lun data into the long lun field. aic79xx.c: Memset our hardware SCB to 0 so that untouched fields don't confuse diagnostic output. With the old method for handling the Rev A bug, if the long lun field was not 0, this could result in bogus lun information being sent to drives. Use the same SCB transfer size for all chip types now that the long lun is not DMA'ed to the chip. aic79xx.seq: Add code to copy lun information for Rev.A hardware. aic79xx_inline.h: Remove host update of the long_lun field on every packetized command.
2003-08-29Apply the following change checked in 2003/05/04 00:20:07 by gibbsthorpej
to the FreeBSD ahd driver: Correct spelling errors. Switch to handling bad SCSI status as a sequencer interrupt instead of having the kernel proccess these failures via the completion queue. This is done because: o The old scheme required us to pause the sequencer and clear critical sections for each SCB. It seems that these pause actions, if coincident with a sequencer FIFO interrupt, would result in a FIFO interrupt getting lost or directing to the wrong FIFO. This caused hangs when the driver was stressed under high "queue full" loads. o The completion code assumed that it was always called with the sequencer running. This may not be the case in timeout processing where completions occur manually via ahd_pause_and_flushwork(). o With this scheme, the extra expense of clearing critical sections is avoided since the sequencer will only self pause once all pending selections have cleared and it is not in a critical section. aic79xx.c Add code to handle the new BAD_SCB_STATUS sequencer interrupt code. This just redirects the SCB through the already existing ahd_complete_scb() code path. Remove code in ahd_handle_scsi_status() that paused the sequencer, made sure that no selections where pending, and cleared critical sections. Bad status SCBs are now only processed when all of these conditions are true. aic79xx.reg: Add the BAD_SCB_STATUS sequencer interrupt code. aic79xx.seq: When completing an SCB upload to the host, if we are doing this because the SCB contains non-zero SCSI status, defer completing the SCB until there are no pending selection events. When completing these SCBs, use the new BAD_SCB_STATUS sequencer interrupt. For all other uploaded SCBs (currently only for underruns), the SCB is completed via the normal done queue. Additionally, keep the SCB that is currently being uploaded on the COMPLETE_DMA_SCB list until the dma is completed, not just until the DMA is started. This ensures that the DMA is restarted properly should the host disable the DMA transfer for some reason. In our RevA workaround for Maxtor drives, guard against the host pausing us while trying to pause I/O until the first data-valid REQ by clearing the current snapshot so that we can tell if the transfer has completed prior to us noticing the REQINIT status. In cfg4data_intr, shave off an instruction before getting the data path running by adding an entrypoint to the overrun handler to also increment the FIFO use count. In the overrun handler, be sure to clear our LONGJMP address in both exit paths. Perform a few sequencer optimizations. aic79xx.c: Print the full path from the SCB when a packetized status overrun occurs. Remove references to LONGJMP_SCB which is being removed from firmware usage. Print the new SCB_FIFO_USE_COUNT field in the per-SCB section of ahd_dump_card_state(). The SCB_TAG field is now re-used by the sequencer, so it no longer makes sense to reference this field in the kernel driver. aic79xx.h: Re-arrange fields in the hardware SCB from largest size type to smallest. This makes it easier to move fields without changing field alignment. The hardware scb tag field is now down near the "spare" portion of the SCB to facilitate reuse by the sequencer. aic79xx.reg: Remove LONGJMP_ADDR. Rearrange SCB fields to match aic79xx.h. Add SCB_FIFO_USE_COUNT as the first byte of the SCB_TAG field. aic79xx.seq: Add a per-SCB "Fifos in use count" field and use it to determine when it is safe (all data posted) to deliver status back to the host. The old method involved polling one or both FIFOs to verify that the current task did not have pending data. This makes running down the GSFIFO very cheap, so we will empty the GSFIFO in one idle loop pass in all cases. Use this simplification of the completion process to prune down the data FIFO teardown sequencer for packetized transfers. Much more code is now shared between the data residual and transfer complete cases. Correct some issues in the packetized status handler. It used to be possible to CLRCHN our FIFO before status had fully transferred to the host. We also failed to handle NONPACKREQ phases that could occur should a CRC error occur during transmission of the status data packet. Correct a few big endian issues: aic79xx.c: aic79xx_inline.h: aic79xx_pci.c: aic79xx_osm.c: o Always get the SCB's tag via the SCB_GET_TAG acccessor o Add missing use of byte swapping macros when touching hscb fields. o Don't double swap SEEPROM data when it is printed. Correct a big-endian bug. We cannot assign a o When assigning a 32bit LE variable to a 64bit LE variable, we must be explict about how the words of the 64bit LE variable are initialized. Cast to (uint32_t*) to do this. aic79xx.c: In ahd_clear_critical_section(), hit CRLSCSIINT after restoring the interrupt masks to avoid what appears to be a glitch on SCSIINT. Any real SCSIINT status will be persistent and will immidiately reset SCSIINT. This clear should only get rid of spurious SCSIINTs. This glitch was the cause of the "Unexpected PKT busfree" status that occurred under high queue full loads Call ahd_fini_scbdata() after shutdown so that any ahd_chip_init() routine that might access SCB data will not access free'd memory. Reset the bus on an IOERR since the chip doesn't seem to reset to the new voltage level without this. Change offset calculation for scatter gather maps so that the calculation is correct if an integral multiple of sg lists does not fit in the allocation size. Adjust bus dma tag for data buffers based on 39BIT addressing flag in our softc. Use the QFREEZE count to simplify ahd_pause_and_flushworkd(). We can thus rely on the sequencer eventually clearing ENSELO. In ahd_abort_scbs(), fix a bug that could potentially corrupt sequencer state. The saved SCB was being restored in the SCSI mode instead of the saved mode. It turns out that the SCB did not need to be saved at all as the scbptr is already restored by all subroutines called during this function that modify that register. aic79xx.c: aic79xx.h: aic79xx_pci.c: Add support for parsing the seeprom vital product data. The VPD data are currently unused. aic79xx.h: aic79xx.seq: aic79xx_pci.c: Add a firmware workaround to make the LED blink brighter during packetized operations on the H2A. aic79xx_inline.h: The host does not use timer interrupts, so don't gate our decision on whether or not to unpause the sequencer on whether or not a timer interrupt is pending.
2003-08-06Regen from esiop.ss 1.15.bouyer
2003-08-06Properly handle messages that we get at reconnect time (other thanbouyer
SIMPLE_Q_TAG). Some drives start sync/wide negotiation at reconnect time. Problem reported and fix tested by Andreas Wrede.
2003-07-14add missing __RCSID()lukem
2003-07-01VERY quick and VERY dirty port of the OpenBSD "txp" driver fordrochner
3Com 3C(R)990 cards. No TCP/UDP nor IPSEC offloading for now. The ifmedia part needs some work, but I only have a 100-FX card; hopefully someone will clean this up.