Fix inability to recover from disc errors 08 and 21
Detail: These disc errors relate to the status of the task file registers before a command is issued, however with SATA (unlike PATA) we can't simply read the task file on demand, we need to issue a command to cause a register FIS transaction to happen on the bus. The only available command which is compatible with all device types (packet and non-packet) and which can be issued in not-ready state is EXECUTE_DEVICE_DIAGNOSTIC, so issue this when either disc error is encountered and retry to give the drive a chance to return to ready/not-busy state. This command has the advantage of having been mandatory back to ATA-1 so should be harmless for PATA drives, whether connected via a PATA-SATA bridge or via a future PATADriver module. Admin: Tested on Titanium. Version 4.02. Tagged as 'ADFS-4_02'
Showing with 31 additions and 10 deletions