libata: ahci_start_engine compliant to AHCI spec
authorJian Peng <jipeng2005@gmail.com>
Sat, 23 Apr 2011 06:58:10 +0000 (23:58 -0700)
committerJeff Garzik <jgarzik@pobox.com>
Sun, 24 Apr 2011 15:35:40 +0000 (11:35 -0400)
commit270dac35c26433d06a89150c51e75ca0181ca7e4
tree187f95b21867318d77b768e1e8be27b0894c239b
parent792d37af35386466cf5dda51d6b710fa1dd9aad1
libata: ahci_start_engine compliant to AHCI spec

At the end of section 10.1 of AHCI spec (rev 1.3), it states

Software shall not set PxCMD.ST to 1 until it is determined that
a functoinal device is present on the port as determined by
PxTFD.STS.BSY=0, PxTFD.STS.DRQ=0 and PxSSTS.DET=3h

Even though most AHCI host controller works without this check,
specific controller will fail under this condition.

Signed-off-by: Jian Peng <jipeng2005@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/ata/libahci.c