diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-07-09 17:17:58 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-07-09 17:17:58 -0400 |
commit | f2befd9e80b39a5aa54d65cf59b6a5feb9a8117e (patch) | |
tree | 66eca0f1bd8ea98b7a4724824db432ddda965fcc /drivers/ide | |
parent | 95ba8c17bc57bf4666e9de2be715b69d9a1ba211 (diff) |
sis5513: backport short cables support from pata_sis.c
Backport short cables support from pata_sis.c.
This patch allows UDMA > 2 modes on ASUS A6K.
Thanks to testing this patch goes out to Jiri Stavinoha.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/pci/sis5513.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/drivers/ide/pci/sis5513.c b/drivers/ide/pci/sis5513.c index 4457c9d379f6..f875183ac8d9 100644 --- a/drivers/ide/pci/sis5513.c +++ b/drivers/ide/pci/sis5513.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/ide/pci/sis5513.c Version 0.20 Mar 4, 2007 | 2 | * linux/drivers/ide/pci/sis5513.c Version 0.25 Jun 10, 2007 |
3 | * | 3 | * |
4 | * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org> | 4 | * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org> |
5 | * Copyright (C) 2002 Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer | 5 | * Copyright (C) 2002 Lionel Bouton <Lionel.Bouton@inet6.fr>, Maintainer |
@@ -796,10 +796,33 @@ static unsigned int __devinit init_chipset_sis5513 (struct pci_dev *dev, const c | |||
796 | return 0; | 796 | return 0; |
797 | } | 797 | } |
798 | 798 | ||
799 | struct sis_laptop { | ||
800 | u16 device; | ||
801 | u16 subvendor; | ||
802 | u16 subdevice; | ||
803 | }; | ||
804 | |||
805 | static const struct sis_laptop sis_laptop[] = { | ||
806 | /* devid, subvendor, subdev */ | ||
807 | { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */ | ||
808 | /* end marker */ | ||
809 | { 0, } | ||
810 | }; | ||
811 | |||
799 | static u8 __devinit ata66_sis5513(ide_hwif_t *hwif) | 812 | static u8 __devinit ata66_sis5513(ide_hwif_t *hwif) |
800 | { | 813 | { |
814 | struct pci_dev *pdev = hwif->pci_dev; | ||
815 | const struct sis_laptop *lap = &sis_laptop[0]; | ||
801 | u8 ata66 = 0; | 816 | u8 ata66 = 0; |
802 | 817 | ||
818 | while (lap->device) { | ||
819 | if (lap->device == pdev->device && | ||
820 | lap->subvendor == pdev->subsystem_vendor && | ||
821 | lap->subdevice == pdev->subsystem_device) | ||
822 | return ATA_CBL_PATA40_SHORT; | ||
823 | lap++; | ||
824 | } | ||
825 | |||
803 | if (chipset_family >= ATA_133) { | 826 | if (chipset_family >= ATA_133) { |
804 | u16 regw = 0; | 827 | u16 regw = 0; |
805 | u16 reg_addr = hwif->channel ? 0x52: 0x50; | 828 | u16 reg_addr = hwif->channel ? 0x52: 0x50; |