2 * linux/arch/h8300/kernel/irq_h.c
4 * Copyright 2014 Yoshinori Sato <ysato@users.sourceforge.jp>
7 #include <linux/init.h>
11 static const char ipr_bit[] = {
13 4, 4, 4, 4, 3, 3, 3, 3,
14 2, 2, 2, 2, 1, 1, 1, 1,
15 0, 0, 0, 0, 15, 15, 15, 15,
16 14, 14, 14, 14, 13, 13, 13, 13,
17 -1, -1, -1, -1, 11, 11, 11, 11,
18 10, 10, 10, 10, 9, 9, 9, 9,
23 static void h8300h_disable_irq(struct irq_data *data)
26 int irq = data->irq - 12;
31 ctrl_bclr(bit & 7, IPR);
33 ctrl_bclr(bit & 7, (IPR+1));
37 static void h8300h_enable_irq(struct irq_data *data)
40 int irq = data->irq - 12;
45 ctrl_bset(bit & 7, IPR);
47 ctrl_bset(bit & 7, (IPR+1));
51 struct irq_chip h8300h_irq_chip = {
52 .name = "H8/300H-INTC",
53 .irq_enable = h8300h_enable_irq,
54 .irq_disable = h8300h_disable_irq,
57 void __init h8300_init_ipr(void)
59 /* All interrupt priority high */
60 ctrl_outb(0xff, IPR + 0);
61 ctrl_outb(0xee, IPR + 1);