Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 58332
b: refs/heads/master
c: 7207626
h: refs/heads/master
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Jul 9, 2007
1 parent 8b367b5 commit dcac2eb
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 49521f97ccd3c2bf6e71a91cea8fe65d170fa4fb
refs/heads/master: 7207626f47a3d66ce361bad197eefca4b8a6fa17
37 changes: 34 additions & 3 deletions trunk/drivers/ide/pci/piix.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* linux/drivers/ide/pci/piix.c Version 0.47 February 8, 2007
* linux/drivers/ide/pci/piix.c Version 0.50 Jun 10, 2007
*
* Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
* Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
Expand Down Expand Up @@ -394,12 +394,43 @@ static void piix_dma_clear_irq(ide_drive_t *drive)
hwif->OUTB(dma_stat, hwif->dma_status);
}

struct ich_laptop {
u16 device;
u16 subvendor;
u16 subdevice;
};

/*
* List of laptops that use short cables rather than 80 wire
*/

static const struct ich_laptop ich_laptop[] = {
/* devid, subvendor, subdev */
{ 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */
{ 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */
{ 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */
{ 0x24CA, 0x1025, 0x0061 }, /* ICH4 on Acer Aspire 2023WLMi */
/* end marker */
{ 0, }
};

static u8 __devinit piix_cable_detect(ide_hwif_t *hwif)
{
struct pci_dev *dev = hwif->pci_dev;
struct pci_dev *pdev = hwif->pci_dev;
const struct ich_laptop *lap = &ich_laptop[0];
u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30;

pci_read_config_byte(dev, 0x54, &reg54h);
/* check for specials */
while (lap->device) {
if (lap->device == pdev->device &&
lap->subvendor == pdev->subsystem_vendor &&
lap->subdevice == pdev->subsystem_device) {
return ATA_CBL_PATA40_SHORT;
}
lap++;
}

pci_read_config_byte(pdev, 0x54, &reg54h);

return (reg54h & mask) ? ATA_CBL_PATA80 : ATA_CBL_PATA40;
}
Expand Down

0 comments on commit dcac2eb

Please sign in to comment.