Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 77229
b: refs/heads/master
c: 0859055
h: refs/heads/master
i:
  77227: 6c9339b
v: v3
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Jan 26, 2008
1 parent 10d5193 commit d07838c
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 32 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: 6ae8b1efcc83103f2e323c9486f56a8671ca1880
refs/heads/master: 08590556d65b2611c5821bc532ca30db776e6044
34 changes: 3 additions & 31 deletions trunk/drivers/ide/pci/sl82c105.c
Original file line number Diff line number Diff line change
Expand Up @@ -218,36 +218,9 @@ static int sl82c105_dma_end(ide_drive_t *drive)
return ret;
}

/*
* Ok, that is nasty, but we must make sure the DMA timings
* won't be used for a PIO access. The solution here is
* to make sure the 16 bits mode is diabled on the channel
* when DMA is enabled, thus causing the chip to use PIO0
* timings for those operations.
*/
static void sl82c105_selectproc(ide_drive_t *drive)
{
ide_hwif_t *hwif = HWIF(drive);
struct pci_dev *dev = hwif->pci_dev;
u32 val, old, mask;

//DBG(("sl82c105_selectproc(drive:%s)\n", drive->name));

mask = hwif->channel ? CTRL_P1F16 : CTRL_P0F16;
old = val = (u32)pci_get_drvdata(dev);
if (drive->using_dma)
val &= ~mask;
else
val |= mask;
if (old != val) {
pci_write_config_dword(dev, 0x40, val);
pci_set_drvdata(dev, (void *)val);
}
}

/*
* ATA reset will clear the 16 bits mode in the control
* register, we need to update our cache
* register, we need to reprogram it
*/
static void sl82c105_resetproc(ide_drive_t *drive)
{
Expand All @@ -257,7 +230,8 @@ static void sl82c105_resetproc(ide_drive_t *drive)
DBG(("sl82c105_resetproc(drive:%s)\n", drive->name));

pci_read_config_dword(dev, 0x40, &val);
pci_set_drvdata(dev, (void *)val);
val |= (CTRL_P1F16 | CTRL_P0F16);
pci_write_config_dword(dev, 0x40, val);
}

/*
Expand Down Expand Up @@ -310,7 +284,6 @@ static unsigned int __devinit init_chipset_sl82c105(struct pci_dev *dev, const c
pci_read_config_dword(dev, 0x40, &val);
val |= CTRL_P0EN | CTRL_P0F16 | CTRL_P1F16;
pci_write_config_dword(dev, 0x40, val);
pci_set_drvdata(dev, (void *)val);

return dev->irq;
}
Expand All @@ -326,7 +299,6 @@ static void __devinit init_hwif_sl82c105(ide_hwif_t *hwif)

hwif->set_pio_mode = &sl82c105_set_pio_mode;
hwif->set_dma_mode = &sl82c105_set_dma_mode;
hwif->selectproc = &sl82c105_selectproc;
hwif->resetproc = &sl82c105_resetproc;

if (!hwif->dma_base)
Expand Down

0 comments on commit d07838c

Please sign in to comment.