| /* |
| * Shared support for SH-X3 interrupt controllers. |
| * |
| * Copyright (C) 2009 - 2010 Paul Mundt |
| * |
| * This file is subject to the terms and conditions of the GNU General Public |
| * License. See the file "COPYING" in the main directory of this archive |
| * for more details. |
| */ |
| #include <linux/irq.h> |
| #include <linux/io.h> |
| #include <linux/init.h> |
| |
| #define INTACK 0xfe4100b8 |
| #define INTACKCLR 0xfe4100bc |
| #define INTC_USERIMASK 0xfe411000 |
| |
| #ifdef CONFIG_INTC_BALANCING |
| unsigned int irq_lookup(unsigned int irq) |
| { |
| return __raw_readl(INTACK) & 1 ? irq : NO_IRQ_IGNORE; |
| } |
| |
| void irq_finish(unsigned int irq) |
| { |
| __raw_writel(irq2evt(irq), INTACKCLR); |
| } |
| #endif |
| |
| static int __init shx3_irq_setup(void) |
| { |
| return register_intc_userimask(INTC_USERIMASK); |
| } |
| arch_initcall(shx3_irq_setup); |