| From 8b27ff4cf6d15964aa2987aeb58db4dfb1f87a19 Mon Sep 17 00:00:00 2001 |
| From: Tejun Heo <tj@kernel.org> |
| Date: Mon, 31 May 2010 16:26:48 +0200 |
| Subject: sata_via: magic vt6421 fix for transmission problems w/ WD drives |
| |
| From: Tejun Heo <tj@kernel.org> |
| |
| commit 8b27ff4cf6d15964aa2987aeb58db4dfb1f87a19 upstream. |
| |
| 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: Tejun Heo <tj@kernel.org> |
| Originally-from: Joseph Chan <JosephChan@via.com.tw> |
| Reported-by: Jorrit Tijben <sjorrit@gmail.com> |
| Signed-off-by: Jeff Garzik <jgarzik@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/ata/sata_via.c | 13 +++++++++++++ |
| 1 file changed, 13 insertions(+) |
| |
| --- a/drivers/ata/sata_via.c |
| +++ b/drivers/ata/sata_via.c |
| @@ -558,6 +558,19 @@ static void svia_configure(struct pci_de |
| tmp8 |= NATIVE_MODE_ALL; |
| 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) |