Move out PCS handling from piix_sata_prereset() into
piix_sata_present_mask() and use it from newly implemented
piix_sata_softreset(). Class codes for devices which are indicated to
be absent by PCS are cleared to ATA_DEV_NONE. This fixes ghost device
problem reported on ICH6 and 7.
This patch moves PCS handling from prereset to softreset, which makes
two behavior changes.
* perform softreset even when PCS indicates no device
* PCS handling is repeated before retrying softresets due to reset
failures.
Both behavior changes are intended and more consistent with how other
drivers behave.
Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>