pata_hpt{37x,3x2n}: add debounce delay to cable detection methods
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 19 Nov 2009 19:31:31 +0000 (20:31 +0100)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 3 Dec 2009 07:46:35 +0000 (02:46 -0500)
Alan Cox reported that cable detection sometimes works unreliably
for HPT3xxN and that the issue is fixed by adding debounce delay
as used by the vendor driver.

Sergei Shtylyov also noticed that debounce delay is needed for all
HPT37x and HPT3xxN chipsets according to vendor drivers.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/pata_hpt37x.c
drivers/ata/pata_hpt3x2n.c

index 0921e8b30a08286411b9426863dffa0bbfafa562..9f5189c700bb00bedbe598e14d7eef47f967c26d 100644 (file)
@@ -316,6 +316,9 @@ static int hpt37x_cable_detect(struct ata_port *ap)
 
        pci_read_config_byte(pdev, 0x5B, &scr2);
        pci_write_config_byte(pdev, 0x5B, scr2 & ~0x01);
+
+       udelay(10); /* debounce */
+
        /* Cable register now active */
        pci_read_config_byte(pdev, 0x5A, &ata66);
        /* Restore state */
index 2ab9fd6c597f076580f7309a977bc0b0a1d9594b..8d63eba782ff986e441a503c703612de6db4e1e0 100644 (file)
@@ -128,6 +128,9 @@ static int hpt3x2n_cable_detect(struct ata_port *ap)
 
        pci_read_config_byte(pdev, 0x5B, &scr2);
        pci_write_config_byte(pdev, 0x5B, scr2 & ~0x01);
+
+       udelay(10); /* debounce */
+
        /* Cable register now active */
        pci_read_config_byte(pdev, 0x5A, &ata66);
        /* Restore state */