- Interrupt flag in DMA Status register is now cleared after every
commit3bb05289d448a811770f915aa6d20928083f1e79
authorneil <neil@fb15a70f-31f2-0310-bbcc-cdcc74a49acc>
Thu, 23 Apr 2009 20:36:47 +0000 (23 20:36 +0000)
committerneil <neil@fb15a70f-31f2-0310-bbcc-cdcc74a49acc>
Thu, 23 Apr 2009 20:36:47 +0000 (23 20:36 +0000)
tree3f670fff5dbda2706e7c661c7b529983e857262f
parente89ae374ac3636768ed67b60cf7c1bf613a9cf1f
 - Interrupt flag in DMA Status register is now cleared after every
   interrupt. This allows more SATA buses to work.
 - Detect which buses are in legacy mode based on PCI Interface byte
   rather than base addresses.
 - Always use legacy IRQ for buses in legacy mode.
 - Use a maximum of two PCI buses in compatiblity mode, as per specs.
 - Disable UDMA modes above 2 if 80-wire cable not detected (SATA should be
   unaffected).
 - Corrected detection of slave devices.
 - Disable DMA if DMA-capability bit is cleared in PCI Interface byte.
 - Corrected detection of available PIO and MDMA modes.
 - Now attempts to use all subclasses of mass storage PCI class except SCSI
   and serial SCSI. Hence removed nosubclass bootloader option and separate
   check for SiI3114/3512.
 - We now handle all interrupts generated during a Packet command.
 - Eliminated known unhandled interrupts.
 - Now reads and discards excess data provided by buggy drive firmwares in
   packet responses, allowing such drives to be used again.
 - Increased timeout in ata_exec_cmd() from 3 seconds to 30 to allow for
   drives that need to spin up before responding.
 - Check ATAPIF_WRITE instead of ATAPIF_READ in ata_IRQPIOWriteAtapi(), which
   should fix PIO ATAPI writes (untested).
 - Removed definitions for invalid PIO and DMA modes.
 - DMADIR bit was opposite of what it should be. Fixed.
 - Warn user about simplex DMA.

git-svn-id: https://svn.aros.org/svn/aros/trunk/AROS@31147 fb15a70f-31f2-0310-bbcc-cdcc74a49acc
arch/common/ata.device/ata.c
arch/common/ata.device/ata.conf
arch/common/ata.device/ata.h
arch/common/ata.device/ata_init.c
arch/common/ata.device/dma_generic.c
arch/common/ata.device/lowlevel.c
arch/common/ata.device/timer.c
arch/common/ata.device/timer.h