PrPMC800 interrupt problem
Anders Blomdell
anders.blomdell at control.lth.se
Sat Oct 26 01:15:46 EST 2002
The problem seems to be that the UART generates an Harrier internal
interrupt. This should be handled as any other MPIC interrupt, but it isn'
t. This lack of an appropriate handler (irq_desc[16].handler == 0) makes
the Harrier chip wait forever for an EOI.
A very hacky solution to this is to modify 'prpmc800_init_IRQ' to:
static void __init
prpmc800_init_IRQ(void)
{
openpic_init(0);
// Handle UART interrupts as all other openpic interrupts, this is a
// gross hack.
openpic_set_sources(16, 1, OpenPIC_Addr + 0x10200);
irq_desc[16].handler = irq_desc[15].handler;
#define PRIORITY 15
#define VECTOR 16
#define PROCESSOR 0
/* initialize the harrier's internal interrupt priority 15, irq 1 */
out_be32((u32 *)HARRIER_IFEVP_REG, (PRIORITY<<16) | VECTOR);
out_be32((u32 *)HARRIER_IFEDE_REG, (1<<PROCESSOR));
/* enable functional exceptions for uarts and abort */
out_8((u8 *)HARRIER_FEEN_REG, (HARRIER_FE_UA0|HARRIER_FE_UA1));
out_8((u8 *)HARRIER_FEMA_REG, ~(HARRIER_FE_UA0|HARRIER_FE_UA1));
}
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list