irq.h

来自「Linux Kernel 2.6.9 for OMAP1710」· C头文件 代码 · 共 587 行

H
587
字号
#ifndef __ASM_SH_IRQ_H#define __ASM_SH_IRQ_H/* * * linux/include/asm-sh/irq.h * * Copyright (C) 1999  Niibe Yutaka & Takeshi Yaegashi * Copyright (C) 2000  Kazumoto Kojima * Copyright (C) 2003  Paul Mundt * */#include <linux/config.h>#include <asm/machvec.h>#include <asm/ptrace.h>		/* for pt_regs */#if defined(CONFIG_SH_HP600) || \    defined(CONFIG_SH_RTS7751R2D) || \    defined(CONFIG_SH_HS7751RVOIP)#include <asm/mach/ide.h>#endif#if defined(CONFIG_CPU_SH3)#define INTC_IPRA	0xfffffee2UL#define INTC_IPRB	0xfffffee4UL#elif defined(CONFIG_CPU_SH4)#define INTC_IPRA	0xffd00004UL#define INTC_IPRB	0xffd00008UL#define INTC_IPRC	0xffd0000cUL#define INTC_IPRD	0xffd00010UL#endif#ifdef CONFIG_IDE# ifndef IRQ_CFCARD#  define IRQ_CFCARD	14# endif# ifndef IRQ_PCMCIA#  define IRQ_PCMCIA	15# endif#endif#define TIMER_IRQ	16#define TIMER_IPR_ADDR	INTC_IPRA#define TIMER_IPR_POS	 3#define TIMER_PRIORITY	 2#define TIMER1_IRQ	17#define TIMER1_IPR_ADDR	INTC_IPRA#define TIMER1_IPR_POS	 2#define TIMER1_PRIORITY	 4#define RTC_IRQ		22#define RTC_IPR_ADDR	INTC_IPRA#define RTC_IPR_POS	 0#define RTC_PRIORITY	TIMER_PRIORITY#if defined(CONFIG_CPU_SH3)#define DMTE0_IRQ	48#define DMTE1_IRQ	49#define DMTE2_IRQ	50#define DMTE3_IRQ	51#define DMA_IPR_ADDR	INTC_IPRE#define DMA_IPR_POS	3#define DMA_PRIORITY	7#if defined(CONFIG_CPU_SUBTYPE_SH7300)/* TMU2 */#define TIMER2_IRQ      18#define TIMER2_IPR_ADDR INTC_IPRA#define TIMER2_IPR_POS   1#define TIMER2_PRIORITY  2/* WDT */#define WDT_IRQ		27#define WDT_IPR_ADDR	INTC_IPRB#define WDT_IPR_POS	 3#define WDT_PRIORITY	 2/* SIM (SIM Card Module) */#define SIM_ERI_IRQ	23#define SIM_RXI_IRQ	24#define SIM_TXI_IRQ	25#define SIM_TEND_IRQ	26#define SIM_IPR_ADDR	INTC_IPRB#define SIM_IPR_POS	 1#define SIM_PRIORITY	 2/* VIO (Video I/O) */#define VIO_IRQ		52#define VIO_IPR_ADDR	INTC_IPRE#define VIO_IPR_POS	 2#define VIO_PRIORITY	 2/* MFI (Multi Functional Interface) */#define MFI_IRQ		56#define MFI_IPR_ADDR	INTC_IPRE#define MFI_IPR_POS	 1#define MFI_PRIORITY	 2/* VPU (Video Processing Unit) */#define VPU_IRQ		60#define VPU_IPR_ADDR	INTC_IPRE#define VPU_IPR_POS	 0#define VPU_PRIORITY	 2/* KEY (Key Scan Interface) */#define KEY_IRQ		79#define KEY_IPR_ADDR	INTC_IPRF#define KEY_IPR_POS	 3#define KEY_PRIORITY	 2/* CMT (Compare Match Timer) */#define CMT_IRQ		104#define CMT_IPR_ADDR	INTC_IPRF#define CMT_IPR_POS	 0#define CMT_PRIORITY	 2/* DMAC(1) */#define DMTE0_IRQ	48#define DMTE1_IRQ	49#define DMTE2_IRQ	50#define DMTE3_IRQ	51#define DMA1_IPR_ADDR	INTC_IPRE#define DMA1_IPR_POS	3#define DMA1_PRIORITY	7/* DMAC(2) */#define DMTE4_IRQ	76#define DMTE5_IRQ	77#define DMA2_IPR_ADDR	INTC_IPRF#define DMA2_IPR_POS	2#define DMA2_PRIORITY	7/* SIOF0 */#define SIOF0_IRQ	84#define SIOF0_IPR_ADDR	INTC_IPRH#define SIOF0_IPR_POS	3#define SIOF0_PRIORITY	3/* FLCTL (Flash Memory Controller) */#define FLSTE_IRQ	92#define FLTEND_IRQ	93#define FLTRQ0_IRQ	94#define FLTRQ1_IRQ	95#define FLCTL_IPR_ADDR	INTC_IPRH#define FLCTL_IPR_POS	1#define FLCTL_PRIORITY	3/* IIC (IIC Bus Interface) */#define IIC_ALI_IRQ	96#define IIC_TACKI_IRQ	97#define IIC_WAITI_IRQ	98#define IIC_DTEI_IRQ	99#define IIC_IPR_ADDR	INTC_IPRH#define IIC_IPR_POS	0#define IIC_PRIORITY	3/* SIO0 */#define SIO0_IRQ	88#define SIO0_IPR_ADDR	INTC_IPRI#define SIO0_IPR_POS	3#define SIO0_PRIORITY	3/* SIU (Sound Interface Unit) */#define SIU_IRQ		108#define SIU_IPR_ADDR	INTC_IPRJ#define SIU_IPR_POS	1#define SIU_PRIORITY	3#endif#elif defined(CONFIG_CPU_SH4)#define DMTE0_IRQ	34#define DMTE1_IRQ	35#define DMTE2_IRQ	36#define DMTE3_IRQ	37#define DMTE4_IRQ	44	/* 7751R only */#define DMTE5_IRQ	45	/* 7751R only */#define DMTE6_IRQ	46	/* 7751R only */#define DMTE7_IRQ	47	/* 7751R only */#define DMAE_IRQ	38#define DMA_IPR_ADDR	INTC_IPRC#define DMA_IPR_POS	2#define DMA_PRIORITY	7#endif#if defined (CONFIG_CPU_SUBTYPE_SH7707) || defined (CONFIG_CPU_SUBTYPE_SH7708) || \    defined (CONFIG_CPU_SUBTYPE_SH7709) || defined (CONFIG_CPU_SUBTYPE_SH7750) || \    defined (CONFIG_CPU_SUBTYPE_SH7751)#define SCI_ERI_IRQ	23#define SCI_RXI_IRQ	24#define SCI_TXI_IRQ	25#define SCI_IPR_ADDR	INTC_IPRB#define SCI_IPR_POS	1#define SCI_PRIORITY	3#endif#if defined(CONFIG_CPU_SUBTYPE_SH7300)#define SCIF0_IRQ	80#define SCIF0_IPR_ADDR	INTC_IPRG#define SCIF0_IPR_POS	3#define SCIF0_PRIORITY	3#elif defined(CONFIG_CPU_SUBTYPE_SH7705) || \      defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)#define SCIF_ERI_IRQ	56#define SCIF_RXI_IRQ	57#define SCIF_BRI_IRQ	58#define SCIF_TXI_IRQ	59#define SCIF_IPR_ADDR	INTC_IPRE#define SCIF_IPR_POS	1#define SCIF_PRIORITY	3#define IRDA_ERI_IRQ	52#define IRDA_RXI_IRQ	53#define IRDA_BRI_IRQ	54#define IRDA_TXI_IRQ	55#define IRDA_IPR_ADDR	INTC_IPRE#define IRDA_IPR_POS	2#define IRDA_PRIORITY	3#elif defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7751) || \      defined(CONFIG_CPU_SUBTYPE_ST40STB1)#define SCIF_ERI_IRQ	40#define SCIF_RXI_IRQ	41#define SCIF_BRI_IRQ	42#define SCIF_TXI_IRQ	43#define SCIF_IPR_ADDR	INTC_IPRC#define SCIF_IPR_POS	1#define SCIF_PRIORITY	3#if defined(CONFIG_CPU_SUBTYPE_ST40STB1)#define SCIF1_ERI_IRQ	23#define SCIF1_RXI_IRQ	24#define SCIF1_BRI_IRQ	25#define SCIF1_TXI_IRQ	26#define SCIF1_IPR_ADDR	INTC_IPRB#define SCIF1_IPR_POS	1#define SCIF1_PRIORITY	3#endif#endif/* NR_IRQS is made from three components: *   1. ONCHIP_NR_IRQS - number of IRLS + on-chip peripherial modules *   2. PINT_NR_IRQS   - number of PINT interrupts *   3. OFFCHIP_NR_IRQS - numbe of IRQs from off-chip peripherial modules *//* 1. ONCHIP_NR_IRQS */#ifdef CONFIG_SH_GENERIC# define ONCHIP_NR_IRQS 144#else# if defined(CONFIG_CPU_SUBTYPE_SH7604)#  define ONCHIP_NR_IRQS 24	// Actually 21# elif defined(CONFIG_CPU_SUBTYPE_SH7707)#  define ONCHIP_NR_IRQS 64#  define PINT_NR_IRQS   16# elif defined(CONFIG_CPU_SUBTYPE_SH7708)#  define ONCHIP_NR_IRQS 32# elif defined(CONFIG_CPU_SUBTYPE_SH7709) || \       defined(CONFIG_CPU_SUBTYPE_SH7705)#  define ONCHIP_NR_IRQS 64	// Actually 61#  define PINT_NR_IRQS   16# elif defined(CONFIG_CPU_SUBTYPE_SH7750)#  define ONCHIP_NR_IRQS 48	// Actually 44# elif defined(CONFIG_CPU_SUBTYPE_SH7751)#  define ONCHIP_NR_IRQS 72# elif defined(CONFIG_CPU_SUBTYPE_SH7760)#  define ONCHIP_NR_IRQS 110# elif defined(CONFIG_CPU_SUBTYPE_ST40STB1)#  define ONCHIP_NR_IRQS 144# elif defined(CONFIG_CPU_SUBTYPE_SH7300)#  define ONCHIP_NR_IRQS 109# endif#endif/* 2. PINT_NR_IRQS */#ifdef CONFIG_SH_GENERIC# define PINT_NR_IRQS 16#else# ifndef PINT_NR_IRQS#  define PINT_NR_IRQS 0# endif#endif#if PINT_NR_IRQS > 0# define PINT_IRQ_BASE  ONCHIP_NR_IRQS#endif/* 3. OFFCHIP_NR_IRQS */#ifdef CONFIG_SH_GENERIC# define OFFCHIP_NR_IRQS 16#else# if defined(CONFIG_HD64461)#  define OFFCHIP_NR_IRQS 18# elif defined (CONFIG_SH_BIGSUR) /* must be before CONFIG_HD64465 */#  define OFFCHIP_NR_IRQS 48# elif defined(CONFIG_HD64465)#  define OFFCHIP_NR_IRQS 16# elif defined (CONFIG_SH_EC3104)#  define OFFCHIP_NR_IRQS 16# elif defined (CONFIG_SH_DREAMCAST)#  define OFFCHIP_NR_IRQS 96# else#  define OFFCHIP_NR_IRQS 0# endif#endif#if OFFCHIP_NR_IRQS > 0# define OFFCHIP_IRQ_BASE (ONCHIP_NR_IRQS + PINT_NR_IRQS)#endif/* NR_IRQS. 1+2+3 */#define NR_IRQS (ONCHIP_NR_IRQS + PINT_NR_IRQS + OFFCHIP_NR_IRQS)/* In a generic kernel, NR_IRQS is an upper bound, and we should use * ACTUAL_NR_IRQS (which uses the machine vector) to get the correct value. */#ifdef CONFIG_SH_GENERIC# define ACTUAL_NR_IRQS (sh_mv.mv_nr_irqs)#else# define ACTUAL_NR_IRQS NR_IRQS#endifextern void disable_irq(unsigned int);extern void disable_irq_nosync(unsigned int);extern void enable_irq(unsigned int);/* * Simple Mask Register Support */extern void make_maskreg_irq(unsigned int irq);extern unsigned short *irq_mask_register;/* * Function for "on chip support modules". */extern void make_ipr_irq(unsigned int irq, unsigned int addr,			 int pos,  int priority);extern void make_imask_irq(unsigned int irq);#if defined(CONFIG_CPU_SUBTYPE_SH7300)#undef INTC_IPRA#undef INTC_IPRB#define INTC_IPRA  	0xA414FEE2UL#define INTC_IPRB  	0xA414FEE4UL#define INTC_IPRC  	0xA4140016UL#define INTC_IPRD  	0xA4140018UL#define INTC_IPRE  	0xA414001AUL#define INTC_IPRF  	0xA4080000UL#define INTC_IPRG  	0xA4080002UL#define INTC_IPRH  	0xA4080004UL#define INTC_IPRI  	0xA4080006UL#define INTC_IPRJ  	0xA4080008UL#define INTC_IMR0	0xA4080040UL#define INTC_IMR1	0xA4080042UL#define INTC_IMR2	0xA4080044UL#define INTC_IMR3	0xA4080046UL#define INTC_IMR4	0xA4080048UL#define INTC_IMR5	0xA408004AUL#define INTC_IMR6	0xA408004CUL#define INTC_IMR7	0xA408004EUL#define INTC_IMR8	0xA4080050UL#define INTC_IMR9	0xA4080052UL#define INTC_IMR10	0xA4080054UL#define INTC_IMCR0	0xA4080060UL#define INTC_IMCR1	0xA4080062UL#define INTC_IMCR2	0xA4080064UL#define INTC_IMCR3	0xA4080066UL#define INTC_IMCR4	0xA4080068UL#define INTC_IMCR5	0xA408006AUL#define INTC_IMCR6	0xA408006CUL#define INTC_IMCR7	0xA408006EUL#define INTC_IMCR8	0xA4080070UL#define INTC_IMCR9	0xA4080072UL#define INTC_IMCR10	0xA4080074UL#define INTC_ICR0	0xA414FEE0UL#define INTC_ICR1	0xA4140010UL#define INTC_IRR0	0xA4140004UL#define PORT_PACR	0xA4050100UL#define PORT_PBCR	0xA4050102UL#define PORT_PCCR	0xA4050104UL#define PORT_PDCR	0xA4050106UL#define PORT_PECR	0xA4050108UL#define PORT_PFCR	0xA405010AUL#define PORT_PGCR	0xA405010CUL#define PORT_PHCR	0xA405010EUL#define PORT_PJCR	0xA4050110UL#define PORT_PKCR	0xA4050112UL#define PORT_PLCR	0xA4050114UL#define PORT_SCPCR	0xA4050116UL#define PORT_PMCR	0xA4050118UL#define PORT_PNCR	0xA405011AUL#define PORT_PQCR	0xA405011CUL#define PORT_PSELA	0xA4050140UL#define PORT_PSELB	0xA4050142UL#define PORT_PSELC	0xA4050144UL#define PORT_HIZCRA	0xA4050146UL#define PORT_HIZCRB	0xA4050148UL#define PORT_DRVCR	0xA4050150UL#define PORT_PADR  	0xA4050120UL#define PORT_PBDR  	0xA4050122UL#define PORT_PCDR  	0xA4050124UL#define PORT_PDDR  	0xA4050126UL#define PORT_PEDR  	0xA4050128UL#define PORT_PFDR  	0xA405012AUL#define PORT_PGDR  	0xA405012CUL#define PORT_PHDR  	0xA405012EUL#define PORT_PJDR  	0xA4050130UL#define PORT_PKDR  	0xA4050132UL#define PORT_PLDR  	0xA4050134UL#define PORT_SCPDR  	0xA4050136UL#define PORT_PMDR  	0xA4050138UL#define PORT_PNDR  	0xA405013AUL#define PORT_PQDR  	0xA405013CUL#define IRQ0_IRQ	32#define IRQ1_IRQ	33#define IRQ2_IRQ	34#define IRQ3_IRQ	35#define IRQ4_IRQ	36#define IRQ5_IRQ	37#define IRQ0_IPR_ADDR	INTC_IPRC#define IRQ1_IPR_ADDR	INTC_IPRC#define IRQ2_IPR_ADDR	INTC_IPRC#define IRQ3_IPR_ADDR	INTC_IPRC#define IRQ4_IPR_ADDR	INTC_IPRD#define IRQ5_IPR_ADDR	INTC_IPRD#define IRQ0_IPR_POS	0#define IRQ1_IPR_POS	1#define IRQ2_IPR_POS	2#define IRQ3_IPR_POS	3#define IRQ4_IPR_POS	0#define IRQ5_IPR_POS	1#define IRQ0_PRIORITY	1#define IRQ1_PRIORITY	1#define IRQ2_PRIORITY	1#define IRQ3_PRIORITY	1#define IRQ4_PRIORITY	1#define IRQ5_PRIORITY	1extern int ipr_irq_demux(int irq);#define __irq_demux(irq) ipr_irq_demux(irq)#elif defined(CONFIG_CPU_SUBTYPE_SH7604)#define INTC_IPRA	0xfffffee2UL#define INTC_IPRB	0xfffffe60UL#define INTC_VCRA	0xfffffe62UL#define INTC_VCRB	0xfffffe64UL#define INTC_VCRC	0xfffffe66UL#define INTC_VCRD	0xfffffe68UL#define INTC_VCRWDT	0xfffffee4UL#define INTC_VCRDIV	0xffffff0cUL#define INTC_VCRDMA0	0xffffffa0UL#define INTC_VCRDMA1	0xffffffa8UL#define INTC_ICR	0xfffffee0UL#elif defined(CONFIG_CPU_SUBTYPE_SH7705) || \      defined(CONFIG_CPU_SUBTYPE_SH7707) || \      defined(CONFIG_CPU_SUBTYPE_SH7709)#define INTC_IRR0	0xa4000004UL#define INTC_IRR1	0xa4000006UL#define INTC_IRR2	0xa4000008UL#define INTC_ICR0	0xfffffee0UL#define INTC_ICR1	0xa4000010UL#define INTC_ICR2	0xa4000012UL#define INTC_INTER	0xa4000014UL#define INTC_IPRC	0xa4000016UL#define INTC_IPRD	0xa4000018UL#define INTC_IPRE	0xa400001aUL#if defined(CONFIG_CPU_SUBTYPE_SH7707)#define INTC_IPRF	0xa400001cUL#elif defined(CONFIG_CPU_SUBTYPE_SH7705)#define INTC_IPRF	0xa4080000UL#define INTC_IPRG	0xa4080002UL#define INTC_IPRH	0xa4080004UL#endif#define PORT_PACR	0xa4000100UL#define PORT_PBCR	0xa4000102UL#define PORT_PCCR	0xa4000104UL#define PORT_PFCR	0xa400010aUL#define PORT_PADR  	0xa4000120UL#define PORT_PBDR  	0xa4000122UL#define PORT_PCDR  	0xa4000124UL#define PORT_PFDR  	0xa400012aUL#define IRQ0_IRQ	32#define IRQ1_IRQ	33#define IRQ2_IRQ	34#define IRQ3_IRQ	35#define IRQ4_IRQ	36#define IRQ5_IRQ	37#define IRQ0_IPR_ADDR	INTC_IPRC#define IRQ1_IPR_ADDR	INTC_IPRC#define IRQ2_IPR_ADDR	INTC_IPRC#define IRQ3_IPR_ADDR	INTC_IPRC#define IRQ4_IPR_ADDR	INTC_IPRD#define IRQ5_IPR_ADDR	INTC_IPRD#define IRQ0_IPR_POS	0#define IRQ1_IPR_POS	1#define IRQ2_IPR_POS	2#define IRQ3_IPR_POS	3#define IRQ4_IPR_POS	0#define IRQ5_IPR_POS	1#define IRQ0_PRIORITY	1#define IRQ1_PRIORITY	1#define IRQ2_PRIORITY	1#define IRQ3_PRIORITY	1#define IRQ4_PRIORITY	1#define IRQ5_PRIORITY	1#define PINT0_IRQ	40#define PINT8_IRQ	41#define PINT0_IPR_ADDR	INTC_IPRD#define PINT8_IPR_ADDR	INTC_IPRD#define PINT0_IPR_POS	3#define PINT8_IPR_POS	2#define PINT0_PRIORITY	2#define PINT8_PRIORITY	2extern int ipr_irq_demux(int irq);#define __irq_demux(irq) ipr_irq_demux(irq)#else#define __irq_demux(irq) irq#endif /* CONFIG_CPU_SUBTYPE_SH7707 || CONFIG_CPU_SUBTYPE_SH7709 */#if defined(CONFIG_CPU_SUBTYPE_SH7750) || defined(CONFIG_CPU_SUBTYPE_SH7751) || \    defined(CONFIG_CPU_SUBTYPE_ST40STB1)#define INTC_ICR        0xffd00000#define INTC_ICR_NMIL	(1<<15)#define INTC_ICR_MAI	(1<<14)#define INTC_ICR_NMIB	(1<<9)#define INTC_ICR_NMIE	(1<<8)#define INTC_ICR_IRLM	(1<<7)#endif#ifdef CONFIG_CPU_SUBTYPE_ST40STB1#define INTC2_FIRST_IRQ 64#define NR_INTC2_IRQS 25#define INTC2_BASE0 0xfe080000#define INTC2_INTC2MODE  (INTC2_BASE0+0x80)#define INTC2_INTPRI_OFFSET	0x00#define INTC2_INTREQ_OFFSET	0x20#define INTC2_INTMSK_OFFSET	0x40#define INTC2_INTMSKCLR_OFFSET	0x60extern void make_intc2_irq(unsigned int irq,unsigned int addr,                           unsigned int group,int pos,int priority);#endifstatic inline int generic_irq_demux(int irq){	return irq;}#define irq_canonicalize(irq)	(irq)#define irq_demux(irq)		__irq_demux(sh_mv.mv_irq_demux(irq))struct irqaction;struct pt_regs;int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);#endif /* __ASM_SH_IRQ_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?