Cleanup ATA code; get SATA drives working on real hardware.
authorKevin O'Connor <kevin@koconnor.net>
Sat, 7 Feb 2009 03:36:53 +0000 (22:36 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 7 Feb 2009 03:36:53 +0000 (22:36 -0500)
commit580e33293244fee4556e56ecc67b8bd877f3c496
treef03d981c3a9e9730dda366b2fe91b01b20b1bb00
parenteac894df0cf5bd39da606569c053eaa590257ac1
Cleanup ATA code; get SATA drives working on real hardware.

Simplify await_ide code.
Only check for drq/err after device reports non-bsy.
Rewrite ata reset code.  Use latest spec.  Add logic for resets on
    slaves without a master.
Set DH register slave bit in send_cmd - so callers don't have to set it.
There is no need for an mdelay(50) after a drive change.
Do check for non-bsy before and after drive changes.
Show error register in debug messages when ERR bit is set.
Don't check for RDY bit in ata_transfer -- ATAPI devices may not set it.
Don't use signatures to detect drive type - instead issue both
    IDENTIFY_DEVICE_PACKET and IDENTIFY_DEVICE, and see which succeeds.
Be sure to wait for RDY before issuing IDENTIFY_DEVICE.
Don't reset slave if reset was just done for master.
src/ata.c
src/atabits.h