/*
 * 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);
