|
@@ -117,18 +117,6 @@
|
|
|
#include <asm/txx9/generic.h>
|
|
|
#include <asm/txx9/rbtx4927.h>
|
|
|
|
|
|
-static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq);
|
|
|
-static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq);
|
|
|
-
|
|
|
-#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC"
|
|
|
-static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
|
|
|
- .name = TOSHIBA_RBTX4927_IOC_NAME,
|
|
|
- .ack = toshiba_rbtx4927_irq_ioc_disable,
|
|
|
- .mask = toshiba_rbtx4927_irq_ioc_disable,
|
|
|
- .mask_ack = toshiba_rbtx4927_irq_ioc_disable,
|
|
|
- .unmask = toshiba_rbtx4927_irq_ioc_enable,
|
|
|
-};
|
|
|
-
|
|
|
static int toshiba_rbtx4927_irq_nested(int sw_irq)
|
|
|
{
|
|
|
u8 level3;
|
|
@@ -139,41 +127,47 @@ static int toshiba_rbtx4927_irq_nested(int sw_irq)
|
|
|
return RBTX4927_IRQ_IOC + __fls8(level3);
|
|
|
}
|
|
|
|
|
|
-static void __init toshiba_rbtx4927_irq_ioc_init(void)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- /* mask all IOC interrupts */
|
|
|
- writeb(0, rbtx4927_imask_addr);
|
|
|
- /* clear SoftInt interrupts */
|
|
|
- writeb(0, rbtx4927_softint_addr);
|
|
|
-
|
|
|
- for (i = RBTX4927_IRQ_IOC;
|
|
|
- i < RBTX4927_IRQ_IOC + RBTX4927_NR_IRQ_IOC; i++)
|
|
|
- set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type,
|
|
|
- handle_level_irq);
|
|
|
- set_irq_chained_handler(RBTX4927_IRQ_IOCINT, handle_simple_irq);
|
|
|
-}
|
|
|
-
|
|
|
-static void toshiba_rbtx4927_irq_ioc_enable(unsigned int irq)
|
|
|
+static void toshiba_rbtx4927_irq_ioc_enable(struct irq_data *d)
|
|
|
{
|
|
|
unsigned char v;
|
|
|
|
|
|
v = readb(rbtx4927_imask_addr);
|
|
|
- v |= (1 << (irq - RBTX4927_IRQ_IOC));
|
|
|
+ v |= (1 << (d->irq - RBTX4927_IRQ_IOC));
|
|
|
writeb(v, rbtx4927_imask_addr);
|
|
|
}
|
|
|
|
|
|
-static void toshiba_rbtx4927_irq_ioc_disable(unsigned int irq)
|
|
|
+static void toshiba_rbtx4927_irq_ioc_disable(struct irq_data *d)
|
|
|
{
|
|
|
unsigned char v;
|
|
|
|
|
|
v = readb(rbtx4927_imask_addr);
|
|
|
- v &= ~(1 << (irq - RBTX4927_IRQ_IOC));
|
|
|
+ v &= ~(1 << (d->irq - RBTX4927_IRQ_IOC));
|
|
|
writeb(v, rbtx4927_imask_addr);
|
|
|
mmiowb();
|
|
|
}
|
|
|
|
|
|
+#define TOSHIBA_RBTX4927_IOC_NAME "RBTX4927-IOC"
|
|
|
+static struct irq_chip toshiba_rbtx4927_irq_ioc_type = {
|
|
|
+ .name = TOSHIBA_RBTX4927_IOC_NAME,
|
|
|
+ .irq_mask = toshiba_rbtx4927_irq_ioc_disable,
|
|
|
+ .irq_unmask = toshiba_rbtx4927_irq_ioc_enable,
|
|
|
+};
|
|
|
+
|
|
|
+static void __init toshiba_rbtx4927_irq_ioc_init(void)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ /* mask all IOC interrupts */
|
|
|
+ writeb(0, rbtx4927_imask_addr);
|
|
|
+ /* clear SoftInt interrupts */
|
|
|
+ writeb(0, rbtx4927_softint_addr);
|
|
|
+
|
|
|
+ for (i = RBTX4927_IRQ_IOC;
|
|
|
+ i < RBTX4927_IRQ_IOC + RBTX4927_NR_IRQ_IOC; i++)
|
|
|
+ set_irq_chip_and_handler(i, &toshiba_rbtx4927_irq_ioc_type,
|
|
|
+ handle_level_irq);
|
|
|
+ set_irq_chained_handler(RBTX4927_IRQ_IOCINT, handle_simple_irq);
|
|
|
+}
|
|
|
|
|
|
static int rbtx4927_irq_dispatch(int pending)
|
|
|
{
|