69
69
#include <asm/txx9/generic.h>
70
70
#include <asm/txx9/rbtx4938.h>
72
static void toshiba_rbtx4938_irq_ioc_enable(unsigned int irq);
73
static void toshiba_rbtx4938_irq_ioc_disable(unsigned int irq);
75
#define TOSHIBA_RBTX4938_IOC_NAME "RBTX4938-IOC"
76
static struct irq_chip toshiba_rbtx4938_irq_ioc_type = {
77
.name = TOSHIBA_RBTX4938_IOC_NAME,
78
.ack = toshiba_rbtx4938_irq_ioc_disable,
79
.mask = toshiba_rbtx4938_irq_ioc_disable,
80
.mask_ack = toshiba_rbtx4938_irq_ioc_disable,
81
.unmask = toshiba_rbtx4938_irq_ioc_enable,
84
72
static int toshiba_rbtx4938_irq_nested(int sw_irq)
92
80
return RBTX4938_IRQ_IOC + __fls8(level3);
96
toshiba_rbtx4938_irq_ioc_init(void)
100
for (i = RBTX4938_IRQ_IOC;
101
i < RBTX4938_IRQ_IOC + RBTX4938_NR_IRQ_IOC; i++)
102
set_irq_chip_and_handler(i, &toshiba_rbtx4938_irq_ioc_type,
105
set_irq_chained_handler(RBTX4938_IRQ_IOCINT, handle_simple_irq);
109
toshiba_rbtx4938_irq_ioc_enable(unsigned int irq)
113
v = readb(rbtx4938_imask_addr);
114
v |= (1 << (irq - RBTX4938_IRQ_IOC));
115
writeb(v, rbtx4938_imask_addr);
120
toshiba_rbtx4938_irq_ioc_disable(unsigned int irq)
124
v = readb(rbtx4938_imask_addr);
125
v &= ~(1 << (irq - RBTX4938_IRQ_IOC));
126
writeb(v, rbtx4938_imask_addr);
83
static void toshiba_rbtx4938_irq_ioc_enable(struct irq_data *d)
87
v = readb(rbtx4938_imask_addr);
88
v |= (1 << (d->irq - RBTX4938_IRQ_IOC));
89
writeb(v, rbtx4938_imask_addr);
93
static void toshiba_rbtx4938_irq_ioc_disable(struct irq_data *d)
97
v = readb(rbtx4938_imask_addr);
98
v &= ~(1 << (d->irq - RBTX4938_IRQ_IOC));
99
writeb(v, rbtx4938_imask_addr);
103
#define TOSHIBA_RBTX4938_IOC_NAME "RBTX4938-IOC"
104
static struct irq_chip toshiba_rbtx4938_irq_ioc_type = {
105
.name = TOSHIBA_RBTX4938_IOC_NAME,
106
.irq_mask = toshiba_rbtx4938_irq_ioc_disable,
107
.irq_unmask = toshiba_rbtx4938_irq_ioc_enable,
130
110
static int rbtx4938_irq_dispatch(int pending)
129
static void __init toshiba_rbtx4938_irq_ioc_init(void)
133
for (i = RBTX4938_IRQ_IOC;
134
i < RBTX4938_IRQ_IOC + RBTX4938_NR_IRQ_IOC; i++)
135
irq_set_chip_and_handler(i, &toshiba_rbtx4938_irq_ioc_type,
138
irq_set_chained_handler(RBTX4938_IRQ_IOCINT, handle_simple_irq);
149
141
void __init rbtx4938_irq_setup(void)
151
143
txx9_irq_dispatch = rbtx4938_irq_dispatch;
161
153
tx4938_irq_init();
162
154
toshiba_rbtx4938_irq_ioc_init();
163
155
/* Onboard 10M Ether: High Active */
164
set_irq_type(RBTX4938_IRQ_ETHER, IRQF_TRIGGER_HIGH);
156
irq_set_irq_type(RBTX4938_IRQ_ETHER, IRQF_TRIGGER_HIGH);