/*
 * Copyright (C) ST-Ericsson SA 2010
 *
 * Author: Rabin Vincent <rabin.vincent@stericsson.com>
 * License terms: GNU General Public License (GPL) version 2
 */

#ifndef __MACH_IRQS_BOARD_MOP500_H
#define __MACH_IRQS_BOARD_MOP500_H

/* Number of AB8500 irqs is taken from header file */
#include <linux/mfd/abx500/ab8500.h>

#define MOP500_AB8500_IRQ_BASE		IRQ_BOARD_START
#define MOP500_AB8500_IRQ_END		(MOP500_AB8500_IRQ_BASE \
					 + AB8500_MAX_NR_IRQS)

/* TC35892 */
#define TC35892_NR_INTERNAL_IRQS	8
#define TC35892_INT_GPIO(x)		(TC35892_NR_INTERNAL_IRQS + (x))
#define TC35892_NR_GPIOS		24
#define TC35892_NR_IRQS			TC35892_INT_GPIO(TC35892_NR_GPIOS)

#define MOP500_EGPIO_NR_IRQS		TC35892_NR_IRQS

#define MOP500_EGPIO_IRQ_BASE		MOP500_AB8500_IRQ_END
#define MOP500_EGPIO_IRQ_END		(MOP500_EGPIO_IRQ_BASE \
					 + MOP500_EGPIO_NR_IRQS)
/* STMPE1601 irqs */
#define STMPE_NR_INTERNAL_IRQS          9
#define STMPE_INT_GPIO(x)               (STMPE_NR_INTERNAL_IRQS + (x))
#define STMPE_NR_GPIOS                  24
#define STMPE_NR_IRQS                   STMPE_INT_GPIO(STMPE_NR_GPIOS)

#define MOP500_STMPE1601_IRQBASE        MOP500_EGPIO_IRQ_END
#define MOP500_STMPE1601_IRQ(x)         (MOP500_STMPE1601_IRQBASE + (x))

#define MOP500_STMPE1601_IRQ_END	\
	MOP500_STMPE1601_IRQ(STMPE_NR_INTERNAL_IRQS)

#define MOP500_NR_IRQS		MOP500_STMPE1601_IRQ_END

#define MOP500_IRQ_END		MOP500_NR_IRQS

/*
 * We may have several boards, but only one will run at a
 * time, so the one with most IRQs will bump this ahead,
 * but the IRQ_BOARD_START remains the same for either board.
 */
#if MOP500_IRQ_END > IRQ_BOARD_END
#undef IRQ_BOARD_END
#define IRQ_BOARD_END	MOP500_IRQ_END
#endif

#endif
