This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
80312 hal support for Intel XScale board
- To: ecos-discuss at sourceware dot cygnus dot com
- Subject: [ECOS] 80312 hal support for Intel XScale board
- From: Richard Wicks <rich at accetnetwork dot com>
- Date: Mon, 15 Oct 2001 12:57:10 -0700
- Organization: Accet Networks
- Reply-To: rich at accetnetwork dot com
Hello,
I think I've found some bugs with the hal support with the Intel XScale board.
I'm trying to enable a doorbell register so that the host (the PC running
linux) can interrupt the XScale through the PCI. I am using the vector
CYGNUM_HAL_INTERRUPT_DOORBELL which is defined as "21".
In iq80310_misc.c on line 745 within the function "hal_interrupt_mask" is the
following code:
case CYGNUM_HAL_INTERRUPT_MESSAGE_0 ...
CYGNUM_HAL_INTERRUPT_INDEX_REGISTER:
*IIMR_REG &= ~(1<<(vector - CYGNUM_HAL_INTERRUPT_MESSAGE_0));
return;
According to the documentation* of the 80312 chip, in section 6.8.5 this
UNmasks the interrupt rather than masking it. There is a similar problem
with hal_interrupt_unmask. In fact, I think nearly all calls to
hal_interrupt_mask() actually unmask the interrupt and nearly all calls to
hal_interrupt_unmask() actually mask the interrupt.
If anybody has gotten doorbell interrupts working on this board, I'd sure
appreciate it if you can tell me what you did. As soon as I send an
interrupt to the board, it locks up. We can go to polling temporarily but
would like to avoid it naturally.
Thanks,
-Rich
*Documentation for 80312 can be found here:
http://developer.intel.com/design/IIO/manuals/273410.htm