|
@@ -44,31 +44,10 @@
|
|
|
* for interrupt lines
|
|
|
*/
|
|
|
|
|
|
-
|
|
|
-static void end_bcm1480_irq(unsigned int irq);
|
|
|
-static void enable_bcm1480_irq(unsigned int irq);
|
|
|
-static void disable_bcm1480_irq(unsigned int irq);
|
|
|
-static void ack_bcm1480_irq(unsigned int irq);
|
|
|
-#ifdef CONFIG_SMP
|
|
|
-static int bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask);
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef CONFIG_PCI
|
|
|
extern unsigned long ht_eoi_space;
|
|
|
#endif
|
|
|
|
|
|
-static struct irq_chip bcm1480_irq_type = {
|
|
|
- .name = "BCM1480-IMR",
|
|
|
- .ack = ack_bcm1480_irq,
|
|
|
- .mask = disable_bcm1480_irq,
|
|
|
- .mask_ack = ack_bcm1480_irq,
|
|
|
- .unmask = enable_bcm1480_irq,
|
|
|
- .end = end_bcm1480_irq,
|
|
|
-#ifdef CONFIG_SMP
|
|
|
- .set_affinity = bcm1480_set_affinity
|
|
|
-#endif
|
|
|
-};
|
|
|
-
|
|
|
/* Store the CPU id (not the logical number) */
|
|
|
int bcm1480_irq_owner[BCM1480_NR_IRQS];
|
|
|
|
|
@@ -109,12 +88,13 @@ void bcm1480_unmask_irq(int cpu, int irq)
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
-static int bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask)
|
|
|
+static int bcm1480_set_affinity(struct irq_data *d, const struct cpumask *mask,
|
|
|
+ bool force)
|
|
|
{
|
|
|
+ unsigned int irq_dirty, irq = d->irq;
|
|
|
int i = 0, old_cpu, cpu, int_on, k;
|
|
|
u64 cur_ints;
|
|
|
unsigned long flags;
|
|
|
- unsigned int irq_dirty;
|
|
|
|
|
|
i = cpumask_first(mask);
|
|
|
|
|
@@ -156,21 +136,25 @@ static int bcm1480_set_affinity(unsigned int irq, const struct cpumask *mask)
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
-static void disable_bcm1480_irq(unsigned int irq)
|
|
|
+static void disable_bcm1480_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq = d->irq;
|
|
|
+
|
|
|
bcm1480_mask_irq(bcm1480_irq_owner[irq], irq);
|
|
|
}
|
|
|
|
|
|
-static void enable_bcm1480_irq(unsigned int irq)
|
|
|
+static void enable_bcm1480_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq = d->irq;
|
|
|
+
|
|
|
bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
|
|
|
}
|
|
|
|
|
|
|
|
|
-static void ack_bcm1480_irq(unsigned int irq)
|
|
|
+static void ack_bcm1480_irq(struct irq_data *d)
|
|
|
{
|
|
|
+ unsigned int irq_dirty, irq = d->irq;
|
|
|
u64 pending;
|
|
|
- unsigned int irq_dirty;
|
|
|
int k;
|
|
|
|
|
|
/*
|
|
@@ -217,14 +201,15 @@ static void ack_bcm1480_irq(unsigned int irq)
|
|
|
bcm1480_mask_irq(bcm1480_irq_owner[irq], irq);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-static void end_bcm1480_irq(unsigned int irq)
|
|
|
-{
|
|
|
- if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
|
|
|
- bcm1480_unmask_irq(bcm1480_irq_owner[irq], irq);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
+static struct irq_chip bcm1480_irq_type = {
|
|
|
+ .name = "BCM1480-IMR",
|
|
|
+ .irq_mask_ack = ack_bcm1480_irq,
|
|
|
+ .irq_mask = disable_bcm1480_irq,
|
|
|
+ .irq_unmask = enable_bcm1480_irq,
|
|
|
+#ifdef CONFIG_SMP
|
|
|
+ .irq_set_affinity = bcm1480_set_affinity
|
|
|
+#endif
|
|
|
+};
|
|
|
|
|
|
void __init init_bcm1480_irqs(void)
|
|
|
{
|