diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:27 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:27 -0400 |
commit | 255115fb35f80735c21a1cbe9809e9795a3af26e (patch) | |
tree | 55952820ef05e6f11c80c828b83a6cfdac366a84 /drivers/ide/ide-probe.c | |
parent | c7db966bbbf216b336da921e5d7ba5b9c8467ac1 (diff) |
ide: allow host drivers to specify IRQ flags
* Add ->irq_flags field to struct ide_port_info and struct ide_host.
* Update host drivers and IDE PCI code to use ->irq_flags field.
* Convert init_irq() and ide_intr() to use host->irq_flags.
This fixes handling of shared IRQs for non-PCI hosts
and removes ugly ifdeffery from core IDE code.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-probe.c')
-rw-r--r-- | drivers/ide/ide-probe.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 4b00945cf7d1..f3a56595eb75 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -837,20 +837,13 @@ static int ide_port_setup_devices(ide_hwif_t *hwif) | |||
837 | static int init_irq (ide_hwif_t *hwif) | 837 | static int init_irq (ide_hwif_t *hwif) |
838 | { | 838 | { |
839 | struct ide_io_ports *io_ports = &hwif->io_ports; | 839 | struct ide_io_ports *io_ports = &hwif->io_ports; |
840 | irq_handler_t irq_handler; | 840 | struct ide_host *host = hwif->host; |
841 | int sa = 0; | 841 | irq_handler_t irq_handler = host->irq_handler; |
842 | int sa = host->irq_flags; | ||
842 | 843 | ||
843 | irq_handler = hwif->host->irq_handler; | ||
844 | if (irq_handler == NULL) | 844 | if (irq_handler == NULL) |
845 | irq_handler = ide_intr; | 845 | irq_handler = ide_intr; |
846 | 846 | ||
847 | #if defined(__mc68000__) | ||
848 | sa = IRQF_SHARED; | ||
849 | #endif /* __mc68000__ */ | ||
850 | |||
851 | if (hwif->chipset == ide_pci) | ||
852 | sa = IRQF_SHARED; | ||
853 | |||
854 | if (io_ports->ctl_addr) | 847 | if (io_ports->ctl_addr) |
855 | hwif->tp_ops->set_irq(hwif, 1); | 848 | hwif->tp_ops->set_irq(hwif, 1); |
856 | 849 | ||