summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp_pci.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix some stupid copyright mistakes that have been there for quite some time.mjacob2007-03-101-2/+0
|
* Redo previous newbus related change to be kinder tomjacob2007-02-231-1/+2
| | | | multi-release support.
* o break newbus api: add a new argument of type driver_filter_t topiso2007-02-231-1/+1
| | | | | | | | | | | | | bus_setup_intr() o add an int return code to all fast handlers o retire INTR_FAST/IH_FAST For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current Reviewed by: many Approved by: re@
* There is a problem in setting/getting 'options'- if we check thingsmjacob2007-02-231-111/+133
| | | | | | | | | | | early, we haven't set board type, so we can't correctly check for some options. Fix this by splitting option setting/getting into generic, pci and then later board specific, option setting/getting. This was noticed when setting 'iid' (or 'hard loop id') didn't work all of a sudden. Noticed by: Mike Drangula (thanks!) via Jung-uk Kim (thanks!)
* add a missing piece for 2432mjacob2007-02-101-0/+1
|
* Putative untested 2432 (PCI-E) support.mjacob2007-02-101-1/+12
|
* Clean up some of the various platform and release specific dma tagmjacob2007-01-231-25/+10
| | | | | | | stuff so it is centralized in isp_freebsd.h. Take out PCI posting flushed in qla2100/2200 register reads except for 2100s.
* error print cleanup && turn off ints if RISC is pausedmjacob2007-01-051-1/+2
|
* Restore revision 1.126 that got accidentally nuked.mjacob2006-12-181-0/+6
|
* Implement ISP_RESET0 for PCI and SBUS attachments- isp_reset hasmjacob2006-12-161-7/+14
| | | | | been modified to call ISP_RESET0 if it fails to do a reset. This gives us a chance to disable interrupts.
* Remove dependency on ispfw and firmware as modules.mjacob2006-12-101-4/+1
| | | | | | | | | | | | | | | | | Either they're there early and the ispfw sets have registered themselves, or they're not. The module dependency stuff isn't quite what we want anyway. If the user doesn't want the load placed on system memory by loading the firmware, they don't specify it to be loaded (either by being linked in or via being a module to be loaded and then hooked in with firmware(9)). It doesn't then make sense to then override what they want by pulling it in anyway. This might be able to work if we were able to pull in just exactly what we needed for the card we have- but that's an optimization left for the future.
* Make the SAN login/logout stuff more common between different chipsetsmjacob2006-11-181-6/+0
| | | | | | and provied an isp_control entry point so that the outer layers can do PLOGI/LOGO explicitly. Add MS IOCB support. This completes the cycle for base support for SMI-S.
* Disable code to set max read byte count on the 2400.mjacob2006-11-171-0/+6
| | | | | | | It caused a panic in writing the config register on a system. Turn it off until we take the time to understand it. Reported by and Testing by: Anton
* Push things closer to path failover by implementing loop down andmjacob2006-11-141-3/+25
| | | | | | | | | | | | | | | | | | | | | | | | | gone device timers and zombie state entries. There are tunables that can be used to select a number of parameters. loop_down_limit - how long to wait for loop to come back up before declaring all devices dead (default 300 seconds) gone_device_time- how long to wait for a device that has appeared to leave the loop or fabric to reappear (default 30 seconds) Internal tunables include (which should be externalized): quick_boot_time- how long to wait when booting for loop to come up change_is_bad- whether or not to accept devices with the same WWNN/WWPN that reappear at a different PortID as being the 'same' device. Keen students of some of the subtle issues here will ask how one can keep devices from being re-accepted at all (the answer is to set a gone_device_time to zero- that effectively would be the same thing).
* Add 4Gb (24XX) support and lay the foundation for a lot of new stuff.mjacob2006-11-021-60/+458
|
* Restore multi-version cleanliness.mjacob2006-09-031-3/+11
|
* add a newbus method for obtaining the bus's bus_dma_tag_t... This isjmg2006-09-031-2/+3
| | | | | | | | | | | | | required by arches like sparc64 (not yet implemented) and sun4v where there are seperate IOMMU's for each PCI bus... For all other arches, it will end up returning NULL, which makes it a no-op... Convert a few drivers (the ones we've been working w/ on sun4v) to the new convection... Eventually all drivers will need to replace the parent tag of NULL, w/ bus_get_dma_tag(dev), though dev is usually different for each driver, and will require hand inspection... Reviewed by: scottl (earlier version)
* More ispfwfunc definitions funnies which break pre-7.0 builds.mjacob2006-09-011-1/+0
|
* Fix RELENG_4 code version- isp_roles wasn't getting initialized somjacob2006-08-211-0/+6
| | | | | | | | | it ended up defaulting to ISP_ROLE_NONE. My testing hadn't caught it because I was deliberatly setting role via ioctl. Thanks to user Toni for lending me an alpha to test this on. MFC after: 0 days
* The register offset is within 4K, not 256 bytes, for some QLogic cards.mjacob2006-08-141-1/+1
|
* Some rearrangement of headers to minimize diffs with outside ofmjacob2006-07-161-3/+4
| | | | | | | | FreeBSD repository and to clean up the license header so as to not pollute the license with file function. Zero all mailbox structures prior to use (just in case). Change the outgoing mailbox count for INIT_FIRMWARE to be correct.
* Don't attach 2422's yet. It just confuses everyone.mjacob2006-07-141-0/+2
|
* Convert isp(4) and ispfw(4) to use firmware(9) to manage firmwaremjacob2006-07-091-3/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | loading for the QLogic cards. Because isp(4) exists before the root is mounted, it's not really possible for us to use the kernel's linker to load modules directly from disk- that's really too bad. However, the this is still a net win in in that the firmware has been split up on a per chip (and in some cases, functionality) basis, so the amount of stuff loaded *can* be substantially less than the 1.5MB of firmware images that ispfw now manages. That is, each specific f/w set is now also built as a module. For example, QLogic 2322 f/w is built as isp_2322.ko and Initiator/Target 1080 firmware is built as isp_1080_it.ko. For compatibility purposes (i.e., to perturb folks the least), we also still build all of the firmware as one ispfw.ko module. This allows us to let 'ispfw_LOAD' keep on working in existing loader.conf files. If you now want to strip this down to just the firmware for your h/w, you can then change loader.conf to load the f/w you specifically want. We also still allow for ispfw to be statically built (e.g., for PAE and sparc64). Future changes will look at f/w unloading and also role switching that then uses the kernel linker to load different ips f/w sets. MFC after: 2 months
* Do various fixes to support firmware loading for the 2322mjacob2006-07-031-4/+20
| | | | | | | | | | | (and by extension, the 2422). One peculiar thing I've found with the 2322 is that if you don't force it to do Hard LoopID acquisition, the firmware crashes. This took a while to figure out. While we're at it, fix various bugs having to do with NVRAM reading and option setting with respect to pieces of NVRAM.
* Remove bzero/bcopy vestigesmjacob2006-05-221-21/+87
| | | | | | | | | Be cognizant as to whether we're running 2KLogin f/w in target mode and do the appropriate loopid load based upon that. Do a first cut (seems to work, at least for amd64) at 64 bit target mode for fibre channel cards. We could probably also do it for SPI cards, but that's not supported right now.
* Some more gratuitous format and name changes.mjacob2006-04-211-193/+404
| | | | | | | Pull in some target mode changes from a private branch. Pull in some more RELENG_4 compilation changes. A lot of lines changed, but not much content change yet.
* a) clean up some declaration stuff (i.e., make more modern with respectmjacob2006-02-151-63/+67
| | | | | | | | | | | | | | | to getting rid u_int for uint and so on). b) Turn back on 64 bit DAC support. Cheeze it a bit in that we have two DMA callback functions- one when we have bus_addr_t > 4 bits in width and the other which should be normal. Even Cheezier in that we turn off setting up DMA maps to be BUS_SPACE_MAXADDR if we're in ISP_TARGET_MODE. More work on this in a week or so. c) Tested under amd64 and 1MB DFLTPHYS, sparc64, i386 (PAE, but insufficient memory to really test > 4GB). LINT check under amd64. MFC after: 1 month
* Actually, no, I had it wrong in 1.109. The arguments to bus_dma_create_tagmjacob2006-02-041-11/+2
| | | | | | | | are bus_addr_t, not bus_size_t. In any case, turn off DAC support entirely until it is revamped to actually work *correctly* for 64 bit platforms (not using a PAE definition and for both initiator and target mode).
* i386/PAE defines bus_size_t to be 32-bits when it likely should be 64-bits.scottl2006-02-041-2/+5
| | | | Fixing it is left for another day, so just hack around it for now.
* Remove use of inlines and use the functions as a library.mjacob2006-02-021-9/+15
| | | | | | | Larger code space, possibly performance hit, but more portable. Certainly less questionable use of inlining. Suggested by: des
* oopsmjacob2006-01-261-0/+3
|
* Put in at least an attempt to ID the 2422 (4Gb part)mjacob2006-01-261-0/+14
|
* First of several commits as this driver is dusted off and maybe broughtmjacob2006-01-231-3/+25
| | | | | | | | | | | | | | | | | | up to date. Principle changes for this reelase is to support 2K Port Login firmware. This allows us to support the 2322 (and 2422 4Gb) cards which only come with the 2K Port Login firmware. The 2322 should now work- but we don't have firmware sets for it in ispfw (as the change to load 2K Port Login f/w hasn't been made- that f/w is so big it has to be loaded in more than one chunk). Other changes are the beginnings of cleaning up some long standing target mode issues. The next changes here will incorporate a lot of bug fixes from others. Finally, some copyright cleanup and attempts to make the parts of the driver that are FreeBSD specific start conforming more to FreeBSD style. MFC after: 1 month
* Use uintmax_t and %j to print bus dma segment members rather than castingjhb2005-12-151-6/+7
| | | | to long long and using %ll.
* Remove bus_{mem,p}io.h and related code for a micro-optimization on i386nyan2005-05-291-2/+0
| | | | | | and amd64. The optimization is a trivial on recent machines. Reviewed by: -arch (imp, marcel, dfr)
* Fix some incorrectly swapped fields in an ICB.mjacob2005-05-111-2/+2
| | | | | | Access a PCI register with correct width. Obtained from: Dmitry Valeryevich Trikoz
* Use BUS_PROBE_DEFAULT for pci probe return valueimp2005-03-051-1/+1
|
* Support the DELL OEM 2312 cards (1077,6312).mjacob2005-01-231-1/+12
| | | | | | Many thanks to Stormweb for making the h/w available for testing. MFC after: 2 days
* PAE support changes that included at least some minimal actual testingmjacob2004-09-231-14/+23
| | | | with a kernel that booted.
* Do the small amount of tweaking to support PAE for at least initiator mode.mjacob2004-09-071-1/+137
| | | | | | | | I was unable to test this as the PAE kernel crashed with a "cannot copy LDT" before coming up. When this gets a bit more testing, I'll fix the PAE conf file to allow isp devices. PR: 59728
* Store the target handles in a separate list from normal commands. Add anjl2004-05-241-0/+21
| | | | | | CTIO fast post routine to handle CTIO completions. Submitted by: mjacob
* Convert callers to the new bus_alloc_resource_any(9) API.njl2004-03-171-4/+4
| | | | | Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde
* If we're defined to have a default role for target mode, make itmjacob2004-02-071-5/+4
| | | | | | just ISP_ROLE_TARGET- not both. MFC after: 1 week
* Use __FBSDID().obrien2003-08-241-2/+4
| | | | Also some minor style cleanups.
* Prefer new location of pci include files (which have only been in theimp2003-08-221-2/+2
| | | | | tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD.
* Mega busdma API commit.scottl2003-07-011-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg. Lockfunc allows a driver to provide a function for managing its locking semantics while using busdma. At the moment, this is used for the asynchronous busdma_swi and callback mechanism. Two lockfunc implementations are provided: busdma_lock_mutex() performs standard mutex operations on the mutex that is specified from lockfuncarg. dftl_lock() is a panic implementation and is defaulted to when NULL, NULL are passed to bus_dma_tag_create(). The only time that NULL, NULL should ever be used is when the driver ensures that bus_dmamap_load() will not be deferred. Drivers that do not provide their own locking can pass busdma_lock_mutex,&Giant args in order to preserve the former behaviour. sparc64 and powerpc do not provide real busdma_swi functions, so this is largely a noop on those platforms. The busdma_swi on is64 is not properly locked yet, so warnings will be emitted on this platform when busdma callback deferrals happen. If anyone gets panics or warnings from dflt_lock() being called, please let me know right away. Reviewed by: tmm, gibbs
* Back out M_* changes, per decision of the TRB.imp2003-02-191-3/+3
| | | | Approved by: trb
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-3/+3
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* Make compiles (LINT and/or ISP_TARGET_MODE options) happier by making suremjacob2003-01-021-5/+7
| | | | | | printf type format args and actual args match. Reviewed by: Sam Leffler <sam@errno.com>
* This should enable 10160 support. As best as I can tell, the samemjacob2002-10-111-0/+17
| | | | | | | f/w as 12160 is used, and otherwise, this is just a single channel variant of the 10160. MFC after: 0 days
OpenPOWER on IntegriCloud