Re: DMA Interrupts by K
K
Fri Dec 30 08:14:31 CST 2005
what is the value of m_Info.Mask??
you may need to set a proper bitmask for the m_Info.Mask member so that ince
IRQ happened the GIISR.dll could reconized the IRQ event, then report a
valid SYSINTR
If the IRQ is *not* reconized by any installable ISR nor the static mapped
to some SYSINTR, the OAL will re-enable the IRQ source.
That might let the IRQ Handler enter again and agin...
"bluesphere" <ads_box@hotmail.com> ¼¶¼g©ó¶l¥ó·s»D:43b50fc2$0$1075$4fafbaef@reader3.news.tin.it...
>
> This is how install the GIISR
> -----------------------------------------------------------------------
> KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &m_Irq, sizeof(DWORD),
> &m_SysIntr, sizeof(DWORD), NULL)
> ...
> m_IsrHandle = LoadIntChainHandler(m_IsrDll, m_IsrHandler, (BYTE)m_Irq);
> /*
> where:
> m_IsrDll = L"\\Windows\\giisr.dll";
> m_IsrHandler = L"ISRHandler";
> */
> ....
> m_Info.SysIntr = m_SysIntr;
> KernelLibIoControl(m_IsrHandle, IOCTL_GIISR_INFO, &m_Info, sizeof(m_Info),
> NULL, 0, NULL)
> ----------------------------------------------------------------------
>
> The interrupts work pretty well "every now and mostly then" so i don't
> think
> it depends on GIISR
>
>
> "K. S. Huang" <ksh_AT_bsquare_DOT_com> wrote in message
> news:%23hVzxNSDGHA.3528@TK2MSFTNGP12.phx.gbl...
>> How do you install the GIISR??
>> We have shared the DMA irq by Audio, SD host, M-Sys DOC and other
> peripheral
>> with GIISR.dll.
>> You may need to use IOCTL_HAL_REQUEST_SYSINTR to request a SYSINTR for
> each
>> driver that need to share the DMA IRQ.
>>
>> "bluesphere" <ads_box@hotmail.com>
> ¼¶¼g©ó¶l¥ó·s»D:43b46831$0$1065$4fafbaef@reader2.news.tin.it...
>> > You could be right Steve,
>> >
>> > but i'll give you more scenario:
>> >
>> > DMA IRQ is certainly shared. The AC97 controller is pretty eager and
>> > requests the interrupt first. So i'm left with only one choice, that is
>> > loading an IISR.
>> >
>> > I use GIISR and you know what it does. If i remember the code,
>> > GIISR.DLL
>> > doesn't clear any interrupt, it just returns the SYSINTR
> correspondingly.
>> > I
>> > clear the interrupt in the IST. Is it too late? The WAVEDEV driver
> example
>> > in PB5 clears the DMA IRQ in the IST either. (INTEL's DOC talks about
>> > an
>> > issue with the RUN bit, but i guess i managed that)
>> >
>> > Anyway today i decided to get rid of the AC97 driver. The PXA270's
>> > "request
>> > to channel mapping" registers show that only the sound driver uses DMA
>> > transfers. (As in the MAINSTONEII code), the rest is a desert land.
>> >
>> > Without the AC97, i guess i was in a non-shared situation. I handled
>> > the
>> > IRQ
>> > without any ISR. It crashed again!
>> >
>> >
>> >
>>
>>
>
>