19 #include <linux/list.h>
26 #include <mach/hardware.h>
33 static void isa_mask_pic_lo_irq(
struct irq_data *
d)
35 unsigned int mask = 1 << (d->
irq & 7);
40 static void isa_ack_pic_lo_irq(
struct irq_data *d)
42 unsigned int mask = 1 << (d->
irq & 7);
48 static void isa_unmask_pic_lo_irq(
struct irq_data *d)
50 unsigned int mask = 1 << (d->
irq & 7);
55 static struct irq_chip isa_lo_chip = {
56 .irq_ack = isa_ack_pic_lo_irq,
57 .irq_mask = isa_mask_pic_lo_irq,
58 .irq_unmask = isa_unmask_pic_lo_irq,
61 static void isa_mask_pic_hi_irq(
struct irq_data *d)
63 unsigned int mask = 1 << (d->
irq & 7);
68 static void isa_ack_pic_hi_irq(
struct irq_data *d)
70 unsigned int mask = 1 << (d->
irq & 7);
77 static void isa_unmask_pic_hi_irq(
struct irq_data *d)
79 unsigned int mask = 1 << (d->
irq & 7);
84 static struct irq_chip isa_hi_chip = {
85 .irq_ack = isa_ack_pic_hi_irq,
86 .irq_mask = isa_mask_pic_hi_irq,
87 .irq_unmask = isa_unmask_pic_hi_irq,
108 static struct resource pic1_resource = {
114 static struct resource pic2_resource = {
149 host_irq = (
unsigned int)-1;
152 if (host_irq != (
unsigned int)-1) {
154 irq_set_chip_and_handler(irq, &isa_lo_chip,
160 irq_set_chip_and_handler(irq, &isa_hi_chip,
169 irq_set_chained_handler(host_irq, isa_irq_handler);