Skip to content

Commit

Permalink
[PATCH] libata: preserve SATA SPD setting over hard resets
Browse files Browse the repository at this point in the history
Don't overwrite SPD setting during hard reset.  This change has the
(intended) side effect of honoring the BIOS configuration.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Apr 1, 2006
1 parent e82cbdb commit 852ee16
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2132,9 +2132,11 @@ void ata_bus_reset(struct ata_port *ap)
static int sata_phy_resume(struct ata_port *ap)
{
unsigned long timeout = jiffies + (HZ * 5);
u32 sstatus;
u32 scontrol, sstatus;

scr_write_flush(ap, SCR_CONTROL, 0x300);
scontrol = scr_read(ap, SCR_CONTROL);
scontrol = (scontrol & 0x0f0) | 0x300;
scr_write_flush(ap, SCR_CONTROL, scontrol);

/* Wait for phy to become ready, if necessary. */
do {
Expand Down Expand Up @@ -2247,10 +2249,14 @@ int ata_std_softreset(struct ata_port *ap, int verbose, unsigned int *classes)
*/
int sata_std_hardreset(struct ata_port *ap, int verbose, unsigned int *class)
{
u32 scontrol;

DPRINTK("ENTER\n");

/* Issue phy wake/reset */
scr_write_flush(ap, SCR_CONTROL, 0x301);
scontrol = scr_read(ap, SCR_CONTROL);
scontrol = (scontrol & 0x0f0) | 0x301;
scr_write_flush(ap, SCR_CONTROL, scontrol);

/*
* Couldn't find anything in SATA I/II specs, but AHCI-1.1
Expand Down

0 comments on commit 852ee16

Please sign in to comment.