aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ide/sl82c105.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/ide/sl82c105.c b/drivers/ide/sl82c105.c
index 88ac47085cd9..6246bea585c4 100644
--- a/drivers/ide/sl82c105.c
+++ b/drivers/ide/sl82c105.c
@@ -114,6 +114,16 @@ static void sl82c105_set_dma_mode(ide_drive_t *drive, const u8 speed)
114 drive->drive_data |= (unsigned long)drv_ctrl << 16; 114 drive->drive_data |= (unsigned long)drv_ctrl << 16;
115} 115}
116 116
117static int sl82c105_test_irq(ide_hwif_t *hwif)
118{
119 struct pci_dev *dev = to_pci_dev(hwif->dev);
120 u32 val, mask = hwif->channel ? CTRL_IDE_IRQB : CTRL_IDE_IRQA;
121
122 pci_read_config_dword(dev, 0x40, &val);
123
124 return (val & mask) ? 1 : 0;
125}
126
117/* 127/*
118 * The SL82C105 holds off all IDE interrupts while in DMA mode until 128 * The SL82C105 holds off all IDE interrupts while in DMA mode until
119 * all DMA activity is completed. Sometimes this causes problems (eg, 129 * all DMA activity is completed. Sometimes this causes problems (eg,
@@ -288,6 +298,7 @@ static const struct ide_port_ops sl82c105_port_ops = {
288 .set_pio_mode = sl82c105_set_pio_mode, 298 .set_pio_mode = sl82c105_set_pio_mode,
289 .set_dma_mode = sl82c105_set_dma_mode, 299 .set_dma_mode = sl82c105_set_dma_mode,
290 .resetproc = sl82c105_resetproc, 300 .resetproc = sl82c105_resetproc,
301 .test_irq = sl82c105_test_irq,
291}; 302};
292 303
293static const struct ide_dma_ops sl82c105_dma_ops = { 304static const struct ide_dma_ops sl82c105_dma_ops = {