diff options
author | Alexander Motin <mav@FreeBSD.org> | 2010-11-18 11:58:17 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2010-11-18 11:58:17 +0000 |
commit | 5c2a4ae217c19fee6cfe6334e2fbe9c0885c7daf (patch) | |
tree | 3ae2c520160c32a4e660d31859b0412986f96e6c /sys/dev | |
parent | 1f6aa21d474c6b312d62f6355ce5a6da6a0d0b65 (diff) | |
download | src-5c2a4ae217c19fee6cfe6334e2fbe9c0885c7daf.tar.gz src-5c2a4ae217c19fee6cfe6334e2fbe9c0885c7daf.zip |
Even if we are skipping SATA hard reset - set power management bits in
SControl register. This should make things consistent and help to avoid
unexpected PHY events that I've noticed in some cases on VIA controllers.
Notes
Notes:
svn path=/head/; revision=215453
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/ata/ata-sata.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-sata.c b/sys/dev/ata/ata-sata.c index d3df7ce4e4d5..e95fc8fcf208 100644 --- a/sys/dev/ata/ata-sata.c +++ b/sys/dev/ata/ata-sata.c @@ -153,8 +153,12 @@ ata_sata_phy_reset(device_t dev, int port, int quick) if (quick) { if (ata_sata_scr_read(ch, port, ATA_SCONTROL, &val)) return (0); - if ((val & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) + if ((val & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) { + ata_sata_scr_write(ch, port, ATA_SCONTROL, + ATA_SC_DET_IDLE | ((ch->pm_level > 0) ? 0 : + ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER)); return ata_sata_connect(ch, port, quick); + } } if (bootverbose) { |