From: Kumar Gala Cleaned up the CPM2 interrupt controller code: * Added the ability to offset the IRQs * Refactored common PIC init code out of platform files * Fixed IRQ offsets on MPC85xx so it can handle properly handled multiple interrupt controllers (i8259, CPM2 PIC, and OpenPIC) Signed-off-by: Jason McMullan Signed-off-by: Kumar Gala Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc/platforms/85xx/mpc8560_ads.c | 18 -- 25-akpm/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 19 -- 25-akpm/arch/ppc/platforms/85xx/stx_gp3.c | 21 -- 25-akpm/arch/ppc/syslib/cpm2_pic.c | 66 ++++++- 25-akpm/arch/ppc/syslib/cpm2_pic.h | 3 25-akpm/arch/ppc/syslib/m8260_setup.c | 8 25-akpm/include/asm-ppc/irq.h | 167 ++++++++++++------- 25-akpm/include/asm-ppc/mpc85xx.h | 49 ----- 8 files changed, 171 insertions(+), 180 deletions(-) diff -puN arch/ppc/platforms/85xx/mpc8560_ads.c~ppc32-cpm2-pic-cleanup arch/ppc/platforms/85xx/mpc8560_ads.c --- 25/arch/ppc/platforms/85xx/mpc8560_ads.c~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/platforms/85xx/mpc8560_ads.c Wed Mar 30 15:16:26 2005 @@ -135,25 +135,11 @@ static struct irqaction cpm2_irqaction = static void __init mpc8560_ads_init_IRQ(void) { - int i; - volatile cpm2_map_t *immap = cpm2_immr; - /* Setup OpenPIC */ mpc85xx_ads_init_IRQ(); - /* disable all CPM interupts */ - immap->im_intctl.ic_simrh = 0x0; - immap->im_intctl.ic_simrl = 0x0; - - for (i = CPM_IRQ_OFFSET; i < (NR_CPM_INTS + CPM_IRQ_OFFSET); i++) - irq_desc[i].handler = &cpm2_pic; - - /* Initialize the default interrupt mapping priorities, - * in case the boot rom changed something on us. - */ - immap->im_intctl.ic_sicr = 0; - immap->im_intctl.ic_scprrh = 0x05309770; - immap->im_intctl.ic_scprrl = 0x05309770; + /* Setup CPM2 PIC */ + cpm2_init_IRQ(); setup_irq(MPC85xx_IRQ_CPM, &cpm2_irqaction); diff -puN arch/ppc/platforms/85xx/mpc85xx_cds_common.c~ppc32-cpm2-pic-cleanup arch/ppc/platforms/85xx/mpc85xx_cds_common.c --- 25/arch/ppc/platforms/85xx/mpc85xx_cds_common.c~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/platforms/85xx/mpc85xx_cds_common.c Wed Mar 30 15:16:26 2005 @@ -181,10 +181,6 @@ void __init mpc85xx_cds_init_IRQ(void) { bd_t *binfo = (bd_t *) __res; -#ifdef CONFIG_CPM2 - volatile cpm2_map_t *immap = cpm2_immr; - int i; -#endif /* Determine the Physical Address of the OpenPIC regs */ phys_addr_t OpenPIC_PAddr = binfo->bi_immr_base + MPC85xx_OPENPIC_OFFSET; @@ -203,19 +199,8 @@ mpc85xx_cds_init_IRQ(void) openpic_init(MPC85xx_OPENPIC_IRQ_OFFSET); #ifdef CONFIG_CPM2 - /* disable all CPM interupts */ - immap->im_intctl.ic_simrh = 0x0; - immap->im_intctl.ic_simrl = 0x0; - - for (i = CPM_IRQ_OFFSET; i < (NR_CPM_INTS + CPM_IRQ_OFFSET); i++) - irq_desc[i].handler = &cpm2_pic; - - /* Initialize the default interrupt mapping priorities, - * in case the boot rom changed something on us. - */ - immap->im_intctl.ic_sicr = 0; - immap->im_intctl.ic_scprrh = 0x05309770; - immap->im_intctl.ic_scprrl = 0x05309770; + /* Setup CPM2 PIC */ + cpm2_init_IRQ(); setup_irq(MPC85xx_IRQ_CPM, &cpm2_irqaction); #endif diff -puN arch/ppc/platforms/85xx/stx_gp3.c~ppc32-cpm2-pic-cleanup arch/ppc/platforms/85xx/stx_gp3.c --- 25/arch/ppc/platforms/85xx/stx_gp3.c~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/platforms/85xx/stx_gp3.c Wed Mar 30 15:16:26 2005 @@ -201,7 +201,6 @@ static void __init gp3_init_IRQ(void) { int i; - volatile cpm2_map_t *immap = cpm2_immr; bd_t *binfo = (bd_t *) __res; /* @@ -227,24 +226,8 @@ gp3_init_IRQ(void) */ openpic_init(MPC85xx_OPENPIC_IRQ_OFFSET); - /* - * Setup CPM2 PIC - */ - - /* disable all CPM interupts */ - immap->im_intctl.ic_simrh = 0x0; - immap->im_intctl.ic_simrl = 0x0; - - for (i = CPM_IRQ_OFFSET; i < (NR_CPM_INTS + CPM_IRQ_OFFSET); i++) - irq_desc[i].handler = &cpm2_pic; - - /* - * Initialize the default interrupt mapping priorities, - * in case the boot rom changed something on us. - */ - immap->im_intctl.ic_sicr = 0; - immap->im_intctl.ic_scprrh = 0x05309770; - immap->im_intctl.ic_scprrl = 0x05309770; + /* Setup CPM2 PIC */ + cpm2_init_IRQ(); setup_irq(MPC85xx_IRQ_CPM, &cpm2_irqaction); diff -puN arch/ppc/syslib/cpm2_pic.c~ppc32-cpm2-pic-cleanup arch/ppc/syslib/cpm2_pic.c --- 25/arch/ppc/syslib/cpm2_pic.c~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/syslib/cpm2_pic.c Wed Mar 30 15:16:26 2005 @@ -48,6 +48,8 @@ static void cpm2_mask_irq(unsigned int i int bit, word; volatile uint *simr; + irq_nr -= CPM_IRQ_OFFSET; + bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; @@ -61,6 +63,8 @@ static void cpm2_unmask_irq(unsigned int int bit, word; volatile uint *simr; + irq_nr -= CPM_IRQ_OFFSET; + bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; @@ -74,6 +78,8 @@ static void cpm2_mask_and_ack(unsigned i int bit, word; volatile uint *simr, *sipnr; + irq_nr -= CPM_IRQ_OFFSET; + bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; @@ -92,6 +98,7 @@ static void cpm2_end_irq(unsigned int ir if (!(irq_desc[irq_nr].status & (IRQ_DISABLED|IRQ_INPROGRESS)) && irq_desc[irq_nr].action) { + irq_nr -= CPM_IRQ_OFFSET; bit = irq_to_siubit[irq_nr]; word = irq_to_siureg[irq_nr]; @@ -101,20 +108,15 @@ static void cpm2_end_irq(unsigned int ir } } -struct hw_interrupt_type cpm2_pic = { - " CPM2 SIU ", - NULL, - NULL, - cpm2_unmask_irq, - cpm2_mask_irq, - cpm2_mask_and_ack, - cpm2_end_irq, - 0 +static struct hw_interrupt_type cpm2_pic = { + .typename = " CPM2 SIU ", + .enable = cpm2_unmask_irq, + .disable = cpm2_mask_irq, + .ack = cpm2_mask_and_ack, + .end = cpm2_end_irq, }; - -int -cpm2_get_irq(struct pt_regs *regs) +int cpm2_get_irq(struct pt_regs *regs) { int irq; unsigned long bits; @@ -126,5 +128,43 @@ cpm2_get_irq(struct pt_regs *regs) if (irq == 0) return(-1); - return irq; + return irq+CPM_IRQ_OFFSET; +} + +void cpm2_init_IRQ(void) +{ + int i; + + /* Clear the CPM IRQ controller, in case it has any bits set + * from the bootloader + */ + + /* Mask out everything */ + cpm2_immr->im_intctl.ic_simrh = 0x00000000; + cpm2_immr->im_intctl.ic_simrl = 0x00000000; + wmb(); + + /* Ack everything */ + cpm2_immr->im_intctl.ic_sipnrh = 0xffffffff; + cpm2_immr->im_intctl.ic_sipnrl = 0xffffffff; + wmb(); + + /* Dummy read of the vector */ + i = cpm2_immr->im_intctl.ic_sivec; + rmb(); + + /* Initialize the default interrupt mapping priorities, + * in case the boot rom changed something on us. + */ + cpm2_immr->im_intctl.ic_sicr = 0; + cpm2_immr->im_intctl.ic_scprrh = 0x05309770; + cpm2_immr->im_intctl.ic_scprrl = 0x05309770; + + + /* Enable chaining to OpenPIC, and make everything level + */ + for (i = 0; i < NR_CPM_INTS; i++) { + irq_desc[i+CPM_IRQ_OFFSET].handler = &cpm2_pic; + irq_desc[i+CPM_IRQ_OFFSET].status |= IRQ_LEVEL; + } } diff -puN arch/ppc/syslib/cpm2_pic.h~ppc32-cpm2-pic-cleanup arch/ppc/syslib/cpm2_pic.h --- 25/arch/ppc/syslib/cpm2_pic.h~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/syslib/cpm2_pic.h Wed Mar 30 15:16:26 2005 @@ -1,7 +1,8 @@ #ifndef _PPC_KERNEL_CPM2_H #define _PPC_KERNEL_CPM2_H -extern struct hw_interrupt_type cpm2_pic; extern int cpm2_get_irq(struct pt_regs *regs); +extern void cpm2_init_IRQ(void); + #endif /* _PPC_KERNEL_CPM2_H */ diff -puN arch/ppc/syslib/m8260_setup.c~ppc32-cpm2-pic-cleanup arch/ppc/syslib/m8260_setup.c --- 25/arch/ppc/syslib/m8260_setup.c~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/arch/ppc/syslib/m8260_setup.c Wed Mar 30 15:16:26 2005 @@ -167,18 +167,12 @@ m8260_show_cpuinfo(struct seq_file *m) static void __init m8260_init_IRQ(void) { - int i; - - for ( i = 0 ; i < NR_SIU_INTS ; i++ ) - irq_desc[i].handler = &cpm2_pic; + cpm2_init_IRQ(); /* Initialize the default interrupt mapping priorities, * in case the boot rom changed something on us. */ - cpm2_immr->im_intctl.ic_sicr = 0; cpm2_immr->im_intctl.ic_siprr = 0x05309770; - cpm2_immr->im_intctl.ic_scprrh = 0x05309770; - cpm2_immr->im_intctl.ic_scprrl = 0x05309770; } /* diff -puN include/asm-ppc/irq.h~ppc32-cpm2-pic-cleanup include/asm-ppc/irq.h --- 25/include/asm-ppc/irq.h~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/include/asm-ppc/irq.h Wed Mar 30 15:16:26 2005 @@ -171,7 +171,7 @@ static __inline__ int irq_canonicalize(i #define NR_IRQS (NR_IPIC_INTS) -#elif defined(CONFIG_CPM2) && defined(CONFIG_85xx) +#elif defined(CONFIG_85xx) /* Now include the board configuration specific associations. */ #include @@ -186,7 +186,7 @@ static __inline__ int irq_canonicalize(i #define NR_CPM_INTS 64 #define NR_EPIC_INTS 44 #ifndef NR_8259_INTS -#define NR_8259_INTS 0 +#define NR_8259_INTS 0 #endif #define NUM_8259_INTERRUPTS NR_8259_INTS @@ -196,13 +196,59 @@ static __inline__ int irq_canonicalize(i #define NR_IRQS (NR_EPIC_INTS + NR_CPM_INTS + NR_8259_INTS) -/* These values must be zero-based and map 1:1 with the EPIC configuration. - * They are used throughout the 8560 I/O subsystem to generate - * interrupt masks, flags, and other control patterns. This is why the - * current kernel assumption of the 8259 as the base controller is such - * a pain in the butt. - */ +/* Internal IRQs on MPC85xx OpenPIC */ + +#ifndef MPC85xx_OPENPIC_IRQ_OFFSET +#ifdef CONFIG_CPM2 +#define MPC85xx_OPENPIC_IRQ_OFFSET (CPM_IRQ_OFFSET + NR_CPM_INTS) +#else +#define MPC85xx_OPENPIC_IRQ_OFFSET 0 +#endif +#endif + +/* Not all of these exist on all MPC85xx implementations */ +#define MPC85xx_IRQ_L2CACHE ( 0 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_ECM ( 1 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DDR ( 2 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_LBIU ( 3 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DMA0 ( 4 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DMA1 ( 5 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DMA2 ( 6 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DMA3 ( 7 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_PCI1 ( 8 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_PCI2 ( 9 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_RIO_ERROR ( 9 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_RIO_BELL (10 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_RIO_TX (11 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_RIO_RX (12 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC1_TX (13 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC1_RX (14 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC1_ERROR (18 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC2_TX (19 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC2_RX (20 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_TSEC2_ERROR (24 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_FEC (25 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_DUART (26 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_IIC1 (27 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_PERFMON (28 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_SEC2 (29 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_CPM (30 + MPC85xx_OPENPIC_IRQ_OFFSET) + +/* The 12 external interrupt lines */ +#define MPC85xx_IRQ_EXT0 (32 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT1 (33 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT2 (34 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT3 (35 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT4 (36 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT5 (37 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT6 (38 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT7 (39 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT8 (40 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT9 (41 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT10 (42 + MPC85xx_OPENPIC_IRQ_OFFSET) +#define MPC85xx_IRQ_EXT11 (43 + MPC85xx_OPENPIC_IRQ_OFFSET) +/* CPM related interrupts */ #define SIU_INT_ERROR ((uint)0x00+CPM_IRQ_OFFSET) #define SIU_INT_I2C ((uint)0x01+CPM_IRQ_OFFSET) #define SIU_INT_SPI ((uint)0x02+CPM_IRQ_OFFSET) @@ -267,57 +313,62 @@ static __inline__ int irq_canonicalize(i * (Document errata updates have fixed this...make sure you have up to * date processor documentation -- Dan). */ -#define NR_SIU_INTS 64 -#define SIU_INT_ERROR ((uint)0x00) -#define SIU_INT_I2C ((uint)0x01) -#define SIU_INT_SPI ((uint)0x02) -#define SIU_INT_RISC ((uint)0x03) -#define SIU_INT_SMC1 ((uint)0x04) -#define SIU_INT_SMC2 ((uint)0x05) -#define SIU_INT_IDMA1 ((uint)0x06) -#define SIU_INT_IDMA2 ((uint)0x07) -#define SIU_INT_IDMA3 ((uint)0x08) -#define SIU_INT_IDMA4 ((uint)0x09) -#define SIU_INT_SDMA ((uint)0x0a) -#define SIU_INT_TIMER1 ((uint)0x0c) -#define SIU_INT_TIMER2 ((uint)0x0d) -#define SIU_INT_TIMER3 ((uint)0x0e) -#define SIU_INT_TIMER4 ((uint)0x0f) -#define SIU_INT_TMCNT ((uint)0x10) -#define SIU_INT_PIT ((uint)0x11) -#define SIU_INT_IRQ1 ((uint)0x13) -#define SIU_INT_IRQ2 ((uint)0x14) -#define SIU_INT_IRQ3 ((uint)0x15) -#define SIU_INT_IRQ4 ((uint)0x16) -#define SIU_INT_IRQ5 ((uint)0x17) -#define SIU_INT_IRQ6 ((uint)0x18) -#define SIU_INT_IRQ7 ((uint)0x19) -#define SIU_INT_FCC1 ((uint)0x20) -#define SIU_INT_FCC2 ((uint)0x21) -#define SIU_INT_FCC3 ((uint)0x22) -#define SIU_INT_MCC1 ((uint)0x24) -#define SIU_INT_MCC2 ((uint)0x25) -#define SIU_INT_SCC1 ((uint)0x28) -#define SIU_INT_SCC2 ((uint)0x29) -#define SIU_INT_SCC3 ((uint)0x2a) -#define SIU_INT_SCC4 ((uint)0x2b) -#define SIU_INT_PC15 ((uint)0x30) -#define SIU_INT_PC14 ((uint)0x31) -#define SIU_INT_PC13 ((uint)0x32) -#define SIU_INT_PC12 ((uint)0x33) -#define SIU_INT_PC11 ((uint)0x34) -#define SIU_INT_PC10 ((uint)0x35) -#define SIU_INT_PC9 ((uint)0x36) -#define SIU_INT_PC8 ((uint)0x37) -#define SIU_INT_PC7 ((uint)0x38) -#define SIU_INT_PC6 ((uint)0x39) -#define SIU_INT_PC5 ((uint)0x3a) -#define SIU_INT_PC4 ((uint)0x3b) -#define SIU_INT_PC3 ((uint)0x3c) -#define SIU_INT_PC2 ((uint)0x3d) -#define SIU_INT_PC1 ((uint)0x3e) -#define SIU_INT_PC0 ((uint)0x3f) +#ifndef CPM_IRQ_OFFSET +#define CPM_IRQ_OFFSET 0 +#endif + +#define NR_CPM_INTS 64 + +#define SIU_INT_ERROR ((uint)0x00 + CPM_IRQ_OFFSET) +#define SIU_INT_I2C ((uint)0x01 + CPM_IRQ_OFFSET) +#define SIU_INT_SPI ((uint)0x02 + CPM_IRQ_OFFSET) +#define SIU_INT_RISC ((uint)0x03 + CPM_IRQ_OFFSET) +#define SIU_INT_SMC1 ((uint)0x04 + CPM_IRQ_OFFSET) +#define SIU_INT_SMC2 ((uint)0x05 + CPM_IRQ_OFFSET) +#define SIU_INT_IDMA1 ((uint)0x06 + CPM_IRQ_OFFSET) +#define SIU_INT_IDMA2 ((uint)0x07 + CPM_IRQ_OFFSET) +#define SIU_INT_IDMA3 ((uint)0x08 + CPM_IRQ_OFFSET) +#define SIU_INT_IDMA4 ((uint)0x09 + CPM_IRQ_OFFSET) +#define SIU_INT_SDMA ((uint)0x0a + CPM_IRQ_OFFSET) +#define SIU_INT_TIMER1 ((uint)0x0c + CPM_IRQ_OFFSET) +#define SIU_INT_TIMER2 ((uint)0x0d + CPM_IRQ_OFFSET) +#define SIU_INT_TIMER3 ((uint)0x0e + CPM_IRQ_OFFSET) +#define SIU_INT_TIMER4 ((uint)0x0f + CPM_IRQ_OFFSET) +#define SIU_INT_TMCNT ((uint)0x10 + CPM_IRQ_OFFSET) +#define SIU_INT_PIT ((uint)0x11 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ1 ((uint)0x13 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ2 ((uint)0x14 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ3 ((uint)0x15 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ4 ((uint)0x16 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ5 ((uint)0x17 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ6 ((uint)0x18 + CPM_IRQ_OFFSET) +#define SIU_INT_IRQ7 ((uint)0x19 + CPM_IRQ_OFFSET) +#define SIU_INT_FCC1 ((uint)0x20 + CPM_IRQ_OFFSET) +#define SIU_INT_FCC2 ((uint)0x21 + CPM_IRQ_OFFSET) +#define SIU_INT_FCC3 ((uint)0x22 + CPM_IRQ_OFFSET) +#define SIU_INT_MCC1 ((uint)0x24 + CPM_IRQ_OFFSET) +#define SIU_INT_MCC2 ((uint)0x25 + CPM_IRQ_OFFSET) +#define SIU_INT_SCC1 ((uint)0x28 + CPM_IRQ_OFFSET) +#define SIU_INT_SCC2 ((uint)0x29 + CPM_IRQ_OFFSET) +#define SIU_INT_SCC3 ((uint)0x2a + CPM_IRQ_OFFSET) +#define SIU_INT_SCC4 ((uint)0x2b + CPM_IRQ_OFFSET) +#define SIU_INT_PC15 ((uint)0x30 + CPM_IRQ_OFFSET) +#define SIU_INT_PC14 ((uint)0x31 + CPM_IRQ_OFFSET) +#define SIU_INT_PC13 ((uint)0x32 + CPM_IRQ_OFFSET) +#define SIU_INT_PC12 ((uint)0x33 + CPM_IRQ_OFFSET) +#define SIU_INT_PC11 ((uint)0x34 + CPM_IRQ_OFFSET) +#define SIU_INT_PC10 ((uint)0x35 + CPM_IRQ_OFFSET) +#define SIU_INT_PC9 ((uint)0x36 + CPM_IRQ_OFFSET) +#define SIU_INT_PC8 ((uint)0x37 + CPM_IRQ_OFFSET) +#define SIU_INT_PC7 ((uint)0x38 + CPM_IRQ_OFFSET) +#define SIU_INT_PC6 ((uint)0x39 + CPM_IRQ_OFFSET) +#define SIU_INT_PC5 ((uint)0x3a + CPM_IRQ_OFFSET) +#define SIU_INT_PC4 ((uint)0x3b + CPM_IRQ_OFFSET) +#define SIU_INT_PC3 ((uint)0x3c + CPM_IRQ_OFFSET) +#define SIU_INT_PC2 ((uint)0x3d + CPM_IRQ_OFFSET) +#define SIU_INT_PC1 ((uint)0x3e + CPM_IRQ_OFFSET) +#define SIU_INT_PC0 ((uint)0x3f + CPM_IRQ_OFFSET) #endif /* CONFIG_8260 */ diff -puN include/asm-ppc/mpc85xx.h~ppc32-cpm2-pic-cleanup include/asm-ppc/mpc85xx.h --- 25/include/asm-ppc/mpc85xx.h~ppc32-cpm2-pic-cleanup Wed Mar 30 15:16:26 2005 +++ 25-akpm/include/asm-ppc/mpc85xx.h Wed Mar 30 15:16:26 2005 @@ -52,55 +52,6 @@ */ extern unsigned char __res[]; -/* Internal IRQs on MPC85xx OpenPIC */ -/* Not all of these exist on all MPC85xx implementations */ - -#ifndef MPC85xx_OPENPIC_IRQ_OFFSET -#define MPC85xx_OPENPIC_IRQ_OFFSET 64 -#endif - -/* The 32 internal sources */ -#define MPC85xx_IRQ_L2CACHE ( 0 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_ECM ( 1 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DDR ( 2 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_LBIU ( 3 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DMA0 ( 4 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DMA1 ( 5 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DMA2 ( 6 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DMA3 ( 7 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_PCI1 ( 8 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_PCI2 ( 9 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_RIO_ERROR ( 9 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_RIO_BELL (10 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_RIO_TX (11 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_RIO_RX (12 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC1_TX (13 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC1_RX (14 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC1_ERROR (18 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC2_TX (19 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC2_RX (20 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_TSEC2_ERROR (24 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_FEC (25 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_DUART (26 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_IIC1 (27 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_PERFMON (28 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_SEC2 (29 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_CPM (30 + MPC85xx_OPENPIC_IRQ_OFFSET) - -/* The 12 external interrupt lines */ -#define MPC85xx_IRQ_EXT0 (32 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT1 (33 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT2 (34 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT3 (35 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT4 (36 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT5 (37 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT6 (38 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT7 (39 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT8 (40 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT9 (41 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT10 (42 + MPC85xx_OPENPIC_IRQ_OFFSET) -#define MPC85xx_IRQ_EXT11 (43 + MPC85xx_OPENPIC_IRQ_OFFSET) - /* Offset from CCSRBAR */ #define MPC85xx_CPM_OFFSET (0x80000) #define MPC85xx_CPM_SIZE (0x40000) _