]> git.baikalelectronics.ru Git - kernel.git/commit
libata: improve SATA PHY speed down logic
authorTejun Heo <htejun@gmail.com>
Mon, 16 Jul 2007 05:29:40 +0000 (14:29 +0900)
committerJeff Garzik <jeff@garzik.org>
Fri, 20 Jul 2007 12:19:05 +0000 (08:19 -0400)
commitcfbe1b12db289ecfccbf7109799d60a5f4ebccb5
treeaa356bbd961b7425017a3037fec509ffb761d332
parent8cbd9f307faf4a5c63ad8fad4e0b5d813c56017d
libata: improve SATA PHY speed down logic

sata_down_spd_limit() first reads the current SPD from SStatus and
limit the speed to the lower one of one below the current limit or one
below the current SPD in SStatus.  SPD may not be accessible or valid
when SPD down is requested making sata_down_spd_limit() fail when it's
most needed.

This patch makes the current SPD cached after each successful reset
and forces GEN I speed (1.5Gbps) if neither of SStatus or the cached
value is valid, so sata_down_spd_limit() is now guaranteed to lower
the speed limit if lower speed is available.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-core.c
drivers/ata/libata-eh.c
include/linux/libata.h