d9c03f77e0
If we can, use timeouts instead of DELAYs when dealing with a bus reset. This prevents us from holding up the whole machine for a noticible amount of time (especially for a real time app). Make a pass over the timeout/error handling code. Aborts are more reliable. We actually handle parity errors correctly now instead of locking up the bus. Added code to properly clean up disconnected SCBs down on the card during error handling. Improved robustness in several areas. If we are using defaults, but are an Ultra card, negotiate at 20MHz instead of 10. Don't attempt to handle any commands for 100ms after a reset has occured. This is the minimum time before a target will respond to selection. Also disable the busfree interrupt before doing a bus reset. This prevents the driver from getting confused by an "unexpected busfree".