|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * linux/drivers/ide/pci/sis5513.c Version 0.20 Mar 4, 2007
|
|
|
+ * linux/drivers/ide/pci/sis5513.c Version 0.25 Jun 10, 2007
|
|
|
*
|
|
|
* Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org>
|
|
|
* 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
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+struct sis_laptop {
|
|
|
+ u16 device;
|
|
|
+ u16 subvendor;
|
|
|
+ u16 subdevice;
|
|
|
+};
|
|
|
+
|
|
|
+static const struct sis_laptop sis_laptop[] = {
|
|
|
+ /* devid, subvendor, subdev */
|
|
|
+ { 0x5513, 0x1043, 0x1107 }, /* ASUS A6K */
|
|
|
+ /* end marker */
|
|
|
+ { 0, }
|
|
|
+};
|
|
|
+
|
|
|
static u8 __devinit ata66_sis5513(ide_hwif_t *hwif)
|
|
|
{
|
|
|
+ struct pci_dev *pdev = hwif->pci_dev;
|
|
|
+ const struct sis_laptop *lap = &sis_laptop[0];
|
|
|
u8 ata66 = 0;
|
|
|
|
|
|
+ while (lap->device) {
|
|
|
+ if (lap->device == pdev->device &&
|
|
|
+ lap->subvendor == pdev->subsystem_vendor &&
|
|
|
+ lap->subdevice == pdev->subsystem_device)
|
|
|
+ return ATA_CBL_PATA40_SHORT;
|
|
|
+ lap++;
|
|
|
+ }
|
|
|
+
|
|
|
if (chipset_family >= ATA_133) {
|
|
|
u16 regw = 0;
|
|
|
u16 reg_addr = hwif->channel ? 0x52: 0x50;
|