xref: /linux-6.15/arch/powerpc/sysdev/ipic.h (revision 2874c5fd)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21cd8e506SKumar Gala /*
31cd8e506SKumar Gala  * IPIC private definitions and structure.
41cd8e506SKumar Gala  *
51cd8e506SKumar Gala  * Maintainer: Kumar Gala <[email protected]>
61cd8e506SKumar Gala  *
71cd8e506SKumar Gala  * Copyright 2005 Freescale Semiconductor, Inc
81cd8e506SKumar Gala  */
91cd8e506SKumar Gala #ifndef __IPIC_H__
101cd8e506SKumar Gala #define __IPIC_H__
111cd8e506SKumar Gala 
121cd8e506SKumar Gala #include <asm/ipic.h>
131cd8e506SKumar Gala 
14b9f0f1bbSKim Phillips #define NR_IPIC_INTS 128
15b9f0f1bbSKim Phillips 
16b9f0f1bbSKim Phillips /* External IRQS */
17b9f0f1bbSKim Phillips #define IPIC_IRQ_EXT0 48
18b9f0f1bbSKim Phillips #define IPIC_IRQ_EXT1 17
19b9f0f1bbSKim Phillips #define IPIC_IRQ_EXT7 23
20b9f0f1bbSKim Phillips 
21b9f0f1bbSKim Phillips /* Default Priority Registers */
22f03ca957SLi Yang #define IPIC_PRIORITY_DEFAULT 0x05309770
231cd8e506SKumar Gala 
241cd8e506SKumar Gala /* System Global Interrupt Configuration Register */
251cd8e506SKumar Gala #define	SICFR_IPSA	0x00010000
26f03ca957SLi Yang #define	SICFR_IPSB	0x00020000
27f03ca957SLi Yang #define	SICFR_IPSC	0x00040000
281cd8e506SKumar Gala #define	SICFR_IPSD	0x00080000
291cd8e506SKumar Gala #define	SICFR_MPSA	0x00200000
301cd8e506SKumar Gala #define	SICFR_MPSB	0x00400000
311cd8e506SKumar Gala 
321cd8e506SKumar Gala /* System External Interrupt Mask Register */
331cd8e506SKumar Gala #define	SEMSR_SIRQ0	0x00008000
341cd8e506SKumar Gala 
351cd8e506SKumar Gala /* System Error Control Register */
361cd8e506SKumar Gala #define SERCR_MCPR	0x00000001
371cd8e506SKumar Gala 
381cd8e506SKumar Gala struct ipic {
391cd8e506SKumar Gala 	volatile u32 __iomem	*regs;
40b9f0f1bbSKim Phillips 
41b9f0f1bbSKim Phillips 	/* The remapper for this IPIC */
42bae1d8f1SGrant Likely 	struct irq_domain		*irqhost;
431cd8e506SKumar Gala };
441cd8e506SKumar Gala 
451cd8e506SKumar Gala struct ipic_info {
4677d4309eSLi Yang 	u8	ack;		/* pending register offset from base if the irq
4777d4309eSLi Yang 				   supports ack operation */
481cd8e506SKumar Gala 	u8	mask;		/* mask register offset from base */
491cd8e506SKumar Gala 	u8	prio;		/* priority register offset from base */
501cd8e506SKumar Gala 	u8	force;		/* force register offset from base */
511cd8e506SKumar Gala 	u8	bit;		/* register bit position (as per doc)
521cd8e506SKumar Gala 				   bit mask = 1 << (31 - bit) */
531cd8e506SKumar Gala 	u8	prio_mask;	/* priority mask value */
541cd8e506SKumar Gala };
551cd8e506SKumar Gala 
561cd8e506SKumar Gala #endif /* __IPIC_H__ */
57