Commit 8b27ff4c authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik

sata_via: magic vt6421 fix for transmission problems w/ WD drives

vt6421 has problems talking to recent WD drives.  It causes a lot of
transmission errors while high bandwidth transfer as reported in the
following bugzilla entry.

  https://bugzilla.kernel.org/show_bug.cgi?id=15173

Joseph Chan provided the following fix.  I don't have any idea what it
does but I can verify the issue is gone with the patch applied.
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Originally-from: Joseph Chan <JosephChan@via.com.tw>
Reported-by: default avatarJorrit Tijben <sjorrit@gmail.com>
Cc: stable@kernel.org
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent 67a3e12b
...@@ -575,6 +575,19 @@ static void svia_configure(struct pci_dev *pdev) ...@@ -575,6 +575,19 @@ static void svia_configure(struct pci_dev *pdev)
tmp8 |= NATIVE_MODE_ALL; tmp8 |= NATIVE_MODE_ALL;
pci_write_config_byte(pdev, SATA_NATIVE_MODE, tmp8); pci_write_config_byte(pdev, SATA_NATIVE_MODE, tmp8);
} }
/*
* vt6421 has problems talking to some drives. The following
* is the magic fix from Joseph Chan <JosephChan@via.com.tw>.
* Please add proper documentation if possible.
*
* https://bugzilla.kernel.org/show_bug.cgi?id=15173
*/
if (pdev->device == 0x3249) {
pci_read_config_byte(pdev, 0x52, &tmp8);
tmp8 |= 1 << 2;
pci_write_config_byte(pdev, 0x52, tmp8);
}
} }
static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) static int svia_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment