aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/ide/pci/via82cxxx.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/ide/pci/via82cxxx.c b/drivers/ide/pci/via82cxxx.c
index 8c539381d622..a7be7795e6af 100644
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * Version 3.46 3 * Version 3.47
4 * 4 *
5 * VIA IDE driver for Linux. Supported southbridges: 5 * VIA IDE driver for Linux. Supported southbridges:
6 * 6 *
@@ -430,19 +430,26 @@ static struct dmi_system_id cable_dmi_table[] = {
430 { } 430 { }
431}; 431};
432 432
433static int via_cable_override(void) 433static int via_cable_override(struct pci_dev *pdev)
434{ 434{
435 /* Systems by DMI */ 435 /* Systems by DMI */
436 if (dmi_check_system(cable_dmi_table)) 436 if (dmi_check_system(cable_dmi_table))
437 return 1; 437 return 1;
438
439 /* Arima W730-K8/Targa Visionary 811/... */
440 if (pdev->subsystem_vendor == 0x161F &&
441 pdev->subsystem_device == 0x2032)
442 return 1;
443
438 return 0; 444 return 0;
439} 445}
440 446
441static u8 __devinit via82cxxx_cable_detect(ide_hwif_t *hwif) 447static u8 __devinit via82cxxx_cable_detect(ide_hwif_t *hwif)
442{ 448{
443 struct via82cxxx_dev *vdev = pci_get_drvdata(hwif->pci_dev); 449 struct pci_dev *pdev = hwif->pci_dev;
450 struct via82cxxx_dev *vdev = pci_get_drvdata(pdev);
444 451
445 if (via_cable_override()) 452 if (via_cable_override(pdev))
446 return ATA_CBL_PATA40_SHORT; 453 return ATA_CBL_PATA40_SHORT;
447 454
448 if ((vdev->via_80w >> hwif->channel) & 1) 455 if ((vdev->via_80w >> hwif->channel) & 1)