2005-04-17 02:20:36 +04:00
/*
* IPIC private definitions and structure .
*
2005-11-14 03:06:30 +03:00
* Maintainer : Kumar Gala < galak @ kernel . crashing . org >
2005-04-17 02:20:36 +04:00
*
* Copyright 2005 Freescale Semiconductor , Inc
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*/
# ifndef __IPIC_H__
# define __IPIC_H__
# include <asm/ipic.h>
2006-08-25 20:59:07 +04:00
# define NR_IPIC_INTS 128
/* External IRQS */
# define IPIC_IRQ_EXT0 48
# define IPIC_IRQ_EXT1 17
# define IPIC_IRQ_EXT7 23
/* Default Priority Registers */
2007-10-19 15:38:43 +04:00
# define IPIC_PRIORITY_DEFAULT 0x05309770
2005-04-17 02:20:36 +04:00
/* System Global Interrupt Configuration Register */
# define SICFR_IPSA 0x00010000
2007-10-19 15:38:43 +04:00
# define SICFR_IPSB 0x00020000
# define SICFR_IPSC 0x00040000
2005-04-17 02:20:36 +04:00
# define SICFR_IPSD 0x00080000
# define SICFR_MPSA 0x00200000
# define SICFR_MPSB 0x00400000
/* System External Interrupt Mask Register */
# define SEMSR_SIRQ0 0x00008000
/* System Error Control Register */
# define SERCR_MCPR 0x00000001
struct ipic {
volatile u32 __iomem * regs ;
2006-08-25 20:59:07 +04:00
/* The remapper for this IPIC */
struct irq_host * irqhost ;
2005-04-17 02:20:36 +04:00
} ;
struct ipic_info {
2007-12-04 14:01:40 +03:00
u8 ack ; /* pending register offset from base if the irq
supports ack operation */
2005-04-17 02:20:36 +04:00
u8 mask ; /* mask register offset from base */
u8 prio ; /* priority register offset from base */
u8 force ; /* force register offset from base */
u8 bit ; /* register bit position (as per doc)
bit mask = 1 < < ( 31 - bit ) */
u8 prio_mask ; /* priority mask value */
} ;
# endif /* __IPIC_H__ */