|
@@ -113,15 +113,17 @@ static void init_ipi(void);
|
|
*/
|
|
*/
|
|
static void mn10300_ipi_disable(unsigned int irq);
|
|
static void mn10300_ipi_disable(unsigned int irq);
|
|
static void mn10300_ipi_enable(unsigned int irq);
|
|
static void mn10300_ipi_enable(unsigned int irq);
|
|
-static void mn10300_ipi_ack(unsigned int irq);
|
|
|
|
-static void mn10300_ipi_nop(unsigned int irq);
|
|
|
|
|
|
+static void mn10300_ipi_chip_disable(struct irq_data *d);
|
|
|
|
+static void mn10300_ipi_chip_enable(struct irq_data *d);
|
|
|
|
+static void mn10300_ipi_ack(struct irq_data *d);
|
|
|
|
+static void mn10300_ipi_nop(struct irq_data *d);
|
|
|
|
|
|
static struct irq_chip mn10300_ipi_type = {
|
|
static struct irq_chip mn10300_ipi_type = {
|
|
.name = "cpu_ipi",
|
|
.name = "cpu_ipi",
|
|
- .disable = mn10300_ipi_disable,
|
|
|
|
- .enable = mn10300_ipi_enable,
|
|
|
|
- .ack = mn10300_ipi_ack,
|
|
|
|
- .eoi = mn10300_ipi_nop
|
|
|
|
|
|
+ .irq_disable = mn10300_ipi_chip_disable,
|
|
|
|
+ .irq_enable = mn10300_ipi_chip_enable,
|
|
|
|
+ .irq_ack = mn10300_ipi_ack,
|
|
|
|
+ .irq_eoi = mn10300_ipi_nop
|
|
};
|
|
};
|
|
|
|
|
|
static irqreturn_t smp_reschedule_interrupt(int irq, void *dev_id);
|
|
static irqreturn_t smp_reschedule_interrupt(int irq, void *dev_id);
|
|
@@ -236,6 +238,11 @@ static void mn10300_ipi_enable(unsigned int irq)
|
|
arch_local_irq_restore(flags);
|
|
arch_local_irq_restore(flags);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void mn10300_ipi_chip_enable(struct irq_data *d)
|
|
|
|
+{
|
|
|
|
+ mn10300_ipi_enable(d->irq);
|
|
|
|
+}
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* mn10300_ipi_disable - Disable an IPI
|
|
* mn10300_ipi_disable - Disable an IPI
|
|
* @irq: The IPI to be disabled.
|
|
* @irq: The IPI to be disabled.
|
|
@@ -254,6 +261,12 @@ static void mn10300_ipi_disable(unsigned int irq)
|
|
arch_local_irq_restore(flags);
|
|
arch_local_irq_restore(flags);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void mn10300_ipi_chip_disable(struct irq_data *d)
|
|
|
|
+{
|
|
|
|
+ mn10300_ipi_disable(d->irq);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* mn10300_ipi_ack - Acknowledge an IPI interrupt in the PIC
|
|
* mn10300_ipi_ack - Acknowledge an IPI interrupt in the PIC
|
|
* @irq: The IPI to be acknowledged.
|
|
* @irq: The IPI to be acknowledged.
|
|
@@ -261,8 +274,9 @@ static void mn10300_ipi_disable(unsigned int irq)
|
|
* Clear the interrupt detection flag for the IPI on the appropriate interrupt
|
|
* Clear the interrupt detection flag for the IPI on the appropriate interrupt
|
|
* channel in the PIC.
|
|
* channel in the PIC.
|
|
*/
|
|
*/
|
|
-static void mn10300_ipi_ack(unsigned int irq)
|
|
|
|
|
|
+static void mn10300_ipi_ack(struct irq_data *d)
|
|
{
|
|
{
|
|
|
|
+ unsigned int irq = d->irq;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
u16 tmp;
|
|
u16 tmp;
|
|
|
|
|
|
@@ -276,7 +290,7 @@ static void mn10300_ipi_ack(unsigned int irq)
|
|
* mn10300_ipi_nop - Dummy IPI action
|
|
* mn10300_ipi_nop - Dummy IPI action
|
|
* @irq: The IPI to be acted upon.
|
|
* @irq: The IPI to be acted upon.
|
|
*/
|
|
*/
|
|
-static void mn10300_ipi_nop(unsigned int irq)
|
|
|
|
|
|
+static void mn10300_ipi_nop(struct irq_data *d)
|
|
{
|
|
{
|
|
}
|
|
}
|
|
|
|
|